// 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  S28C9_nt  {
  int s28c9f0[2];
  void  mf28c9(); // _ZN8S28C9_nt6mf28c9Ev
};
//SIG(-1 S28C9_nt) C1{ m Fi[2]}


void  S28C9_nt ::mf28c9(){}

//skip512 S28C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S28C8_nt  {
  int s28c8f0;
  __tsi64 s28c8f1;
  void *s28c8f2[4];
  int s28c8f3[2];
  void *s28c8f4;
  ::S28C9_nt s28c8f5;
  void *s28c8f6[2];
  virtual  ~S28C8_nt(); // _ZN8S28C8_ntD1Ev
  virtual void  v4(); // _ZN8S28C8_nt2v4Ev
  virtual void  v5(); // _ZN8S28C8_nt2v5Ev
  virtual void  v6(); // _ZN8S28C8_nt2v6Ev
  virtual void  v7(); // _ZN8S28C8_nt2v7Ev
  virtual void  v8(); // _ZN8S28C8_nt2v8Ev
  virtual void  v9(); // _ZN8S28C8_nt2v9Ev
  virtual void  v10(); // _ZN8S28C8_nt3v10Ev
  virtual void  v11(); // _ZN8S28C8_nt3v11Ev
  virtual void  v12(); // _ZN8S28C8_nt3v12Ev
  virtual void  v13(); // _ZN8S28C8_nt3v13Ev
  virtual void  v14(); // _ZN8S28C8_nt3v14Ev
  virtual void  v15(); // _ZN8S28C8_nt3v15Ev
  virtual void  v16(); // _ZN8S28C8_nt3v16Ev
  virtual void  v17(); // _ZN8S28C8_nt3v17Ev
  virtual void  v18(); // _ZN8S28C8_nt3v18Ev
  virtual void  v19(); // _ZN8S28C8_nt3v19Ev
  virtual void  v20(); // _ZN8S28C8_nt3v20Ev
  virtual void  v21(); // _ZN8S28C8_nt3v21Ev
  virtual void  v22(); // _ZN8S28C8_nt3v22Ev
  virtual void  v23(); // _ZN8S28C8_nt3v23Ev
  virtual void  v24(); // _ZN8S28C8_nt3v24Ev
  virtual void  v25(); // _ZN8S28C8_nt3v25Ev
  virtual void  v26(); // _ZN8S28C8_nt3v26Ev
  virtual void  v27(); // _ZN8S28C8_nt3v27Ev
  virtual void  v28(); // _ZN8S28C8_nt3v28Ev
  virtual void  v29(); // _ZN8S28C8_nt3v29Ev
  virtual void  v30(); // _ZN8S28C8_nt3v30Ev
  virtual void  v31(); // _ZN8S28C8_nt3v31Ev
  virtual void  v32(); // _ZN8S28C8_nt3v32Ev
  virtual void  v33(); // _ZN8S28C8_nt3v33Ev
  virtual void  v34(); // _ZN8S28C8_nt3v34Ev
  virtual void  v35(); // _ZN8S28C8_nt3v35Ev
  virtual void  v36(); // _ZN8S28C8_nt3v36Ev
  virtual void  v37(); // _ZN8S28C8_nt3v37Ev
  virtual void  v38(); // _ZN8S28C8_nt3v38Ev
  virtual void  v39(); // _ZN8S28C8_nt3v39Ev
  virtual void  v40(); // _ZN8S28C8_nt3v40Ev
  virtual void  v41(); // _ZN8S28C8_nt3v41Ev
  virtual void  v42(); // _ZN8S28C8_nt3v42Ev
  virtual void  v43(); // _ZN8S28C8_nt3v43Ev
  virtual void  v44(); // _ZN8S28C8_nt3v44Ev
  virtual void  v45(); // _ZN8S28C8_nt3v45Ev
  virtual void  v46(); // _ZN8S28C8_nt3v46Ev
  virtual void  v47(); // _ZN8S28C8_nt3v47Ev
  virtual void  v48(); // _ZN8S28C8_nt3v48Ev
  virtual void  v49(); // _ZN8S28C8_nt3v49Ev
  virtual void  v50(); // _ZN8S28C8_nt3v50Ev
  virtual void  v51(); // _ZN8S28C8_nt3v51Ev
  virtual void  v52(); // _ZN8S28C8_nt3v52Ev
  virtual void  v53(); // _ZN8S28C8_nt3v53Ev
  virtual void  v54(); // _ZN8S28C8_nt3v54Ev
  virtual void  v55(); // _ZN8S28C8_nt3v55Ev
  virtual void  v56(); // _ZN8S28C8_nt3v56Ev
  virtual void  v57(); // _ZN8S28C8_nt3v57Ev
  virtual void  v58(); // _ZN8S28C8_nt3v58Ev
  virtual void  v59(); // _ZN8S28C8_nt3v59Ev
  virtual void  v60(); // _ZN8S28C8_nt3v60Ev
  virtual void  v61(); // _ZN8S28C8_nt3v61Ev
  virtual void  v62(); // _ZN8S28C8_nt3v62Ev
  virtual void  v63(); // _ZN8S28C8_nt3v63Ev
  virtual void  v64(); // _ZN8S28C8_nt3v64Ev
  virtual void  v65(); // _ZN8S28C8_nt3v65Ev
  virtual void  v66(); // _ZN8S28C8_nt3v66Ev
  virtual void  v67(); // _ZN8S28C8_nt3v67Ev
  S28C8_nt(); // tgen
};
//SIG(-1 S28C8_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]}


 S28C8_nt ::~S28C8_nt(){ note_dtor("S28C8_nt", this);}
void  S28C8_nt ::v4(){vfunc_called(this, "_ZN8S28C8_nt2v4Ev");}
void  S28C8_nt ::v5(){vfunc_called(this, "_ZN8S28C8_nt2v5Ev");}
void  S28C8_nt ::v6(){vfunc_called(this, "_ZN8S28C8_nt2v6Ev");}
void  S28C8_nt ::v7(){vfunc_called(this, "_ZN8S28C8_nt2v7Ev");}
void  S28C8_nt ::v8(){vfunc_called(this, "_ZN8S28C8_nt2v8Ev");}
void  S28C8_nt ::v9(){vfunc_called(this, "_ZN8S28C8_nt2v9Ev");}
void  S28C8_nt ::v10(){vfunc_called(this, "_ZN8S28C8_nt3v10Ev");}
void  S28C8_nt ::v11(){vfunc_called(this, "_ZN8S28C8_nt3v11Ev");}
void  S28C8_nt ::v12(){vfunc_called(this, "_ZN8S28C8_nt3v12Ev");}
void  S28C8_nt ::v13(){vfunc_called(this, "_ZN8S28C8_nt3v13Ev");}
void  S28C8_nt ::v14(){vfunc_called(this, "_ZN8S28C8_nt3v14Ev");}
void  S28C8_nt ::v15(){vfunc_called(this, "_ZN8S28C8_nt3v15Ev");}
void  S28C8_nt ::v16(){vfunc_called(this, "_ZN8S28C8_nt3v16Ev");}
void  S28C8_nt ::v17(){vfunc_called(this, "_ZN8S28C8_nt3v17Ev");}
void  S28C8_nt ::v18(){vfunc_called(this, "_ZN8S28C8_nt3v18Ev");}
void  S28C8_nt ::v19(){vfunc_called(this, "_ZN8S28C8_nt3v19Ev");}
void  S28C8_nt ::v20(){vfunc_called(this, "_ZN8S28C8_nt3v20Ev");}
void  S28C8_nt ::v21(){vfunc_called(this, "_ZN8S28C8_nt3v21Ev");}
void  S28C8_nt ::v22(){vfunc_called(this, "_ZN8S28C8_nt3v22Ev");}
void  S28C8_nt ::v23(){vfunc_called(this, "_ZN8S28C8_nt3v23Ev");}
void  S28C8_nt ::v24(){vfunc_called(this, "_ZN8S28C8_nt3v24Ev");}
void  S28C8_nt ::v25(){vfunc_called(this, "_ZN8S28C8_nt3v25Ev");}
void  S28C8_nt ::v26(){vfunc_called(this, "_ZN8S28C8_nt3v26Ev");}
void  S28C8_nt ::v27(){vfunc_called(this, "_ZN8S28C8_nt3v27Ev");}
void  S28C8_nt ::v28(){vfunc_called(this, "_ZN8S28C8_nt3v28Ev");}
void  S28C8_nt ::v29(){vfunc_called(this, "_ZN8S28C8_nt3v29Ev");}
void  S28C8_nt ::v30(){vfunc_called(this, "_ZN8S28C8_nt3v30Ev");}
void  S28C8_nt ::v31(){vfunc_called(this, "_ZN8S28C8_nt3v31Ev");}
void  S28C8_nt ::v32(){vfunc_called(this, "_ZN8S28C8_nt3v32Ev");}
void  S28C8_nt ::v33(){vfunc_called(this, "_ZN8S28C8_nt3v33Ev");}
void  S28C8_nt ::v34(){vfunc_called(this, "_ZN8S28C8_nt3v34Ev");}
void  S28C8_nt ::v35(){vfunc_called(this, "_ZN8S28C8_nt3v35Ev");}
void  S28C8_nt ::v36(){vfunc_called(this, "_ZN8S28C8_nt3v36Ev");}
void  S28C8_nt ::v37(){vfunc_called(this, "_ZN8S28C8_nt3v37Ev");}
void  S28C8_nt ::v38(){vfunc_called(this, "_ZN8S28C8_nt3v38Ev");}
void  S28C8_nt ::v39(){vfunc_called(this, "_ZN8S28C8_nt3v39Ev");}
void  S28C8_nt ::v40(){vfunc_called(this, "_ZN8S28C8_nt3v40Ev");}
void  S28C8_nt ::v41(){vfunc_called(this, "_ZN8S28C8_nt3v41Ev");}
void  S28C8_nt ::v42(){vfunc_called(this, "_ZN8S28C8_nt3v42Ev");}
void  S28C8_nt ::v43(){vfunc_called(this, "_ZN8S28C8_nt3v43Ev");}
void  S28C8_nt ::v44(){vfunc_called(this, "_ZN8S28C8_nt3v44Ev");}
void  S28C8_nt ::v45(){vfunc_called(this, "_ZN8S28C8_nt3v45Ev");}
void  S28C8_nt ::v46(){vfunc_called(this, "_ZN8S28C8_nt3v46Ev");}
void  S28C8_nt ::v47(){vfunc_called(this, "_ZN8S28C8_nt3v47Ev");}
void  S28C8_nt ::v48(){vfunc_called(this, "_ZN8S28C8_nt3v48Ev");}
void  S28C8_nt ::v49(){vfunc_called(this, "_ZN8S28C8_nt3v49Ev");}
void  S28C8_nt ::v50(){vfunc_called(this, "_ZN8S28C8_nt3v50Ev");}
void  S28C8_nt ::v51(){vfunc_called(this, "_ZN8S28C8_nt3v51Ev");}
void  S28C8_nt ::v52(){vfunc_called(this, "_ZN8S28C8_nt3v52Ev");}
void  S28C8_nt ::v53(){vfunc_called(this, "_ZN8S28C8_nt3v53Ev");}
void  S28C8_nt ::v54(){vfunc_called(this, "_ZN8S28C8_nt3v54Ev");}
void  S28C8_nt ::v55(){vfunc_called(this, "_ZN8S28C8_nt3v55Ev");}
void  S28C8_nt ::v56(){vfunc_called(this, "_ZN8S28C8_nt3v56Ev");}
void  S28C8_nt ::v57(){vfunc_called(this, "_ZN8S28C8_nt3v57Ev");}
void  S28C8_nt ::v58(){vfunc_called(this, "_ZN8S28C8_nt3v58Ev");}
void  S28C8_nt ::v59(){vfunc_called(this, "_ZN8S28C8_nt3v59Ev");}
void  S28C8_nt ::v60(){vfunc_called(this, "_ZN8S28C8_nt3v60Ev");}
void  S28C8_nt ::v61(){vfunc_called(this, "_ZN8S28C8_nt3v61Ev");}
void  S28C8_nt ::v62(){vfunc_called(this, "_ZN8S28C8_nt3v62Ev");}
void  S28C8_nt ::v63(){vfunc_called(this, "_ZN8S28C8_nt3v63Ev");}
void  S28C8_nt ::v64(){vfunc_called(this, "_ZN8S28C8_nt3v64Ev");}
void  S28C8_nt ::v65(){vfunc_called(this, "_ZN8S28C8_nt3v65Ev");}
void  S28C8_nt ::v66(){vfunc_called(this, "_ZN8S28C8_nt3v66Ev");}
void  S28C8_nt ::v67(){vfunc_called(this, "_ZN8S28C8_nt3v67Ev");}
S28C8_nt ::S28C8_nt(){ note_ctor("S28C8_nt", this);} // tgen

//skip512 S28C8_nt

#else // __cplusplus

extern void _ZN8S28C8_ntC1Ev();
extern void _ZN8S28C8_ntD1Ev();
Name_Map name_map_S28C8_nt[] = {
  NSPAIR(_ZN8S28C8_ntC1Ev),
  NSPAIR(_ZN8S28C8_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S28C8_nt[];
extern void _ZN8S28C8_ntD1Ev();
extern void _ZN8S28C8_ntD0Ev();
extern void _ZN8S28C8_nt2v4Ev();
extern void _ZN8S28C8_nt2v5Ev();
extern void _ZN8S28C8_nt2v6Ev();
extern void _ZN8S28C8_nt2v7Ev();
extern void _ZN8S28C8_nt2v8Ev();
extern void _ZN8S28C8_nt2v9Ev();
extern void _ZN8S28C8_nt3v10Ev();
extern void _ZN8S28C8_nt3v11Ev();
extern void _ZN8S28C8_nt3v12Ev();
extern void _ZN8S28C8_nt3v13Ev();
extern void _ZN8S28C8_nt3v14Ev();
extern void _ZN8S28C8_nt3v15Ev();
extern void _ZN8S28C8_nt3v16Ev();
extern void _ZN8S28C8_nt3v17Ev();
extern void _ZN8S28C8_nt3v18Ev();
extern void _ZN8S28C8_nt3v19Ev();
extern void _ZN8S28C8_nt3v20Ev();
extern void _ZN8S28C8_nt3v21Ev();
extern void _ZN8S28C8_nt3v22Ev();
extern void _ZN8S28C8_nt3v23Ev();
extern void _ZN8S28C8_nt3v24Ev();
extern void _ZN8S28C8_nt3v25Ev();
extern void _ZN8S28C8_nt3v26Ev();
extern void _ZN8S28C8_nt3v27Ev();
extern void _ZN8S28C8_nt3v28Ev();
extern void _ZN8S28C8_nt3v29Ev();
extern void _ZN8S28C8_nt3v30Ev();
extern void _ZN8S28C8_nt3v31Ev();
extern void _ZN8S28C8_nt3v32Ev();
extern void _ZN8S28C8_nt3v33Ev();
extern void _ZN8S28C8_nt3v34Ev();
extern void _ZN8S28C8_nt3v35Ev();
extern void _ZN8S28C8_nt3v36Ev();
extern void _ZN8S28C8_nt3v37Ev();
extern void _ZN8S28C8_nt3v38Ev();
extern void _ZN8S28C8_nt3v39Ev();
extern void _ZN8S28C8_nt3v40Ev();
extern void _ZN8S28C8_nt3v41Ev();
extern void _ZN8S28C8_nt3v42Ev();
extern void _ZN8S28C8_nt3v43Ev();
extern void _ZN8S28C8_nt3v44Ev();
extern void _ZN8S28C8_nt3v45Ev();
extern void _ZN8S28C8_nt3v46Ev();
extern void _ZN8S28C8_nt3v47Ev();
extern void _ZN8S28C8_nt3v48Ev();
extern void _ZN8S28C8_nt3v49Ev();
extern void _ZN8S28C8_nt3v50Ev();
extern void _ZN8S28C8_nt3v51Ev();
extern void _ZN8S28C8_nt3v52Ev();
extern void _ZN8S28C8_nt3v53Ev();
extern void _ZN8S28C8_nt3v54Ev();
extern void _ZN8S28C8_nt3v55Ev();
extern void _ZN8S28C8_nt3v56Ev();
extern void _ZN8S28C8_nt3v57Ev();
extern void _ZN8S28C8_nt3v58Ev();
extern void _ZN8S28C8_nt3v59Ev();
extern void _ZN8S28C8_nt3v60Ev();
extern void _ZN8S28C8_nt3v61Ev();
extern void _ZN8S28C8_nt3v62Ev();
extern void _ZN8S28C8_nt3v63Ev();
extern void _ZN8S28C8_nt3v64Ev();
extern void _ZN8S28C8_nt3v65Ev();
extern void _ZN8S28C8_nt3v66Ev();
extern void _ZN8S28C8_nt3v67Ev();
static  VTBL_ENTRY vtc_S28C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S28C8_nt[0]),
  (VTBL_ENTRY)&_ZN8S28C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S28C8_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v6Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v7Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v67Ev,
};
extern VTBL_ENTRY _ZTI8S28C8_nt[];
VTBL_ENTRY *P__ZTI8S28C8_nt = _ZTI8S28C8_nt; 
extern  VTBL_ENTRY _ZTV8S28C8_nt[];
Class_Descriptor cd_S28C8_nt = {  "S28C8_nt", // class name
  0,0,//no base classes
  &(vtc_S28C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI8S28C8_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S28C8_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  S28C12_nt  {
  void *s28c12f0;
  int s28c12f1[2];
  void  mf28c12(); // _ZN9S28C12_nt7mf28c12Ev
};
//SIG(-1 S28C12_nt) C1{ m Fp Fi[2]}


void  S28C12_nt ::mf28c12(){}

//skip512 S28C12_nt

#else // __cplusplus

Class_Descriptor cd_S28C12_nt = {  "S28C12_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  S28C11_nt  : S28C12_nt {
};
//SIG(-1 S28C11_nt) C1{ BC2{ m Fp Fi[2]}}



//skip512 S28C11_nt

#else // __cplusplus

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



//skip512 S28C10_nt

#else // __cplusplus

extern Class_Descriptor cd_S28C12_nt;
extern Class_Descriptor cd_S28C11_nt;
static Base_Class bases_S28C10_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S28C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S28C13_nt  {
  int s28c13f0;
  void  mf28c13(); // _ZN9S28C13_nt7mf28c13Ev
};
//SIG(-1 S28C13_nt) C1{ m Fi}


void  S28C13_nt ::mf28c13(){}

//skip512 S28C13_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI9S28C13_nt[];
VTBL_ENTRY *P__ZTI9S28C13_nt = _ZTI9S28C13_nt; 
Class_Descriptor cd_S28C13_nt = {  "S28C13_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI9S28C13_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  S28C17  : S28C12_nt {
};
//SIG(-1 S28C17) C1{ BC2{ m Fp Fi[2]}}



static void Test_S28C17()
{
  extern Class_Descriptor cd_S28C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S28C17, buf);
    S28C17 &lv = *(new (buf) S28C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S28C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C17)");
    check_base_class_offset(lv, (S28C12_nt*), 0, "S28C17");
    test_class_info(&lv, &cd_S28C17);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C17(Test_S28C17, "S28C17", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S28C16()
{
  extern Class_Descriptor cd_S28C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S28C16, buf);
    S28C16 &lv = *(new (buf) S28C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S28C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C16)");
    check_base_class_offset(lv, (S28C12_nt*)(S28C17*), 0, "S28C16");
    check_base_class_offset(lv, (S28C17*), 0, "S28C16");
    test_class_info(&lv, &cd_S28C16);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C16(Test_S28C16, "S28C16", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S28C12_nt;
extern Class_Descriptor cd_S28C17;
static Base_Class bases_S28C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S28C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S28C16 = {  "S28C16", // class name
  bases_S28C16, 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  S28C18_nt  {
  int s28c18f0[3];
  void  mf28c18(); // _ZN9S28C18_nt7mf28c18Ev
};
//SIG(-1 S28C18_nt) C1{ m Fi[3]}


void  S28C18_nt ::mf28c18(){}

//skip512 S28C18_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S28C23()
{
  extern Class_Descriptor cd_S28C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S28C23, buf);
    S28C23 &lv = *(new (buf) S28C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S28C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C23)");
    check_base_class_offset(lv, (S28C12_nt*), 0, "S28C23");
    test_class_info(&lv, &cd_S28C23);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C23(Test_S28C23, "S28C23", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S28C22()
{
  extern Class_Descriptor cd_S28C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S28C22, buf);
    S28C22 &lv = *(new (buf) S28C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S28C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C22)");
    check_base_class_offset(lv, (S28C12_nt*)(S28C23*), 0, "S28C22");
    check_base_class_offset(lv, (S28C23*), 0, "S28C22");
    test_class_info(&lv, &cd_S28C22);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C22(Test_S28C22, "S28C22", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S28C12_nt;
extern Class_Descriptor cd_S28C23;
static Base_Class bases_S28C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S28C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S28C22 = {  "S28C22", // class name
  bases_S28C22, 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  S28C7_nt  : S28C8_nt {
  ::S28C10_nt s28c7f0;
  ::S28C10_nt s28c7f1;
  ::S28C13_nt s28c7f2;
  int s28c7f3;
  char s28c7f4[4];
  void *s28c7f5[2];
  ::S28C10_nt s28c7f6;
  unsigned int s28c7f7:1;
  unsigned int s28c7f8:1;
  unsigned int s28c7f9:1;
  unsigned int s28c7f10:1;
  unsigned int s28c7f11:1;
  unsigned int s28c7f12:1;
  unsigned int s28c7f13:1;
  unsigned int s28c7f14:1;
  unsigned int s28c7f15:1;
  unsigned int s28c7f16:1;
  unsigned int s28c7f17:1;
  unsigned int s28c7f18:1;
  unsigned int s28c7f19:1;
  unsigned int s28c7f20:1;
  unsigned int s28c7f21:1;
  unsigned int s28c7f22:1;
  unsigned int s28c7f23:1;
  unsigned int s28c7f24:1;
  unsigned int s28c7f25:1;
  unsigned int s28c7f26:1;
  unsigned int s28c7f27:1;
  unsigned int s28c7f28:1;
  unsigned int s28c7f29:1;
  unsigned int s28c7f30:1;
  unsigned int s28c7f31:1;
  unsigned int s28c7f32:1;
  unsigned int s28c7f33:1;
  unsigned int s28c7f34:1;
  unsigned int s28c7f35:1;
  unsigned int s28c7f36:1;
  unsigned int s28c7f37:1;
  unsigned int s28c7f38:1;
  unsigned int s28c7f39:1;
  unsigned int s28c7f40:1;
  unsigned int s28c7f41:1;
  unsigned int s28c7f42:1;
  unsigned int s28c7f43:1;
  unsigned int s28c7f44:1;
  unsigned int s28c7f45:1;
  unsigned int s28c7f46:1;
  unsigned int s28c7f47:1;
  unsigned int s28c7f48:1;
  unsigned int s28c7f49:1;
  unsigned int s28c7f50:1;
  unsigned int s28c7f51:1;
  unsigned int s28c7f52:1;
  unsigned int s28c7f53:1;
  unsigned int s28c7f54:1;
  unsigned int s28c7f55:1;
  unsigned int s28c7f56:1;
  unsigned int s28c7f57:1;
  unsigned int s28c7f58:1;
  unsigned int s28c7f59:1;
  unsigned int s28c7f60:1;
  unsigned int s28c7f61:1;
  unsigned int s28c7f62:1;
  unsigned int s28c7f63:1;
  unsigned int s28c7f64:1;
  unsigned int s28c7f65:1;
  unsigned int s28c7f66:1;
  unsigned int s28c7f67:1;
  unsigned int s28c7f68:1;
  unsigned int s28c7f69:1;
  unsigned int s28c7f70:1;
  unsigned int s28c7f71:1;
  unsigned int s28c7f72:1;
  unsigned int s28c7f73:1;
  unsigned int s28c7f74:1;
  unsigned int s28c7f75:1;
  unsigned int s28c7f76:1;
  unsigned int s28c7f77:1;
  unsigned int s28c7f78:1;
  unsigned int s28c7f79:1;
  unsigned int s28c7f80:1;
  unsigned int s28c7f81:1;
  unsigned int s28c7f82:1;
  unsigned int s28c7f83:1;
  int s28c7f84[5];
  void *s28c7f85[2];
  int s28c7f86[3];
  ::S28C9_nt s28c7f87;
  ::S28C9_nt s28c7f88;
  ::S28C9_nt s28c7f89;
  ::S28C16 s28c7f90;
  ::S28C16 s28c7f91;
  int s28c7f92;
  void *s28c7f93[2];
  ::S28C18_nt s28c7f94;
  ::S28C18_nt s28c7f95;
  ::S28C18_nt s28c7f96;
  ::S28C18_nt s28c7f97;
  void *s28c7f98;
  ::S28C9_nt s28c7f99;
  ::S28C16 s28c7f100;
  ::S28C18_nt s28c7f101;
  ::S28C18_nt s28c7f102;
  int s28c7f103;
  ::S28C18_nt s28c7f104;
  ::S28C18_nt s28c7f105;
  void *s28c7f106;
  int s28c7f107;
  char s28c7f108;
  ::S28C18_nt s28c7f109;
  ::S28C18_nt s28c7f110;
  void *s28c7f111;
  int s28c7f112;
  void *s28c7f113;
  ::S28C16 s28c7f114;
  ::S28C22 s28c7f115;
  ::S28C22 s28c7f116;
  virtual  ~S28C7_nt(); // _ZN8S28C7_ntD1Ev
  virtual void  v68(); // _ZN8S28C7_nt3v68Ev
  virtual void  v69(); // _ZN8S28C7_nt3v69Ev
  virtual void  v70(); // _ZN8S28C7_nt3v70Ev
  virtual void  v71(); // _ZN8S28C7_nt3v71Ev
  virtual void  v72(); // _ZN8S28C7_nt3v72Ev
  virtual void  v73(); // _ZN8S28C7_nt3v73Ev
  virtual void  v74(); // _ZN8S28C7_nt3v74Ev
  virtual void  v75(); // _ZN8S28C7_nt3v75Ev
  virtual void  v76(); // _ZN8S28C7_nt3v76Ev
  virtual void  v77(); // _ZN8S28C7_nt3v77Ev
  virtual void  v78(); // _ZN8S28C7_nt3v78Ev
  virtual void  v79(); // _ZN8S28C7_nt3v79Ev
  virtual void  v80(); // _ZN8S28C7_nt3v80Ev
  virtual void  v81(); // _ZN8S28C7_nt3v81Ev
  virtual void  v82(); // _ZN8S28C7_nt3v82Ev
  virtual void  v83(); // _ZN8S28C7_nt3v83Ev
  virtual void  v84(); // _ZN8S28C7_nt3v84Ev
  virtual void  v85(); // _ZN8S28C7_nt3v85Ev
  virtual void  v86(); // _ZN8S28C7_nt3v86Ev
  virtual void  v87(); // _ZN8S28C7_nt3v87Ev
  virtual void  v88(); // _ZN8S28C7_nt3v88Ev
  virtual void  v89(); // _ZN8S28C7_nt3v89Ev
  virtual void  v90(); // _ZN8S28C7_nt3v90Ev
  virtual void  v91(); // _ZN8S28C7_nt3v91Ev
  virtual void  v92(); // _ZN8S28C7_nt3v92Ev
  virtual void  v93(); // _ZN8S28C7_nt3v93Ev
  virtual void  v94(); // _ZN8S28C7_nt3v94Ev
  virtual void  v95(); // _ZN8S28C7_nt3v95Ev
  virtual void  v96(); // _ZN8S28C7_nt3v96Ev
  virtual void  v97(); // _ZN8S28C7_nt3v97Ev
  virtual void  v98(); // _ZN8S28C7_nt3v98Ev
  virtual void  v99(); // _ZN8S28C7_nt3v99Ev
  virtual void  v100(); // _ZN8S28C7_nt4v100Ev
  virtual void  v101(); // _ZN8S28C7_nt4v101Ev
  virtual void  v102(); // _ZN8S28C7_nt4v102Ev
  virtual void  v103(); // _ZN8S28C7_nt4v103Ev
  virtual void  v104(); // _ZN8S28C7_nt4v104Ev
  virtual void  v105(); // _ZN8S28C7_nt4v105Ev
  virtual void  v106(); // _ZN8S28C7_nt4v106Ev
  virtual void  v107(); // _ZN8S28C7_nt4v107Ev
  virtual void  v108(); // _ZN8S28C7_nt4v108Ev
  virtual void  v109(); // _ZN8S28C7_nt4v109Ev
  virtual void  v110(); // _ZN8S28C7_nt4v110Ev
  virtual void  v111(); // _ZN8S28C7_nt4v111Ev
  virtual void  v112(); // _ZN8S28C7_nt4v112Ev
  virtual void  v113(); // _ZN8S28C7_nt4v113Ev
  virtual void  v114(); // _ZN8S28C7_nt4v114Ev
  virtual void  v115(); // _ZN8S28C7_nt4v115Ev
  virtual void  v116(); // _ZN8S28C7_nt4v116Ev
  virtual void  v117(); // _ZN8S28C7_nt4v117Ev
  virtual void  v118(); // _ZN8S28C7_nt4v118Ev
  virtual void  v119(); // _ZN8S28C7_nt4v119Ev
  virtual void  v120(); // _ZN8S28C7_nt4v120Ev
  virtual void  v121(); // _ZN8S28C7_nt4v121Ev
  virtual void  v122(); // _ZN8S28C7_nt4v122Ev
  virtual void  v123(); // _ZN8S28C7_nt4v123Ev
  virtual void  v124(); // _ZN8S28C7_nt4v124Ev
  virtual void  v125(); // _ZN8S28C7_nt4v125Ev
  virtual void  v126(); // _ZN8S28C7_nt4v126Ev
  virtual void  v127(); // _ZN8S28C7_nt4v127Ev
  virtual void  v128(); // _ZN8S28C7_nt4v128Ev
  virtual void  v129(); // _ZN8S28C7_nt4v129Ev
  virtual void  v130(); // _ZN8S28C7_nt4v130Ev
  virtual void  v131(); // _ZN8S28C7_nt4v131Ev
  virtual void  v132(); // _ZN8S28C7_nt4v132Ev
  virtual void  v133(); // _ZN8S28C7_nt4v133Ev
  virtual void  v134(); // _ZN8S28C7_nt4v134Ev
  virtual void  v135(); // _ZN8S28C7_nt4v135Ev
  virtual void  v136(); // _ZN8S28C7_nt4v136Ev
  virtual void  v137(); // _ZN8S28C7_nt4v137Ev
  virtual void  v138(); // _ZN8S28C7_nt4v138Ev
  virtual void  v139(); // _ZN8S28C7_nt4v139Ev
  virtual void  v140(); // _ZN8S28C7_nt4v140Ev
  virtual void  v141(); // _ZN8S28C7_nt4v141Ev
  virtual void  v142(); // _ZN8S28C7_nt4v142Ev
  virtual void  v143(); // _ZN8S28C7_nt4v143Ev
  virtual void  v144(); // _ZN8S28C7_nt4v144Ev
  virtual void  v145(); // _ZN8S28C7_nt4v145Ev
  virtual void  v146(); // _ZN8S28C7_nt4v146Ev
  virtual void  v147(); // _ZN8S28C7_nt4v147Ev
  virtual void  v148(); // _ZN8S28C7_nt4v148Ev
  virtual void  v149(); // _ZN8S28C7_nt4v149Ev
  virtual void  v150(); // _ZN8S28C7_nt4v150Ev
  virtual void  v151(); // _ZN8S28C7_nt4v151Ev
  virtual void  v152(); // _ZN8S28C7_nt4v152Ev
  virtual void  v153(); // _ZN8S28C7_nt4v153Ev
  virtual void  v154(); // _ZN8S28C7_nt4v154Ev
  virtual void  v155(); // _ZN8S28C7_nt4v155Ev
  virtual void  v156(); // _ZN8S28C7_nt4v156Ev
  virtual void  v157(); // _ZN8S28C7_nt4v157Ev
  virtual void  v158(); // _ZN8S28C7_nt4v158Ev
  virtual void  v159(); // _ZN8S28C7_nt4v159Ev
  virtual void  v160(); // _ZN8S28C7_nt4v160Ev
  virtual void  v161(); // _ZN8S28C7_nt4v161Ev
  virtual void  v162(); // _ZN8S28C7_nt4v162Ev
  virtual void  v163(); // _ZN8S28C7_nt4v163Ev
  virtual void  v164(); // _ZN8S28C7_nt4v164Ev
  virtual void  v165(); // _ZN8S28C7_nt4v165Ev
  virtual void  v166(); // _ZN8S28C7_nt4v166Ev
  virtual void  v167(); // _ZN8S28C7_nt4v167Ev
  virtual void  v168(); // _ZN8S28C7_nt4v168Ev
  virtual void  v169(); // _ZN8S28C7_nt4v169Ev
  virtual void  v170(); // _ZN8S28C7_nt4v170Ev
  virtual void  v171(); // _ZN8S28C7_nt4v171Ev
  virtual void  v172(); // _ZN8S28C7_nt4v172Ev
  virtual void  v173(); // _ZN8S28C7_nt4v173Ev
  virtual void  v174(); // _ZN8S28C7_nt4v174Ev
  virtual void  v175(); // _ZN8S28C7_nt4v175Ev
  virtual void  v176(); // _ZN8S28C7_nt4v176Ev
  virtual void  v177(); // _ZN8S28C7_nt4v177Ev
  virtual void  v178(); // _ZN8S28C7_nt4v178Ev
  virtual void  v179(); // _ZN8S28C7_nt4v179Ev
  virtual void  v180(); // _ZN8S28C7_nt4v180Ev
  virtual void  v181(); // _ZN8S28C7_nt4v181Ev
  virtual void  v182(); // _ZN8S28C7_nt4v182Ev
  virtual void  v183(); // _ZN8S28C7_nt4v183Ev
  virtual void  v184(); // _ZN8S28C7_nt4v184Ev
  virtual void  v185(); // _ZN8S28C7_nt4v185Ev
  virtual void  v186(); // _ZN8S28C7_nt4v186Ev
  virtual void  v187(); // _ZN8S28C7_nt4v187Ev
  virtual void  v188(); // _ZN8S28C7_nt4v188Ev
  virtual void  v189(); // _ZN8S28C7_nt4v189Ev
  virtual void  v190(); // _ZN8S28C7_nt4v190Ev
  virtual void  v191(); // _ZN8S28C7_nt4v191Ev
  virtual void  v192(); // _ZN8S28C7_nt4v192Ev
  virtual void  v193(); // _ZN8S28C7_nt4v193Ev
  virtual void  v194(); // _ZN8S28C7_nt4v194Ev
  virtual void  v195(); // _ZN8S28C7_nt4v195Ev
  virtual void  v196(); // _ZN8S28C7_nt4v196Ev
  virtual void  v197(); // _ZN8S28C7_nt4v197Ev
  virtual void  v198(); // _ZN8S28C7_nt4v198Ev
  virtual void  v199(); // _ZN8S28C7_nt4v199Ev
  virtual void  v200(); // _ZN8S28C7_nt4v200Ev
  virtual void  v201(); // _ZN8S28C7_nt4v201Ev
  virtual void  v202(); // _ZN8S28C7_nt4v202Ev
  virtual void  v203(); // _ZN8S28C7_nt4v203Ev
  virtual void  v204(); // _ZN8S28C7_nt4v204Ev
  virtual void  v205(); // _ZN8S28C7_nt4v205Ev
  virtual void  v206(); // _ZN8S28C7_nt4v206Ev
  virtual void  v207(); // _ZN8S28C7_nt4v207Ev
  virtual void  v208(); // _ZN8S28C7_nt4v208Ev
  virtual void  v209(); // _ZN8S28C7_nt4v209Ev
  virtual void  v210(); // _ZN8S28C7_nt4v210Ev
  S28C7_nt(); // tgen
};
//SIG(-1 S28C7_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}


 S28C7_nt ::~S28C7_nt(){ note_dtor("S28C7_nt", this);}
void  S28C7_nt ::v68(){vfunc_called(this, "_ZN8S28C7_nt3v68Ev");}
void  S28C7_nt ::v69(){vfunc_called(this, "_ZN8S28C7_nt3v69Ev");}
void  S28C7_nt ::v70(){vfunc_called(this, "_ZN8S28C7_nt3v70Ev");}
void  S28C7_nt ::v71(){vfunc_called(this, "_ZN8S28C7_nt3v71Ev");}
void  S28C7_nt ::v72(){vfunc_called(this, "_ZN8S28C7_nt3v72Ev");}
void  S28C7_nt ::v73(){vfunc_called(this, "_ZN8S28C7_nt3v73Ev");}
void  S28C7_nt ::v74(){vfunc_called(this, "_ZN8S28C7_nt3v74Ev");}
void  S28C7_nt ::v75(){vfunc_called(this, "_ZN8S28C7_nt3v75Ev");}
void  S28C7_nt ::v76(){vfunc_called(this, "_ZN8S28C7_nt3v76Ev");}
void  S28C7_nt ::v77(){vfunc_called(this, "_ZN8S28C7_nt3v77Ev");}
void  S28C7_nt ::v78(){vfunc_called(this, "_ZN8S28C7_nt3v78Ev");}
void  S28C7_nt ::v79(){vfunc_called(this, "_ZN8S28C7_nt3v79Ev");}
void  S28C7_nt ::v80(){vfunc_called(this, "_ZN8S28C7_nt3v80Ev");}
void  S28C7_nt ::v81(){vfunc_called(this, "_ZN8S28C7_nt3v81Ev");}
void  S28C7_nt ::v82(){vfunc_called(this, "_ZN8S28C7_nt3v82Ev");}
void  S28C7_nt ::v83(){vfunc_called(this, "_ZN8S28C7_nt3v83Ev");}
void  S28C7_nt ::v84(){vfunc_called(this, "_ZN8S28C7_nt3v84Ev");}
void  S28C7_nt ::v85(){vfunc_called(this, "_ZN8S28C7_nt3v85Ev");}
void  S28C7_nt ::v86(){vfunc_called(this, "_ZN8S28C7_nt3v86Ev");}
void  S28C7_nt ::v87(){vfunc_called(this, "_ZN8S28C7_nt3v87Ev");}
void  S28C7_nt ::v88(){vfunc_called(this, "_ZN8S28C7_nt3v88Ev");}
void  S28C7_nt ::v89(){vfunc_called(this, "_ZN8S28C7_nt3v89Ev");}
void  S28C7_nt ::v90(){vfunc_called(this, "_ZN8S28C7_nt3v90Ev");}
void  S28C7_nt ::v91(){vfunc_called(this, "_ZN8S28C7_nt3v91Ev");}
void  S28C7_nt ::v92(){vfunc_called(this, "_ZN8S28C7_nt3v92Ev");}
void  S28C7_nt ::v93(){vfunc_called(this, "_ZN8S28C7_nt3v93Ev");}
void  S28C7_nt ::v94(){vfunc_called(this, "_ZN8S28C7_nt3v94Ev");}
void  S28C7_nt ::v95(){vfunc_called(this, "_ZN8S28C7_nt3v95Ev");}
void  S28C7_nt ::v96(){vfunc_called(this, "_ZN8S28C7_nt3v96Ev");}
void  S28C7_nt ::v97(){vfunc_called(this, "_ZN8S28C7_nt3v97Ev");}
void  S28C7_nt ::v98(){vfunc_called(this, "_ZN8S28C7_nt3v98Ev");}
void  S28C7_nt ::v99(){vfunc_called(this, "_ZN8S28C7_nt3v99Ev");}
void  S28C7_nt ::v100(){vfunc_called(this, "_ZN8S28C7_nt4v100Ev");}
void  S28C7_nt ::v101(){vfunc_called(this, "_ZN8S28C7_nt4v101Ev");}
void  S28C7_nt ::v102(){vfunc_called(this, "_ZN8S28C7_nt4v102Ev");}
void  S28C7_nt ::v103(){vfunc_called(this, "_ZN8S28C7_nt4v103Ev");}
void  S28C7_nt ::v104(){vfunc_called(this, "_ZN8S28C7_nt4v104Ev");}
void  S28C7_nt ::v105(){vfunc_called(this, "_ZN8S28C7_nt4v105Ev");}
void  S28C7_nt ::v106(){vfunc_called(this, "_ZN8S28C7_nt4v106Ev");}
void  S28C7_nt ::v107(){vfunc_called(this, "_ZN8S28C7_nt4v107Ev");}
void  S28C7_nt ::v108(){vfunc_called(this, "_ZN8S28C7_nt4v108Ev");}
void  S28C7_nt ::v109(){vfunc_called(this, "_ZN8S28C7_nt4v109Ev");}
void  S28C7_nt ::v110(){vfunc_called(this, "_ZN8S28C7_nt4v110Ev");}
void  S28C7_nt ::v111(){vfunc_called(this, "_ZN8S28C7_nt4v111Ev");}
void  S28C7_nt ::v112(){vfunc_called(this, "_ZN8S28C7_nt4v112Ev");}
void  S28C7_nt ::v113(){vfunc_called(this, "_ZN8S28C7_nt4v113Ev");}
void  S28C7_nt ::v114(){vfunc_called(this, "_ZN8S28C7_nt4v114Ev");}
void  S28C7_nt ::v115(){vfunc_called(this, "_ZN8S28C7_nt4v115Ev");}
void  S28C7_nt ::v116(){vfunc_called(this, "_ZN8S28C7_nt4v116Ev");}
void  S28C7_nt ::v117(){vfunc_called(this, "_ZN8S28C7_nt4v117Ev");}
void  S28C7_nt ::v118(){vfunc_called(this, "_ZN8S28C7_nt4v118Ev");}
void  S28C7_nt ::v119(){vfunc_called(this, "_ZN8S28C7_nt4v119Ev");}
void  S28C7_nt ::v120(){vfunc_called(this, "_ZN8S28C7_nt4v120Ev");}
void  S28C7_nt ::v121(){vfunc_called(this, "_ZN8S28C7_nt4v121Ev");}
void  S28C7_nt ::v122(){vfunc_called(this, "_ZN8S28C7_nt4v122Ev");}
void  S28C7_nt ::v123(){vfunc_called(this, "_ZN8S28C7_nt4v123Ev");}
void  S28C7_nt ::v124(){vfunc_called(this, "_ZN8S28C7_nt4v124Ev");}
void  S28C7_nt ::v125(){vfunc_called(this, "_ZN8S28C7_nt4v125Ev");}
void  S28C7_nt ::v126(){vfunc_called(this, "_ZN8S28C7_nt4v126Ev");}
void  S28C7_nt ::v127(){vfunc_called(this, "_ZN8S28C7_nt4v127Ev");}
void  S28C7_nt ::v128(){vfunc_called(this, "_ZN8S28C7_nt4v128Ev");}
void  S28C7_nt ::v129(){vfunc_called(this, "_ZN8S28C7_nt4v129Ev");}
void  S28C7_nt ::v130(){vfunc_called(this, "_ZN8S28C7_nt4v130Ev");}
void  S28C7_nt ::v131(){vfunc_called(this, "_ZN8S28C7_nt4v131Ev");}
void  S28C7_nt ::v132(){vfunc_called(this, "_ZN8S28C7_nt4v132Ev");}
void  S28C7_nt ::v133(){vfunc_called(this, "_ZN8S28C7_nt4v133Ev");}
void  S28C7_nt ::v134(){vfunc_called(this, "_ZN8S28C7_nt4v134Ev");}
void  S28C7_nt ::v135(){vfunc_called(this, "_ZN8S28C7_nt4v135Ev");}
void  S28C7_nt ::v136(){vfunc_called(this, "_ZN8S28C7_nt4v136Ev");}
void  S28C7_nt ::v137(){vfunc_called(this, "_ZN8S28C7_nt4v137Ev");}
void  S28C7_nt ::v138(){vfunc_called(this, "_ZN8S28C7_nt4v138Ev");}
void  S28C7_nt ::v139(){vfunc_called(this, "_ZN8S28C7_nt4v139Ev");}
void  S28C7_nt ::v140(){vfunc_called(this, "_ZN8S28C7_nt4v140Ev");}
void  S28C7_nt ::v141(){vfunc_called(this, "_ZN8S28C7_nt4v141Ev");}
void  S28C7_nt ::v142(){vfunc_called(this, "_ZN8S28C7_nt4v142Ev");}
void  S28C7_nt ::v143(){vfunc_called(this, "_ZN8S28C7_nt4v143Ev");}
void  S28C7_nt ::v144(){vfunc_called(this, "_ZN8S28C7_nt4v144Ev");}
void  S28C7_nt ::v145(){vfunc_called(this, "_ZN8S28C7_nt4v145Ev");}
void  S28C7_nt ::v146(){vfunc_called(this, "_ZN8S28C7_nt4v146Ev");}
void  S28C7_nt ::v147(){vfunc_called(this, "_ZN8S28C7_nt4v147Ev");}
void  S28C7_nt ::v148(){vfunc_called(this, "_ZN8S28C7_nt4v148Ev");}
void  S28C7_nt ::v149(){vfunc_called(this, "_ZN8S28C7_nt4v149Ev");}
void  S28C7_nt ::v150(){vfunc_called(this, "_ZN8S28C7_nt4v150Ev");}
void  S28C7_nt ::v151(){vfunc_called(this, "_ZN8S28C7_nt4v151Ev");}
void  S28C7_nt ::v152(){vfunc_called(this, "_ZN8S28C7_nt4v152Ev");}
void  S28C7_nt ::v153(){vfunc_called(this, "_ZN8S28C7_nt4v153Ev");}
void  S28C7_nt ::v154(){vfunc_called(this, "_ZN8S28C7_nt4v154Ev");}
void  S28C7_nt ::v155(){vfunc_called(this, "_ZN8S28C7_nt4v155Ev");}
void  S28C7_nt ::v156(){vfunc_called(this, "_ZN8S28C7_nt4v156Ev");}
void  S28C7_nt ::v157(){vfunc_called(this, "_ZN8S28C7_nt4v157Ev");}
void  S28C7_nt ::v158(){vfunc_called(this, "_ZN8S28C7_nt4v158Ev");}
void  S28C7_nt ::v159(){vfunc_called(this, "_ZN8S28C7_nt4v159Ev");}
void  S28C7_nt ::v160(){vfunc_called(this, "_ZN8S28C7_nt4v160Ev");}
void  S28C7_nt ::v161(){vfunc_called(this, "_ZN8S28C7_nt4v161Ev");}
void  S28C7_nt ::v162(){vfunc_called(this, "_ZN8S28C7_nt4v162Ev");}
void  S28C7_nt ::v163(){vfunc_called(this, "_ZN8S28C7_nt4v163Ev");}
void  S28C7_nt ::v164(){vfunc_called(this, "_ZN8S28C7_nt4v164Ev");}
void  S28C7_nt ::v165(){vfunc_called(this, "_ZN8S28C7_nt4v165Ev");}
void  S28C7_nt ::v166(){vfunc_called(this, "_ZN8S28C7_nt4v166Ev");}
void  S28C7_nt ::v167(){vfunc_called(this, "_ZN8S28C7_nt4v167Ev");}
void  S28C7_nt ::v168(){vfunc_called(this, "_ZN8S28C7_nt4v168Ev");}
void  S28C7_nt ::v169(){vfunc_called(this, "_ZN8S28C7_nt4v169Ev");}
void  S28C7_nt ::v170(){vfunc_called(this, "_ZN8S28C7_nt4v170Ev");}
void  S28C7_nt ::v171(){vfunc_called(this, "_ZN8S28C7_nt4v171Ev");}
void  S28C7_nt ::v172(){vfunc_called(this, "_ZN8S28C7_nt4v172Ev");}
void  S28C7_nt ::v173(){vfunc_called(this, "_ZN8S28C7_nt4v173Ev");}
void  S28C7_nt ::v174(){vfunc_called(this, "_ZN8S28C7_nt4v174Ev");}
void  S28C7_nt ::v175(){vfunc_called(this, "_ZN8S28C7_nt4v175Ev");}
void  S28C7_nt ::v176(){vfunc_called(this, "_ZN8S28C7_nt4v176Ev");}
void  S28C7_nt ::v177(){vfunc_called(this, "_ZN8S28C7_nt4v177Ev");}
void  S28C7_nt ::v178(){vfunc_called(this, "_ZN8S28C7_nt4v178Ev");}
void  S28C7_nt ::v179(){vfunc_called(this, "_ZN8S28C7_nt4v179Ev");}
void  S28C7_nt ::v180(){vfunc_called(this, "_ZN8S28C7_nt4v180Ev");}
void  S28C7_nt ::v181(){vfunc_called(this, "_ZN8S28C7_nt4v181Ev");}
void  S28C7_nt ::v182(){vfunc_called(this, "_ZN8S28C7_nt4v182Ev");}
void  S28C7_nt ::v183(){vfunc_called(this, "_ZN8S28C7_nt4v183Ev");}
void  S28C7_nt ::v184(){vfunc_called(this, "_ZN8S28C7_nt4v184Ev");}
void  S28C7_nt ::v185(){vfunc_called(this, "_ZN8S28C7_nt4v185Ev");}
void  S28C7_nt ::v186(){vfunc_called(this, "_ZN8S28C7_nt4v186Ev");}
void  S28C7_nt ::v187(){vfunc_called(this, "_ZN8S28C7_nt4v187Ev");}
void  S28C7_nt ::v188(){vfunc_called(this, "_ZN8S28C7_nt4v188Ev");}
void  S28C7_nt ::v189(){vfunc_called(this, "_ZN8S28C7_nt4v189Ev");}
void  S28C7_nt ::v190(){vfunc_called(this, "_ZN8S28C7_nt4v190Ev");}
void  S28C7_nt ::v191(){vfunc_called(this, "_ZN8S28C7_nt4v191Ev");}
void  S28C7_nt ::v192(){vfunc_called(this, "_ZN8S28C7_nt4v192Ev");}
void  S28C7_nt ::v193(){vfunc_called(this, "_ZN8S28C7_nt4v193Ev");}
void  S28C7_nt ::v194(){vfunc_called(this, "_ZN8S28C7_nt4v194Ev");}
void  S28C7_nt ::v195(){vfunc_called(this, "_ZN8S28C7_nt4v195Ev");}
void  S28C7_nt ::v196(){vfunc_called(this, "_ZN8S28C7_nt4v196Ev");}
void  S28C7_nt ::v197(){vfunc_called(this, "_ZN8S28C7_nt4v197Ev");}
void  S28C7_nt ::v198(){vfunc_called(this, "_ZN8S28C7_nt4v198Ev");}
void  S28C7_nt ::v199(){vfunc_called(this, "_ZN8S28C7_nt4v199Ev");}
void  S28C7_nt ::v200(){vfunc_called(this, "_ZN8S28C7_nt4v200Ev");}
void  S28C7_nt ::v201(){vfunc_called(this, "_ZN8S28C7_nt4v201Ev");}
void  S28C7_nt ::v202(){vfunc_called(this, "_ZN8S28C7_nt4v202Ev");}
void  S28C7_nt ::v203(){vfunc_called(this, "_ZN8S28C7_nt4v203Ev");}
void  S28C7_nt ::v204(){vfunc_called(this, "_ZN8S28C7_nt4v204Ev");}
void  S28C7_nt ::v205(){vfunc_called(this, "_ZN8S28C7_nt4v205Ev");}
void  S28C7_nt ::v206(){vfunc_called(this, "_ZN8S28C7_nt4v206Ev");}
void  S28C7_nt ::v207(){vfunc_called(this, "_ZN8S28C7_nt4v207Ev");}
void  S28C7_nt ::v208(){vfunc_called(this, "_ZN8S28C7_nt4v208Ev");}
void  S28C7_nt ::v209(){vfunc_called(this, "_ZN8S28C7_nt4v209Ev");}
void  S28C7_nt ::v210(){vfunc_called(this, "_ZN8S28C7_nt4v210Ev");}
S28C7_nt ::S28C7_nt(){ note_ctor("S28C7_nt", this);} // tgen

//skip512 S28C7_nt

#else // __cplusplus

extern void _ZN8S28C7_ntC1Ev();
extern void _ZN8S28C7_ntD1Ev();
Name_Map name_map_S28C7_nt[] = {
  NSPAIR(_ZN8S28C7_ntC1Ev),
  NSPAIR(_ZN8S28C7_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C8_nt;
extern VTBL_ENTRY _ZTI8S28C8_nt[];
extern  VTBL_ENTRY _ZTV8S28C8_nt[];
static Base_Class bases_S28C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S28C7_nt[];
extern void _ZN8S28C7_ntD1Ev();
extern void _ZN8S28C7_ntD0Ev();
extern void _ZN8S28C8_nt2v4Ev();
extern void _ZN8S28C8_nt2v5Ev();
extern void _ZN8S28C8_nt2v6Ev();
extern void _ZN8S28C8_nt2v7Ev();
extern void _ZN8S28C8_nt2v8Ev();
extern void _ZN8S28C8_nt2v9Ev();
extern void _ZN8S28C8_nt3v10Ev();
extern void _ZN8S28C8_nt3v11Ev();
extern void _ZN8S28C8_nt3v12Ev();
extern void _ZN8S28C8_nt3v13Ev();
extern void _ZN8S28C8_nt3v14Ev();
extern void _ZN8S28C8_nt3v15Ev();
extern void _ZN8S28C8_nt3v16Ev();
extern void _ZN8S28C8_nt3v17Ev();
extern void _ZN8S28C8_nt3v18Ev();
extern void _ZN8S28C8_nt3v19Ev();
extern void _ZN8S28C8_nt3v20Ev();
extern void _ZN8S28C8_nt3v21Ev();
extern void _ZN8S28C8_nt3v22Ev();
extern void _ZN8S28C8_nt3v23Ev();
extern void _ZN8S28C8_nt3v24Ev();
extern void _ZN8S28C8_nt3v25Ev();
extern void _ZN8S28C8_nt3v26Ev();
extern void _ZN8S28C8_nt3v27Ev();
extern void _ZN8S28C8_nt3v28Ev();
extern void _ZN8S28C8_nt3v29Ev();
extern void _ZN8S28C8_nt3v30Ev();
extern void _ZN8S28C8_nt3v31Ev();
extern void _ZN8S28C8_nt3v32Ev();
extern void _ZN8S28C8_nt3v33Ev();
extern void _ZN8S28C8_nt3v34Ev();
extern void _ZN8S28C8_nt3v35Ev();
extern void _ZN8S28C8_nt3v36Ev();
extern void _ZN8S28C8_nt3v37Ev();
extern void _ZN8S28C8_nt3v38Ev();
extern void _ZN8S28C8_nt3v39Ev();
extern void _ZN8S28C8_nt3v40Ev();
extern void _ZN8S28C8_nt3v41Ev();
extern void _ZN8S28C8_nt3v42Ev();
extern void _ZN8S28C8_nt3v43Ev();
extern void _ZN8S28C8_nt3v44Ev();
extern void _ZN8S28C8_nt3v45Ev();
extern void _ZN8S28C8_nt3v46Ev();
extern void _ZN8S28C8_nt3v47Ev();
extern void _ZN8S28C8_nt3v48Ev();
extern void _ZN8S28C8_nt3v49Ev();
extern void _ZN8S28C8_nt3v50Ev();
extern void _ZN8S28C8_nt3v51Ev();
extern void _ZN8S28C8_nt3v52Ev();
extern void _ZN8S28C8_nt3v53Ev();
extern void _ZN8S28C8_nt3v54Ev();
extern void _ZN8S28C8_nt3v55Ev();
extern void _ZN8S28C8_nt3v56Ev();
extern void _ZN8S28C8_nt3v57Ev();
extern void _ZN8S28C8_nt3v58Ev();
extern void _ZN8S28C8_nt3v59Ev();
extern void _ZN8S28C8_nt3v60Ev();
extern void _ZN8S28C8_nt3v61Ev();
extern void _ZN8S28C8_nt3v62Ev();
extern void _ZN8S28C8_nt3v63Ev();
extern void _ZN8S28C8_nt3v64Ev();
extern void _ZN8S28C8_nt3v65Ev();
extern void _ZN8S28C8_nt3v66Ev();
extern void _ZN8S28C8_nt3v67Ev();
extern void _ZN8S28C7_nt3v68Ev();
extern void _ZN8S28C7_nt3v69Ev();
extern void _ZN8S28C7_nt3v70Ev();
extern void _ZN8S28C7_nt3v71Ev();
extern void _ZN8S28C7_nt3v72Ev();
extern void _ZN8S28C7_nt3v73Ev();
extern void _ZN8S28C7_nt3v74Ev();
extern void _ZN8S28C7_nt3v75Ev();
extern void _ZN8S28C7_nt3v76Ev();
extern void _ZN8S28C7_nt3v77Ev();
extern void _ZN8S28C7_nt3v78Ev();
extern void _ZN8S28C7_nt3v79Ev();
extern void _ZN8S28C7_nt3v80Ev();
extern void _ZN8S28C7_nt3v81Ev();
extern void _ZN8S28C7_nt3v82Ev();
extern void _ZN8S28C7_nt3v83Ev();
extern void _ZN8S28C7_nt3v84Ev();
extern void _ZN8S28C7_nt3v85Ev();
extern void _ZN8S28C7_nt3v86Ev();
extern void _ZN8S28C7_nt3v87Ev();
extern void _ZN8S28C7_nt3v88Ev();
extern void _ZN8S28C7_nt3v89Ev();
extern void _ZN8S28C7_nt3v90Ev();
extern void _ZN8S28C7_nt3v91Ev();
extern void _ZN8S28C7_nt3v92Ev();
extern void _ZN8S28C7_nt3v93Ev();
extern void _ZN8S28C7_nt3v94Ev();
extern void _ZN8S28C7_nt3v95Ev();
extern void _ZN8S28C7_nt3v96Ev();
extern void _ZN8S28C7_nt3v97Ev();
extern void _ZN8S28C7_nt3v98Ev();
extern void _ZN8S28C7_nt3v99Ev();
extern void _ZN8S28C7_nt4v100Ev();
extern void _ZN8S28C7_nt4v101Ev();
extern void _ZN8S28C7_nt4v102Ev();
extern void _ZN8S28C7_nt4v103Ev();
extern void _ZN8S28C7_nt4v104Ev();
extern void _ZN8S28C7_nt4v105Ev();
extern void _ZN8S28C7_nt4v106Ev();
extern void _ZN8S28C7_nt4v107Ev();
extern void _ZN8S28C7_nt4v108Ev();
extern void _ZN8S28C7_nt4v109Ev();
extern void _ZN8S28C7_nt4v110Ev();
extern void _ZN8S28C7_nt4v111Ev();
extern void _ZN8S28C7_nt4v112Ev();
extern void _ZN8S28C7_nt4v113Ev();
extern void _ZN8S28C7_nt4v114Ev();
extern void _ZN8S28C7_nt4v115Ev();
extern void _ZN8S28C7_nt4v116Ev();
extern void _ZN8S28C7_nt4v117Ev();
extern void _ZN8S28C7_nt4v118Ev();
extern void _ZN8S28C7_nt4v119Ev();
extern void _ZN8S28C7_nt4v120Ev();
extern void _ZN8S28C7_nt4v121Ev();
extern void _ZN8S28C7_nt4v122Ev();
extern void _ZN8S28C7_nt4v123Ev();
extern void _ZN8S28C7_nt4v124Ev();
extern void _ZN8S28C7_nt4v125Ev();
extern void _ZN8S28C7_nt4v126Ev();
extern void _ZN8S28C7_nt4v127Ev();
extern void _ZN8S28C7_nt4v128Ev();
extern void _ZN8S28C7_nt4v129Ev();
extern void _ZN8S28C7_nt4v130Ev();
extern void _ZN8S28C7_nt4v131Ev();
extern void _ZN8S28C7_nt4v132Ev();
extern void _ZN8S28C7_nt4v133Ev();
extern void _ZN8S28C7_nt4v134Ev();
extern void _ZN8S28C7_nt4v135Ev();
extern void _ZN8S28C7_nt4v136Ev();
extern void _ZN8S28C7_nt4v137Ev();
extern void _ZN8S28C7_nt4v138Ev();
extern void _ZN8S28C7_nt4v139Ev();
extern void _ZN8S28C7_nt4v140Ev();
extern void _ZN8S28C7_nt4v141Ev();
extern void _ZN8S28C7_nt4v142Ev();
extern void _ZN8S28C7_nt4v143Ev();
extern void _ZN8S28C7_nt4v144Ev();
extern void _ZN8S28C7_nt4v145Ev();
extern void _ZN8S28C7_nt4v146Ev();
extern void _ZN8S28C7_nt4v147Ev();
extern void _ZN8S28C7_nt4v148Ev();
extern void _ZN8S28C7_nt4v149Ev();
extern void _ZN8S28C7_nt4v150Ev();
extern void _ZN8S28C7_nt4v151Ev();
extern void _ZN8S28C7_nt4v152Ev();
extern void _ZN8S28C7_nt4v153Ev();
extern void _ZN8S28C7_nt4v154Ev();
extern void _ZN8S28C7_nt4v155Ev();
extern void _ZN8S28C7_nt4v156Ev();
extern void _ZN8S28C7_nt4v157Ev();
extern void _ZN8S28C7_nt4v158Ev();
extern void _ZN8S28C7_nt4v159Ev();
extern void _ZN8S28C7_nt4v160Ev();
extern void _ZN8S28C7_nt4v161Ev();
extern void _ZN8S28C7_nt4v162Ev();
extern void _ZN8S28C7_nt4v163Ev();
extern void _ZN8S28C7_nt4v164Ev();
extern void _ZN8S28C7_nt4v165Ev();
extern void _ZN8S28C7_nt4v166Ev();
extern void _ZN8S28C7_nt4v167Ev();
extern void _ZN8S28C7_nt4v168Ev();
extern void _ZN8S28C7_nt4v169Ev();
extern void _ZN8S28C7_nt4v170Ev();
extern void _ZN8S28C7_nt4v171Ev();
extern void _ZN8S28C7_nt4v172Ev();
extern void _ZN8S28C7_nt4v173Ev();
extern void _ZN8S28C7_nt4v174Ev();
extern void _ZN8S28C7_nt4v175Ev();
extern void _ZN8S28C7_nt4v176Ev();
extern void _ZN8S28C7_nt4v177Ev();
extern void _ZN8S28C7_nt4v178Ev();
extern void _ZN8S28C7_nt4v179Ev();
extern void _ZN8S28C7_nt4v180Ev();
extern void _ZN8S28C7_nt4v181Ev();
extern void _ZN8S28C7_nt4v182Ev();
extern void _ZN8S28C7_nt4v183Ev();
extern void _ZN8S28C7_nt4v184Ev();
extern void _ZN8S28C7_nt4v185Ev();
extern void _ZN8S28C7_nt4v186Ev();
extern void _ZN8S28C7_nt4v187Ev();
extern void _ZN8S28C7_nt4v188Ev();
extern void _ZN8S28C7_nt4v189Ev();
extern void _ZN8S28C7_nt4v190Ev();
extern void _ZN8S28C7_nt4v191Ev();
extern void _ZN8S28C7_nt4v192Ev();
extern void _ZN8S28C7_nt4v193Ev();
extern void _ZN8S28C7_nt4v194Ev();
extern void _ZN8S28C7_nt4v195Ev();
extern void _ZN8S28C7_nt4v196Ev();
extern void _ZN8S28C7_nt4v197Ev();
extern void _ZN8S28C7_nt4v198Ev();
extern void _ZN8S28C7_nt4v199Ev();
extern void _ZN8S28C7_nt4v200Ev();
extern void _ZN8S28C7_nt4v201Ev();
extern void _ZN8S28C7_nt4v202Ev();
extern void _ZN8S28C7_nt4v203Ev();
extern void _ZN8S28C7_nt4v204Ev();
extern void _ZN8S28C7_nt4v205Ev();
extern void _ZN8S28C7_nt4v206Ev();
extern void _ZN8S28C7_nt4v207Ev();
extern void _ZN8S28C7_nt4v208Ev();
extern void _ZN8S28C7_nt4v209Ev();
extern void _ZN8S28C7_nt4v210Ev();
static  VTBL_ENTRY vtc_S28C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S28C7_nt[0]),
  (VTBL_ENTRY)&_ZN8S28C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S28C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v6Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v7Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v210Ev,
};
extern VTBL_ENTRY _ZTI8S28C7_nt[];
VTBL_ENTRY *P__ZTI8S28C7_nt = _ZTI8S28C7_nt; 
extern  VTBL_ENTRY _ZTV8S28C7_nt[];
Class_Descriptor cd_S28C7_nt = {  "S28C7_nt", // class name
  bases_S28C7_nt, 1,
  &(vtc_S28C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(568,436), // object size
  NSPAIRA(_ZTI8S28C7_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S28C7_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  S28C27  : S28C12_nt {
};
//SIG(-1 S28C27) C1{ BC2{ m Fp Fi[2]}}



static void Test_S28C27()
{
  extern Class_Descriptor cd_S28C27;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S28C27, buf);
    S28C27 &lv = *(new (buf) S28C27());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S28C27)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C27)");
    check_base_class_offset(lv, (S28C12_nt*), 0, "S28C27");
    test_class_info(&lv, &cd_S28C27);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C27(Test_S28C27, "S28C27", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S28C26()
{
  extern Class_Descriptor cd_S28C26;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S28C26, buf);
    S28C26 &lv = *(new (buf) S28C26());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S28C26)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C26)");
    check_base_class_offset(lv, (S28C12_nt*)(S28C27*), 0, "S28C26");
    check_base_class_offset(lv, (S28C27*), 0, "S28C26");
    test_class_info(&lv, &cd_S28C26);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C26(Test_S28C26, "S28C26", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S28C12_nt;
extern Class_Descriptor cd_S28C27;
static Base_Class bases_S28C26[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S28C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S28C26 = {  "S28C26", // class name
  bases_S28C26, 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  S28C6  : S28C7_nt {
  void *s28c6f0[2];
  int s28c6f1;
  void *s28c6f2;
  unsigned int s28c6f3:1;
  unsigned int s28c6f4:1;
  unsigned int s28c6f5:1;
  unsigned int s28c6f6:1;
  unsigned int s28c6f7:1;
  unsigned int s28c6f8:1;
  unsigned int s28c6f9:1;
  unsigned int s28c6f10:1;
  unsigned int s28c6f11:1;
  unsigned int s28c6f12:1;
  unsigned int s28c6f13:1;
  unsigned int s28c6f14:1;
  unsigned int s28c6f15:1;
  unsigned int s28c6f16:1;
  unsigned int s28c6f17:1;
  unsigned int s28c6f18:1;
  unsigned int s28c6f19:1;
  unsigned int s28c6f20:1;
  unsigned int s28c6f21:1;
  char s28c6f22;
  int s28c6f23[2];
  void *s28c6f24;
  ::S28C18_nt s28c6f25;
  ::S28C18_nt s28c6f26;
  void *s28c6f27[5];
  ::S28C18_nt s28c6f28;
  void *s28c6f29;
  ::S28C26 s28c6f30;
  void *s28c6f31[2];
  ::S28C18_nt s28c6f32;
  void *s28c6f33;
  int s28c6f34[2];
  void *s28c6f35;
  int s28c6f36;
  ::S28C18_nt s28c6f37;
  ::S28C18_nt s28c6f38;
  ::S28C18_nt s28c6f39;
  void *s28c6f40[2];
  int s28c6f41;
  ::S28C18_nt s28c6f42;
  int s28c6f43[4];
  void *s28c6f44[2];
  ::S28C26 s28c6f45;
  int s28c6f46;
  ::S28C18_nt s28c6f47;
  virtual  ~S28C6(); // _ZN5S28C6D1Ev
  virtual void  v211(); // _ZN5S28C64v211Ev
  virtual void  v212(); // _ZN5S28C64v212Ev
  virtual void  v213(); // _ZN5S28C64v213Ev
  virtual void  v214(); // _ZN5S28C64v214Ev
  virtual void  v215(); // _ZN5S28C64v215Ev
  virtual void  v216(); // _ZN5S28C64v216Ev
  virtual void  v217(); // _ZN5S28C64v217Ev
  virtual void  v218(); // _ZN5S28C64v218Ev
  virtual void  v219(); // _ZN5S28C64v219Ev
  virtual void  v220(); // _ZN5S28C64v220Ev
  virtual void  v221(); // _ZN5S28C64v221Ev
  virtual void  v222(); // _ZN5S28C64v222Ev
  virtual void  v223(); // _ZN5S28C64v223Ev
  virtual void  v224(); // _ZN5S28C64v224Ev
  virtual void  v225(); // _ZN5S28C64v225Ev
  virtual void  v226(); // _ZN5S28C64v226Ev
  virtual void  v227(); // _ZN5S28C64v227Ev
  virtual void  v228(); // _ZN5S28C64v228Ev
  virtual void  v229(); // _ZN5S28C64v229Ev
  virtual void  v230(); // _ZN5S28C64v230Ev
  virtual void  v231(); // _ZN5S28C64v231Ev
  virtual void  v232(); // _ZN5S28C64v232Ev
  virtual void  v233(); // _ZN5S28C64v233Ev
  virtual void  v234(); // _ZN5S28C64v234Ev
  virtual void  v235(); // _ZN5S28C64v235Ev
  virtual void  v236(); // _ZN5S28C64v236Ev
  virtual void  v237(); // _ZN5S28C64v237Ev
  virtual void  v238(); // _ZN5S28C64v238Ev
  virtual void  v239(); // _ZN5S28C64v239Ev
  virtual void  v240(); // _ZN5S28C64v240Ev
  virtual void  v241(); // _ZN5S28C64v241Ev
  virtual void  v242(); // _ZN5S28C64v242Ev
  virtual void  v243(); // _ZN5S28C64v243Ev
  virtual void  v244(); // _ZN5S28C64v244Ev
  virtual void  v245(); // _ZN5S28C64v245Ev
  virtual void  v246(); // _ZN5S28C64v246Ev
  virtual void  v247(); // _ZN5S28C64v247Ev
  virtual void  v248(); // _ZN5S28C64v248Ev
  virtual void  v249(); // _ZN5S28C64v249Ev
  virtual void  v250(); // _ZN5S28C64v250Ev
  virtual void  v251(); // _ZN5S28C64v251Ev
  virtual void  v252(); // _ZN5S28C64v252Ev
  virtual void  v253(); // _ZN5S28C64v253Ev
  virtual void  v254(); // _ZN5S28C64v254Ev
  virtual void  v255(); // _ZN5S28C64v255Ev
  virtual void  v256(); // _ZN5S28C64v256Ev
  virtual void  v257(); // _ZN5S28C64v257Ev
  virtual void  v258(); // _ZN5S28C64v258Ev
  virtual void  v259(); // _ZN5S28C64v259Ev
  virtual void  v260(); // _ZN5S28C64v260Ev
  S28C6(); // tgen
};
//SIG(-1 S28C6) C1{ BC2{ BC3{ vd 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 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd 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 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 FC5{ BC6{ BC7{ m Fp Fi[2]}}} FC5 FC8{ m Fi} Fi Fc[4] Fp[2] FC5 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC4 FC4 FC4 FC9{ BC10{ BC7}} FC9 Fi Fp[2] FC11{ m Fi[3]} FC11 FC11 FC11 Fp FC4 FC9 FC11 FC11 Fi FC11 FC11 Fp Fi Fc FC11 FC11 Fp Fi Fp FC9 FC12{ BC13{ BC7}} FC12} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 Fp[2] Fi Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fc Fi[2] Fp FC11 FC11 Fp[5] FC11 Fp FC14{ BC15{ BC7}} Fp[2] FC11 Fp Fi[2] Fp Fi FC11 FC11 FC11 Fp[2] Fi FC11 Fi[4] Fp[2] FC14 Fi FC11}


 S28C6 ::~S28C6(){ note_dtor("S28C6", this);}
void  S28C6 ::v211(){vfunc_called(this, "_ZN5S28C64v211Ev");}
void  S28C6 ::v212(){vfunc_called(this, "_ZN5S28C64v212Ev");}
void  S28C6 ::v213(){vfunc_called(this, "_ZN5S28C64v213Ev");}
void  S28C6 ::v214(){vfunc_called(this, "_ZN5S28C64v214Ev");}
void  S28C6 ::v215(){vfunc_called(this, "_ZN5S28C64v215Ev");}
void  S28C6 ::v216(){vfunc_called(this, "_ZN5S28C64v216Ev");}
void  S28C6 ::v217(){vfunc_called(this, "_ZN5S28C64v217Ev");}
void  S28C6 ::v218(){vfunc_called(this, "_ZN5S28C64v218Ev");}
void  S28C6 ::v219(){vfunc_called(this, "_ZN5S28C64v219Ev");}
void  S28C6 ::v220(){vfunc_called(this, "_ZN5S28C64v220Ev");}
void  S28C6 ::v221(){vfunc_called(this, "_ZN5S28C64v221Ev");}
void  S28C6 ::v222(){vfunc_called(this, "_ZN5S28C64v222Ev");}
void  S28C6 ::v223(){vfunc_called(this, "_ZN5S28C64v223Ev");}
void  S28C6 ::v224(){vfunc_called(this, "_ZN5S28C64v224Ev");}
void  S28C6 ::v225(){vfunc_called(this, "_ZN5S28C64v225Ev");}
void  S28C6 ::v226(){vfunc_called(this, "_ZN5S28C64v226Ev");}
void  S28C6 ::v227(){vfunc_called(this, "_ZN5S28C64v227Ev");}
void  S28C6 ::v228(){vfunc_called(this, "_ZN5S28C64v228Ev");}
void  S28C6 ::v229(){vfunc_called(this, "_ZN5S28C64v229Ev");}
void  S28C6 ::v230(){vfunc_called(this, "_ZN5S28C64v230Ev");}
void  S28C6 ::v231(){vfunc_called(this, "_ZN5S28C64v231Ev");}
void  S28C6 ::v232(){vfunc_called(this, "_ZN5S28C64v232Ev");}
void  S28C6 ::v233(){vfunc_called(this, "_ZN5S28C64v233Ev");}
void  S28C6 ::v234(){vfunc_called(this, "_ZN5S28C64v234Ev");}
void  S28C6 ::v235(){vfunc_called(this, "_ZN5S28C64v235Ev");}
void  S28C6 ::v236(){vfunc_called(this, "_ZN5S28C64v236Ev");}
void  S28C6 ::v237(){vfunc_called(this, "_ZN5S28C64v237Ev");}
void  S28C6 ::v238(){vfunc_called(this, "_ZN5S28C64v238Ev");}
void  S28C6 ::v239(){vfunc_called(this, "_ZN5S28C64v239Ev");}
void  S28C6 ::v240(){vfunc_called(this, "_ZN5S28C64v240Ev");}
void  S28C6 ::v241(){vfunc_called(this, "_ZN5S28C64v241Ev");}
void  S28C6 ::v242(){vfunc_called(this, "_ZN5S28C64v242Ev");}
void  S28C6 ::v243(){vfunc_called(this, "_ZN5S28C64v243Ev");}
void  S28C6 ::v244(){vfunc_called(this, "_ZN5S28C64v244Ev");}
void  S28C6 ::v245(){vfunc_called(this, "_ZN5S28C64v245Ev");}
void  S28C6 ::v246(){vfunc_called(this, "_ZN5S28C64v246Ev");}
void  S28C6 ::v247(){vfunc_called(this, "_ZN5S28C64v247Ev");}
void  S28C6 ::v248(){vfunc_called(this, "_ZN5S28C64v248Ev");}
void  S28C6 ::v249(){vfunc_called(this, "_ZN5S28C64v249Ev");}
void  S28C6 ::v250(){vfunc_called(this, "_ZN5S28C64v250Ev");}
void  S28C6 ::v251(){vfunc_called(this, "_ZN5S28C64v251Ev");}
void  S28C6 ::v252(){vfunc_called(this, "_ZN5S28C64v252Ev");}
void  S28C6 ::v253(){vfunc_called(this, "_ZN5S28C64v253Ev");}
void  S28C6 ::v254(){vfunc_called(this, "_ZN5S28C64v254Ev");}
void  S28C6 ::v255(){vfunc_called(this, "_ZN5S28C64v255Ev");}
void  S28C6 ::v256(){vfunc_called(this, "_ZN5S28C64v256Ev");}
void  S28C6 ::v257(){vfunc_called(this, "_ZN5S28C64v257Ev");}
void  S28C6 ::v258(){vfunc_called(this, "_ZN5S28C64v258Ev");}
void  S28C6 ::v259(){vfunc_called(this, "_ZN5S28C64v259Ev");}
void  S28C6 ::v260(){vfunc_called(this, "_ZN5S28C64v260Ev");}
S28C6 ::S28C6(){ note_ctor("S28C6", this);} // tgen

static void Test_S28C6()
{
  extern Class_Descriptor cd_S28C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(116,174)];
    init_test(&cd_S28C6, buf);
    S28C6 *dp, &lv = *(dp=new (buf) S28C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(920,692), "sizeof(S28C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C6)");
    check_base_class_offset(lv, (S28C8_nt*)(S28C7_nt*), 0, "S28C6");
    check_base_class_offset(lv, (S28C7_nt*), 0, "S28C6");
    check_field_offset(lv, s28c6f0, ABISELECT(568,436), "S28C6.s28c6f0");
    check_field_offset(lv, s28c6f1, ABISELECT(584,444), "S28C6.s28c6f1");
    check_field_offset(lv, s28c6f2, ABISELECT(592,448), "S28C6.s28c6f2");
    set_bf_and_test(lv, s28c6f3, ABISELECT(600,452), 0, 1, 1, "S28C6");
    set_bf_and_test(lv, s28c6f4, ABISELECT(600,452), 1, 1, 1, "S28C6");
    set_bf_and_test(lv, s28c6f5, ABISELECT(600,452), 2, 1, 1, "S28C6");
    set_bf_and_test(lv, s28c6f6, ABISELECT(600,452), 3, 1, 1, "S28C6");
    set_bf_and_test(lv, s28c6f7, ABISELECT(600,452), 4, 1, 1, "S28C6");
    set_bf_and_test(lv, s28c6f8, ABISELECT(600,452), 5, 1, 1, "S28C6");
    set_bf_and_test(lv, s28c6f9, ABISELECT(600,452), 6, 1, 1, "S28C6");
    set_bf_and_test(lv, s28c6f10, ABISELECT(600,452), 7, 1, 1, "S28C6");
    set_bf_and_test(lv, s28c6f11, ABISELECT(601,453), 0, 1, 1, "S28C6");
    set_bf_and_test(lv, s28c6f12, ABISELECT(601,453), 1, 1, 1, "S28C6");
    set_bf_and_test(lv, s28c6f13, ABISELECT(601,453), 2, 1, 1, "S28C6");
    set_bf_and_test(lv, s28c6f14, ABISELECT(601,453), 3, 1, 1, "S28C6");
    set_bf_and_test(lv, s28c6f15, ABISELECT(601,453), 4, 1, 1, "S28C6");
    set_bf_and_test(lv, s28c6f16, ABISELECT(601,453), 5, 1, 1, "S28C6");
    set_bf_and_test(lv, s28c6f17, ABISELECT(601,453), 6, 1, 1, "S28C6");
    set_bf_and_test(lv, s28c6f18, ABISELECT(601,453), 7, 1, 1, "S28C6");
    set_bf_and_test(lv, s28c6f19, ABISELECT(602,454), 0, 1, 1, "S28C6");
    set_bf_and_test(lv, s28c6f20, ABISELECT(602,454), 1, 1, 1, "S28C6");
    set_bf_and_test(lv, s28c6f21, ABISELECT(602,454), 2, 1, 1, "S28C6");
    check_field_offset(lv, s28c6f22, ABISELECT(603,455), "S28C6.s28c6f22");
    check_field_offset(lv, s28c6f23, ABISELECT(604,456), "S28C6.s28c6f23");
    check_field_offset(lv, s28c6f24, ABISELECT(616,464), "S28C6.s28c6f24");
    check_field_offset(lv, s28c6f25, ABISELECT(624,468), "S28C6.s28c6f25");
    check_field_offset(lv, s28c6f26, ABISELECT(636,480), "S28C6.s28c6f26");
    check_field_offset(lv, s28c6f27, ABISELECT(648,492), "S28C6.s28c6f27");
    check_field_offset(lv, s28c6f28, ABISELECT(688,512), "S28C6.s28c6f28");
    check_field_offset(lv, s28c6f29, ABISELECT(704,524), "S28C6.s28c6f29");
    check_field_offset(lv, s28c6f30, ABISELECT(712,528), "S28C6.s28c6f30");
    check_field_offset(lv, s28c6f31, ABISELECT(728,540), "S28C6.s28c6f31");
    check_field_offset(lv, s28c6f32, ABISELECT(744,548), "S28C6.s28c6f32");
    check_field_offset(lv, s28c6f33, ABISELECT(760,560), "S28C6.s28c6f33");
    check_field_offset(lv, s28c6f34, ABISELECT(768,564), "S28C6.s28c6f34");
    check_field_offset(lv, s28c6f35, ABISELECT(776,572), "S28C6.s28c6f35");
    check_field_offset(lv, s28c6f36, ABISELECT(784,576), "S28C6.s28c6f36");
    check_field_offset(lv, s28c6f37, ABISELECT(788,580), "S28C6.s28c6f37");
    check_field_offset(lv, s28c6f38, ABISELECT(800,592), "S28C6.s28c6f38");
    check_field_offset(lv, s28c6f39, ABISELECT(812,604), "S28C6.s28c6f39");
    check_field_offset(lv, s28c6f40, ABISELECT(824,616), "S28C6.s28c6f40");
    check_field_offset(lv, s28c6f41, ABISELECT(840,624), "S28C6.s28c6f41");
    check_field_offset(lv, s28c6f42, ABISELECT(844,628), "S28C6.s28c6f42");
    check_field_offset(lv, s28c6f43, ABISELECT(856,640), "S28C6.s28c6f43");
    check_field_offset(lv, s28c6f44, ABISELECT(872,656), "S28C6.s28c6f44");
    check_field_offset(lv, s28c6f45, ABISELECT(888,664), "S28C6.s28c6f45");
    check_field_offset(lv, s28c6f46, ABISELECT(904,676), "S28C6.s28c6f46");
    check_field_offset(lv, s28c6f47, ABISELECT(908,680), "S28C6.s28c6f47");
    test_class_info(&lv, &cd_S28C6);
    dp->~S28C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C6(Test_S28C6, "S28C6", ABISELECT(920,692));

#else // __cplusplus

extern void _ZN5S28C6C1Ev();
extern void _ZN5S28C6D1Ev();
Name_Map name_map_S28C6[] = {
  NSPAIR(_ZN5S28C6C1Ev),
  NSPAIR(_ZN5S28C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C8_nt;
extern VTBL_ENTRY _ZTI8S28C8_nt[];
extern  VTBL_ENTRY _ZTV8S28C8_nt[];
extern Class_Descriptor cd_S28C7_nt;
extern VTBL_ENTRY _ZTI8S28C7_nt[];
extern  VTBL_ENTRY _ZTV8S28C7_nt[];
static Base_Class bases_S28C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S28C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI5S28C6[];
extern void _ZN5S28C6D1Ev();
extern void _ZN5S28C6D0Ev();
extern void _ZN8S28C8_nt2v4Ev();
extern void _ZN8S28C8_nt2v5Ev();
extern void _ZN8S28C8_nt2v6Ev();
extern void _ZN8S28C8_nt2v7Ev();
extern void _ZN8S28C8_nt2v8Ev();
extern void _ZN8S28C8_nt2v9Ev();
extern void _ZN8S28C8_nt3v10Ev();
extern void _ZN8S28C8_nt3v11Ev();
extern void _ZN8S28C8_nt3v12Ev();
extern void _ZN8S28C8_nt3v13Ev();
extern void _ZN8S28C8_nt3v14Ev();
extern void _ZN8S28C8_nt3v15Ev();
extern void _ZN8S28C8_nt3v16Ev();
extern void _ZN8S28C8_nt3v17Ev();
extern void _ZN8S28C8_nt3v18Ev();
extern void _ZN8S28C8_nt3v19Ev();
extern void _ZN8S28C8_nt3v20Ev();
extern void _ZN8S28C8_nt3v21Ev();
extern void _ZN8S28C8_nt3v22Ev();
extern void _ZN8S28C8_nt3v23Ev();
extern void _ZN8S28C8_nt3v24Ev();
extern void _ZN8S28C8_nt3v25Ev();
extern void _ZN8S28C8_nt3v26Ev();
extern void _ZN8S28C8_nt3v27Ev();
extern void _ZN8S28C8_nt3v28Ev();
extern void _ZN8S28C8_nt3v29Ev();
extern void _ZN8S28C8_nt3v30Ev();
extern void _ZN8S28C8_nt3v31Ev();
extern void _ZN8S28C8_nt3v32Ev();
extern void _ZN8S28C8_nt3v33Ev();
extern void _ZN8S28C8_nt3v34Ev();
extern void _ZN8S28C8_nt3v35Ev();
extern void _ZN8S28C8_nt3v36Ev();
extern void _ZN8S28C8_nt3v37Ev();
extern void _ZN8S28C8_nt3v38Ev();
extern void _ZN8S28C8_nt3v39Ev();
extern void _ZN8S28C8_nt3v40Ev();
extern void _ZN8S28C8_nt3v41Ev();
extern void _ZN8S28C8_nt3v42Ev();
extern void _ZN8S28C8_nt3v43Ev();
extern void _ZN8S28C8_nt3v44Ev();
extern void _ZN8S28C8_nt3v45Ev();
extern void _ZN8S28C8_nt3v46Ev();
extern void _ZN8S28C8_nt3v47Ev();
extern void _ZN8S28C8_nt3v48Ev();
extern void _ZN8S28C8_nt3v49Ev();
extern void _ZN8S28C8_nt3v50Ev();
extern void _ZN8S28C8_nt3v51Ev();
extern void _ZN8S28C8_nt3v52Ev();
extern void _ZN8S28C8_nt3v53Ev();
extern void _ZN8S28C8_nt3v54Ev();
extern void _ZN8S28C8_nt3v55Ev();
extern void _ZN8S28C8_nt3v56Ev();
extern void _ZN8S28C8_nt3v57Ev();
extern void _ZN8S28C8_nt3v58Ev();
extern void _ZN8S28C8_nt3v59Ev();
extern void _ZN8S28C8_nt3v60Ev();
extern void _ZN8S28C8_nt3v61Ev();
extern void _ZN8S28C8_nt3v62Ev();
extern void _ZN8S28C8_nt3v63Ev();
extern void _ZN8S28C8_nt3v64Ev();
extern void _ZN8S28C8_nt3v65Ev();
extern void _ZN8S28C8_nt3v66Ev();
extern void _ZN8S28C8_nt3v67Ev();
extern void _ZN8S28C7_nt3v68Ev();
extern void _ZN8S28C7_nt3v69Ev();
extern void _ZN8S28C7_nt3v70Ev();
extern void _ZN8S28C7_nt3v71Ev();
extern void _ZN8S28C7_nt3v72Ev();
extern void _ZN8S28C7_nt3v73Ev();
extern void _ZN8S28C7_nt3v74Ev();
extern void _ZN8S28C7_nt3v75Ev();
extern void _ZN8S28C7_nt3v76Ev();
extern void _ZN8S28C7_nt3v77Ev();
extern void _ZN8S28C7_nt3v78Ev();
extern void _ZN8S28C7_nt3v79Ev();
extern void _ZN8S28C7_nt3v80Ev();
extern void _ZN8S28C7_nt3v81Ev();
extern void _ZN8S28C7_nt3v82Ev();
extern void _ZN8S28C7_nt3v83Ev();
extern void _ZN8S28C7_nt3v84Ev();
extern void _ZN8S28C7_nt3v85Ev();
extern void _ZN8S28C7_nt3v86Ev();
extern void _ZN8S28C7_nt3v87Ev();
extern void _ZN8S28C7_nt3v88Ev();
extern void _ZN8S28C7_nt3v89Ev();
extern void _ZN8S28C7_nt3v90Ev();
extern void _ZN8S28C7_nt3v91Ev();
extern void _ZN8S28C7_nt3v92Ev();
extern void _ZN8S28C7_nt3v93Ev();
extern void _ZN8S28C7_nt3v94Ev();
extern void _ZN8S28C7_nt3v95Ev();
extern void _ZN8S28C7_nt3v96Ev();
extern void _ZN8S28C7_nt3v97Ev();
extern void _ZN8S28C7_nt3v98Ev();
extern void _ZN8S28C7_nt3v99Ev();
extern void _ZN8S28C7_nt4v100Ev();
extern void _ZN8S28C7_nt4v101Ev();
extern void _ZN8S28C7_nt4v102Ev();
extern void _ZN8S28C7_nt4v103Ev();
extern void _ZN8S28C7_nt4v104Ev();
extern void _ZN8S28C7_nt4v105Ev();
extern void _ZN8S28C7_nt4v106Ev();
extern void _ZN8S28C7_nt4v107Ev();
extern void _ZN8S28C7_nt4v108Ev();
extern void _ZN8S28C7_nt4v109Ev();
extern void _ZN8S28C7_nt4v110Ev();
extern void _ZN8S28C7_nt4v111Ev();
extern void _ZN8S28C7_nt4v112Ev();
extern void _ZN8S28C7_nt4v113Ev();
extern void _ZN8S28C7_nt4v114Ev();
extern void _ZN8S28C7_nt4v115Ev();
extern void _ZN8S28C7_nt4v116Ev();
extern void _ZN8S28C7_nt4v117Ev();
extern void _ZN8S28C7_nt4v118Ev();
extern void _ZN8S28C7_nt4v119Ev();
extern void _ZN8S28C7_nt4v120Ev();
extern void _ZN8S28C7_nt4v121Ev();
extern void _ZN8S28C7_nt4v122Ev();
extern void _ZN8S28C7_nt4v123Ev();
extern void _ZN8S28C7_nt4v124Ev();
extern void _ZN8S28C7_nt4v125Ev();
extern void _ZN8S28C7_nt4v126Ev();
extern void _ZN8S28C7_nt4v127Ev();
extern void _ZN8S28C7_nt4v128Ev();
extern void _ZN8S28C7_nt4v129Ev();
extern void _ZN8S28C7_nt4v130Ev();
extern void _ZN8S28C7_nt4v131Ev();
extern void _ZN8S28C7_nt4v132Ev();
extern void _ZN8S28C7_nt4v133Ev();
extern void _ZN8S28C7_nt4v134Ev();
extern void _ZN8S28C7_nt4v135Ev();
extern void _ZN8S28C7_nt4v136Ev();
extern void _ZN8S28C7_nt4v137Ev();
extern void _ZN8S28C7_nt4v138Ev();
extern void _ZN8S28C7_nt4v139Ev();
extern void _ZN8S28C7_nt4v140Ev();
extern void _ZN8S28C7_nt4v141Ev();
extern void _ZN8S28C7_nt4v142Ev();
extern void _ZN8S28C7_nt4v143Ev();
extern void _ZN8S28C7_nt4v144Ev();
extern void _ZN8S28C7_nt4v145Ev();
extern void _ZN8S28C7_nt4v146Ev();
extern void _ZN8S28C7_nt4v147Ev();
extern void _ZN8S28C7_nt4v148Ev();
extern void _ZN8S28C7_nt4v149Ev();
extern void _ZN8S28C7_nt4v150Ev();
extern void _ZN8S28C7_nt4v151Ev();
extern void _ZN8S28C7_nt4v152Ev();
extern void _ZN8S28C7_nt4v153Ev();
extern void _ZN8S28C7_nt4v154Ev();
extern void _ZN8S28C7_nt4v155Ev();
extern void _ZN8S28C7_nt4v156Ev();
extern void _ZN8S28C7_nt4v157Ev();
extern void _ZN8S28C7_nt4v158Ev();
extern void _ZN8S28C7_nt4v159Ev();
extern void _ZN8S28C7_nt4v160Ev();
extern void _ZN8S28C7_nt4v161Ev();
extern void _ZN8S28C7_nt4v162Ev();
extern void _ZN8S28C7_nt4v163Ev();
extern void _ZN8S28C7_nt4v164Ev();
extern void _ZN8S28C7_nt4v165Ev();
extern void _ZN8S28C7_nt4v166Ev();
extern void _ZN8S28C7_nt4v167Ev();
extern void _ZN8S28C7_nt4v168Ev();
extern void _ZN8S28C7_nt4v169Ev();
extern void _ZN8S28C7_nt4v170Ev();
extern void _ZN8S28C7_nt4v171Ev();
extern void _ZN8S28C7_nt4v172Ev();
extern void _ZN8S28C7_nt4v173Ev();
extern void _ZN8S28C7_nt4v174Ev();
extern void _ZN8S28C7_nt4v175Ev();
extern void _ZN8S28C7_nt4v176Ev();
extern void _ZN8S28C7_nt4v177Ev();
extern void _ZN8S28C7_nt4v178Ev();
extern void _ZN8S28C7_nt4v179Ev();
extern void _ZN8S28C7_nt4v180Ev();
extern void _ZN8S28C7_nt4v181Ev();
extern void _ZN8S28C7_nt4v182Ev();
extern void _ZN8S28C7_nt4v183Ev();
extern void _ZN8S28C7_nt4v184Ev();
extern void _ZN8S28C7_nt4v185Ev();
extern void _ZN8S28C7_nt4v186Ev();
extern void _ZN8S28C7_nt4v187Ev();
extern void _ZN8S28C7_nt4v188Ev();
extern void _ZN8S28C7_nt4v189Ev();
extern void _ZN8S28C7_nt4v190Ev();
extern void _ZN8S28C7_nt4v191Ev();
extern void _ZN8S28C7_nt4v192Ev();
extern void _ZN8S28C7_nt4v193Ev();
extern void _ZN8S28C7_nt4v194Ev();
extern void _ZN8S28C7_nt4v195Ev();
extern void _ZN8S28C7_nt4v196Ev();
extern void _ZN8S28C7_nt4v197Ev();
extern void _ZN8S28C7_nt4v198Ev();
extern void _ZN8S28C7_nt4v199Ev();
extern void _ZN8S28C7_nt4v200Ev();
extern void _ZN8S28C7_nt4v201Ev();
extern void _ZN8S28C7_nt4v202Ev();
extern void _ZN8S28C7_nt4v203Ev();
extern void _ZN8S28C7_nt4v204Ev();
extern void _ZN8S28C7_nt4v205Ev();
extern void _ZN8S28C7_nt4v206Ev();
extern void _ZN8S28C7_nt4v207Ev();
extern void _ZN8S28C7_nt4v208Ev();
extern void _ZN8S28C7_nt4v209Ev();
extern void _ZN8S28C7_nt4v210Ev();
extern void _ZN5S28C64v211Ev();
extern void _ZN5S28C64v212Ev();
extern void _ZN5S28C64v213Ev();
extern void _ZN5S28C64v214Ev();
extern void _ZN5S28C64v215Ev();
extern void _ZN5S28C64v216Ev();
extern void _ZN5S28C64v217Ev();
extern void _ZN5S28C64v218Ev();
extern void _ZN5S28C64v219Ev();
extern void _ZN5S28C64v220Ev();
extern void _ZN5S28C64v221Ev();
extern void _ZN5S28C64v222Ev();
extern void _ZN5S28C64v223Ev();
extern void _ZN5S28C64v224Ev();
extern void _ZN5S28C64v225Ev();
extern void _ZN5S28C64v226Ev();
extern void _ZN5S28C64v227Ev();
extern void _ZN5S28C64v228Ev();
extern void _ZN5S28C64v229Ev();
extern void _ZN5S28C64v230Ev();
extern void _ZN5S28C64v231Ev();
extern void _ZN5S28C64v232Ev();
extern void _ZN5S28C64v233Ev();
extern void _ZN5S28C64v234Ev();
extern void _ZN5S28C64v235Ev();
extern void _ZN5S28C64v236Ev();
extern void _ZN5S28C64v237Ev();
extern void _ZN5S28C64v238Ev();
extern void _ZN5S28C64v239Ev();
extern void _ZN5S28C64v240Ev();
extern void _ZN5S28C64v241Ev();
extern void _ZN5S28C64v242Ev();
extern void _ZN5S28C64v243Ev();
extern void _ZN5S28C64v244Ev();
extern void _ZN5S28C64v245Ev();
extern void _ZN5S28C64v246Ev();
extern void _ZN5S28C64v247Ev();
extern void _ZN5S28C64v248Ev();
extern void _ZN5S28C64v249Ev();
extern void _ZN5S28C64v250Ev();
extern void _ZN5S28C64v251Ev();
extern void _ZN5S28C64v252Ev();
extern void _ZN5S28C64v253Ev();
extern void _ZN5S28C64v254Ev();
extern void _ZN5S28C64v255Ev();
extern void _ZN5S28C64v256Ev();
extern void _ZN5S28C64v257Ev();
extern void _ZN5S28C64v258Ev();
extern void _ZN5S28C64v259Ev();
extern void _ZN5S28C64v260Ev();
static  VTBL_ENTRY vtc_S28C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S28C6[0]),
  (VTBL_ENTRY)&_ZN5S28C6D1Ev,
  (VTBL_ENTRY)&_ZN5S28C6D0Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v6Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v7Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v210Ev,
  (VTBL_ENTRY)&_ZN5S28C64v211Ev,
  (VTBL_ENTRY)&_ZN5S28C64v212Ev,
  (VTBL_ENTRY)&_ZN5S28C64v213Ev,
  (VTBL_ENTRY)&_ZN5S28C64v214Ev,
  (VTBL_ENTRY)&_ZN5S28C64v215Ev,
  (VTBL_ENTRY)&_ZN5S28C64v216Ev,
  (VTBL_ENTRY)&_ZN5S28C64v217Ev,
  (VTBL_ENTRY)&_ZN5S28C64v218Ev,
  (VTBL_ENTRY)&_ZN5S28C64v219Ev,
  (VTBL_ENTRY)&_ZN5S28C64v220Ev,
  (VTBL_ENTRY)&_ZN5S28C64v221Ev,
  (VTBL_ENTRY)&_ZN5S28C64v222Ev,
  (VTBL_ENTRY)&_ZN5S28C64v223Ev,
  (VTBL_ENTRY)&_ZN5S28C64v224Ev,
  (VTBL_ENTRY)&_ZN5S28C64v225Ev,
  (VTBL_ENTRY)&_ZN5S28C64v226Ev,
  (VTBL_ENTRY)&_ZN5S28C64v227Ev,
  (VTBL_ENTRY)&_ZN5S28C64v228Ev,
  (VTBL_ENTRY)&_ZN5S28C64v229Ev,
  (VTBL_ENTRY)&_ZN5S28C64v230Ev,
  (VTBL_ENTRY)&_ZN5S28C64v231Ev,
  (VTBL_ENTRY)&_ZN5S28C64v232Ev,
  (VTBL_ENTRY)&_ZN5S28C64v233Ev,
  (VTBL_ENTRY)&_ZN5S28C64v234Ev,
  (VTBL_ENTRY)&_ZN5S28C64v235Ev,
  (VTBL_ENTRY)&_ZN5S28C64v236Ev,
  (VTBL_ENTRY)&_ZN5S28C64v237Ev,
  (VTBL_ENTRY)&_ZN5S28C64v238Ev,
  (VTBL_ENTRY)&_ZN5S28C64v239Ev,
  (VTBL_ENTRY)&_ZN5S28C64v240Ev,
  (VTBL_ENTRY)&_ZN5S28C64v241Ev,
  (VTBL_ENTRY)&_ZN5S28C64v242Ev,
  (VTBL_ENTRY)&_ZN5S28C64v243Ev,
  (VTBL_ENTRY)&_ZN5S28C64v244Ev,
  (VTBL_ENTRY)&_ZN5S28C64v245Ev,
  (VTBL_ENTRY)&_ZN5S28C64v246Ev,
  (VTBL_ENTRY)&_ZN5S28C64v247Ev,
  (VTBL_ENTRY)&_ZN5S28C64v248Ev,
  (VTBL_ENTRY)&_ZN5S28C64v249Ev,
  (VTBL_ENTRY)&_ZN5S28C64v250Ev,
  (VTBL_ENTRY)&_ZN5S28C64v251Ev,
  (VTBL_ENTRY)&_ZN5S28C64v252Ev,
  (VTBL_ENTRY)&_ZN5S28C64v253Ev,
  (VTBL_ENTRY)&_ZN5S28C64v254Ev,
  (VTBL_ENTRY)&_ZN5S28C64v255Ev,
  (VTBL_ENTRY)&_ZN5S28C64v256Ev,
  (VTBL_ENTRY)&_ZN5S28C64v257Ev,
  (VTBL_ENTRY)&_ZN5S28C64v258Ev,
  (VTBL_ENTRY)&_ZN5S28C64v259Ev,
  (VTBL_ENTRY)&_ZN5S28C64v260Ev,
};
extern VTBL_ENTRY _ZTI5S28C6[];
extern  VTBL_ENTRY _ZTV5S28C6[];
Class_Descriptor cd_S28C6 = {  "S28C6", // class name
  bases_S28C6, 2,
  &(vtc_S28C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(920,692), // object size
  NSPAIRA(_ZTI5S28C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S28C6),261, //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  S28C30  {
  int s28c30f0;
  char s28c30f1;
  ::S28C18_nt s28c30f2;
  ::S28C18_nt s28c30f3;
  void *s28c30f4;
  ::S28C18_nt s28c30f5;
  char s28c30f6;
};
//SIG(-1 S28C30) C1{ Fi Fc FC2{ m Fi[3]} FC2 Fp FC2 Fc}



static void Test_S28C30()
{
  {
    init_simple_test("S28C30");
    S28C30 lv;
    check2(sizeof(lv), ABISELECT(56,52), "sizeof(S28C30)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C30)");
    check_field_offset(lv, s28c30f0, 0, "S28C30.s28c30f0");
    check_field_offset(lv, s28c30f1, 4, "S28C30.s28c30f1");
    check_field_offset(lv, s28c30f2, 8, "S28C30.s28c30f2");
    check_field_offset(lv, s28c30f3, 20, "S28C30.s28c30f3");
    check_field_offset(lv, s28c30f4, 32, "S28C30.s28c30f4");
    check_field_offset(lv, s28c30f5, ABISELECT(40,36), "S28C30.s28c30f5");
    check_field_offset(lv, s28c30f6, ABISELECT(52,48), "S28C30.s28c30f6");
  }
}
static Arrange_To_Call_Me vS28C30(Test_S28C30, "S28C30", ABISELECT(56,52));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S28C33()
{
  extern Class_Descriptor cd_S28C33;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S28C33, buf);
    S28C33 &lv = *(new (buf) S28C33());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S28C33)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C33)");
    check_base_class_offset(lv, (S28C12_nt*), 0, "S28C33");
    test_class_info(&lv, &cd_S28C33);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C33(Test_S28C33, "S28C33", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S28C32()
{
  extern Class_Descriptor cd_S28C32;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S28C32, buf);
    S28C32 &lv = *(new (buf) S28C32());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S28C32)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C32)");
    check_base_class_offset(lv, (S28C12_nt*)(S28C33*), 0, "S28C32");
    check_base_class_offset(lv, (S28C33*), 0, "S28C32");
    test_class_info(&lv, &cd_S28C32);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C32(Test_S28C32, "S28C32", ABISELECT(16,12));

#else // __cplusplus

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



//skip512 S28C31_nt

#else // __cplusplus

extern Class_Descriptor cd_S28C12_nt;
extern Class_Descriptor cd_S28C33;
extern Class_Descriptor cd_S28C32;
static Base_Class bases_S28C31_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S28C33,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S28C32,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S28C35  : S28C12_nt {
};
//SIG(-1 S28C35) C1{ BC2{ m Fp Fi[2]}}



static void Test_S28C35()
{
  extern Class_Descriptor cd_S28C35;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S28C35, buf);
    S28C35 &lv = *(new (buf) S28C35());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S28C35)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C35)");
    check_base_class_offset(lv, (S28C12_nt*), 0, "S28C35");
    test_class_info(&lv, &cd_S28C35);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C35(Test_S28C35, "S28C35", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S28C34()
{
  extern Class_Descriptor cd_S28C34;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S28C34, buf);
    S28C34 &lv = *(new (buf) S28C34());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S28C34)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C34)");
    check_base_class_offset(lv, (S28C12_nt*)(S28C35*), 0, "S28C34");
    check_base_class_offset(lv, (S28C35*), 0, "S28C34");
    test_class_info(&lv, &cd_S28C34);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C34(Test_S28C34, "S28C34", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S28C12_nt;
extern Class_Descriptor cd_S28C35;
static Base_Class bases_S28C34[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S28C35,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S28C34 = {  "S28C34", // class name
  bases_S28C34, 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  S28C39_nt  {
  void *s28c39f0[2];
  void  mf28c39(); // _ZN9S28C39_nt7mf28c39Ev
};
//SIG(-1 S28C39_nt) C1{ m Fp[2]}


void  S28C39_nt ::mf28c39(){}

//skip512 S28C39_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S28C38  : S28C39_nt {
};
//SIG(-1 S28C38) C1{ BC2{ m Fp[2]}}



static void Test_S28C38()
{
  extern Class_Descriptor cd_S28C38;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S28C38, buf);
    S28C38 &lv = *(new (buf) S28C38());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S28C38)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C38)");
    check_base_class_offset(lv, (S28C39_nt*), 0, "S28C38");
    test_class_info(&lv, &cd_S28C38);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C38(Test_S28C38, "S28C38", ABISELECT(16,8));

#else // __cplusplus

extern Class_Descriptor cd_S28C39_nt;
static Base_Class bases_S28C38[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C39_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S28C38 = {  "S28C38", // class name
  bases_S28C38, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,8), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S28C41()
{
  extern Class_Descriptor cd_S28C41;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S28C41, buf);
    S28C41 &lv = *(new (buf) S28C41());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S28C41)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C41)");
    check_base_class_offset(lv, (S28C12_nt*), 0, "S28C41");
    test_class_info(&lv, &cd_S28C41);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C41(Test_S28C41, "S28C41", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S28C40()
{
  extern Class_Descriptor cd_S28C40;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S28C40, buf);
    S28C40 &lv = *(new (buf) S28C40());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S28C40)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C40)");
    check_base_class_offset(lv, (S28C12_nt*)(S28C41*), 0, "S28C40");
    check_base_class_offset(lv, (S28C41*), 0, "S28C40");
    test_class_info(&lv, &cd_S28C40);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C40(Test_S28C40, "S28C40", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S28C45()
{
  extern Class_Descriptor cd_S28C45;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S28C45, buf);
    S28C45 &lv = *(new (buf) S28C45());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S28C45)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C45)");
    check_base_class_offset(lv, (S28C12_nt*), 0, "S28C45");
    test_class_info(&lv, &cd_S28C45);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C45(Test_S28C45, "S28C45", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S28C44()
{
  extern Class_Descriptor cd_S28C44;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S28C44, buf);
    S28C44 &lv = *(new (buf) S28C44());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S28C44)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C44)");
    check_base_class_offset(lv, (S28C12_nt*)(S28C45*), 0, "S28C44");
    check_base_class_offset(lv, (S28C45*), 0, "S28C44");
    test_class_info(&lv, &cd_S28C44);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C44(Test_S28C44, "S28C44", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S28C49()
{
  extern Class_Descriptor cd_S28C49;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S28C49, buf);
    S28C49 &lv = *(new (buf) S28C49());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S28C49)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C49)");
    check_base_class_offset(lv, (S28C12_nt*), 0, "S28C49");
    test_class_info(&lv, &cd_S28C49);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C49(Test_S28C49, "S28C49", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S28C48()
{
  extern Class_Descriptor cd_S28C48;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S28C48, buf);
    S28C48 &lv = *(new (buf) S28C48());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S28C48)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C48)");
    check_base_class_offset(lv, (S28C12_nt*)(S28C49*), 0, "S28C48");
    check_base_class_offset(lv, (S28C49*), 0, "S28C48");
    test_class_info(&lv, &cd_S28C48);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C48(Test_S28C48, "S28C48", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S28C12_nt;
extern Class_Descriptor cd_S28C49;
static Base_Class bases_S28C48[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S28C49,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S28C48 = {  "S28C48", // class name
  bases_S28C48, 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  S28C50  {
  void *s28c50f0;
  ::S28C9_nt s28c50f1;
  void  mf28c50(); // _ZN6S28C507mf28c50Ev
};
//SIG(-1 S28C50) C1{ m Fp FC2{ m Fi[2]}}


void  S28C50 ::mf28c50(){}

static void Test_S28C50()
{
  {
    init_simple_test("S28C50");
    S28C50 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S28C50)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C50)");
    check_field_offset(lv, s28c50f0, 0, "S28C50.s28c50f0");
    check_field_offset(lv, s28c50f1, ABISELECT(8,4), "S28C50.s28c50f1");
  }
}
static Arrange_To_Call_Me vS28C50(Test_S28C50, "S28C50", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S28C5  : S28C6 {
  void *s28c5f0[8];
  unsigned int s28c5f1:1;
  unsigned int s28c5f2:1;
  unsigned int s28c5f3:1;
  unsigned int s28c5f4:1;
  unsigned int s28c5f5:1;
  unsigned int s28c5f6:1;
  unsigned int s28c5f7:1;
  unsigned int s28c5f8:1;
  unsigned int s28c5f9:1;
  unsigned int s28c5f10:1;
  unsigned int s28c5f11:1;
  unsigned int s28c5f12:1;
  unsigned int s28c5f13:1;
  unsigned int s28c5f14:1;
  unsigned int s28c5f15:1;
  unsigned int s28c5f16:1;
  unsigned int s28c5f17:1;
  unsigned int s28c5f18:1;
  unsigned int s28c5f19:1;
  unsigned int s28c5f20:1;
  unsigned int s28c5f21:1;
  unsigned int s28c5f22:1;
  unsigned int s28c5f23:1;
  unsigned int s28c5f24:1;
  int s28c5f25[2];
  void *s28c5f26;
  char s28c5f27[6];
  void *s28c5f28[2];
  int s28c5f29[4];
  ::S28C18_nt s28c5f30;
  int s28c5f31;
  ::S28C18_nt s28c5f32;
  void *s28c5f33[5];
  ::S28C18_nt s28c5f34;
  int s28c5f35[12];
  ::S28C30 s28c5f36;
  ::S28C31_nt s28c5f37[2];
  int s28c5f38;
  ::S28C31_nt s28c5f39;
  ::S28C31_nt s28c5f40;
  ::S28C31_nt s28c5f41;
  ::S28C31_nt s28c5f42;
  int s28c5f43;
  ::S28C18_nt s28c5f44;
  void *s28c5f45[4];
  ::S28C18_nt s28c5f46;
  void *s28c5f47;
  ::S28C31_nt s28c5f48;
  void *s28c5f49;
  ::S28C34 s28c5f50;
  ::S28C34 s28c5f51;
  ::S28C34 s28c5f52;
  ::S28C34 s28c5f53;
  void *s28c5f54;
  ::S28C38 s28c5f55;
  void *s28c5f56;
  int s28c5f57;
  ::S28C40 s28c5f58;
  int s28c5f59;
  ::S28C31_nt s28c5f60[4];
  ::S28C40 s28c5f61;
  void *s28c5f62;
  ::S28C44 s28c5f63;
  int s28c5f64[3];
  ::S28C44 s28c5f65;
  ::S28C44 s28c5f66;
  ::S28C16 s28c5f67;
  ::S28C48 s28c5f68;
  int s28c5f69;
  ::S28C50 s28c5f70;
  virtual  ~S28C5(); // _ZN5S28C5D1Ev
  virtual void  v261(); // _ZN5S28C54v261Ev
  virtual void  v262(); // _ZN5S28C54v262Ev
  virtual void  v263(); // _ZN5S28C54v263Ev
  virtual void  v264(); // _ZN5S28C54v264Ev
  virtual void  v265(); // _ZN5S28C54v265Ev
  virtual void  v266(); // _ZN5S28C54v266Ev
  virtual void  v267(); // _ZN5S28C54v267Ev
  virtual void  v268(); // _ZN5S28C54v268Ev
  virtual void  v269(); // _ZN5S28C54v269Ev
  virtual void  v270(); // _ZN5S28C54v270Ev
  virtual void  v271(); // _ZN5S28C54v271Ev
  virtual void  v272(); // _ZN5S28C54v272Ev
  virtual void  v273(); // _ZN5S28C54v273Ev
  virtual void  v274(); // _ZN5S28C54v274Ev
  virtual void  v275(); // _ZN5S28C54v275Ev
  virtual void  v276(); // _ZN5S28C54v276Ev
  virtual void  v277(); // _ZN5S28C54v277Ev
  virtual void  v278(); // _ZN5S28C54v278Ev
  virtual void  v279(); // _ZN5S28C54v279Ev
  virtual void  v280(); // _ZN5S28C54v280Ev
  virtual void  v281(); // _ZN5S28C54v281Ev
  virtual void  v282(); // _ZN5S28C54v282Ev
  virtual void  v283(); // _ZN5S28C54v283Ev
  virtual void  v284(); // _ZN5S28C54v284Ev
  virtual void  v285(); // _ZN5S28C54v285Ev
  virtual void  v286(); // _ZN5S28C54v286Ev
  virtual void  v287(); // _ZN5S28C54v287Ev
  virtual void  v288(); // _ZN5S28C54v288Ev
  virtual void  v289(); // _ZN5S28C54v289Ev
  virtual void  v290(); // _ZN5S28C54v290Ev
  virtual void  v291(); // _ZN5S28C54v291Ev
  virtual void  v292(); // _ZN5S28C54v292Ev
  virtual void  v293(); // _ZN5S28C54v293Ev
  virtual void  v294(); // _ZN5S28C54v294Ev
  virtual void  v295(); // _ZN5S28C54v295Ev
  virtual void  v296(); // _ZN5S28C54v296Ev
  virtual void  v297(); // _ZN5S28C54v297Ev
  virtual void  v298(); // _ZN5S28C54v298Ev
  S28C5(); // tgen
};
//SIG(-1 S28C5) C1{ BC2{ BC3{ BC4{ vd 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 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd 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 v245 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 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 v258 v259 v260 v261 v262 v263 v264 v265 v266 v267 v268 v269 v270 v271 v272 v273 v274 v275 v276 v277 v278 v279 v280 v281 v282 v283 v284 v285 v286 v287 v288 v289 v290 v291 v292 v293 v294 v295 Fp[2] Fi Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fc Fi[2] Fp FC12 FC12 Fp[5] FC12 Fp FC15{ BC16{ BC8}} Fp[2] FC12 Fp Fi[2] Fp Fi FC12 FC12 FC12 Fp[2] Fi FC12 Fi[4] Fp[2] FC15 Fi FC12} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 Fp[8] Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2] Fp Fc[6] Fp[2] Fi[4] FC12 Fi FC12 Fp[5] FC12 Fi[12] FC17{ Fi Fc FC12 FC12 Fp FC12 Fc} FC18{ BC19{ BC20{ BC8}}}[2] Fi FC18 FC18 FC18 FC18 Fi FC12 Fp[4] FC12 Fp FC18 Fp FC21{ BC22{ BC8}} FC21 FC21 FC21 Fp FC23{ BC24{ m Fp[2]}} Fp Fi FC25{ BC26{ BC8}} Fi FC18[4] FC25 Fp FC27{ BC28{ BC8}} Fi[3] FC27 FC27 FC10 FC29{ BC30{ BC8}} Fi FC31{ m Fp FC5}}


 S28C5 ::~S28C5(){ note_dtor("S28C5", this);}
void  S28C5 ::v261(){vfunc_called(this, "_ZN5S28C54v261Ev");}
void  S28C5 ::v262(){vfunc_called(this, "_ZN5S28C54v262Ev");}
void  S28C5 ::v263(){vfunc_called(this, "_ZN5S28C54v263Ev");}
void  S28C5 ::v264(){vfunc_called(this, "_ZN5S28C54v264Ev");}
void  S28C5 ::v265(){vfunc_called(this, "_ZN5S28C54v265Ev");}
void  S28C5 ::v266(){vfunc_called(this, "_ZN5S28C54v266Ev");}
void  S28C5 ::v267(){vfunc_called(this, "_ZN5S28C54v267Ev");}
void  S28C5 ::v268(){vfunc_called(this, "_ZN5S28C54v268Ev");}
void  S28C5 ::v269(){vfunc_called(this, "_ZN5S28C54v269Ev");}
void  S28C5 ::v270(){vfunc_called(this, "_ZN5S28C54v270Ev");}
void  S28C5 ::v271(){vfunc_called(this, "_ZN5S28C54v271Ev");}
void  S28C5 ::v272(){vfunc_called(this, "_ZN5S28C54v272Ev");}
void  S28C5 ::v273(){vfunc_called(this, "_ZN5S28C54v273Ev");}
void  S28C5 ::v274(){vfunc_called(this, "_ZN5S28C54v274Ev");}
void  S28C5 ::v275(){vfunc_called(this, "_ZN5S28C54v275Ev");}
void  S28C5 ::v276(){vfunc_called(this, "_ZN5S28C54v276Ev");}
void  S28C5 ::v277(){vfunc_called(this, "_ZN5S28C54v277Ev");}
void  S28C5 ::v278(){vfunc_called(this, "_ZN5S28C54v278Ev");}
void  S28C5 ::v279(){vfunc_called(this, "_ZN5S28C54v279Ev");}
void  S28C5 ::v280(){vfunc_called(this, "_ZN5S28C54v280Ev");}
void  S28C5 ::v281(){vfunc_called(this, "_ZN5S28C54v281Ev");}
void  S28C5 ::v282(){vfunc_called(this, "_ZN5S28C54v282Ev");}
void  S28C5 ::v283(){vfunc_called(this, "_ZN5S28C54v283Ev");}
void  S28C5 ::v284(){vfunc_called(this, "_ZN5S28C54v284Ev");}
void  S28C5 ::v285(){vfunc_called(this, "_ZN5S28C54v285Ev");}
void  S28C5 ::v286(){vfunc_called(this, "_ZN5S28C54v286Ev");}
void  S28C5 ::v287(){vfunc_called(this, "_ZN5S28C54v287Ev");}
void  S28C5 ::v288(){vfunc_called(this, "_ZN5S28C54v288Ev");}
void  S28C5 ::v289(){vfunc_called(this, "_ZN5S28C54v289Ev");}
void  S28C5 ::v290(){vfunc_called(this, "_ZN5S28C54v290Ev");}
void  S28C5 ::v291(){vfunc_called(this, "_ZN5S28C54v291Ev");}
void  S28C5 ::v292(){vfunc_called(this, "_ZN5S28C54v292Ev");}
void  S28C5 ::v293(){vfunc_called(this, "_ZN5S28C54v293Ev");}
void  S28C5 ::v294(){vfunc_called(this, "_ZN5S28C54v294Ev");}
void  S28C5 ::v295(){vfunc_called(this, "_ZN5S28C54v295Ev");}
void  S28C5 ::v296(){vfunc_called(this, "_ZN5S28C54v296Ev");}
void  S28C5 ::v297(){vfunc_called(this, "_ZN5S28C54v297Ev");}
void  S28C5 ::v298(){vfunc_called(this, "_ZN5S28C54v298Ev");}
S28C5 ::S28C5(){ note_ctor("S28C5", this);} // tgen

static void Test_S28C5()
{
  extern Class_Descriptor cd_S28C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(223,328)];
    init_test(&cd_S28C5, buf);
    S28C5 *dp, &lv = *(dp=new (buf) S28C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1776,1308), "sizeof(S28C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C5)");
    check_base_class_offset(lv, (S28C8_nt*)(S28C7_nt*)(S28C6*), 0, "S28C5");
    check_base_class_offset(lv, (S28C7_nt*)(S28C6*), 0, "S28C5");
    check_base_class_offset(lv, (S28C6*), 0, "S28C5");
    check_field_offset(lv, s28c5f0, ABISELECT(920,692), "S28C5.s28c5f0");
    set_bf_and_test(lv, s28c5f1, ABISELECT(984,724), 0, 1, 1, "S28C5");
    set_bf_and_test(lv, s28c5f2, ABISELECT(984,724), 1, 1, 1, "S28C5");
    set_bf_and_test(lv, s28c5f3, ABISELECT(984,724), 2, 1, 1, "S28C5");
    set_bf_and_test(lv, s28c5f4, ABISELECT(984,724), 3, 1, 1, "S28C5");
    set_bf_and_test(lv, s28c5f5, ABISELECT(984,724), 4, 1, 1, "S28C5");
    set_bf_and_test(lv, s28c5f6, ABISELECT(984,724), 5, 1, 1, "S28C5");
    set_bf_and_test(lv, s28c5f7, ABISELECT(984,724), 6, 1, 1, "S28C5");
    set_bf_and_test(lv, s28c5f8, ABISELECT(984,724), 7, 1, 1, "S28C5");
    set_bf_and_test(lv, s28c5f9, ABISELECT(985,725), 0, 1, 1, "S28C5");
    set_bf_and_test(lv, s28c5f10, ABISELECT(985,725), 1, 1, 1, "S28C5");
    set_bf_and_test(lv, s28c5f11, ABISELECT(985,725), 2, 1, 1, "S28C5");
    set_bf_and_test(lv, s28c5f12, ABISELECT(985,725), 3, 1, 1, "S28C5");
    set_bf_and_test(lv, s28c5f13, ABISELECT(985,725), 4, 1, 1, "S28C5");
    set_bf_and_test(lv, s28c5f14, ABISELECT(985,725), 5, 1, 1, "S28C5");
    set_bf_and_test(lv, s28c5f15, ABISELECT(985,725), 6, 1, 1, "S28C5");
    set_bf_and_test(lv, s28c5f16, ABISELECT(985,725), 7, 1, 1, "S28C5");
    set_bf_and_test(lv, s28c5f17, ABISELECT(986,726), 0, 1, 1, "S28C5");
    set_bf_and_test(lv, s28c5f18, ABISELECT(986,726), 1, 1, 1, "S28C5");
    set_bf_and_test(lv, s28c5f19, ABISELECT(986,726), 2, 1, 1, "S28C5");
    set_bf_and_test(lv, s28c5f20, ABISELECT(986,726), 3, 1, 1, "S28C5");
    set_bf_and_test(lv, s28c5f21, ABISELECT(986,726), 4, 1, 1, "S28C5");
    set_bf_and_test(lv, s28c5f22, ABISELECT(986,726), 5, 1, 1, "S28C5");
    set_bf_and_test(lv, s28c5f23, ABISELECT(986,726), 6, 1, 1, "S28C5");
    set_bf_and_test(lv, s28c5f24, ABISELECT(986,726), 7, 1, 1, "S28C5");
    check_field_offset(lv, s28c5f25, ABISELECT(988,728), "S28C5.s28c5f25");
    check_field_offset(lv, s28c5f26, ABISELECT(1000,736), "S28C5.s28c5f26");
    check_field_offset(lv, s28c5f27, ABISELECT(1008,740), "S28C5.s28c5f27");
    check_field_offset(lv, s28c5f28, ABISELECT(1016,748), "S28C5.s28c5f28");
    check_field_offset(lv, s28c5f29, ABISELECT(1032,756), "S28C5.s28c5f29");
    check_field_offset(lv, s28c5f30, ABISELECT(1048,772), "S28C5.s28c5f30");
    check_field_offset(lv, s28c5f31, ABISELECT(1060,784), "S28C5.s28c5f31");
    check_field_offset(lv, s28c5f32, ABISELECT(1064,788), "S28C5.s28c5f32");
    check_field_offset(lv, s28c5f33, ABISELECT(1080,800), "S28C5.s28c5f33");
    check_field_offset(lv, s28c5f34, ABISELECT(1120,820), "S28C5.s28c5f34");
    check_field_offset(lv, s28c5f35, ABISELECT(1132,832), "S28C5.s28c5f35");
    check_field_offset(lv, s28c5f36, ABISELECT(1184,880), "S28C5.s28c5f36");
    check_field_offset(lv, s28c5f37, ABISELECT(1240,932), "S28C5.s28c5f37");
    check_field_offset(lv, s28c5f38, ABISELECT(1272,956), "S28C5.s28c5f38");
    check_field_offset(lv, s28c5f39, ABISELECT(1280,960), "S28C5.s28c5f39");
    check_field_offset(lv, s28c5f40, ABISELECT(1296,972), "S28C5.s28c5f40");
    check_field_offset(lv, s28c5f41, ABISELECT(1312,984), "S28C5.s28c5f41");
    check_field_offset(lv, s28c5f42, ABISELECT(1328,996), "S28C5.s28c5f42");
    check_field_offset(lv, s28c5f43, ABISELECT(1344,1008), "S28C5.s28c5f43");
    check_field_offset(lv, s28c5f44, ABISELECT(1348,1012), "S28C5.s28c5f44");
    check_field_offset(lv, s28c5f45, ABISELECT(1360,1024), "S28C5.s28c5f45");
    check_field_offset(lv, s28c5f46, ABISELECT(1392,1040), "S28C5.s28c5f46");
    check_field_offset(lv, s28c5f47, ABISELECT(1408,1052), "S28C5.s28c5f47");
    check_field_offset(lv, s28c5f48, ABISELECT(1416,1056), "S28C5.s28c5f48");
    check_field_offset(lv, s28c5f49, ABISELECT(1432,1068), "S28C5.s28c5f49");
    check_field_offset(lv, s28c5f50, ABISELECT(1440,1072), "S28C5.s28c5f50");
    check_field_offset(lv, s28c5f51, ABISELECT(1456,1084), "S28C5.s28c5f51");
    check_field_offset(lv, s28c5f52, ABISELECT(1472,1096), "S28C5.s28c5f52");
    check_field_offset(lv, s28c5f53, ABISELECT(1488,1108), "S28C5.s28c5f53");
    check_field_offset(lv, s28c5f54, ABISELECT(1504,1120), "S28C5.s28c5f54");
    check_field_offset(lv, s28c5f55, ABISELECT(1512,1124), "S28C5.s28c5f55");
    check_field_offset(lv, s28c5f56, ABISELECT(1528,1132), "S28C5.s28c5f56");
    check_field_offset(lv, s28c5f57, ABISELECT(1536,1136), "S28C5.s28c5f57");
    check_field_offset(lv, s28c5f58, ABISELECT(1544,1140), "S28C5.s28c5f58");
    check_field_offset(lv, s28c5f59, ABISELECT(1560,1152), "S28C5.s28c5f59");
    check_field_offset(lv, s28c5f60, ABISELECT(1568,1156), "S28C5.s28c5f60");
    check_field_offset(lv, s28c5f61, ABISELECT(1632,1204), "S28C5.s28c5f61");
    check_field_offset(lv, s28c5f62, ABISELECT(1648,1216), "S28C5.s28c5f62");
    check_field_offset(lv, s28c5f63, ABISELECT(1656,1220), "S28C5.s28c5f63");
    check_field_offset(lv, s28c5f64, ABISELECT(1672,1232), "S28C5.s28c5f64");
    check_field_offset(lv, s28c5f65, ABISELECT(1688,1244), "S28C5.s28c5f65");
    check_field_offset(lv, s28c5f66, ABISELECT(1704,1256), "S28C5.s28c5f66");
    check_field_offset(lv, s28c5f67, ABISELECT(1720,1268), "S28C5.s28c5f67");
    check_field_offset(lv, s28c5f68, ABISELECT(1736,1280), "S28C5.s28c5f68");
    check_field_offset(lv, s28c5f69, ABISELECT(1752,1292), "S28C5.s28c5f69");
    check_field_offset(lv, s28c5f70, ABISELECT(1760,1296), "S28C5.s28c5f70");
    test_class_info(&lv, &cd_S28C5);
    dp->~S28C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C5(Test_S28C5, "S28C5", ABISELECT(1776,1308));

#else // __cplusplus

extern void _ZN5S28C5C1Ev();
extern void _ZN5S28C5D1Ev();
Name_Map name_map_S28C5[] = {
  NSPAIR(_ZN5S28C5C1Ev),
  NSPAIR(_ZN5S28C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C8_nt;
extern VTBL_ENTRY _ZTI8S28C8_nt[];
extern  VTBL_ENTRY _ZTV8S28C8_nt[];
extern Class_Descriptor cd_S28C7_nt;
extern VTBL_ENTRY _ZTI8S28C7_nt[];
extern  VTBL_ENTRY _ZTV8S28C7_nt[];
extern Class_Descriptor cd_S28C6;
extern VTBL_ENTRY _ZTI5S28C6[];
extern  VTBL_ENTRY _ZTV5S28C6[];
static Base_Class bases_S28C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S28C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S28C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI5S28C5[];
extern void _ZN5S28C5D1Ev();
extern void _ZN5S28C5D0Ev();
extern void _ZN8S28C8_nt2v4Ev();
extern void _ZN8S28C8_nt2v5Ev();
extern void _ZN8S28C8_nt2v6Ev();
extern void _ZN8S28C8_nt2v7Ev();
extern void _ZN8S28C8_nt2v8Ev();
extern void _ZN8S28C8_nt2v9Ev();
extern void _ZN8S28C8_nt3v10Ev();
extern void _ZN8S28C8_nt3v11Ev();
extern void _ZN8S28C8_nt3v12Ev();
extern void _ZN8S28C8_nt3v13Ev();
extern void _ZN8S28C8_nt3v14Ev();
extern void _ZN8S28C8_nt3v15Ev();
extern void _ZN8S28C8_nt3v16Ev();
extern void _ZN8S28C8_nt3v17Ev();
extern void _ZN8S28C8_nt3v18Ev();
extern void _ZN8S28C8_nt3v19Ev();
extern void _ZN8S28C8_nt3v20Ev();
extern void _ZN8S28C8_nt3v21Ev();
extern void _ZN8S28C8_nt3v22Ev();
extern void _ZN8S28C8_nt3v23Ev();
extern void _ZN8S28C8_nt3v24Ev();
extern void _ZN8S28C8_nt3v25Ev();
extern void _ZN8S28C8_nt3v26Ev();
extern void _ZN8S28C8_nt3v27Ev();
extern void _ZN8S28C8_nt3v28Ev();
extern void _ZN8S28C8_nt3v29Ev();
extern void _ZN8S28C8_nt3v30Ev();
extern void _ZN8S28C8_nt3v31Ev();
extern void _ZN8S28C8_nt3v32Ev();
extern void _ZN8S28C8_nt3v33Ev();
extern void _ZN8S28C8_nt3v34Ev();
extern void _ZN8S28C8_nt3v35Ev();
extern void _ZN8S28C8_nt3v36Ev();
extern void _ZN8S28C8_nt3v37Ev();
extern void _ZN8S28C8_nt3v38Ev();
extern void _ZN8S28C8_nt3v39Ev();
extern void _ZN8S28C8_nt3v40Ev();
extern void _ZN8S28C8_nt3v41Ev();
extern void _ZN8S28C8_nt3v42Ev();
extern void _ZN8S28C8_nt3v43Ev();
extern void _ZN8S28C8_nt3v44Ev();
extern void _ZN8S28C8_nt3v45Ev();
extern void _ZN8S28C8_nt3v46Ev();
extern void _ZN8S28C8_nt3v47Ev();
extern void _ZN8S28C8_nt3v48Ev();
extern void _ZN8S28C8_nt3v49Ev();
extern void _ZN8S28C8_nt3v50Ev();
extern void _ZN8S28C8_nt3v51Ev();
extern void _ZN8S28C8_nt3v52Ev();
extern void _ZN8S28C8_nt3v53Ev();
extern void _ZN8S28C8_nt3v54Ev();
extern void _ZN8S28C8_nt3v55Ev();
extern void _ZN8S28C8_nt3v56Ev();
extern void _ZN8S28C8_nt3v57Ev();
extern void _ZN8S28C8_nt3v58Ev();
extern void _ZN8S28C8_nt3v59Ev();
extern void _ZN8S28C8_nt3v60Ev();
extern void _ZN8S28C8_nt3v61Ev();
extern void _ZN8S28C8_nt3v62Ev();
extern void _ZN8S28C8_nt3v63Ev();
extern void _ZN8S28C8_nt3v64Ev();
extern void _ZN8S28C8_nt3v65Ev();
extern void _ZN8S28C8_nt3v66Ev();
extern void _ZN8S28C8_nt3v67Ev();
extern void _ZN8S28C7_nt3v68Ev();
extern void _ZN8S28C7_nt3v69Ev();
extern void _ZN8S28C7_nt3v70Ev();
extern void _ZN8S28C7_nt3v71Ev();
extern void _ZN8S28C7_nt3v72Ev();
extern void _ZN8S28C7_nt3v73Ev();
extern void _ZN8S28C7_nt3v74Ev();
extern void _ZN8S28C7_nt3v75Ev();
extern void _ZN8S28C7_nt3v76Ev();
extern void _ZN8S28C7_nt3v77Ev();
extern void _ZN8S28C7_nt3v78Ev();
extern void _ZN8S28C7_nt3v79Ev();
extern void _ZN8S28C7_nt3v80Ev();
extern void _ZN8S28C7_nt3v81Ev();
extern void _ZN8S28C7_nt3v82Ev();
extern void _ZN8S28C7_nt3v83Ev();
extern void _ZN8S28C7_nt3v84Ev();
extern void _ZN8S28C7_nt3v85Ev();
extern void _ZN8S28C7_nt3v86Ev();
extern void _ZN8S28C7_nt3v87Ev();
extern void _ZN8S28C7_nt3v88Ev();
extern void _ZN8S28C7_nt3v89Ev();
extern void _ZN8S28C7_nt3v90Ev();
extern void _ZN8S28C7_nt3v91Ev();
extern void _ZN8S28C7_nt3v92Ev();
extern void _ZN8S28C7_nt3v93Ev();
extern void _ZN8S28C7_nt3v94Ev();
extern void _ZN8S28C7_nt3v95Ev();
extern void _ZN8S28C7_nt3v96Ev();
extern void _ZN8S28C7_nt3v97Ev();
extern void _ZN8S28C7_nt3v98Ev();
extern void _ZN8S28C7_nt3v99Ev();
extern void _ZN8S28C7_nt4v100Ev();
extern void _ZN8S28C7_nt4v101Ev();
extern void _ZN8S28C7_nt4v102Ev();
extern void _ZN8S28C7_nt4v103Ev();
extern void _ZN8S28C7_nt4v104Ev();
extern void _ZN8S28C7_nt4v105Ev();
extern void _ZN8S28C7_nt4v106Ev();
extern void _ZN8S28C7_nt4v107Ev();
extern void _ZN8S28C7_nt4v108Ev();
extern void _ZN8S28C7_nt4v109Ev();
extern void _ZN8S28C7_nt4v110Ev();
extern void _ZN8S28C7_nt4v111Ev();
extern void _ZN8S28C7_nt4v112Ev();
extern void _ZN8S28C7_nt4v113Ev();
extern void _ZN8S28C7_nt4v114Ev();
extern void _ZN8S28C7_nt4v115Ev();
extern void _ZN8S28C7_nt4v116Ev();
extern void _ZN8S28C7_nt4v117Ev();
extern void _ZN8S28C7_nt4v118Ev();
extern void _ZN8S28C7_nt4v119Ev();
extern void _ZN8S28C7_nt4v120Ev();
extern void _ZN8S28C7_nt4v121Ev();
extern void _ZN8S28C7_nt4v122Ev();
extern void _ZN8S28C7_nt4v123Ev();
extern void _ZN8S28C7_nt4v124Ev();
extern void _ZN8S28C7_nt4v125Ev();
extern void _ZN8S28C7_nt4v126Ev();
extern void _ZN8S28C7_nt4v127Ev();
extern void _ZN8S28C7_nt4v128Ev();
extern void _ZN8S28C7_nt4v129Ev();
extern void _ZN8S28C7_nt4v130Ev();
extern void _ZN8S28C7_nt4v131Ev();
extern void _ZN8S28C7_nt4v132Ev();
extern void _ZN8S28C7_nt4v133Ev();
extern void _ZN8S28C7_nt4v134Ev();
extern void _ZN8S28C7_nt4v135Ev();
extern void _ZN8S28C7_nt4v136Ev();
extern void _ZN8S28C7_nt4v137Ev();
extern void _ZN8S28C7_nt4v138Ev();
extern void _ZN8S28C7_nt4v139Ev();
extern void _ZN8S28C7_nt4v140Ev();
extern void _ZN8S28C7_nt4v141Ev();
extern void _ZN8S28C7_nt4v142Ev();
extern void _ZN8S28C7_nt4v143Ev();
extern void _ZN8S28C7_nt4v144Ev();
extern void _ZN8S28C7_nt4v145Ev();
extern void _ZN8S28C7_nt4v146Ev();
extern void _ZN8S28C7_nt4v147Ev();
extern void _ZN8S28C7_nt4v148Ev();
extern void _ZN8S28C7_nt4v149Ev();
extern void _ZN8S28C7_nt4v150Ev();
extern void _ZN8S28C7_nt4v151Ev();
extern void _ZN8S28C7_nt4v152Ev();
extern void _ZN8S28C7_nt4v153Ev();
extern void _ZN8S28C7_nt4v154Ev();
extern void _ZN8S28C7_nt4v155Ev();
extern void _ZN8S28C7_nt4v156Ev();
extern void _ZN8S28C7_nt4v157Ev();
extern void _ZN8S28C7_nt4v158Ev();
extern void _ZN8S28C7_nt4v159Ev();
extern void _ZN8S28C7_nt4v160Ev();
extern void _ZN8S28C7_nt4v161Ev();
extern void _ZN8S28C7_nt4v162Ev();
extern void _ZN8S28C7_nt4v163Ev();
extern void _ZN8S28C7_nt4v164Ev();
extern void _ZN8S28C7_nt4v165Ev();
extern void _ZN8S28C7_nt4v166Ev();
extern void _ZN8S28C7_nt4v167Ev();
extern void _ZN8S28C7_nt4v168Ev();
extern void _ZN8S28C7_nt4v169Ev();
extern void _ZN8S28C7_nt4v170Ev();
extern void _ZN8S28C7_nt4v171Ev();
extern void _ZN8S28C7_nt4v172Ev();
extern void _ZN8S28C7_nt4v173Ev();
extern void _ZN8S28C7_nt4v174Ev();
extern void _ZN8S28C7_nt4v175Ev();
extern void _ZN8S28C7_nt4v176Ev();
extern void _ZN8S28C7_nt4v177Ev();
extern void _ZN8S28C7_nt4v178Ev();
extern void _ZN8S28C7_nt4v179Ev();
extern void _ZN8S28C7_nt4v180Ev();
extern void _ZN8S28C7_nt4v181Ev();
extern void _ZN8S28C7_nt4v182Ev();
extern void _ZN8S28C7_nt4v183Ev();
extern void _ZN8S28C7_nt4v184Ev();
extern void _ZN8S28C7_nt4v185Ev();
extern void _ZN8S28C7_nt4v186Ev();
extern void _ZN8S28C7_nt4v187Ev();
extern void _ZN8S28C7_nt4v188Ev();
extern void _ZN8S28C7_nt4v189Ev();
extern void _ZN8S28C7_nt4v190Ev();
extern void _ZN8S28C7_nt4v191Ev();
extern void _ZN8S28C7_nt4v192Ev();
extern void _ZN8S28C7_nt4v193Ev();
extern void _ZN8S28C7_nt4v194Ev();
extern void _ZN8S28C7_nt4v195Ev();
extern void _ZN8S28C7_nt4v196Ev();
extern void _ZN8S28C7_nt4v197Ev();
extern void _ZN8S28C7_nt4v198Ev();
extern void _ZN8S28C7_nt4v199Ev();
extern void _ZN8S28C7_nt4v200Ev();
extern void _ZN8S28C7_nt4v201Ev();
extern void _ZN8S28C7_nt4v202Ev();
extern void _ZN8S28C7_nt4v203Ev();
extern void _ZN8S28C7_nt4v204Ev();
extern void _ZN8S28C7_nt4v205Ev();
extern void _ZN8S28C7_nt4v206Ev();
extern void _ZN8S28C7_nt4v207Ev();
extern void _ZN8S28C7_nt4v208Ev();
extern void _ZN8S28C7_nt4v209Ev();
extern void _ZN8S28C7_nt4v210Ev();
extern void _ZN5S28C64v211Ev();
extern void _ZN5S28C64v212Ev();
extern void _ZN5S28C64v213Ev();
extern void _ZN5S28C64v214Ev();
extern void _ZN5S28C64v215Ev();
extern void _ZN5S28C64v216Ev();
extern void _ZN5S28C64v217Ev();
extern void _ZN5S28C64v218Ev();
extern void _ZN5S28C64v219Ev();
extern void _ZN5S28C64v220Ev();
extern void _ZN5S28C64v221Ev();
extern void _ZN5S28C64v222Ev();
extern void _ZN5S28C64v223Ev();
extern void _ZN5S28C64v224Ev();
extern void _ZN5S28C64v225Ev();
extern void _ZN5S28C64v226Ev();
extern void _ZN5S28C64v227Ev();
extern void _ZN5S28C64v228Ev();
extern void _ZN5S28C64v229Ev();
extern void _ZN5S28C64v230Ev();
extern void _ZN5S28C64v231Ev();
extern void _ZN5S28C64v232Ev();
extern void _ZN5S28C64v233Ev();
extern void _ZN5S28C64v234Ev();
extern void _ZN5S28C64v235Ev();
extern void _ZN5S28C64v236Ev();
extern void _ZN5S28C64v237Ev();
extern void _ZN5S28C64v238Ev();
extern void _ZN5S28C64v239Ev();
extern void _ZN5S28C64v240Ev();
extern void _ZN5S28C64v241Ev();
extern void _ZN5S28C64v242Ev();
extern void _ZN5S28C64v243Ev();
extern void _ZN5S28C64v244Ev();
extern void _ZN5S28C64v245Ev();
extern void _ZN5S28C64v246Ev();
extern void _ZN5S28C64v247Ev();
extern void _ZN5S28C64v248Ev();
extern void _ZN5S28C64v249Ev();
extern void _ZN5S28C64v250Ev();
extern void _ZN5S28C64v251Ev();
extern void _ZN5S28C64v252Ev();
extern void _ZN5S28C64v253Ev();
extern void _ZN5S28C64v254Ev();
extern void _ZN5S28C64v255Ev();
extern void _ZN5S28C64v256Ev();
extern void _ZN5S28C64v257Ev();
extern void _ZN5S28C64v258Ev();
extern void _ZN5S28C64v259Ev();
extern void _ZN5S28C64v260Ev();
extern void _ZN5S28C54v261Ev();
extern void _ZN5S28C54v262Ev();
extern void _ZN5S28C54v263Ev();
extern void _ZN5S28C54v264Ev();
extern void _ZN5S28C54v265Ev();
extern void _ZN5S28C54v266Ev();
extern void _ZN5S28C54v267Ev();
extern void _ZN5S28C54v268Ev();
extern void _ZN5S28C54v269Ev();
extern void _ZN5S28C54v270Ev();
extern void _ZN5S28C54v271Ev();
extern void _ZN5S28C54v272Ev();
extern void _ZN5S28C54v273Ev();
extern void _ZN5S28C54v274Ev();
extern void _ZN5S28C54v275Ev();
extern void _ZN5S28C54v276Ev();
extern void _ZN5S28C54v277Ev();
extern void _ZN5S28C54v278Ev();
extern void _ZN5S28C54v279Ev();
extern void _ZN5S28C54v280Ev();
extern void _ZN5S28C54v281Ev();
extern void _ZN5S28C54v282Ev();
extern void _ZN5S28C54v283Ev();
extern void _ZN5S28C54v284Ev();
extern void _ZN5S28C54v285Ev();
extern void _ZN5S28C54v286Ev();
extern void _ZN5S28C54v287Ev();
extern void _ZN5S28C54v288Ev();
extern void _ZN5S28C54v289Ev();
extern void _ZN5S28C54v290Ev();
extern void _ZN5S28C54v291Ev();
extern void _ZN5S28C54v292Ev();
extern void _ZN5S28C54v293Ev();
extern void _ZN5S28C54v294Ev();
extern void _ZN5S28C54v295Ev();
extern void _ZN5S28C54v296Ev();
extern void _ZN5S28C54v297Ev();
extern void _ZN5S28C54v298Ev();
static  VTBL_ENTRY vtc_S28C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S28C5[0]),
  (VTBL_ENTRY)&_ZN5S28C5D1Ev,
  (VTBL_ENTRY)&_ZN5S28C5D0Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v6Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v7Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v210Ev,
  (VTBL_ENTRY)&_ZN5S28C64v211Ev,
  (VTBL_ENTRY)&_ZN5S28C64v212Ev,
  (VTBL_ENTRY)&_ZN5S28C64v213Ev,
  (VTBL_ENTRY)&_ZN5S28C64v214Ev,
  (VTBL_ENTRY)&_ZN5S28C64v215Ev,
  (VTBL_ENTRY)&_ZN5S28C64v216Ev,
  (VTBL_ENTRY)&_ZN5S28C64v217Ev,
  (VTBL_ENTRY)&_ZN5S28C64v218Ev,
  (VTBL_ENTRY)&_ZN5S28C64v219Ev,
  (VTBL_ENTRY)&_ZN5S28C64v220Ev,
  (VTBL_ENTRY)&_ZN5S28C64v221Ev,
  (VTBL_ENTRY)&_ZN5S28C64v222Ev,
  (VTBL_ENTRY)&_ZN5S28C64v223Ev,
  (VTBL_ENTRY)&_ZN5S28C64v224Ev,
  (VTBL_ENTRY)&_ZN5S28C64v225Ev,
  (VTBL_ENTRY)&_ZN5S28C64v226Ev,
  (VTBL_ENTRY)&_ZN5S28C64v227Ev,
  (VTBL_ENTRY)&_ZN5S28C64v228Ev,
  (VTBL_ENTRY)&_ZN5S28C64v229Ev,
  (VTBL_ENTRY)&_ZN5S28C64v230Ev,
  (VTBL_ENTRY)&_ZN5S28C64v231Ev,
  (VTBL_ENTRY)&_ZN5S28C64v232Ev,
  (VTBL_ENTRY)&_ZN5S28C64v233Ev,
  (VTBL_ENTRY)&_ZN5S28C64v234Ev,
  (VTBL_ENTRY)&_ZN5S28C64v235Ev,
  (VTBL_ENTRY)&_ZN5S28C64v236Ev,
  (VTBL_ENTRY)&_ZN5S28C64v237Ev,
  (VTBL_ENTRY)&_ZN5S28C64v238Ev,
  (VTBL_ENTRY)&_ZN5S28C64v239Ev,
  (VTBL_ENTRY)&_ZN5S28C64v240Ev,
  (VTBL_ENTRY)&_ZN5S28C64v241Ev,
  (VTBL_ENTRY)&_ZN5S28C64v242Ev,
  (VTBL_ENTRY)&_ZN5S28C64v243Ev,
  (VTBL_ENTRY)&_ZN5S28C64v244Ev,
  (VTBL_ENTRY)&_ZN5S28C64v245Ev,
  (VTBL_ENTRY)&_ZN5S28C64v246Ev,
  (VTBL_ENTRY)&_ZN5S28C64v247Ev,
  (VTBL_ENTRY)&_ZN5S28C64v248Ev,
  (VTBL_ENTRY)&_ZN5S28C64v249Ev,
  (VTBL_ENTRY)&_ZN5S28C64v250Ev,
  (VTBL_ENTRY)&_ZN5S28C64v251Ev,
  (VTBL_ENTRY)&_ZN5S28C64v252Ev,
  (VTBL_ENTRY)&_ZN5S28C64v253Ev,
  (VTBL_ENTRY)&_ZN5S28C64v254Ev,
  (VTBL_ENTRY)&_ZN5S28C64v255Ev,
  (VTBL_ENTRY)&_ZN5S28C64v256Ev,
  (VTBL_ENTRY)&_ZN5S28C64v257Ev,
  (VTBL_ENTRY)&_ZN5S28C64v258Ev,
  (VTBL_ENTRY)&_ZN5S28C64v259Ev,
  (VTBL_ENTRY)&_ZN5S28C64v260Ev,
  (VTBL_ENTRY)&_ZN5S28C54v261Ev,
  (VTBL_ENTRY)&_ZN5S28C54v262Ev,
  (VTBL_ENTRY)&_ZN5S28C54v263Ev,
  (VTBL_ENTRY)&_ZN5S28C54v264Ev,
  (VTBL_ENTRY)&_ZN5S28C54v265Ev,
  (VTBL_ENTRY)&_ZN5S28C54v266Ev,
  (VTBL_ENTRY)&_ZN5S28C54v267Ev,
  (VTBL_ENTRY)&_ZN5S28C54v268Ev,
  (VTBL_ENTRY)&_ZN5S28C54v269Ev,
  (VTBL_ENTRY)&_ZN5S28C54v270Ev,
  (VTBL_ENTRY)&_ZN5S28C54v271Ev,
  (VTBL_ENTRY)&_ZN5S28C54v272Ev,
  (VTBL_ENTRY)&_ZN5S28C54v273Ev,
  (VTBL_ENTRY)&_ZN5S28C54v274Ev,
  (VTBL_ENTRY)&_ZN5S28C54v275Ev,
  (VTBL_ENTRY)&_ZN5S28C54v276Ev,
  (VTBL_ENTRY)&_ZN5S28C54v277Ev,
  (VTBL_ENTRY)&_ZN5S28C54v278Ev,
  (VTBL_ENTRY)&_ZN5S28C54v279Ev,
  (VTBL_ENTRY)&_ZN5S28C54v280Ev,
  (VTBL_ENTRY)&_ZN5S28C54v281Ev,
  (VTBL_ENTRY)&_ZN5S28C54v282Ev,
  (VTBL_ENTRY)&_ZN5S28C54v283Ev,
  (VTBL_ENTRY)&_ZN5S28C54v284Ev,
  (VTBL_ENTRY)&_ZN5S28C54v285Ev,
  (VTBL_ENTRY)&_ZN5S28C54v286Ev,
  (VTBL_ENTRY)&_ZN5S28C54v287Ev,
  (VTBL_ENTRY)&_ZN5S28C54v288Ev,
  (VTBL_ENTRY)&_ZN5S28C54v289Ev,
  (VTBL_ENTRY)&_ZN5S28C54v290Ev,
  (VTBL_ENTRY)&_ZN5S28C54v291Ev,
  (VTBL_ENTRY)&_ZN5S28C54v292Ev,
  (VTBL_ENTRY)&_ZN5S28C54v293Ev,
  (VTBL_ENTRY)&_ZN5S28C54v294Ev,
  (VTBL_ENTRY)&_ZN5S28C54v295Ev,
  (VTBL_ENTRY)&_ZN5S28C54v296Ev,
  (VTBL_ENTRY)&_ZN5S28C54v297Ev,
  (VTBL_ENTRY)&_ZN5S28C54v298Ev,
};
extern VTBL_ENTRY _ZTI5S28C5[];
extern  VTBL_ENTRY _ZTV5S28C5[];
Class_Descriptor cd_S28C5 = {  "S28C5", // class name
  bases_S28C5, 3,
  &(vtc_S28C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1776,1308), // object size
  NSPAIRA(_ZTI5S28C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S28C5),299, //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  S28C4  : S28C5 {
  virtual  ~S28C4(); // _ZN5S28C4D1Ev
  virtual void  v299(); // _ZN5S28C44v299Ev
  virtual void  v300(); // _ZN5S28C44v300Ev
  virtual void  v301(); // _ZN5S28C44v301Ev
  S28C4(); // tgen
};
//SIG(-1 S28C4) C1{ BC2{ BC3{ BC4{ BC5{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC6{ m Fi[2]} Fp[2]} vd v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 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 FC7{ BC8{ BC9{ m Fp Fi[2]}}} FC7 FC10{ m Fi} Fi Fc[4] Fp[2] FC7 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC6 FC6 FC6 FC11{ BC12{ BC9}} FC11 Fi Fp[2] FC13{ m Fi[3]} FC13 FC13 FC13 Fp FC6 FC11 FC13 FC13 Fi FC13 FC13 Fp Fi Fc FC13 FC13 Fp Fi Fp FC11 FC14{ BC15{ BC9}} FC14} vd v211 v212 v213 v214 v215 v216 v217 v218 v219 v220 v221 v222 v223 v224 v225 v226 v227 v228 v229 v230 v231 v232 v233 v234 v235 v236 v237 v238 v239 v240 v241 v242 v243 v244 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 v258 v259 v260 Fp[2] Fi Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fc Fi[2] Fp FC13 FC13 Fp[5] FC13 Fp FC16{ BC17{ BC9}} Fp[2] FC13 Fp Fi[2] Fp Fi FC13 FC13 FC13 Fp[2] Fi FC13 Fi[4] Fp[2] FC16 Fi FC13} vd v261 v262 v263 v264 v265 v266 v267 v268 v269 v270 v271 v272 v273 v274 v275 v276 v277 v278 v279 v280 v281 v282 v283 v284 v285 v286 v287 v288 v289 v290 v291 v292 v293 v294 v295 v296 v297 v298 Fp[8] Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2] Fp Fc[6] Fp[2] Fi[4] FC13 Fi FC13 Fp[5] FC13 Fi[12] FC18{ Fi Fc FC13 FC13 Fp FC13 Fc} FC19{ BC20{ BC21{ BC9}}}[2] Fi FC19 FC19 FC19 FC19 Fi FC13 Fp[4] FC13 Fp FC19 Fp FC22{ BC23{ BC9}} FC22 FC22 FC22 Fp FC24{ BC25{ m Fp[2]}} Fp Fi FC26{ BC27{ BC9}} Fi FC19[4] FC26 Fp FC28{ BC29{ BC9}} Fi[3] FC28 FC28 FC11 FC30{ BC31{ BC9}} Fi FC32{ m Fp FC6}} vd v1 v2 v3}


 S28C4 ::~S28C4(){ note_dtor("S28C4", this);}
void  S28C4 ::v299(){vfunc_called(this, "_ZN5S28C44v299Ev");}
void  S28C4 ::v300(){vfunc_called(this, "_ZN5S28C44v300Ev");}
void  S28C4 ::v301(){vfunc_called(this, "_ZN5S28C44v301Ev");}
S28C4 ::S28C4(){ note_ctor("S28C4", this);} // tgen

static void Test_S28C4()
{
  extern Class_Descriptor cd_S28C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(223,328)];
    init_test(&cd_S28C4, buf);
    S28C4 *dp, &lv = *(dp=new (buf) S28C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1776,1308), "sizeof(S28C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C4)");
    check_base_class_offset(lv, (S28C8_nt*)(S28C7_nt*)(S28C6*)(S28C5*), 0, "S28C4");
    check_base_class_offset(lv, (S28C7_nt*)(S28C6*)(S28C5*), 0, "S28C4");
    check_base_class_offset(lv, (S28C6*)(S28C5*), 0, "S28C4");
    check_base_class_offset(lv, (S28C5*), 0, "S28C4");
    test_class_info(&lv, &cd_S28C4);
    dp->~S28C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C4(Test_S28C4, "S28C4", ABISELECT(1776,1308));

#else // __cplusplus

extern void _ZN5S28C4C1Ev();
extern void _ZN5S28C4D1Ev();
Name_Map name_map_S28C4[] = {
  NSPAIR(_ZN5S28C4C1Ev),
  NSPAIR(_ZN5S28C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C8_nt;
extern VTBL_ENTRY _ZTI8S28C8_nt[];
extern  VTBL_ENTRY _ZTV8S28C8_nt[];
extern Class_Descriptor cd_S28C7_nt;
extern VTBL_ENTRY _ZTI8S28C7_nt[];
extern  VTBL_ENTRY _ZTV8S28C7_nt[];
extern Class_Descriptor cd_S28C6;
extern VTBL_ENTRY _ZTI5S28C6[];
extern  VTBL_ENTRY _ZTV5S28C6[];
extern Class_Descriptor cd_S28C5;
extern VTBL_ENTRY _ZTI5S28C5[];
extern  VTBL_ENTRY _ZTV5S28C5[];
static Base_Class bases_S28C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S28C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S28C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S28C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI5S28C4[];
extern void _ZN5S28C4D1Ev();
extern void _ZN5S28C4D0Ev();
extern void _ZN8S28C8_nt2v4Ev();
extern void _ZN8S28C8_nt2v5Ev();
extern void _ZN8S28C8_nt2v6Ev();
extern void _ZN8S28C8_nt2v7Ev();
extern void _ZN8S28C8_nt2v8Ev();
extern void _ZN8S28C8_nt2v9Ev();
extern void _ZN8S28C8_nt3v10Ev();
extern void _ZN8S28C8_nt3v11Ev();
extern void _ZN8S28C8_nt3v12Ev();
extern void _ZN8S28C8_nt3v13Ev();
extern void _ZN8S28C8_nt3v14Ev();
extern void _ZN8S28C8_nt3v15Ev();
extern void _ZN8S28C8_nt3v16Ev();
extern void _ZN8S28C8_nt3v17Ev();
extern void _ZN8S28C8_nt3v18Ev();
extern void _ZN8S28C8_nt3v19Ev();
extern void _ZN8S28C8_nt3v20Ev();
extern void _ZN8S28C8_nt3v21Ev();
extern void _ZN8S28C8_nt3v22Ev();
extern void _ZN8S28C8_nt3v23Ev();
extern void _ZN8S28C8_nt3v24Ev();
extern void _ZN8S28C8_nt3v25Ev();
extern void _ZN8S28C8_nt3v26Ev();
extern void _ZN8S28C8_nt3v27Ev();
extern void _ZN8S28C8_nt3v28Ev();
extern void _ZN8S28C8_nt3v29Ev();
extern void _ZN8S28C8_nt3v30Ev();
extern void _ZN8S28C8_nt3v31Ev();
extern void _ZN8S28C8_nt3v32Ev();
extern void _ZN8S28C8_nt3v33Ev();
extern void _ZN8S28C8_nt3v34Ev();
extern void _ZN8S28C8_nt3v35Ev();
extern void _ZN8S28C8_nt3v36Ev();
extern void _ZN8S28C8_nt3v37Ev();
extern void _ZN8S28C8_nt3v38Ev();
extern void _ZN8S28C8_nt3v39Ev();
extern void _ZN8S28C8_nt3v40Ev();
extern void _ZN8S28C8_nt3v41Ev();
extern void _ZN8S28C8_nt3v42Ev();
extern void _ZN8S28C8_nt3v43Ev();
extern void _ZN8S28C8_nt3v44Ev();
extern void _ZN8S28C8_nt3v45Ev();
extern void _ZN8S28C8_nt3v46Ev();
extern void _ZN8S28C8_nt3v47Ev();
extern void _ZN8S28C8_nt3v48Ev();
extern void _ZN8S28C8_nt3v49Ev();
extern void _ZN8S28C8_nt3v50Ev();
extern void _ZN8S28C8_nt3v51Ev();
extern void _ZN8S28C8_nt3v52Ev();
extern void _ZN8S28C8_nt3v53Ev();
extern void _ZN8S28C8_nt3v54Ev();
extern void _ZN8S28C8_nt3v55Ev();
extern void _ZN8S28C8_nt3v56Ev();
extern void _ZN8S28C8_nt3v57Ev();
extern void _ZN8S28C8_nt3v58Ev();
extern void _ZN8S28C8_nt3v59Ev();
extern void _ZN8S28C8_nt3v60Ev();
extern void _ZN8S28C8_nt3v61Ev();
extern void _ZN8S28C8_nt3v62Ev();
extern void _ZN8S28C8_nt3v63Ev();
extern void _ZN8S28C8_nt3v64Ev();
extern void _ZN8S28C8_nt3v65Ev();
extern void _ZN8S28C8_nt3v66Ev();
extern void _ZN8S28C8_nt3v67Ev();
extern void _ZN8S28C7_nt3v68Ev();
extern void _ZN8S28C7_nt3v69Ev();
extern void _ZN8S28C7_nt3v70Ev();
extern void _ZN8S28C7_nt3v71Ev();
extern void _ZN8S28C7_nt3v72Ev();
extern void _ZN8S28C7_nt3v73Ev();
extern void _ZN8S28C7_nt3v74Ev();
extern void _ZN8S28C7_nt3v75Ev();
extern void _ZN8S28C7_nt3v76Ev();
extern void _ZN8S28C7_nt3v77Ev();
extern void _ZN8S28C7_nt3v78Ev();
extern void _ZN8S28C7_nt3v79Ev();
extern void _ZN8S28C7_nt3v80Ev();
extern void _ZN8S28C7_nt3v81Ev();
extern void _ZN8S28C7_nt3v82Ev();
extern void _ZN8S28C7_nt3v83Ev();
extern void _ZN8S28C7_nt3v84Ev();
extern void _ZN8S28C7_nt3v85Ev();
extern void _ZN8S28C7_nt3v86Ev();
extern void _ZN8S28C7_nt3v87Ev();
extern void _ZN8S28C7_nt3v88Ev();
extern void _ZN8S28C7_nt3v89Ev();
extern void _ZN8S28C7_nt3v90Ev();
extern void _ZN8S28C7_nt3v91Ev();
extern void _ZN8S28C7_nt3v92Ev();
extern void _ZN8S28C7_nt3v93Ev();
extern void _ZN8S28C7_nt3v94Ev();
extern void _ZN8S28C7_nt3v95Ev();
extern void _ZN8S28C7_nt3v96Ev();
extern void _ZN8S28C7_nt3v97Ev();
extern void _ZN8S28C7_nt3v98Ev();
extern void _ZN8S28C7_nt3v99Ev();
extern void _ZN8S28C7_nt4v100Ev();
extern void _ZN8S28C7_nt4v101Ev();
extern void _ZN8S28C7_nt4v102Ev();
extern void _ZN8S28C7_nt4v103Ev();
extern void _ZN8S28C7_nt4v104Ev();
extern void _ZN8S28C7_nt4v105Ev();
extern void _ZN8S28C7_nt4v106Ev();
extern void _ZN8S28C7_nt4v107Ev();
extern void _ZN8S28C7_nt4v108Ev();
extern void _ZN8S28C7_nt4v109Ev();
extern void _ZN8S28C7_nt4v110Ev();
extern void _ZN8S28C7_nt4v111Ev();
extern void _ZN8S28C7_nt4v112Ev();
extern void _ZN8S28C7_nt4v113Ev();
extern void _ZN8S28C7_nt4v114Ev();
extern void _ZN8S28C7_nt4v115Ev();
extern void _ZN8S28C7_nt4v116Ev();
extern void _ZN8S28C7_nt4v117Ev();
extern void _ZN8S28C7_nt4v118Ev();
extern void _ZN8S28C7_nt4v119Ev();
extern void _ZN8S28C7_nt4v120Ev();
extern void _ZN8S28C7_nt4v121Ev();
extern void _ZN8S28C7_nt4v122Ev();
extern void _ZN8S28C7_nt4v123Ev();
extern void _ZN8S28C7_nt4v124Ev();
extern void _ZN8S28C7_nt4v125Ev();
extern void _ZN8S28C7_nt4v126Ev();
extern void _ZN8S28C7_nt4v127Ev();
extern void _ZN8S28C7_nt4v128Ev();
extern void _ZN8S28C7_nt4v129Ev();
extern void _ZN8S28C7_nt4v130Ev();
extern void _ZN8S28C7_nt4v131Ev();
extern void _ZN8S28C7_nt4v132Ev();
extern void _ZN8S28C7_nt4v133Ev();
extern void _ZN8S28C7_nt4v134Ev();
extern void _ZN8S28C7_nt4v135Ev();
extern void _ZN8S28C7_nt4v136Ev();
extern void _ZN8S28C7_nt4v137Ev();
extern void _ZN8S28C7_nt4v138Ev();
extern void _ZN8S28C7_nt4v139Ev();
extern void _ZN8S28C7_nt4v140Ev();
extern void _ZN8S28C7_nt4v141Ev();
extern void _ZN8S28C7_nt4v142Ev();
extern void _ZN8S28C7_nt4v143Ev();
extern void _ZN8S28C7_nt4v144Ev();
extern void _ZN8S28C7_nt4v145Ev();
extern void _ZN8S28C7_nt4v146Ev();
extern void _ZN8S28C7_nt4v147Ev();
extern void _ZN8S28C7_nt4v148Ev();
extern void _ZN8S28C7_nt4v149Ev();
extern void _ZN8S28C7_nt4v150Ev();
extern void _ZN8S28C7_nt4v151Ev();
extern void _ZN8S28C7_nt4v152Ev();
extern void _ZN8S28C7_nt4v153Ev();
extern void _ZN8S28C7_nt4v154Ev();
extern void _ZN8S28C7_nt4v155Ev();
extern void _ZN8S28C7_nt4v156Ev();
extern void _ZN8S28C7_nt4v157Ev();
extern void _ZN8S28C7_nt4v158Ev();
extern void _ZN8S28C7_nt4v159Ev();
extern void _ZN8S28C7_nt4v160Ev();
extern void _ZN8S28C7_nt4v161Ev();
extern void _ZN8S28C7_nt4v162Ev();
extern void _ZN8S28C7_nt4v163Ev();
extern void _ZN8S28C7_nt4v164Ev();
extern void _ZN8S28C7_nt4v165Ev();
extern void _ZN8S28C7_nt4v166Ev();
extern void _ZN8S28C7_nt4v167Ev();
extern void _ZN8S28C7_nt4v168Ev();
extern void _ZN8S28C7_nt4v169Ev();
extern void _ZN8S28C7_nt4v170Ev();
extern void _ZN8S28C7_nt4v171Ev();
extern void _ZN8S28C7_nt4v172Ev();
extern void _ZN8S28C7_nt4v173Ev();
extern void _ZN8S28C7_nt4v174Ev();
extern void _ZN8S28C7_nt4v175Ev();
extern void _ZN8S28C7_nt4v176Ev();
extern void _ZN8S28C7_nt4v177Ev();
extern void _ZN8S28C7_nt4v178Ev();
extern void _ZN8S28C7_nt4v179Ev();
extern void _ZN8S28C7_nt4v180Ev();
extern void _ZN8S28C7_nt4v181Ev();
extern void _ZN8S28C7_nt4v182Ev();
extern void _ZN8S28C7_nt4v183Ev();
extern void _ZN8S28C7_nt4v184Ev();
extern void _ZN8S28C7_nt4v185Ev();
extern void _ZN8S28C7_nt4v186Ev();
extern void _ZN8S28C7_nt4v187Ev();
extern void _ZN8S28C7_nt4v188Ev();
extern void _ZN8S28C7_nt4v189Ev();
extern void _ZN8S28C7_nt4v190Ev();
extern void _ZN8S28C7_nt4v191Ev();
extern void _ZN8S28C7_nt4v192Ev();
extern void _ZN8S28C7_nt4v193Ev();
extern void _ZN8S28C7_nt4v194Ev();
extern void _ZN8S28C7_nt4v195Ev();
extern void _ZN8S28C7_nt4v196Ev();
extern void _ZN8S28C7_nt4v197Ev();
extern void _ZN8S28C7_nt4v198Ev();
extern void _ZN8S28C7_nt4v199Ev();
extern void _ZN8S28C7_nt4v200Ev();
extern void _ZN8S28C7_nt4v201Ev();
extern void _ZN8S28C7_nt4v202Ev();
extern void _ZN8S28C7_nt4v203Ev();
extern void _ZN8S28C7_nt4v204Ev();
extern void _ZN8S28C7_nt4v205Ev();
extern void _ZN8S28C7_nt4v206Ev();
extern void _ZN8S28C7_nt4v207Ev();
extern void _ZN8S28C7_nt4v208Ev();
extern void _ZN8S28C7_nt4v209Ev();
extern void _ZN8S28C7_nt4v210Ev();
extern void _ZN5S28C64v211Ev();
extern void _ZN5S28C64v212Ev();
extern void _ZN5S28C64v213Ev();
extern void _ZN5S28C64v214Ev();
extern void _ZN5S28C64v215Ev();
extern void _ZN5S28C64v216Ev();
extern void _ZN5S28C64v217Ev();
extern void _ZN5S28C64v218Ev();
extern void _ZN5S28C64v219Ev();
extern void _ZN5S28C64v220Ev();
extern void _ZN5S28C64v221Ev();
extern void _ZN5S28C64v222Ev();
extern void _ZN5S28C64v223Ev();
extern void _ZN5S28C64v224Ev();
extern void _ZN5S28C64v225Ev();
extern void _ZN5S28C64v226Ev();
extern void _ZN5S28C64v227Ev();
extern void _ZN5S28C64v228Ev();
extern void _ZN5S28C64v229Ev();
extern void _ZN5S28C64v230Ev();
extern void _ZN5S28C64v231Ev();
extern void _ZN5S28C64v232Ev();
extern void _ZN5S28C64v233Ev();
extern void _ZN5S28C64v234Ev();
extern void _ZN5S28C64v235Ev();
extern void _ZN5S28C64v236Ev();
extern void _ZN5S28C64v237Ev();
extern void _ZN5S28C64v238Ev();
extern void _ZN5S28C64v239Ev();
extern void _ZN5S28C64v240Ev();
extern void _ZN5S28C64v241Ev();
extern void _ZN5S28C64v242Ev();
extern void _ZN5S28C64v243Ev();
extern void _ZN5S28C64v244Ev();
extern void _ZN5S28C64v245Ev();
extern void _ZN5S28C64v246Ev();
extern void _ZN5S28C64v247Ev();
extern void _ZN5S28C64v248Ev();
extern void _ZN5S28C64v249Ev();
extern void _ZN5S28C64v250Ev();
extern void _ZN5S28C64v251Ev();
extern void _ZN5S28C64v252Ev();
extern void _ZN5S28C64v253Ev();
extern void _ZN5S28C64v254Ev();
extern void _ZN5S28C64v255Ev();
extern void _ZN5S28C64v256Ev();
extern void _ZN5S28C64v257Ev();
extern void _ZN5S28C64v258Ev();
extern void _ZN5S28C64v259Ev();
extern void _ZN5S28C64v260Ev();
extern void _ZN5S28C54v261Ev();
extern void _ZN5S28C54v262Ev();
extern void _ZN5S28C54v263Ev();
extern void _ZN5S28C54v264Ev();
extern void _ZN5S28C54v265Ev();
extern void _ZN5S28C54v266Ev();
extern void _ZN5S28C54v267Ev();
extern void _ZN5S28C54v268Ev();
extern void _ZN5S28C54v269Ev();
extern void _ZN5S28C54v270Ev();
extern void _ZN5S28C54v271Ev();
extern void _ZN5S28C54v272Ev();
extern void _ZN5S28C54v273Ev();
extern void _ZN5S28C54v274Ev();
extern void _ZN5S28C54v275Ev();
extern void _ZN5S28C54v276Ev();
extern void _ZN5S28C54v277Ev();
extern void _ZN5S28C54v278Ev();
extern void _ZN5S28C54v279Ev();
extern void _ZN5S28C54v280Ev();
extern void _ZN5S28C54v281Ev();
extern void _ZN5S28C54v282Ev();
extern void _ZN5S28C54v283Ev();
extern void _ZN5S28C54v284Ev();
extern void _ZN5S28C54v285Ev();
extern void _ZN5S28C54v286Ev();
extern void _ZN5S28C54v287Ev();
extern void _ZN5S28C54v288Ev();
extern void _ZN5S28C54v289Ev();
extern void _ZN5S28C54v290Ev();
extern void _ZN5S28C54v291Ev();
extern void _ZN5S28C54v292Ev();
extern void _ZN5S28C54v293Ev();
extern void _ZN5S28C54v294Ev();
extern void _ZN5S28C54v295Ev();
extern void _ZN5S28C54v296Ev();
extern void _ZN5S28C54v297Ev();
extern void _ZN5S28C54v298Ev();
extern void _ZN5S28C44v299Ev();
extern void _ZN5S28C44v300Ev();
extern void _ZN5S28C44v301Ev();
static  VTBL_ENTRY vtc_S28C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S28C4[0]),
  (VTBL_ENTRY)&_ZN5S28C4D1Ev,
  (VTBL_ENTRY)&_ZN5S28C4D0Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v6Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v7Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v210Ev,
  (VTBL_ENTRY)&_ZN5S28C64v211Ev,
  (VTBL_ENTRY)&_ZN5S28C64v212Ev,
  (VTBL_ENTRY)&_ZN5S28C64v213Ev,
  (VTBL_ENTRY)&_ZN5S28C64v214Ev,
  (VTBL_ENTRY)&_ZN5S28C64v215Ev,
  (VTBL_ENTRY)&_ZN5S28C64v216Ev,
  (VTBL_ENTRY)&_ZN5S28C64v217Ev,
  (VTBL_ENTRY)&_ZN5S28C64v218Ev,
  (VTBL_ENTRY)&_ZN5S28C64v219Ev,
  (VTBL_ENTRY)&_ZN5S28C64v220Ev,
  (VTBL_ENTRY)&_ZN5S28C64v221Ev,
  (VTBL_ENTRY)&_ZN5S28C64v222Ev,
  (VTBL_ENTRY)&_ZN5S28C64v223Ev,
  (VTBL_ENTRY)&_ZN5S28C64v224Ev,
  (VTBL_ENTRY)&_ZN5S28C64v225Ev,
  (VTBL_ENTRY)&_ZN5S28C64v226Ev,
  (VTBL_ENTRY)&_ZN5S28C64v227Ev,
  (VTBL_ENTRY)&_ZN5S28C64v228Ev,
  (VTBL_ENTRY)&_ZN5S28C64v229Ev,
  (VTBL_ENTRY)&_ZN5S28C64v230Ev,
  (VTBL_ENTRY)&_ZN5S28C64v231Ev,
  (VTBL_ENTRY)&_ZN5S28C64v232Ev,
  (VTBL_ENTRY)&_ZN5S28C64v233Ev,
  (VTBL_ENTRY)&_ZN5S28C64v234Ev,
  (VTBL_ENTRY)&_ZN5S28C64v235Ev,
  (VTBL_ENTRY)&_ZN5S28C64v236Ev,
  (VTBL_ENTRY)&_ZN5S28C64v237Ev,
  (VTBL_ENTRY)&_ZN5S28C64v238Ev,
  (VTBL_ENTRY)&_ZN5S28C64v239Ev,
  (VTBL_ENTRY)&_ZN5S28C64v240Ev,
  (VTBL_ENTRY)&_ZN5S28C64v241Ev,
  (VTBL_ENTRY)&_ZN5S28C64v242Ev,
  (VTBL_ENTRY)&_ZN5S28C64v243Ev,
  (VTBL_ENTRY)&_ZN5S28C64v244Ev,
  (VTBL_ENTRY)&_ZN5S28C64v245Ev,
  (VTBL_ENTRY)&_ZN5S28C64v246Ev,
  (VTBL_ENTRY)&_ZN5S28C64v247Ev,
  (VTBL_ENTRY)&_ZN5S28C64v248Ev,
  (VTBL_ENTRY)&_ZN5S28C64v249Ev,
  (VTBL_ENTRY)&_ZN5S28C64v250Ev,
  (VTBL_ENTRY)&_ZN5S28C64v251Ev,
  (VTBL_ENTRY)&_ZN5S28C64v252Ev,
  (VTBL_ENTRY)&_ZN5S28C64v253Ev,
  (VTBL_ENTRY)&_ZN5S28C64v254Ev,
  (VTBL_ENTRY)&_ZN5S28C64v255Ev,
  (VTBL_ENTRY)&_ZN5S28C64v256Ev,
  (VTBL_ENTRY)&_ZN5S28C64v257Ev,
  (VTBL_ENTRY)&_ZN5S28C64v258Ev,
  (VTBL_ENTRY)&_ZN5S28C64v259Ev,
  (VTBL_ENTRY)&_ZN5S28C64v260Ev,
  (VTBL_ENTRY)&_ZN5S28C54v261Ev,
  (VTBL_ENTRY)&_ZN5S28C54v262Ev,
  (VTBL_ENTRY)&_ZN5S28C54v263Ev,
  (VTBL_ENTRY)&_ZN5S28C54v264Ev,
  (VTBL_ENTRY)&_ZN5S28C54v265Ev,
  (VTBL_ENTRY)&_ZN5S28C54v266Ev,
  (VTBL_ENTRY)&_ZN5S28C54v267Ev,
  (VTBL_ENTRY)&_ZN5S28C54v268Ev,
  (VTBL_ENTRY)&_ZN5S28C54v269Ev,
  (VTBL_ENTRY)&_ZN5S28C54v270Ev,
  (VTBL_ENTRY)&_ZN5S28C54v271Ev,
  (VTBL_ENTRY)&_ZN5S28C54v272Ev,
  (VTBL_ENTRY)&_ZN5S28C54v273Ev,
  (VTBL_ENTRY)&_ZN5S28C54v274Ev,
  (VTBL_ENTRY)&_ZN5S28C54v275Ev,
  (VTBL_ENTRY)&_ZN5S28C54v276Ev,
  (VTBL_ENTRY)&_ZN5S28C54v277Ev,
  (VTBL_ENTRY)&_ZN5S28C54v278Ev,
  (VTBL_ENTRY)&_ZN5S28C54v279Ev,
  (VTBL_ENTRY)&_ZN5S28C54v280Ev,
  (VTBL_ENTRY)&_ZN5S28C54v281Ev,
  (VTBL_ENTRY)&_ZN5S28C54v282Ev,
  (VTBL_ENTRY)&_ZN5S28C54v283Ev,
  (VTBL_ENTRY)&_ZN5S28C54v284Ev,
  (VTBL_ENTRY)&_ZN5S28C54v285Ev,
  (VTBL_ENTRY)&_ZN5S28C54v286Ev,
  (VTBL_ENTRY)&_ZN5S28C54v287Ev,
  (VTBL_ENTRY)&_ZN5S28C54v288Ev,
  (VTBL_ENTRY)&_ZN5S28C54v289Ev,
  (VTBL_ENTRY)&_ZN5S28C54v290Ev,
  (VTBL_ENTRY)&_ZN5S28C54v291Ev,
  (VTBL_ENTRY)&_ZN5S28C54v292Ev,
  (VTBL_ENTRY)&_ZN5S28C54v293Ev,
  (VTBL_ENTRY)&_ZN5S28C54v294Ev,
  (VTBL_ENTRY)&_ZN5S28C54v295Ev,
  (VTBL_ENTRY)&_ZN5S28C54v296Ev,
  (VTBL_ENTRY)&_ZN5S28C54v297Ev,
  (VTBL_ENTRY)&_ZN5S28C54v298Ev,
  (VTBL_ENTRY)&_ZN5S28C44v299Ev,
  (VTBL_ENTRY)&_ZN5S28C44v300Ev,
  (VTBL_ENTRY)&_ZN5S28C44v301Ev,
};
extern VTBL_ENTRY _ZTI5S28C4[];
extern  VTBL_ENTRY _ZTV5S28C4[];
Class_Descriptor cd_S28C4 = {  "S28C4", // class name
  bases_S28C4, 4,
  &(vtc_S28C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1776,1308), // object size
  NSPAIRA(_ZTI5S28C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S28C4),302, //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  S28C52_nt  {
  void  mf28c52(); // _ZN9S28C52_nt7mf28c52Ev
};
//SIG(-1 S28C52_nt) C1{ m}


void  S28C52_nt ::mf28c52(){}

//skip512 S28C52_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI9S28C52_nt[];
VTBL_ENTRY *P__ZTI9S28C52_nt = _ZTI9S28C52_nt; 
Class_Descriptor cd_S28C52_nt = {  "S28C52_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI9S28C52_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  S28C51  {
  unsigned int s28c51f0:1;
  unsigned int s28c51f1:1;
  unsigned int s28c51f2:1;
  unsigned int s28c51f3:1;
  int s28c51f4[6];
  ::S28C52_nt s28c51f5;
  char s28c51f6;
  int s28c51f7[2];
  ::S28C18_nt s28c51f8;
  int s28c51f9[3];
  unsigned int s28c51f10:1;
  int s28c51f11[4];
  ::S28C18_nt s28c51f12;
  ::S28C18_nt s28c51f13;
  ::S28C18_nt s28c51f14;
  int s28c51f15;
  void  mf28c51(); // _ZN6S28C517mf28c51Ev
};
//SIG(-1 S28C51) C1{ m Fi:1 Fi:1 Fi:1 Fi:1 Fi[6] FC2{ m} Fc Fi[2] FC3{ m Fi[3]} Fi[3] Fi:1 Fi[4] FC3 FC3 FC3 Fi}


void  S28C51 ::mf28c51(){}

static void Test_S28C51()
{
  {
    init_simple_test("S28C51");
    static S28C51 lv;
    check2(sizeof(lv), 124, "sizeof(S28C51)");
    check2(__alignof__(lv), 4, "__alignof__(S28C51)");
    set_bf_and_test(lv, s28c51f0, 0, 0, 1, 1, "S28C51");
    set_bf_and_test(lv, s28c51f1, 0, 1, 1, 1, "S28C51");
    set_bf_and_test(lv, s28c51f2, 0, 2, 1, 1, "S28C51");
    set_bf_and_test(lv, s28c51f3, 0, 3, 1, 1, "S28C51");
    check_field_offset(lv, s28c51f4, 4, "S28C51.s28c51f4");
    check_field_offset(lv, s28c51f5, 28, "S28C51.s28c51f5");
    check_field_offset(lv, s28c51f6, 29, "S28C51.s28c51f6");
    check_field_offset(lv, s28c51f7, 32, "S28C51.s28c51f7");
    check_field_offset(lv, s28c51f8, 40, "S28C51.s28c51f8");
    check_field_offset(lv, s28c51f9, 52, "S28C51.s28c51f9");
    set_bf_and_test(lv, s28c51f10, 64, 0, 1, 1, "S28C51");
    check_field_offset(lv, s28c51f11, 68, "S28C51.s28c51f11");
    check_field_offset(lv, s28c51f12, 84, "S28C51.s28c51f12");
    check_field_offset(lv, s28c51f13, 96, "S28C51.s28c51f13");
    check_field_offset(lv, s28c51f14, 108, "S28C51.s28c51f14");
    check_field_offset(lv, s28c51f15, 120, "S28C51.s28c51f15");
  }
}
static Arrange_To_Call_Me vS28C51(Test_S28C51, "S28C51", 124);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S28C56()
{
  extern Class_Descriptor cd_S28C56;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S28C56, buf);
    S28C56 &lv = *(new (buf) S28C56());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S28C56)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C56)");
    check_base_class_offset(lv, (S28C12_nt*), 0, "S28C56");
    test_class_info(&lv, &cd_S28C56);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C56(Test_S28C56, "S28C56", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S28C55()
{
  extern Class_Descriptor cd_S28C55;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S28C55, buf);
    S28C55 &lv = *(new (buf) S28C55());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S28C55)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C55)");
    check_base_class_offset(lv, (S28C12_nt*)(S28C56*), 0, "S28C55");
    check_base_class_offset(lv, (S28C56*), 0, "S28C55");
    test_class_info(&lv, &cd_S28C55);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C55(Test_S28C55, "S28C55", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S28C12_nt;
extern Class_Descriptor cd_S28C56;
static Base_Class bases_S28C55[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S28C56,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S28C55 = {  "S28C55", // class name
  bases_S28C55, 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  S28C3  : S28C4 {
  unsigned int s28c3f0:1;
  unsigned int s28c3f1:1;
  unsigned int s28c3f2:1;
  unsigned int s28c3f3:1;
  unsigned int s28c3f4:1;
  unsigned int s28c3f5:1;
  unsigned int s28c3f6:1;
  unsigned int s28c3f7:1;
  unsigned int s28c3f8:1;
  unsigned int s28c3f9:1;
  unsigned int s28c3f10:1;
  unsigned int s28c3f11:1;
  unsigned int s28c3f12:1;
  unsigned int s28c3f13:1;
  unsigned int s28c3f14:1;
  unsigned int s28c3f15:1;
  unsigned int s28c3f16:1;
  unsigned int s28c3f17:1;
  unsigned int s28c3f18:1;
  unsigned int s28c3f19:1;
  unsigned int s28c3f20:1;
  unsigned int s28c3f21:1;
  unsigned int s28c3f22:1;
  unsigned int s28c3f23:1;
  unsigned int s28c3f24:1;
  unsigned int s28c3f25:1;
  unsigned int s28c3f26:1;
  unsigned int s28c3f27:1;
  unsigned int s28c3f28:1;
  unsigned int s28c3f29:1;
  unsigned int s28c3f30:1;
  unsigned int s28c3f31:1;
  unsigned int s28c3f32:1;
  unsigned int s28c3f33:1;
  unsigned int s28c3f34:1;
  unsigned int s28c3f35:1;
  unsigned int s28c3f36:1;
  unsigned int s28c3f37:1;
  unsigned int s28c3f38:1;
  unsigned int s28c3f39:1;
  unsigned int s28c3f40:1;
  unsigned int s28c3f41:1;
  unsigned int s28c3f42:1;
  unsigned int s28c3f43:1;
  char s28c3f44;
  char s28c3f45[5];
  ::S28C18_nt s28c3f46;
  void *s28c3f47[2];
  int s28c3f48[2];
  ::S28C31_nt s28c3f49;
  void *s28c3f50[3];
  ::S28C51 s28c3f51;
  void *s28c3f52;
  ::S28C18_nt s28c3f53;
  ::S28C18_nt s28c3f54;
  ::S28C51 s28c3f55;
  int s28c3f56;
  void *s28c3f57[3];
  ::S28C18_nt s28c3f58;
  ::S28C18_nt s28c3f59;
  ::S28C18_nt s28c3f60;
  ::S28C18_nt s28c3f61;
  int s28c3f62;
  ::S28C18_nt s28c3f63;
  int s28c3f64[2];
  unsigned int s28c3f65:1;
  unsigned int s28c3f66:1;
  unsigned int s28c3f67:1;
  unsigned int s28c3f68:1;
  int s28c3f69[2];
  ::S28C18_nt s28c3f70;
  int s28c3f71;
  void *s28c3f72;
  int s28c3f73[5];
  ::S28C31_nt s28c3f74;
  int s28c3f75;
  void *s28c3f76[4];
  ::S28C31_nt s28c3f77;
  ::S28C48 s28c3f78;
  void *s28c3f79[2];
  ::S28C16 s28c3f80;
  int s28c3f81[5];
  void *s28c3f82;
  ::S28C55 s28c3f83;
  int s28c3f84;
  virtual  ~S28C3(); // _ZN5S28C3D1Ev
  virtual void  v302(); // _ZN5S28C34v302Ev
  virtual void  v303(); // _ZN5S28C34v303Ev
  virtual void  v304(); // _ZN5S28C34v304Ev
  virtual void  v305(); // _ZN5S28C34v305Ev
  virtual void  v306(); // _ZN5S28C34v306Ev
  virtual void  v307(); // _ZN5S28C34v307Ev
  virtual void  v308(); // _ZN5S28C34v308Ev
  virtual void  v309(); // _ZN5S28C34v309Ev
  virtual void  v310(); // _ZN5S28C34v310Ev
  virtual void  v311(); // _ZN5S28C34v311Ev
  virtual void  v312(); // _ZN5S28C34v312Ev
  virtual void  v313(); // _ZN5S28C34v313Ev
  virtual void  v314(); // _ZN5S28C34v314Ev
  virtual void  v315(); // _ZN5S28C34v315Ev
  virtual void  v316(); // _ZN5S28C34v316Ev
  virtual void  v317(); // _ZN5S28C34v317Ev
  virtual void  v318(); // _ZN5S28C34v318Ev
  virtual void  v319(); // _ZN5S28C34v319Ev
  virtual void  v320(); // _ZN5S28C34v320Ev
  S28C3(); // tgen
};
//SIG(-1 S28C3) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ vd 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 Fi FL Fp[4] Fi[2] Fp FC7{ m Fi[2]} Fp[2]} vd v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 v208 v209 v210 v211 v212 v213 v214 v215 v216 v217 v218 v219 v220 v221 v222 v223 v224 v225 v226 FC8{ BC9{ BC10{ m Fp Fi[2]}}} FC8 FC11{ m Fi} Fi Fc[4] Fp[2] FC8 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC7 FC7 FC7 FC12{ BC13{ BC10}} FC12 Fi Fp[2] FC14{ m Fi[3]} FC14 FC14 FC14 Fp FC7 FC12 FC14 FC14 Fi FC14 FC14 Fp Fi Fc FC14 FC14 Fp Fi Fp FC12 FC15{ BC16{ BC10}} FC15} vd v227 v228 v229 v230 v231 v232 v233 v234 v235 v236 v237 v238 v239 v240 v241 v242 v243 v244 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 v258 v259 v260 v261 v262 v263 v264 v265 v266 v267 v268 v269 v270 v271 v272 v273 v274 v275 v276 Fp[2] Fi Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fc Fi[2] Fp FC14 FC14 Fp[5] FC14 Fp FC17{ BC18{ BC10}} Fp[2] FC14 Fp Fi[2] Fp Fi FC14 FC14 FC14 Fp[2] Fi FC14 Fi[4] Fp[2] FC17 Fi FC14} vd v277 v278 v279 v280 v281 v282 v283 v284 v285 v286 v287 v288 v289 v290 v291 v292 v293 v294 v295 v296 v297 v298 v299 v300 v301 v302 v303 v304 v305 v306 v307 v308 v309 v310 v311 v312 v313 v314 Fp[8] Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2] Fp Fc[6] Fp[2] Fi[4] FC14 Fi FC14 Fp[5] FC14 Fi[12] FC19{ Fi Fc FC14 FC14 Fp FC14 Fc} FC20{ BC21{ BC22{ BC10}}}[2] Fi FC20 FC20 FC20 FC20 Fi FC14 Fp[4] FC14 Fp FC20 Fp FC23{ BC24{ BC10}} FC23 FC23 FC23 Fp FC25{ BC26{ m Fp[2]}} Fp Fi FC27{ BC28{ BC10}} Fi FC20[4] FC27 Fp FC29{ BC30{ BC10}} Fi[3] FC29 FC29 FC12 FC31{ BC32{ BC10}} Fi FC33{ m Fp FC7}} vd v315 v316 v317} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fc[6] FC14 Fp[2] Fi[2] FC20 Fp[3] FC34{ m Fi:1 Fi:1 Fi:1 Fi:1 Fi[6] FC35{ m} Fc Fi[2] FC14 Fi[3] Fi:1 Fi[4] FC14 FC14 FC14 Fi} Fp FC14 FC14 FC34 Fi Fp[3] FC14 FC14 FC14 FC14 Fi FC14 Fi[2] Fi:1 Fi:1 Fi:1 Fi:1 Fi[2] FC14 Fi Fp Fi[5] FC20 Fi Fp[4] FC20 FC31 Fp[2] FC12 Fi[5] Fp FC36{ BC37{ BC10}} Fi}


 S28C3 ::~S28C3(){ note_dtor("S28C3", this);}
void  S28C3 ::v302(){vfunc_called(this, "_ZN5S28C34v302Ev");}
void  S28C3 ::v303(){vfunc_called(this, "_ZN5S28C34v303Ev");}
void  S28C3 ::v304(){vfunc_called(this, "_ZN5S28C34v304Ev");}
void  S28C3 ::v305(){vfunc_called(this, "_ZN5S28C34v305Ev");}
void  S28C3 ::v306(){vfunc_called(this, "_ZN5S28C34v306Ev");}
void  S28C3 ::v307(){vfunc_called(this, "_ZN5S28C34v307Ev");}
void  S28C3 ::v308(){vfunc_called(this, "_ZN5S28C34v308Ev");}
void  S28C3 ::v309(){vfunc_called(this, "_ZN5S28C34v309Ev");}
void  S28C3 ::v310(){vfunc_called(this, "_ZN5S28C34v310Ev");}
void  S28C3 ::v311(){vfunc_called(this, "_ZN5S28C34v311Ev");}
void  S28C3 ::v312(){vfunc_called(this, "_ZN5S28C34v312Ev");}
void  S28C3 ::v313(){vfunc_called(this, "_ZN5S28C34v313Ev");}
void  S28C3 ::v314(){vfunc_called(this, "_ZN5S28C34v314Ev");}
void  S28C3 ::v315(){vfunc_called(this, "_ZN5S28C34v315Ev");}
void  S28C3 ::v316(){vfunc_called(this, "_ZN5S28C34v316Ev");}
void  S28C3 ::v317(){vfunc_called(this, "_ZN5S28C34v317Ev");}
void  S28C3 ::v318(){vfunc_called(this, "_ZN5S28C34v318Ev");}
void  S28C3 ::v319(){vfunc_called(this, "_ZN5S28C34v319Ev");}
void  S28C3 ::v320(){vfunc_called(this, "_ZN5S28C34v320Ev");}
S28C3 ::S28C3(){ note_ctor("S28C3", this);} // tgen

static void Test_S28C3()
{
  extern Class_Descriptor cd_S28C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(312,477)];
    init_test(&cd_S28C3, buf);
    S28C3 *dp, &lv = *(dp=new (buf) S28C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2488,1904), "sizeof(S28C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C3)");
    check_base_class_offset(lv, (S28C8_nt*)(S28C7_nt*)(S28C6*)(S28C5*)(S28C4*), 0, "S28C3");
    check_base_class_offset(lv, (S28C7_nt*)(S28C6*)(S28C5*)(S28C4*), 0, "S28C3");
    check_base_class_offset(lv, (S28C6*)(S28C5*)(S28C4*), 0, "S28C3");
    check_base_class_offset(lv, (S28C5*)(S28C4*), 0, "S28C3");
    check_base_class_offset(lv, (S28C4*), 0, "S28C3");
    set_bf_and_test(lv, s28c3f0, ABISELECT(1776,1308), 0, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f1, ABISELECT(1776,1308), 1, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f2, ABISELECT(1776,1308), 2, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f3, ABISELECT(1776,1308), 3, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f4, ABISELECT(1776,1308), 4, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f5, ABISELECT(1776,1308), 5, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f6, ABISELECT(1776,1308), 6, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f7, ABISELECT(1776,1308), 7, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f8, ABISELECT(1777,1309), 0, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f9, ABISELECT(1777,1309), 1, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f10, ABISELECT(1777,1309), 2, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f11, ABISELECT(1777,1309), 3, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f12, ABISELECT(1777,1309), 4, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f13, ABISELECT(1777,1309), 5, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f14, ABISELECT(1777,1309), 6, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f15, ABISELECT(1777,1309), 7, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f16, ABISELECT(1778,1310), 0, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f17, ABISELECT(1778,1310), 1, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f18, ABISELECT(1778,1310), 2, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f19, ABISELECT(1778,1310), 3, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f20, ABISELECT(1778,1310), 4, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f21, ABISELECT(1778,1310), 5, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f22, ABISELECT(1778,1310), 6, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f23, ABISELECT(1778,1310), 7, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f24, ABISELECT(1779,1311), 0, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f25, ABISELECT(1779,1311), 1, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f26, ABISELECT(1779,1311), 2, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f27, ABISELECT(1779,1311), 3, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f28, ABISELECT(1779,1311), 4, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f29, ABISELECT(1779,1311), 5, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f30, ABISELECT(1779,1311), 6, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f31, ABISELECT(1779,1311), 7, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f32, ABISELECT(1780,1312), 0, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f33, ABISELECT(1780,1312), 1, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f34, ABISELECT(1780,1312), 2, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f35, ABISELECT(1780,1312), 3, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f36, ABISELECT(1780,1312), 4, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f37, ABISELECT(1780,1312), 5, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f38, ABISELECT(1780,1312), 6, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f39, ABISELECT(1780,1312), 7, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f40, ABISELECT(1781,1313), 0, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f41, ABISELECT(1781,1313), 1, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f42, ABISELECT(1781,1313), 2, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f43, ABISELECT(1781,1313), 3, 1, 1, "S28C3");
    check_field_offset(lv, s28c3f44, ABISELECT(1782,1314), "S28C3.s28c3f44");
    check_field_offset(lv, s28c3f45, ABISELECT(1783,1315), "S28C3.s28c3f45");
    check_field_offset(lv, s28c3f46, ABISELECT(1788,1320), "S28C3.s28c3f46");
    check_field_offset(lv, s28c3f47, ABISELECT(1800,1332), "S28C3.s28c3f47");
    check_field_offset(lv, s28c3f48, ABISELECT(1816,1340), "S28C3.s28c3f48");
    check_field_offset(lv, s28c3f49, ABISELECT(1824,1348), "S28C3.s28c3f49");
    check_field_offset(lv, s28c3f50, ABISELECT(1840,1360), "S28C3.s28c3f50");
    check_field_offset(lv, s28c3f51, ABISELECT(1864,1372), "S28C3.s28c3f51");
    check_field_offset(lv, s28c3f52, ABISELECT(1992,1496), "S28C3.s28c3f52");
    check_field_offset(lv, s28c3f53, ABISELECT(2000,1500), "S28C3.s28c3f53");
    check_field_offset(lv, s28c3f54, ABISELECT(2012,1512), "S28C3.s28c3f54");
    check_field_offset(lv, s28c3f55, ABISELECT(2024,1524), "S28C3.s28c3f55");
    check_field_offset(lv, s28c3f56, ABISELECT(2148,1648), "S28C3.s28c3f56");
    check_field_offset(lv, s28c3f57, ABISELECT(2152,1652), "S28C3.s28c3f57");
    check_field_offset(lv, s28c3f58, ABISELECT(2176,1664), "S28C3.s28c3f58");
    check_field_offset(lv, s28c3f59, ABISELECT(2188,1676), "S28C3.s28c3f59");
    check_field_offset(lv, s28c3f60, ABISELECT(2200,1688), "S28C3.s28c3f60");
    check_field_offset(lv, s28c3f61, ABISELECT(2212,1700), "S28C3.s28c3f61");
    check_field_offset(lv, s28c3f62, ABISELECT(2224,1712), "S28C3.s28c3f62");
    check_field_offset(lv, s28c3f63, ABISELECT(2228,1716), "S28C3.s28c3f63");
    check_field_offset(lv, s28c3f64, ABISELECT(2240,1728), "S28C3.s28c3f64");
    set_bf_and_test(lv, s28c3f65, ABISELECT(2248,1736), 0, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f66, ABISELECT(2248,1736), 1, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f67, ABISELECT(2248,1736), 2, 1, 1, "S28C3");
    set_bf_and_test(lv, s28c3f68, ABISELECT(2248,1736), 3, 1, 1, "S28C3");
    check_field_offset(lv, s28c3f69, ABISELECT(2252,1740), "S28C3.s28c3f69");
    check_field_offset(lv, s28c3f70, ABISELECT(2260,1748), "S28C3.s28c3f70");
    check_field_offset(lv, s28c3f71, ABISELECT(2272,1760), "S28C3.s28c3f71");
    check_field_offset(lv, s28c3f72, ABISELECT(2280,1764), "S28C3.s28c3f72");
    check_field_offset(lv, s28c3f73, ABISELECT(2288,1768), "S28C3.s28c3f73");
    check_field_offset(lv, s28c3f74, ABISELECT(2312,1788), "S28C3.s28c3f74");
    check_field_offset(lv, s28c3f75, ABISELECT(2328,1800), "S28C3.s28c3f75");
    check_field_offset(lv, s28c3f76, ABISELECT(2336,1804), "S28C3.s28c3f76");
    check_field_offset(lv, s28c3f77, ABISELECT(2368,1820), "S28C3.s28c3f77");
    check_field_offset(lv, s28c3f78, ABISELECT(2384,1832), "S28C3.s28c3f78");
    check_field_offset(lv, s28c3f79, ABISELECT(2400,1844), "S28C3.s28c3f79");
    check_field_offset(lv, s28c3f80, ABISELECT(2416,1852), "S28C3.s28c3f80");
    check_field_offset(lv, s28c3f81, ABISELECT(2432,1864), "S28C3.s28c3f81");
    check_field_offset(lv, s28c3f82, ABISELECT(2456,1884), "S28C3.s28c3f82");
    check_field_offset(lv, s28c3f83, ABISELECT(2464,1888), "S28C3.s28c3f83");
    check_field_offset(lv, s28c3f84, ABISELECT(2480,1900), "S28C3.s28c3f84");
    test_class_info(&lv, &cd_S28C3);
    dp->~S28C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C3(Test_S28C3, "S28C3", ABISELECT(2488,1904));

#else // __cplusplus

extern void _ZN5S28C3C1Ev();
extern void _ZN5S28C3D1Ev();
Name_Map name_map_S28C3[] = {
  NSPAIR(_ZN5S28C3C1Ev),
  NSPAIR(_ZN5S28C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C8_nt;
extern VTBL_ENTRY _ZTI8S28C8_nt[];
extern  VTBL_ENTRY _ZTV8S28C8_nt[];
extern Class_Descriptor cd_S28C7_nt;
extern VTBL_ENTRY _ZTI8S28C7_nt[];
extern  VTBL_ENTRY _ZTV8S28C7_nt[];
extern Class_Descriptor cd_S28C6;
extern VTBL_ENTRY _ZTI5S28C6[];
extern  VTBL_ENTRY _ZTV5S28C6[];
extern Class_Descriptor cd_S28C5;
extern VTBL_ENTRY _ZTI5S28C5[];
extern  VTBL_ENTRY _ZTV5S28C5[];
extern Class_Descriptor cd_S28C4;
extern VTBL_ENTRY _ZTI5S28C4[];
extern  VTBL_ENTRY _ZTV5S28C4[];
static Base_Class bases_S28C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S28C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S28C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S28C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S28C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI5S28C3[];
extern void _ZN5S28C3D1Ev();
extern void _ZN5S28C3D0Ev();
extern void _ZN8S28C8_nt2v4Ev();
extern void _ZN8S28C8_nt2v5Ev();
extern void _ZN8S28C8_nt2v6Ev();
extern void _ZN8S28C8_nt2v7Ev();
extern void _ZN8S28C8_nt2v8Ev();
extern void _ZN8S28C8_nt2v9Ev();
extern void _ZN8S28C8_nt3v10Ev();
extern void _ZN8S28C8_nt3v11Ev();
extern void _ZN8S28C8_nt3v12Ev();
extern void _ZN8S28C8_nt3v13Ev();
extern void _ZN8S28C8_nt3v14Ev();
extern void _ZN8S28C8_nt3v15Ev();
extern void _ZN8S28C8_nt3v16Ev();
extern void _ZN8S28C8_nt3v17Ev();
extern void _ZN8S28C8_nt3v18Ev();
extern void _ZN8S28C8_nt3v19Ev();
extern void _ZN8S28C8_nt3v20Ev();
extern void _ZN8S28C8_nt3v21Ev();
extern void _ZN8S28C8_nt3v22Ev();
extern void _ZN8S28C8_nt3v23Ev();
extern void _ZN8S28C8_nt3v24Ev();
extern void _ZN8S28C8_nt3v25Ev();
extern void _ZN8S28C8_nt3v26Ev();
extern void _ZN8S28C8_nt3v27Ev();
extern void _ZN8S28C8_nt3v28Ev();
extern void _ZN8S28C8_nt3v29Ev();
extern void _ZN8S28C8_nt3v30Ev();
extern void _ZN8S28C8_nt3v31Ev();
extern void _ZN8S28C8_nt3v32Ev();
extern void _ZN8S28C8_nt3v33Ev();
extern void _ZN8S28C8_nt3v34Ev();
extern void _ZN8S28C8_nt3v35Ev();
extern void _ZN8S28C8_nt3v36Ev();
extern void _ZN8S28C8_nt3v37Ev();
extern void _ZN8S28C8_nt3v38Ev();
extern void _ZN8S28C8_nt3v39Ev();
extern void _ZN8S28C8_nt3v40Ev();
extern void _ZN8S28C8_nt3v41Ev();
extern void _ZN8S28C8_nt3v42Ev();
extern void _ZN8S28C8_nt3v43Ev();
extern void _ZN8S28C8_nt3v44Ev();
extern void _ZN8S28C8_nt3v45Ev();
extern void _ZN8S28C8_nt3v46Ev();
extern void _ZN8S28C8_nt3v47Ev();
extern void _ZN8S28C8_nt3v48Ev();
extern void _ZN8S28C8_nt3v49Ev();
extern void _ZN8S28C8_nt3v50Ev();
extern void _ZN8S28C8_nt3v51Ev();
extern void _ZN8S28C8_nt3v52Ev();
extern void _ZN8S28C8_nt3v53Ev();
extern void _ZN8S28C8_nt3v54Ev();
extern void _ZN8S28C8_nt3v55Ev();
extern void _ZN8S28C8_nt3v56Ev();
extern void _ZN8S28C8_nt3v57Ev();
extern void _ZN8S28C8_nt3v58Ev();
extern void _ZN8S28C8_nt3v59Ev();
extern void _ZN8S28C8_nt3v60Ev();
extern void _ZN8S28C8_nt3v61Ev();
extern void _ZN8S28C8_nt3v62Ev();
extern void _ZN8S28C8_nt3v63Ev();
extern void _ZN8S28C8_nt3v64Ev();
extern void _ZN8S28C8_nt3v65Ev();
extern void _ZN8S28C8_nt3v66Ev();
extern void _ZN8S28C8_nt3v67Ev();
extern void _ZN8S28C7_nt3v68Ev();
extern void _ZN8S28C7_nt3v69Ev();
extern void _ZN8S28C7_nt3v70Ev();
extern void _ZN8S28C7_nt3v71Ev();
extern void _ZN8S28C7_nt3v72Ev();
extern void _ZN8S28C7_nt3v73Ev();
extern void _ZN8S28C7_nt3v74Ev();
extern void _ZN8S28C7_nt3v75Ev();
extern void _ZN8S28C7_nt3v76Ev();
extern void _ZN8S28C7_nt3v77Ev();
extern void _ZN8S28C7_nt3v78Ev();
extern void _ZN8S28C7_nt3v79Ev();
extern void _ZN8S28C7_nt3v80Ev();
extern void _ZN8S28C7_nt3v81Ev();
extern void _ZN8S28C7_nt3v82Ev();
extern void _ZN8S28C7_nt3v83Ev();
extern void _ZN8S28C7_nt3v84Ev();
extern void _ZN8S28C7_nt3v85Ev();
extern void _ZN8S28C7_nt3v86Ev();
extern void _ZN8S28C7_nt3v87Ev();
extern void _ZN8S28C7_nt3v88Ev();
extern void _ZN8S28C7_nt3v89Ev();
extern void _ZN8S28C7_nt3v90Ev();
extern void _ZN8S28C7_nt3v91Ev();
extern void _ZN8S28C7_nt3v92Ev();
extern void _ZN8S28C7_nt3v93Ev();
extern void _ZN8S28C7_nt3v94Ev();
extern void _ZN8S28C7_nt3v95Ev();
extern void _ZN8S28C7_nt3v96Ev();
extern void _ZN8S28C7_nt3v97Ev();
extern void _ZN8S28C7_nt3v98Ev();
extern void _ZN8S28C7_nt3v99Ev();
extern void _ZN8S28C7_nt4v100Ev();
extern void _ZN8S28C7_nt4v101Ev();
extern void _ZN8S28C7_nt4v102Ev();
extern void _ZN8S28C7_nt4v103Ev();
extern void _ZN8S28C7_nt4v104Ev();
extern void _ZN8S28C7_nt4v105Ev();
extern void _ZN8S28C7_nt4v106Ev();
extern void _ZN8S28C7_nt4v107Ev();
extern void _ZN8S28C7_nt4v108Ev();
extern void _ZN8S28C7_nt4v109Ev();
extern void _ZN8S28C7_nt4v110Ev();
extern void _ZN8S28C7_nt4v111Ev();
extern void _ZN8S28C7_nt4v112Ev();
extern void _ZN8S28C7_nt4v113Ev();
extern void _ZN8S28C7_nt4v114Ev();
extern void _ZN8S28C7_nt4v115Ev();
extern void _ZN8S28C7_nt4v116Ev();
extern void _ZN8S28C7_nt4v117Ev();
extern void _ZN8S28C7_nt4v118Ev();
extern void _ZN8S28C7_nt4v119Ev();
extern void _ZN8S28C7_nt4v120Ev();
extern void _ZN8S28C7_nt4v121Ev();
extern void _ZN8S28C7_nt4v122Ev();
extern void _ZN8S28C7_nt4v123Ev();
extern void _ZN8S28C7_nt4v124Ev();
extern void _ZN8S28C7_nt4v125Ev();
extern void _ZN8S28C7_nt4v126Ev();
extern void _ZN8S28C7_nt4v127Ev();
extern void _ZN8S28C7_nt4v128Ev();
extern void _ZN8S28C7_nt4v129Ev();
extern void _ZN8S28C7_nt4v130Ev();
extern void _ZN8S28C7_nt4v131Ev();
extern void _ZN8S28C7_nt4v132Ev();
extern void _ZN8S28C7_nt4v133Ev();
extern void _ZN8S28C7_nt4v134Ev();
extern void _ZN8S28C7_nt4v135Ev();
extern void _ZN8S28C7_nt4v136Ev();
extern void _ZN8S28C7_nt4v137Ev();
extern void _ZN8S28C7_nt4v138Ev();
extern void _ZN8S28C7_nt4v139Ev();
extern void _ZN8S28C7_nt4v140Ev();
extern void _ZN8S28C7_nt4v141Ev();
extern void _ZN8S28C7_nt4v142Ev();
extern void _ZN8S28C7_nt4v143Ev();
extern void _ZN8S28C7_nt4v144Ev();
extern void _ZN8S28C7_nt4v145Ev();
extern void _ZN8S28C7_nt4v146Ev();
extern void _ZN8S28C7_nt4v147Ev();
extern void _ZN8S28C7_nt4v148Ev();
extern void _ZN8S28C7_nt4v149Ev();
extern void _ZN8S28C7_nt4v150Ev();
extern void _ZN8S28C7_nt4v151Ev();
extern void _ZN8S28C7_nt4v152Ev();
extern void _ZN8S28C7_nt4v153Ev();
extern void _ZN8S28C7_nt4v154Ev();
extern void _ZN8S28C7_nt4v155Ev();
extern void _ZN8S28C7_nt4v156Ev();
extern void _ZN8S28C7_nt4v157Ev();
extern void _ZN8S28C7_nt4v158Ev();
extern void _ZN8S28C7_nt4v159Ev();
extern void _ZN8S28C7_nt4v160Ev();
extern void _ZN8S28C7_nt4v161Ev();
extern void _ZN8S28C7_nt4v162Ev();
extern void _ZN8S28C7_nt4v163Ev();
extern void _ZN8S28C7_nt4v164Ev();
extern void _ZN8S28C7_nt4v165Ev();
extern void _ZN8S28C7_nt4v166Ev();
extern void _ZN8S28C7_nt4v167Ev();
extern void _ZN8S28C7_nt4v168Ev();
extern void _ZN8S28C7_nt4v169Ev();
extern void _ZN8S28C7_nt4v170Ev();
extern void _ZN8S28C7_nt4v171Ev();
extern void _ZN8S28C7_nt4v172Ev();
extern void _ZN8S28C7_nt4v173Ev();
extern void _ZN8S28C7_nt4v174Ev();
extern void _ZN8S28C7_nt4v175Ev();
extern void _ZN8S28C7_nt4v176Ev();
extern void _ZN8S28C7_nt4v177Ev();
extern void _ZN8S28C7_nt4v178Ev();
extern void _ZN8S28C7_nt4v179Ev();
extern void _ZN8S28C7_nt4v180Ev();
extern void _ZN8S28C7_nt4v181Ev();
extern void _ZN8S28C7_nt4v182Ev();
extern void _ZN8S28C7_nt4v183Ev();
extern void _ZN8S28C7_nt4v184Ev();
extern void _ZN8S28C7_nt4v185Ev();
extern void _ZN8S28C7_nt4v186Ev();
extern void _ZN8S28C7_nt4v187Ev();
extern void _ZN8S28C7_nt4v188Ev();
extern void _ZN8S28C7_nt4v189Ev();
extern void _ZN8S28C7_nt4v190Ev();
extern void _ZN8S28C7_nt4v191Ev();
extern void _ZN8S28C7_nt4v192Ev();
extern void _ZN8S28C7_nt4v193Ev();
extern void _ZN8S28C7_nt4v194Ev();
extern void _ZN8S28C7_nt4v195Ev();
extern void _ZN8S28C7_nt4v196Ev();
extern void _ZN8S28C7_nt4v197Ev();
extern void _ZN8S28C7_nt4v198Ev();
extern void _ZN8S28C7_nt4v199Ev();
extern void _ZN8S28C7_nt4v200Ev();
extern void _ZN8S28C7_nt4v201Ev();
extern void _ZN8S28C7_nt4v202Ev();
extern void _ZN8S28C7_nt4v203Ev();
extern void _ZN8S28C7_nt4v204Ev();
extern void _ZN8S28C7_nt4v205Ev();
extern void _ZN8S28C7_nt4v206Ev();
extern void _ZN8S28C7_nt4v207Ev();
extern void _ZN8S28C7_nt4v208Ev();
extern void _ZN8S28C7_nt4v209Ev();
extern void _ZN8S28C7_nt4v210Ev();
extern void _ZN5S28C64v211Ev();
extern void _ZN5S28C64v212Ev();
extern void _ZN5S28C64v213Ev();
extern void _ZN5S28C64v214Ev();
extern void _ZN5S28C64v215Ev();
extern void _ZN5S28C64v216Ev();
extern void _ZN5S28C64v217Ev();
extern void _ZN5S28C64v218Ev();
extern void _ZN5S28C64v219Ev();
extern void _ZN5S28C64v220Ev();
extern void _ZN5S28C64v221Ev();
extern void _ZN5S28C64v222Ev();
extern void _ZN5S28C64v223Ev();
extern void _ZN5S28C64v224Ev();
extern void _ZN5S28C64v225Ev();
extern void _ZN5S28C64v226Ev();
extern void _ZN5S28C64v227Ev();
extern void _ZN5S28C64v228Ev();
extern void _ZN5S28C64v229Ev();
extern void _ZN5S28C64v230Ev();
extern void _ZN5S28C64v231Ev();
extern void _ZN5S28C64v232Ev();
extern void _ZN5S28C64v233Ev();
extern void _ZN5S28C64v234Ev();
extern void _ZN5S28C64v235Ev();
extern void _ZN5S28C64v236Ev();
extern void _ZN5S28C64v237Ev();
extern void _ZN5S28C64v238Ev();
extern void _ZN5S28C64v239Ev();
extern void _ZN5S28C64v240Ev();
extern void _ZN5S28C64v241Ev();
extern void _ZN5S28C64v242Ev();
extern void _ZN5S28C64v243Ev();
extern void _ZN5S28C64v244Ev();
extern void _ZN5S28C64v245Ev();
extern void _ZN5S28C64v246Ev();
extern void _ZN5S28C64v247Ev();
extern void _ZN5S28C64v248Ev();
extern void _ZN5S28C64v249Ev();
extern void _ZN5S28C64v250Ev();
extern void _ZN5S28C64v251Ev();
extern void _ZN5S28C64v252Ev();
extern void _ZN5S28C64v253Ev();
extern void _ZN5S28C64v254Ev();
extern void _ZN5S28C64v255Ev();
extern void _ZN5S28C64v256Ev();
extern void _ZN5S28C64v257Ev();
extern void _ZN5S28C64v258Ev();
extern void _ZN5S28C64v259Ev();
extern void _ZN5S28C64v260Ev();
extern void _ZN5S28C54v261Ev();
extern void _ZN5S28C54v262Ev();
extern void _ZN5S28C54v263Ev();
extern void _ZN5S28C54v264Ev();
extern void _ZN5S28C54v265Ev();
extern void _ZN5S28C54v266Ev();
extern void _ZN5S28C54v267Ev();
extern void _ZN5S28C54v268Ev();
extern void _ZN5S28C54v269Ev();
extern void _ZN5S28C54v270Ev();
extern void _ZN5S28C54v271Ev();
extern void _ZN5S28C54v272Ev();
extern void _ZN5S28C54v273Ev();
extern void _ZN5S28C54v274Ev();
extern void _ZN5S28C54v275Ev();
extern void _ZN5S28C54v276Ev();
extern void _ZN5S28C54v277Ev();
extern void _ZN5S28C54v278Ev();
extern void _ZN5S28C54v279Ev();
extern void _ZN5S28C54v280Ev();
extern void _ZN5S28C54v281Ev();
extern void _ZN5S28C54v282Ev();
extern void _ZN5S28C54v283Ev();
extern void _ZN5S28C54v284Ev();
extern void _ZN5S28C54v285Ev();
extern void _ZN5S28C54v286Ev();
extern void _ZN5S28C54v287Ev();
extern void _ZN5S28C54v288Ev();
extern void _ZN5S28C54v289Ev();
extern void _ZN5S28C54v290Ev();
extern void _ZN5S28C54v291Ev();
extern void _ZN5S28C54v292Ev();
extern void _ZN5S28C54v293Ev();
extern void _ZN5S28C54v294Ev();
extern void _ZN5S28C54v295Ev();
extern void _ZN5S28C54v296Ev();
extern void _ZN5S28C54v297Ev();
extern void _ZN5S28C54v298Ev();
extern void _ZN5S28C44v299Ev();
extern void _ZN5S28C44v300Ev();
extern void _ZN5S28C44v301Ev();
extern void _ZN5S28C34v302Ev();
extern void _ZN5S28C34v303Ev();
extern void _ZN5S28C34v304Ev();
extern void _ZN5S28C34v305Ev();
extern void _ZN5S28C34v306Ev();
extern void _ZN5S28C34v307Ev();
extern void _ZN5S28C34v308Ev();
extern void _ZN5S28C34v309Ev();
extern void _ZN5S28C34v310Ev();
extern void _ZN5S28C34v311Ev();
extern void _ZN5S28C34v312Ev();
extern void _ZN5S28C34v313Ev();
extern void _ZN5S28C34v314Ev();
extern void _ZN5S28C34v315Ev();
extern void _ZN5S28C34v316Ev();
extern void _ZN5S28C34v317Ev();
extern void _ZN5S28C34v318Ev();
extern void _ZN5S28C34v319Ev();
extern void _ZN5S28C34v320Ev();
static  VTBL_ENTRY vtc_S28C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S28C3[0]),
  (VTBL_ENTRY)&_ZN5S28C3D1Ev,
  (VTBL_ENTRY)&_ZN5S28C3D0Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v6Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v7Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v210Ev,
  (VTBL_ENTRY)&_ZN5S28C64v211Ev,
  (VTBL_ENTRY)&_ZN5S28C64v212Ev,
  (VTBL_ENTRY)&_ZN5S28C64v213Ev,
  (VTBL_ENTRY)&_ZN5S28C64v214Ev,
  (VTBL_ENTRY)&_ZN5S28C64v215Ev,
  (VTBL_ENTRY)&_ZN5S28C64v216Ev,
  (VTBL_ENTRY)&_ZN5S28C64v217Ev,
  (VTBL_ENTRY)&_ZN5S28C64v218Ev,
  (VTBL_ENTRY)&_ZN5S28C64v219Ev,
  (VTBL_ENTRY)&_ZN5S28C64v220Ev,
  (VTBL_ENTRY)&_ZN5S28C64v221Ev,
  (VTBL_ENTRY)&_ZN5S28C64v222Ev,
  (VTBL_ENTRY)&_ZN5S28C64v223Ev,
  (VTBL_ENTRY)&_ZN5S28C64v224Ev,
  (VTBL_ENTRY)&_ZN5S28C64v225Ev,
  (VTBL_ENTRY)&_ZN5S28C64v226Ev,
  (VTBL_ENTRY)&_ZN5S28C64v227Ev,
  (VTBL_ENTRY)&_ZN5S28C64v228Ev,
  (VTBL_ENTRY)&_ZN5S28C64v229Ev,
  (VTBL_ENTRY)&_ZN5S28C64v230Ev,
  (VTBL_ENTRY)&_ZN5S28C64v231Ev,
  (VTBL_ENTRY)&_ZN5S28C64v232Ev,
  (VTBL_ENTRY)&_ZN5S28C64v233Ev,
  (VTBL_ENTRY)&_ZN5S28C64v234Ev,
  (VTBL_ENTRY)&_ZN5S28C64v235Ev,
  (VTBL_ENTRY)&_ZN5S28C64v236Ev,
  (VTBL_ENTRY)&_ZN5S28C64v237Ev,
  (VTBL_ENTRY)&_ZN5S28C64v238Ev,
  (VTBL_ENTRY)&_ZN5S28C64v239Ev,
  (VTBL_ENTRY)&_ZN5S28C64v240Ev,
  (VTBL_ENTRY)&_ZN5S28C64v241Ev,
  (VTBL_ENTRY)&_ZN5S28C64v242Ev,
  (VTBL_ENTRY)&_ZN5S28C64v243Ev,
  (VTBL_ENTRY)&_ZN5S28C64v244Ev,
  (VTBL_ENTRY)&_ZN5S28C64v245Ev,
  (VTBL_ENTRY)&_ZN5S28C64v246Ev,
  (VTBL_ENTRY)&_ZN5S28C64v247Ev,
  (VTBL_ENTRY)&_ZN5S28C64v248Ev,
  (VTBL_ENTRY)&_ZN5S28C64v249Ev,
  (VTBL_ENTRY)&_ZN5S28C64v250Ev,
  (VTBL_ENTRY)&_ZN5S28C64v251Ev,
  (VTBL_ENTRY)&_ZN5S28C64v252Ev,
  (VTBL_ENTRY)&_ZN5S28C64v253Ev,
  (VTBL_ENTRY)&_ZN5S28C64v254Ev,
  (VTBL_ENTRY)&_ZN5S28C64v255Ev,
  (VTBL_ENTRY)&_ZN5S28C64v256Ev,
  (VTBL_ENTRY)&_ZN5S28C64v257Ev,
  (VTBL_ENTRY)&_ZN5S28C64v258Ev,
  (VTBL_ENTRY)&_ZN5S28C64v259Ev,
  (VTBL_ENTRY)&_ZN5S28C64v260Ev,
  (VTBL_ENTRY)&_ZN5S28C54v261Ev,
  (VTBL_ENTRY)&_ZN5S28C54v262Ev,
  (VTBL_ENTRY)&_ZN5S28C54v263Ev,
  (VTBL_ENTRY)&_ZN5S28C54v264Ev,
  (VTBL_ENTRY)&_ZN5S28C54v265Ev,
  (VTBL_ENTRY)&_ZN5S28C54v266Ev,
  (VTBL_ENTRY)&_ZN5S28C54v267Ev,
  (VTBL_ENTRY)&_ZN5S28C54v268Ev,
  (VTBL_ENTRY)&_ZN5S28C54v269Ev,
  (VTBL_ENTRY)&_ZN5S28C54v270Ev,
  (VTBL_ENTRY)&_ZN5S28C54v271Ev,
  (VTBL_ENTRY)&_ZN5S28C54v272Ev,
  (VTBL_ENTRY)&_ZN5S28C54v273Ev,
  (VTBL_ENTRY)&_ZN5S28C54v274Ev,
  (VTBL_ENTRY)&_ZN5S28C54v275Ev,
  (VTBL_ENTRY)&_ZN5S28C54v276Ev,
  (VTBL_ENTRY)&_ZN5S28C54v277Ev,
  (VTBL_ENTRY)&_ZN5S28C54v278Ev,
  (VTBL_ENTRY)&_ZN5S28C54v279Ev,
  (VTBL_ENTRY)&_ZN5S28C54v280Ev,
  (VTBL_ENTRY)&_ZN5S28C54v281Ev,
  (VTBL_ENTRY)&_ZN5S28C54v282Ev,
  (VTBL_ENTRY)&_ZN5S28C54v283Ev,
  (VTBL_ENTRY)&_ZN5S28C54v284Ev,
  (VTBL_ENTRY)&_ZN5S28C54v285Ev,
  (VTBL_ENTRY)&_ZN5S28C54v286Ev,
  (VTBL_ENTRY)&_ZN5S28C54v287Ev,
  (VTBL_ENTRY)&_ZN5S28C54v288Ev,
  (VTBL_ENTRY)&_ZN5S28C54v289Ev,
  (VTBL_ENTRY)&_ZN5S28C54v290Ev,
  (VTBL_ENTRY)&_ZN5S28C54v291Ev,
  (VTBL_ENTRY)&_ZN5S28C54v292Ev,
  (VTBL_ENTRY)&_ZN5S28C54v293Ev,
  (VTBL_ENTRY)&_ZN5S28C54v294Ev,
  (VTBL_ENTRY)&_ZN5S28C54v295Ev,
  (VTBL_ENTRY)&_ZN5S28C54v296Ev,
  (VTBL_ENTRY)&_ZN5S28C54v297Ev,
  (VTBL_ENTRY)&_ZN5S28C54v298Ev,
  (VTBL_ENTRY)&_ZN5S28C44v299Ev,
  (VTBL_ENTRY)&_ZN5S28C44v300Ev,
  (VTBL_ENTRY)&_ZN5S28C44v301Ev,
  (VTBL_ENTRY)&_ZN5S28C34v302Ev,
  (VTBL_ENTRY)&_ZN5S28C34v303Ev,
  (VTBL_ENTRY)&_ZN5S28C34v304Ev,
  (VTBL_ENTRY)&_ZN5S28C34v305Ev,
  (VTBL_ENTRY)&_ZN5S28C34v306Ev,
  (VTBL_ENTRY)&_ZN5S28C34v307Ev,
  (VTBL_ENTRY)&_ZN5S28C34v308Ev,
  (VTBL_ENTRY)&_ZN5S28C34v309Ev,
  (VTBL_ENTRY)&_ZN5S28C34v310Ev,
  (VTBL_ENTRY)&_ZN5S28C34v311Ev,
  (VTBL_ENTRY)&_ZN5S28C34v312Ev,
  (VTBL_ENTRY)&_ZN5S28C34v313Ev,
  (VTBL_ENTRY)&_ZN5S28C34v314Ev,
  (VTBL_ENTRY)&_ZN5S28C34v315Ev,
  (VTBL_ENTRY)&_ZN5S28C34v316Ev,
  (VTBL_ENTRY)&_ZN5S28C34v317Ev,
  (VTBL_ENTRY)&_ZN5S28C34v318Ev,
  (VTBL_ENTRY)&_ZN5S28C34v319Ev,
  (VTBL_ENTRY)&_ZN5S28C34v320Ev,
};
extern VTBL_ENTRY _ZTI5S28C3[];
extern  VTBL_ENTRY _ZTV5S28C3[];
Class_Descriptor cd_S28C3 = {  "S28C3", // class name
  bases_S28C3, 5,
  &(vtc_S28C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(2488,1904), // object size
  NSPAIRA(_ZTI5S28C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S28C3),321, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S28C2  : S28C3 {
  void *s28c2f0;
  ::S28C55 s28c2f1;
  void *s28c2f2;
  virtual  ~S28C2(); // _ZN5S28C2D1Ev
  virtual void  v321(); // _ZN5S28C24v321Ev
  virtual void  v322(); // _ZN5S28C24v322Ev
  S28C2(); // tgen
};
//SIG(-1 S28C2) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ BC7{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC8{ m Fi[2]} Fp[2]} vd v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 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 FC9{ BC10{ BC11{ m Fp Fi[2]}}} FC9 FC12{ m Fi} Fi Fc[4] Fp[2] FC9 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC8 FC8 FC8 FC13{ BC14{ BC11}} FC13 Fi Fp[2] FC15{ m Fi[3]} FC15 FC15 FC15 Fp FC8 FC13 FC15 FC15 Fi FC15 FC15 Fp Fi Fc FC15 FC15 Fp Fi Fp FC13 FC16{ BC17{ BC11}} FC16} vd v210 v211 v212 v213 v214 v215 v216 v217 v218 v219 v220 v221 v222 v223 v224 v225 v226 v227 v228 v229 v230 v231 v232 v233 v234 v235 v236 v237 v238 v239 v240 v241 v242 v243 v244 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 v258 v259 Fp[2] Fi Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fc Fi[2] Fp FC15 FC15 Fp[5] FC15 Fp FC18{ BC19{ BC11}} Fp[2] FC15 Fp Fi[2] Fp Fi FC15 FC15 FC15 Fp[2] Fi FC15 Fi[4] Fp[2] FC18 Fi FC15} vd v260 v261 v262 v263 v264 v265 v266 v267 v268 v269 v270 v271 v272 v273 v274 v275 v276 v277 v278 v279 v280 v281 v282 v283 v284 v285 v286 v287 v288 v289 v290 v291 v292 v293 v294 v295 v296 v297 Fp[8] Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2] Fp Fc[6] Fp[2] Fi[4] FC15 Fi FC15 Fp[5] FC15 Fi[12] FC20{ Fi Fc FC15 FC15 Fp FC15 Fc} FC21{ BC22{ BC23{ BC11}}}[2] Fi FC21 FC21 FC21 FC21 Fi FC15 Fp[4] FC15 Fp FC21 Fp FC24{ BC25{ BC11}} FC24 FC24 FC24 Fp FC26{ BC27{ m Fp[2]}} Fp Fi FC28{ BC29{ BC11}} Fi FC21[4] FC28 Fp FC30{ BC31{ BC11}} Fi[3] FC30 FC30 FC13 FC32{ BC33{ BC11}} Fi FC34{ m Fp FC8}} vd v298 v299 v300} vd v301 v302 v303 v304 v305 v306 v307 v308 v309 v310 v311 v312 v313 v314 v315 v316 v317 v318 v319 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fc[6] FC15 Fp[2] Fi[2] FC21 Fp[3] FC35{ m Fi:1 Fi:1 Fi:1 Fi:1 Fi[6] FC36{ m} Fc Fi[2] FC15 Fi[3] Fi:1 Fi[4] FC15 FC15 FC15 Fi} Fp FC15 FC15 FC35 Fi Fp[3] FC15 FC15 FC15 FC15 Fi FC15 Fi[2] Fi:1 Fi:1 Fi:1 Fi:1 Fi[2] FC15 Fi Fp Fi[5] FC21 Fi Fp[4] FC21 FC32 Fp[2] FC13 Fi[5] Fp FC37{ BC38{ BC11}} Fi} vd v1 v2 Fp FC37 Fp}


 S28C2 ::~S28C2(){ note_dtor("S28C2", this);}
void  S28C2 ::v321(){vfunc_called(this, "_ZN5S28C24v321Ev");}
void  S28C2 ::v322(){vfunc_called(this, "_ZN5S28C24v322Ev");}
S28C2 ::S28C2(){ note_ctor("S28C2", this);} // tgen

static void Test_S28C2()
{
  extern Class_Descriptor cd_S28C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(316,482)];
    init_test(&cd_S28C2, buf);
    S28C2 *dp, &lv = *(dp=new (buf) S28C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2520,1924), "sizeof(S28C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C2)");
    check_base_class_offset(lv, (S28C8_nt*)(S28C7_nt*)(S28C6*)(S28C5*)(S28C4*)(S28C3*), 0, "S28C2");
    check_base_class_offset(lv, (S28C7_nt*)(S28C6*)(S28C5*)(S28C4*)(S28C3*), 0, "S28C2");
    check_base_class_offset(lv, (S28C6*)(S28C5*)(S28C4*)(S28C3*), 0, "S28C2");
    check_base_class_offset(lv, (S28C5*)(S28C4*)(S28C3*), 0, "S28C2");
    check_base_class_offset(lv, (S28C4*)(S28C3*), 0, "S28C2");
    check_base_class_offset(lv, (S28C3*), 0, "S28C2");
    check_field_offset(lv, s28c2f0, ABISELECT(2488,1904), "S28C2.s28c2f0");
    check_field_offset(lv, s28c2f1, ABISELECT(2496,1908), "S28C2.s28c2f1");
    check_field_offset(lv, s28c2f2, ABISELECT(2512,1920), "S28C2.s28c2f2");
    test_class_info(&lv, &cd_S28C2);
    dp->~S28C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C2(Test_S28C2, "S28C2", ABISELECT(2520,1924));

#else // __cplusplus

extern void _ZN5S28C2C1Ev();
extern void _ZN5S28C2D1Ev();
Name_Map name_map_S28C2[] = {
  NSPAIR(_ZN5S28C2C1Ev),
  NSPAIR(_ZN5S28C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C8_nt;
extern VTBL_ENTRY _ZTI8S28C8_nt[];
extern  VTBL_ENTRY _ZTV8S28C8_nt[];
extern Class_Descriptor cd_S28C7_nt;
extern VTBL_ENTRY _ZTI8S28C7_nt[];
extern  VTBL_ENTRY _ZTV8S28C7_nt[];
extern Class_Descriptor cd_S28C6;
extern VTBL_ENTRY _ZTI5S28C6[];
extern  VTBL_ENTRY _ZTV5S28C6[];
extern Class_Descriptor cd_S28C5;
extern VTBL_ENTRY _ZTI5S28C5[];
extern  VTBL_ENTRY _ZTV5S28C5[];
extern Class_Descriptor cd_S28C4;
extern VTBL_ENTRY _ZTI5S28C4[];
extern  VTBL_ENTRY _ZTV5S28C4[];
extern Class_Descriptor cd_S28C3;
extern VTBL_ENTRY _ZTI5S28C3[];
extern  VTBL_ENTRY _ZTV5S28C3[];
static Base_Class bases_S28C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S28C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S28C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S28C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S28C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S28C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI5S28C2[];
extern void _ZN5S28C2D1Ev();
extern void _ZN5S28C2D0Ev();
extern void _ZN8S28C8_nt2v4Ev();
extern void _ZN8S28C8_nt2v5Ev();
extern void _ZN8S28C8_nt2v6Ev();
extern void _ZN8S28C8_nt2v7Ev();
extern void _ZN8S28C8_nt2v8Ev();
extern void _ZN8S28C8_nt2v9Ev();
extern void _ZN8S28C8_nt3v10Ev();
extern void _ZN8S28C8_nt3v11Ev();
extern void _ZN8S28C8_nt3v12Ev();
extern void _ZN8S28C8_nt3v13Ev();
extern void _ZN8S28C8_nt3v14Ev();
extern void _ZN8S28C8_nt3v15Ev();
extern void _ZN8S28C8_nt3v16Ev();
extern void _ZN8S28C8_nt3v17Ev();
extern void _ZN8S28C8_nt3v18Ev();
extern void _ZN8S28C8_nt3v19Ev();
extern void _ZN8S28C8_nt3v20Ev();
extern void _ZN8S28C8_nt3v21Ev();
extern void _ZN8S28C8_nt3v22Ev();
extern void _ZN8S28C8_nt3v23Ev();
extern void _ZN8S28C8_nt3v24Ev();
extern void _ZN8S28C8_nt3v25Ev();
extern void _ZN8S28C8_nt3v26Ev();
extern void _ZN8S28C8_nt3v27Ev();
extern void _ZN8S28C8_nt3v28Ev();
extern void _ZN8S28C8_nt3v29Ev();
extern void _ZN8S28C8_nt3v30Ev();
extern void _ZN8S28C8_nt3v31Ev();
extern void _ZN8S28C8_nt3v32Ev();
extern void _ZN8S28C8_nt3v33Ev();
extern void _ZN8S28C8_nt3v34Ev();
extern void _ZN8S28C8_nt3v35Ev();
extern void _ZN8S28C8_nt3v36Ev();
extern void _ZN8S28C8_nt3v37Ev();
extern void _ZN8S28C8_nt3v38Ev();
extern void _ZN8S28C8_nt3v39Ev();
extern void _ZN8S28C8_nt3v40Ev();
extern void _ZN8S28C8_nt3v41Ev();
extern void _ZN8S28C8_nt3v42Ev();
extern void _ZN8S28C8_nt3v43Ev();
extern void _ZN8S28C8_nt3v44Ev();
extern void _ZN8S28C8_nt3v45Ev();
extern void _ZN8S28C8_nt3v46Ev();
extern void _ZN8S28C8_nt3v47Ev();
extern void _ZN8S28C8_nt3v48Ev();
extern void _ZN8S28C8_nt3v49Ev();
extern void _ZN8S28C8_nt3v50Ev();
extern void _ZN8S28C8_nt3v51Ev();
extern void _ZN8S28C8_nt3v52Ev();
extern void _ZN8S28C8_nt3v53Ev();
extern void _ZN8S28C8_nt3v54Ev();
extern void _ZN8S28C8_nt3v55Ev();
extern void _ZN8S28C8_nt3v56Ev();
extern void _ZN8S28C8_nt3v57Ev();
extern void _ZN8S28C8_nt3v58Ev();
extern void _ZN8S28C8_nt3v59Ev();
extern void _ZN8S28C8_nt3v60Ev();
extern void _ZN8S28C8_nt3v61Ev();
extern void _ZN8S28C8_nt3v62Ev();
extern void _ZN8S28C8_nt3v63Ev();
extern void _ZN8S28C8_nt3v64Ev();
extern void _ZN8S28C8_nt3v65Ev();
extern void _ZN8S28C8_nt3v66Ev();
extern void _ZN8S28C8_nt3v67Ev();
extern void _ZN8S28C7_nt3v68Ev();
extern void _ZN8S28C7_nt3v69Ev();
extern void _ZN8S28C7_nt3v70Ev();
extern void _ZN8S28C7_nt3v71Ev();
extern void _ZN8S28C7_nt3v72Ev();
extern void _ZN8S28C7_nt3v73Ev();
extern void _ZN8S28C7_nt3v74Ev();
extern void _ZN8S28C7_nt3v75Ev();
extern void _ZN8S28C7_nt3v76Ev();
extern void _ZN8S28C7_nt3v77Ev();
extern void _ZN8S28C7_nt3v78Ev();
extern void _ZN8S28C7_nt3v79Ev();
extern void _ZN8S28C7_nt3v80Ev();
extern void _ZN8S28C7_nt3v81Ev();
extern void _ZN8S28C7_nt3v82Ev();
extern void _ZN8S28C7_nt3v83Ev();
extern void _ZN8S28C7_nt3v84Ev();
extern void _ZN8S28C7_nt3v85Ev();
extern void _ZN8S28C7_nt3v86Ev();
extern void _ZN8S28C7_nt3v87Ev();
extern void _ZN8S28C7_nt3v88Ev();
extern void _ZN8S28C7_nt3v89Ev();
extern void _ZN8S28C7_nt3v90Ev();
extern void _ZN8S28C7_nt3v91Ev();
extern void _ZN8S28C7_nt3v92Ev();
extern void _ZN8S28C7_nt3v93Ev();
extern void _ZN8S28C7_nt3v94Ev();
extern void _ZN8S28C7_nt3v95Ev();
extern void _ZN8S28C7_nt3v96Ev();
extern void _ZN8S28C7_nt3v97Ev();
extern void _ZN8S28C7_nt3v98Ev();
extern void _ZN8S28C7_nt3v99Ev();
extern void _ZN8S28C7_nt4v100Ev();
extern void _ZN8S28C7_nt4v101Ev();
extern void _ZN8S28C7_nt4v102Ev();
extern void _ZN8S28C7_nt4v103Ev();
extern void _ZN8S28C7_nt4v104Ev();
extern void _ZN8S28C7_nt4v105Ev();
extern void _ZN8S28C7_nt4v106Ev();
extern void _ZN8S28C7_nt4v107Ev();
extern void _ZN8S28C7_nt4v108Ev();
extern void _ZN8S28C7_nt4v109Ev();
extern void _ZN8S28C7_nt4v110Ev();
extern void _ZN8S28C7_nt4v111Ev();
extern void _ZN8S28C7_nt4v112Ev();
extern void _ZN8S28C7_nt4v113Ev();
extern void _ZN8S28C7_nt4v114Ev();
extern void _ZN8S28C7_nt4v115Ev();
extern void _ZN8S28C7_nt4v116Ev();
extern void _ZN8S28C7_nt4v117Ev();
extern void _ZN8S28C7_nt4v118Ev();
extern void _ZN8S28C7_nt4v119Ev();
extern void _ZN8S28C7_nt4v120Ev();
extern void _ZN8S28C7_nt4v121Ev();
extern void _ZN8S28C7_nt4v122Ev();
extern void _ZN8S28C7_nt4v123Ev();
extern void _ZN8S28C7_nt4v124Ev();
extern void _ZN8S28C7_nt4v125Ev();
extern void _ZN8S28C7_nt4v126Ev();
extern void _ZN8S28C7_nt4v127Ev();
extern void _ZN8S28C7_nt4v128Ev();
extern void _ZN8S28C7_nt4v129Ev();
extern void _ZN8S28C7_nt4v130Ev();
extern void _ZN8S28C7_nt4v131Ev();
extern void _ZN8S28C7_nt4v132Ev();
extern void _ZN8S28C7_nt4v133Ev();
extern void _ZN8S28C7_nt4v134Ev();
extern void _ZN8S28C7_nt4v135Ev();
extern void _ZN8S28C7_nt4v136Ev();
extern void _ZN8S28C7_nt4v137Ev();
extern void _ZN8S28C7_nt4v138Ev();
extern void _ZN8S28C7_nt4v139Ev();
extern void _ZN8S28C7_nt4v140Ev();
extern void _ZN8S28C7_nt4v141Ev();
extern void _ZN8S28C7_nt4v142Ev();
extern void _ZN8S28C7_nt4v143Ev();
extern void _ZN8S28C7_nt4v144Ev();
extern void _ZN8S28C7_nt4v145Ev();
extern void _ZN8S28C7_nt4v146Ev();
extern void _ZN8S28C7_nt4v147Ev();
extern void _ZN8S28C7_nt4v148Ev();
extern void _ZN8S28C7_nt4v149Ev();
extern void _ZN8S28C7_nt4v150Ev();
extern void _ZN8S28C7_nt4v151Ev();
extern void _ZN8S28C7_nt4v152Ev();
extern void _ZN8S28C7_nt4v153Ev();
extern void _ZN8S28C7_nt4v154Ev();
extern void _ZN8S28C7_nt4v155Ev();
extern void _ZN8S28C7_nt4v156Ev();
extern void _ZN8S28C7_nt4v157Ev();
extern void _ZN8S28C7_nt4v158Ev();
extern void _ZN8S28C7_nt4v159Ev();
extern void _ZN8S28C7_nt4v160Ev();
extern void _ZN8S28C7_nt4v161Ev();
extern void _ZN8S28C7_nt4v162Ev();
extern void _ZN8S28C7_nt4v163Ev();
extern void _ZN8S28C7_nt4v164Ev();
extern void _ZN8S28C7_nt4v165Ev();
extern void _ZN8S28C7_nt4v166Ev();
extern void _ZN8S28C7_nt4v167Ev();
extern void _ZN8S28C7_nt4v168Ev();
extern void _ZN8S28C7_nt4v169Ev();
extern void _ZN8S28C7_nt4v170Ev();
extern void _ZN8S28C7_nt4v171Ev();
extern void _ZN8S28C7_nt4v172Ev();
extern void _ZN8S28C7_nt4v173Ev();
extern void _ZN8S28C7_nt4v174Ev();
extern void _ZN8S28C7_nt4v175Ev();
extern void _ZN8S28C7_nt4v176Ev();
extern void _ZN8S28C7_nt4v177Ev();
extern void _ZN8S28C7_nt4v178Ev();
extern void _ZN8S28C7_nt4v179Ev();
extern void _ZN8S28C7_nt4v180Ev();
extern void _ZN8S28C7_nt4v181Ev();
extern void _ZN8S28C7_nt4v182Ev();
extern void _ZN8S28C7_nt4v183Ev();
extern void _ZN8S28C7_nt4v184Ev();
extern void _ZN8S28C7_nt4v185Ev();
extern void _ZN8S28C7_nt4v186Ev();
extern void _ZN8S28C7_nt4v187Ev();
extern void _ZN8S28C7_nt4v188Ev();
extern void _ZN8S28C7_nt4v189Ev();
extern void _ZN8S28C7_nt4v190Ev();
extern void _ZN8S28C7_nt4v191Ev();
extern void _ZN8S28C7_nt4v192Ev();
extern void _ZN8S28C7_nt4v193Ev();
extern void _ZN8S28C7_nt4v194Ev();
extern void _ZN8S28C7_nt4v195Ev();
extern void _ZN8S28C7_nt4v196Ev();
extern void _ZN8S28C7_nt4v197Ev();
extern void _ZN8S28C7_nt4v198Ev();
extern void _ZN8S28C7_nt4v199Ev();
extern void _ZN8S28C7_nt4v200Ev();
extern void _ZN8S28C7_nt4v201Ev();
extern void _ZN8S28C7_nt4v202Ev();
extern void _ZN8S28C7_nt4v203Ev();
extern void _ZN8S28C7_nt4v204Ev();
extern void _ZN8S28C7_nt4v205Ev();
extern void _ZN8S28C7_nt4v206Ev();
extern void _ZN8S28C7_nt4v207Ev();
extern void _ZN8S28C7_nt4v208Ev();
extern void _ZN8S28C7_nt4v209Ev();
extern void _ZN8S28C7_nt4v210Ev();
extern void _ZN5S28C64v211Ev();
extern void _ZN5S28C64v212Ev();
extern void _ZN5S28C64v213Ev();
extern void _ZN5S28C64v214Ev();
extern void _ZN5S28C64v215Ev();
extern void _ZN5S28C64v216Ev();
extern void _ZN5S28C64v217Ev();
extern void _ZN5S28C64v218Ev();
extern void _ZN5S28C64v219Ev();
extern void _ZN5S28C64v220Ev();
extern void _ZN5S28C64v221Ev();
extern void _ZN5S28C64v222Ev();
extern void _ZN5S28C64v223Ev();
extern void _ZN5S28C64v224Ev();
extern void _ZN5S28C64v225Ev();
extern void _ZN5S28C64v226Ev();
extern void _ZN5S28C64v227Ev();
extern void _ZN5S28C64v228Ev();
extern void _ZN5S28C64v229Ev();
extern void _ZN5S28C64v230Ev();
extern void _ZN5S28C64v231Ev();
extern void _ZN5S28C64v232Ev();
extern void _ZN5S28C64v233Ev();
extern void _ZN5S28C64v234Ev();
extern void _ZN5S28C64v235Ev();
extern void _ZN5S28C64v236Ev();
extern void _ZN5S28C64v237Ev();
extern void _ZN5S28C64v238Ev();
extern void _ZN5S28C64v239Ev();
extern void _ZN5S28C64v240Ev();
extern void _ZN5S28C64v241Ev();
extern void _ZN5S28C64v242Ev();
extern void _ZN5S28C64v243Ev();
extern void _ZN5S28C64v244Ev();
extern void _ZN5S28C64v245Ev();
extern void _ZN5S28C64v246Ev();
extern void _ZN5S28C64v247Ev();
extern void _ZN5S28C64v248Ev();
extern void _ZN5S28C64v249Ev();
extern void _ZN5S28C64v250Ev();
extern void _ZN5S28C64v251Ev();
extern void _ZN5S28C64v252Ev();
extern void _ZN5S28C64v253Ev();
extern void _ZN5S28C64v254Ev();
extern void _ZN5S28C64v255Ev();
extern void _ZN5S28C64v256Ev();
extern void _ZN5S28C64v257Ev();
extern void _ZN5S28C64v258Ev();
extern void _ZN5S28C64v259Ev();
extern void _ZN5S28C64v260Ev();
extern void _ZN5S28C54v261Ev();
extern void _ZN5S28C54v262Ev();
extern void _ZN5S28C54v263Ev();
extern void _ZN5S28C54v264Ev();
extern void _ZN5S28C54v265Ev();
extern void _ZN5S28C54v266Ev();
extern void _ZN5S28C54v267Ev();
extern void _ZN5S28C54v268Ev();
extern void _ZN5S28C54v269Ev();
extern void _ZN5S28C54v270Ev();
extern void _ZN5S28C54v271Ev();
extern void _ZN5S28C54v272Ev();
extern void _ZN5S28C54v273Ev();
extern void _ZN5S28C54v274Ev();
extern void _ZN5S28C54v275Ev();
extern void _ZN5S28C54v276Ev();
extern void _ZN5S28C54v277Ev();
extern void _ZN5S28C54v278Ev();
extern void _ZN5S28C54v279Ev();
extern void _ZN5S28C54v280Ev();
extern void _ZN5S28C54v281Ev();
extern void _ZN5S28C54v282Ev();
extern void _ZN5S28C54v283Ev();
extern void _ZN5S28C54v284Ev();
extern void _ZN5S28C54v285Ev();
extern void _ZN5S28C54v286Ev();
extern void _ZN5S28C54v287Ev();
extern void _ZN5S28C54v288Ev();
extern void _ZN5S28C54v289Ev();
extern void _ZN5S28C54v290Ev();
extern void _ZN5S28C54v291Ev();
extern void _ZN5S28C54v292Ev();
extern void _ZN5S28C54v293Ev();
extern void _ZN5S28C54v294Ev();
extern void _ZN5S28C54v295Ev();
extern void _ZN5S28C54v296Ev();
extern void _ZN5S28C54v297Ev();
extern void _ZN5S28C54v298Ev();
extern void _ZN5S28C44v299Ev();
extern void _ZN5S28C44v300Ev();
extern void _ZN5S28C44v301Ev();
extern void _ZN5S28C34v302Ev();
extern void _ZN5S28C34v303Ev();
extern void _ZN5S28C34v304Ev();
extern void _ZN5S28C34v305Ev();
extern void _ZN5S28C34v306Ev();
extern void _ZN5S28C34v307Ev();
extern void _ZN5S28C34v308Ev();
extern void _ZN5S28C34v309Ev();
extern void _ZN5S28C34v310Ev();
extern void _ZN5S28C34v311Ev();
extern void _ZN5S28C34v312Ev();
extern void _ZN5S28C34v313Ev();
extern void _ZN5S28C34v314Ev();
extern void _ZN5S28C34v315Ev();
extern void _ZN5S28C34v316Ev();
extern void _ZN5S28C34v317Ev();
extern void _ZN5S28C34v318Ev();
extern void _ZN5S28C34v319Ev();
extern void _ZN5S28C34v320Ev();
extern void _ZN5S28C24v321Ev();
extern void _ZN5S28C24v322Ev();
static  VTBL_ENTRY vtc_S28C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S28C2[0]),
  (VTBL_ENTRY)&_ZN5S28C2D1Ev,
  (VTBL_ENTRY)&_ZN5S28C2D0Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v6Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v7Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v210Ev,
  (VTBL_ENTRY)&_ZN5S28C64v211Ev,
  (VTBL_ENTRY)&_ZN5S28C64v212Ev,
  (VTBL_ENTRY)&_ZN5S28C64v213Ev,
  (VTBL_ENTRY)&_ZN5S28C64v214Ev,
  (VTBL_ENTRY)&_ZN5S28C64v215Ev,
  (VTBL_ENTRY)&_ZN5S28C64v216Ev,
  (VTBL_ENTRY)&_ZN5S28C64v217Ev,
  (VTBL_ENTRY)&_ZN5S28C64v218Ev,
  (VTBL_ENTRY)&_ZN5S28C64v219Ev,
  (VTBL_ENTRY)&_ZN5S28C64v220Ev,
  (VTBL_ENTRY)&_ZN5S28C64v221Ev,
  (VTBL_ENTRY)&_ZN5S28C64v222Ev,
  (VTBL_ENTRY)&_ZN5S28C64v223Ev,
  (VTBL_ENTRY)&_ZN5S28C64v224Ev,
  (VTBL_ENTRY)&_ZN5S28C64v225Ev,
  (VTBL_ENTRY)&_ZN5S28C64v226Ev,
  (VTBL_ENTRY)&_ZN5S28C64v227Ev,
  (VTBL_ENTRY)&_ZN5S28C64v228Ev,
  (VTBL_ENTRY)&_ZN5S28C64v229Ev,
  (VTBL_ENTRY)&_ZN5S28C64v230Ev,
  (VTBL_ENTRY)&_ZN5S28C64v231Ev,
  (VTBL_ENTRY)&_ZN5S28C64v232Ev,
  (VTBL_ENTRY)&_ZN5S28C64v233Ev,
  (VTBL_ENTRY)&_ZN5S28C64v234Ev,
  (VTBL_ENTRY)&_ZN5S28C64v235Ev,
  (VTBL_ENTRY)&_ZN5S28C64v236Ev,
  (VTBL_ENTRY)&_ZN5S28C64v237Ev,
  (VTBL_ENTRY)&_ZN5S28C64v238Ev,
  (VTBL_ENTRY)&_ZN5S28C64v239Ev,
  (VTBL_ENTRY)&_ZN5S28C64v240Ev,
  (VTBL_ENTRY)&_ZN5S28C64v241Ev,
  (VTBL_ENTRY)&_ZN5S28C64v242Ev,
  (VTBL_ENTRY)&_ZN5S28C64v243Ev,
  (VTBL_ENTRY)&_ZN5S28C64v244Ev,
  (VTBL_ENTRY)&_ZN5S28C64v245Ev,
  (VTBL_ENTRY)&_ZN5S28C64v246Ev,
  (VTBL_ENTRY)&_ZN5S28C64v247Ev,
  (VTBL_ENTRY)&_ZN5S28C64v248Ev,
  (VTBL_ENTRY)&_ZN5S28C64v249Ev,
  (VTBL_ENTRY)&_ZN5S28C64v250Ev,
  (VTBL_ENTRY)&_ZN5S28C64v251Ev,
  (VTBL_ENTRY)&_ZN5S28C64v252Ev,
  (VTBL_ENTRY)&_ZN5S28C64v253Ev,
  (VTBL_ENTRY)&_ZN5S28C64v254Ev,
  (VTBL_ENTRY)&_ZN5S28C64v255Ev,
  (VTBL_ENTRY)&_ZN5S28C64v256Ev,
  (VTBL_ENTRY)&_ZN5S28C64v257Ev,
  (VTBL_ENTRY)&_ZN5S28C64v258Ev,
  (VTBL_ENTRY)&_ZN5S28C64v259Ev,
  (VTBL_ENTRY)&_ZN5S28C64v260Ev,
  (VTBL_ENTRY)&_ZN5S28C54v261Ev,
  (VTBL_ENTRY)&_ZN5S28C54v262Ev,
  (VTBL_ENTRY)&_ZN5S28C54v263Ev,
  (VTBL_ENTRY)&_ZN5S28C54v264Ev,
  (VTBL_ENTRY)&_ZN5S28C54v265Ev,
  (VTBL_ENTRY)&_ZN5S28C54v266Ev,
  (VTBL_ENTRY)&_ZN5S28C54v267Ev,
  (VTBL_ENTRY)&_ZN5S28C54v268Ev,
  (VTBL_ENTRY)&_ZN5S28C54v269Ev,
  (VTBL_ENTRY)&_ZN5S28C54v270Ev,
  (VTBL_ENTRY)&_ZN5S28C54v271Ev,
  (VTBL_ENTRY)&_ZN5S28C54v272Ev,
  (VTBL_ENTRY)&_ZN5S28C54v273Ev,
  (VTBL_ENTRY)&_ZN5S28C54v274Ev,
  (VTBL_ENTRY)&_ZN5S28C54v275Ev,
  (VTBL_ENTRY)&_ZN5S28C54v276Ev,
  (VTBL_ENTRY)&_ZN5S28C54v277Ev,
  (VTBL_ENTRY)&_ZN5S28C54v278Ev,
  (VTBL_ENTRY)&_ZN5S28C54v279Ev,
  (VTBL_ENTRY)&_ZN5S28C54v280Ev,
  (VTBL_ENTRY)&_ZN5S28C54v281Ev,
  (VTBL_ENTRY)&_ZN5S28C54v282Ev,
  (VTBL_ENTRY)&_ZN5S28C54v283Ev,
  (VTBL_ENTRY)&_ZN5S28C54v284Ev,
  (VTBL_ENTRY)&_ZN5S28C54v285Ev,
  (VTBL_ENTRY)&_ZN5S28C54v286Ev,
  (VTBL_ENTRY)&_ZN5S28C54v287Ev,
  (VTBL_ENTRY)&_ZN5S28C54v288Ev,
  (VTBL_ENTRY)&_ZN5S28C54v289Ev,
  (VTBL_ENTRY)&_ZN5S28C54v290Ev,
  (VTBL_ENTRY)&_ZN5S28C54v291Ev,
  (VTBL_ENTRY)&_ZN5S28C54v292Ev,
  (VTBL_ENTRY)&_ZN5S28C54v293Ev,
  (VTBL_ENTRY)&_ZN5S28C54v294Ev,
  (VTBL_ENTRY)&_ZN5S28C54v295Ev,
  (VTBL_ENTRY)&_ZN5S28C54v296Ev,
  (VTBL_ENTRY)&_ZN5S28C54v297Ev,
  (VTBL_ENTRY)&_ZN5S28C54v298Ev,
  (VTBL_ENTRY)&_ZN5S28C44v299Ev,
  (VTBL_ENTRY)&_ZN5S28C44v300Ev,
  (VTBL_ENTRY)&_ZN5S28C44v301Ev,
  (VTBL_ENTRY)&_ZN5S28C34v302Ev,
  (VTBL_ENTRY)&_ZN5S28C34v303Ev,
  (VTBL_ENTRY)&_ZN5S28C34v304Ev,
  (VTBL_ENTRY)&_ZN5S28C34v305Ev,
  (VTBL_ENTRY)&_ZN5S28C34v306Ev,
  (VTBL_ENTRY)&_ZN5S28C34v307Ev,
  (VTBL_ENTRY)&_ZN5S28C34v308Ev,
  (VTBL_ENTRY)&_ZN5S28C34v309Ev,
  (VTBL_ENTRY)&_ZN5S28C34v310Ev,
  (VTBL_ENTRY)&_ZN5S28C34v311Ev,
  (VTBL_ENTRY)&_ZN5S28C34v312Ev,
  (VTBL_ENTRY)&_ZN5S28C34v313Ev,
  (VTBL_ENTRY)&_ZN5S28C34v314Ev,
  (VTBL_ENTRY)&_ZN5S28C34v315Ev,
  (VTBL_ENTRY)&_ZN5S28C34v316Ev,
  (VTBL_ENTRY)&_ZN5S28C34v317Ev,
  (VTBL_ENTRY)&_ZN5S28C34v318Ev,
  (VTBL_ENTRY)&_ZN5S28C34v319Ev,
  (VTBL_ENTRY)&_ZN5S28C34v320Ev,
  (VTBL_ENTRY)&_ZN5S28C24v321Ev,
  (VTBL_ENTRY)&_ZN5S28C24v322Ev,
};
extern VTBL_ENTRY _ZTI5S28C2[];
extern  VTBL_ENTRY _ZTV5S28C2[];
Class_Descriptor cd_S28C2 = {  "S28C2", // class name
  bases_S28C2, 6,
  &(vtc_S28C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(2520,1924), // object size
  NSPAIRA(_ZTI5S28C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S28C2),323, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S28C59  {
  ::S28C9_nt s28c59f0;
  void *s28c59f1;
  int s28c59f2;
};
//SIG(-1 S28C59) C1{ FC2{ m Fi[2]} Fp Fi}



static void Test_S28C59()
{
  {
    init_simple_test("S28C59");
    S28C59 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S28C59)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C59)");
    check_field_offset(lv, s28c59f0, 0, "S28C59.s28c59f0");
    check_field_offset(lv, s28c59f1, 8, "S28C59.s28c59f1");
    check_field_offset(lv, s28c59f2, ABISELECT(16,12), "S28C59.s28c59f2");
  }
}
static Arrange_To_Call_Me vS28C59(Test_S28C59, "S28C59", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S28C1  : S28C2 {
  char s28c1f0;
  ::S28C18_nt s28c1f1;
  ::S28C18_nt s28c1f2;
  ::S28C59 s28c1f3;
  ::S28C59 s28c1f4;
  ::S28C59 s28c1f5;
  ::S28C18_nt s28c1f6;
  ::S28C18_nt s28c1f7;
  unsigned int s28c1f8:1;
  unsigned int s28c1f9:1;
  unsigned int s28c1f10:1;
  unsigned int s28c1f11:1;
  int s28c1f12[7];
  virtual  ~S28C1(); // _ZN5S28C1D1Ev
  virtual void  v1(); // _ZN5S28C12v1Ev
  virtual void  v2(); // _ZN5S28C12v2Ev
  virtual void  v3(); // _ZN5S28C12v3Ev
  S28C1(); // tgen
};
//SIG(1 S28C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ BC7{ BC8{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC9{ m Fi[2]} Fp[2]} vd v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 v208 v209 v210 FC10{ BC11{ BC12{ m Fp Fi[2]}}} FC10 FC13{ m Fi} Fi Fc[4] Fp[2] FC10 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC9 FC9 FC9 FC14{ BC15{ BC12}} FC14 Fi Fp[2] FC16{ m Fi[3]} FC16 FC16 FC16 Fp FC9 FC14 FC16 FC16 Fi FC16 FC16 Fp Fi Fc FC16 FC16 Fp Fi Fp FC14 FC17{ BC18{ BC12}} FC17} vd v211 v212 v213 v214 v215 v216 v217 v218 v219 v220 v221 v222 v223 v224 v225 v226 v227 v228 v229 v230 v231 v232 v233 v234 v235 v236 v237 v238 v239 v240 v241 v242 v243 v244 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 v258 v259 v260 Fp[2] Fi Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fc Fi[2] Fp FC16 FC16 Fp[5] FC16 Fp FC19{ BC20{ BC12}} Fp[2] FC16 Fp Fi[2] Fp Fi FC16 FC16 FC16 Fp[2] Fi FC16 Fi[4] Fp[2] FC19 Fi FC16} vd v261 v262 v263 v264 v265 v266 v267 v268 v269 v270 v271 v272 v273 v274 v275 v276 v277 v278 v279 v280 v281 v282 v283 v284 v285 v286 v287 v288 v289 v290 v291 v292 v293 v294 v295 v296 v297 v298 Fp[8] Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2] Fp Fc[6] Fp[2] Fi[4] FC16 Fi FC16 Fp[5] FC16 Fi[12] FC21{ Fi Fc FC16 FC16 Fp FC16 Fc} FC22{ BC23{ BC24{ BC12}}}[2] Fi FC22 FC22 FC22 FC22 Fi FC16 Fp[4] FC16 Fp FC22 Fp FC25{ BC26{ BC12}} FC25 FC25 FC25 Fp FC27{ BC28{ m Fp[2]}} Fp Fi FC29{ BC30{ BC12}} Fi FC22[4] FC29 Fp FC31{ BC32{ BC12}} Fi[3] FC31 FC31 FC14 FC33{ BC34{ BC12}} Fi FC35{ m Fp FC9}} vd v299 v300 v301} vd v302 v303 v304 v305 v306 v307 v308 v309 v310 v311 v312 v313 v314 v315 v316 v317 v318 v319 v320 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fc[6] FC16 Fp[2] Fi[2] FC22 Fp[3] FC36{ m Fi:1 Fi:1 Fi:1 Fi:1 Fi[6] FC37{ m} Fc Fi[2] FC16 Fi[3] Fi:1 Fi[4] FC16 FC16 FC16 Fi} Fp FC16 FC16 FC36 Fi Fp[3] FC16 FC16 FC16 FC16 Fi FC16 Fi[2] Fi:1 Fi:1 Fi:1 Fi:1 Fi[2] FC16 Fi Fp Fi[5] FC22 Fi Fp[4] FC22 FC33 Fp[2] FC14 Fi[5] Fp FC38{ BC39{ BC12}} Fi} vd v321 v322 Fp FC38 Fp} vd v1 v2 v3 Fc FC16 FC16 FC40{ FC9 Fp Fi} FC40 FC40 FC16 FC16 Fi:1 Fi:1 Fi:1 Fi:1 Fi[7]}


 S28C1 ::~S28C1(){ note_dtor("S28C1", this);}
void  S28C1 ::v1(){vfunc_called(this, "_ZN5S28C12v1Ev");}
void  S28C1 ::v2(){vfunc_called(this, "_ZN5S28C12v2Ev");}
void  S28C1 ::v3(){vfunc_called(this, "_ZN5S28C12v3Ev");}
S28C1 ::S28C1(){ note_ctor("S28C1", this);} // tgen

static void Test_S28C1()
{
  extern Class_Descriptor cd_S28C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(336,515)];
    init_test(&cd_S28C1, buf);
    S28C1 *dp, &lv = *(dp=new (buf) S28C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2680,2056), "sizeof(S28C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S28C1)");
    check_base_class_offset(lv, (S28C8_nt*)(S28C7_nt*)(S28C6*)(S28C5*)(S28C4*)(S28C3*)(S28C2*), 0, "S28C1");
    check_base_class_offset(lv, (S28C7_nt*)(S28C6*)(S28C5*)(S28C4*)(S28C3*)(S28C2*), 0, "S28C1");
    check_base_class_offset(lv, (S28C6*)(S28C5*)(S28C4*)(S28C3*)(S28C2*), 0, "S28C1");
    check_base_class_offset(lv, (S28C5*)(S28C4*)(S28C3*)(S28C2*), 0, "S28C1");
    check_base_class_offset(lv, (S28C4*)(S28C3*)(S28C2*), 0, "S28C1");
    check_base_class_offset(lv, (S28C3*)(S28C2*), 0, "S28C1");
    check_base_class_offset(lv, (S28C2*), 0, "S28C1");
    check_field_offset(lv, s28c1f0, ABISELECT(2520,1924), "S28C1.s28c1f0");
    check_field_offset(lv, s28c1f1, ABISELECT(2524,1928), "S28C1.s28c1f1");
    check_field_offset(lv, s28c1f2, ABISELECT(2536,1940), "S28C1.s28c1f2");
    check_field_offset(lv, s28c1f3, ABISELECT(2552,1952), "S28C1.s28c1f3");
    check_field_offset(lv, s28c1f4, ABISELECT(2576,1968), "S28C1.s28c1f4");
    check_field_offset(lv, s28c1f5, ABISELECT(2600,1984), "S28C1.s28c1f5");
    check_field_offset(lv, s28c1f6, ABISELECT(2624,2000), "S28C1.s28c1f6");
    check_field_offset(lv, s28c1f7, ABISELECT(2636,2012), "S28C1.s28c1f7");
    set_bf_and_test(lv, s28c1f8, ABISELECT(2648,2024), 0, 1, 1, "S28C1");
    set_bf_and_test(lv, s28c1f9, ABISELECT(2648,2024), 1, 1, 1, "S28C1");
    set_bf_and_test(lv, s28c1f10, ABISELECT(2648,2024), 2, 1, 1, "S28C1");
    set_bf_and_test(lv, s28c1f11, ABISELECT(2648,2024), 3, 1, 1, "S28C1");
    check_field_offset(lv, s28c1f12, ABISELECT(2652,2028), "S28C1.s28c1f12");
    test_class_info(&lv, &cd_S28C1);
    dp->~S28C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS28C1(Test_S28C1, "S28C1", ABISELECT(2680,2056));

#else // __cplusplus

extern void _ZN5S28C1C1Ev();
extern void _ZN5S28C1D1Ev();
Name_Map name_map_S28C1[] = {
  NSPAIR(_ZN5S28C1C1Ev),
  NSPAIR(_ZN5S28C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C8_nt;
extern VTBL_ENTRY _ZTI8S28C8_nt[];
extern  VTBL_ENTRY _ZTV8S28C8_nt[];
extern Class_Descriptor cd_S28C7_nt;
extern VTBL_ENTRY _ZTI8S28C7_nt[];
extern  VTBL_ENTRY _ZTV8S28C7_nt[];
extern Class_Descriptor cd_S28C6;
extern VTBL_ENTRY _ZTI5S28C6[];
extern  VTBL_ENTRY _ZTV5S28C6[];
extern Class_Descriptor cd_S28C5;
extern VTBL_ENTRY _ZTI5S28C5[];
extern  VTBL_ENTRY _ZTV5S28C5[];
extern Class_Descriptor cd_S28C4;
extern VTBL_ENTRY _ZTI5S28C4[];
extern  VTBL_ENTRY _ZTV5S28C4[];
extern Class_Descriptor cd_S28C3;
extern VTBL_ENTRY _ZTI5S28C3[];
extern  VTBL_ENTRY _ZTV5S28C3[];
extern Class_Descriptor cd_S28C2;
extern VTBL_ENTRY _ZTI5S28C2[];
extern  VTBL_ENTRY _ZTV5S28C2[];
static Base_Class bases_S28C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S28C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S28C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S28C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S28C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S28C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S28C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI5S28C1[];
extern void _ZN5S28C1D1Ev();
extern void _ZN5S28C1D0Ev();
extern void _ZN8S28C8_nt2v4Ev();
extern void _ZN8S28C8_nt2v5Ev();
extern void _ZN8S28C8_nt2v6Ev();
extern void _ZN8S28C8_nt2v7Ev();
extern void _ZN8S28C8_nt2v8Ev();
extern void _ZN8S28C8_nt2v9Ev();
extern void _ZN8S28C8_nt3v10Ev();
extern void _ZN8S28C8_nt3v11Ev();
extern void _ZN8S28C8_nt3v12Ev();
extern void _ZN8S28C8_nt3v13Ev();
extern void _ZN8S28C8_nt3v14Ev();
extern void _ZN8S28C8_nt3v15Ev();
extern void _ZN8S28C8_nt3v16Ev();
extern void _ZN8S28C8_nt3v17Ev();
extern void _ZN8S28C8_nt3v18Ev();
extern void _ZN8S28C8_nt3v19Ev();
extern void _ZN8S28C8_nt3v20Ev();
extern void _ZN8S28C8_nt3v21Ev();
extern void _ZN8S28C8_nt3v22Ev();
extern void _ZN8S28C8_nt3v23Ev();
extern void _ZN8S28C8_nt3v24Ev();
extern void _ZN8S28C8_nt3v25Ev();
extern void _ZN8S28C8_nt3v26Ev();
extern void _ZN8S28C8_nt3v27Ev();
extern void _ZN8S28C8_nt3v28Ev();
extern void _ZN8S28C8_nt3v29Ev();
extern void _ZN8S28C8_nt3v30Ev();
extern void _ZN8S28C8_nt3v31Ev();
extern void _ZN8S28C8_nt3v32Ev();
extern void _ZN8S28C8_nt3v33Ev();
extern void _ZN8S28C8_nt3v34Ev();
extern void _ZN8S28C8_nt3v35Ev();
extern void _ZN8S28C8_nt3v36Ev();
extern void _ZN8S28C8_nt3v37Ev();
extern void _ZN8S28C8_nt3v38Ev();
extern void _ZN8S28C8_nt3v39Ev();
extern void _ZN8S28C8_nt3v40Ev();
extern void _ZN8S28C8_nt3v41Ev();
extern void _ZN8S28C8_nt3v42Ev();
extern void _ZN8S28C8_nt3v43Ev();
extern void _ZN8S28C8_nt3v44Ev();
extern void _ZN8S28C8_nt3v45Ev();
extern void _ZN8S28C8_nt3v46Ev();
extern void _ZN8S28C8_nt3v47Ev();
extern void _ZN8S28C8_nt3v48Ev();
extern void _ZN8S28C8_nt3v49Ev();
extern void _ZN8S28C8_nt3v50Ev();
extern void _ZN8S28C8_nt3v51Ev();
extern void _ZN8S28C8_nt3v52Ev();
extern void _ZN8S28C8_nt3v53Ev();
extern void _ZN8S28C8_nt3v54Ev();
extern void _ZN8S28C8_nt3v55Ev();
extern void _ZN8S28C8_nt3v56Ev();
extern void _ZN8S28C8_nt3v57Ev();
extern void _ZN8S28C8_nt3v58Ev();
extern void _ZN8S28C8_nt3v59Ev();
extern void _ZN8S28C8_nt3v60Ev();
extern void _ZN8S28C8_nt3v61Ev();
extern void _ZN8S28C8_nt3v62Ev();
extern void _ZN8S28C8_nt3v63Ev();
extern void _ZN8S28C8_nt3v64Ev();
extern void _ZN8S28C8_nt3v65Ev();
extern void _ZN8S28C8_nt3v66Ev();
extern void _ZN8S28C8_nt3v67Ev();
extern void _ZN8S28C7_nt3v68Ev();
extern void _ZN8S28C7_nt3v69Ev();
extern void _ZN8S28C7_nt3v70Ev();
extern void _ZN8S28C7_nt3v71Ev();
extern void _ZN8S28C7_nt3v72Ev();
extern void _ZN8S28C7_nt3v73Ev();
extern void _ZN8S28C7_nt3v74Ev();
extern void _ZN8S28C7_nt3v75Ev();
extern void _ZN8S28C7_nt3v76Ev();
extern void _ZN8S28C7_nt3v77Ev();
extern void _ZN8S28C7_nt3v78Ev();
extern void _ZN8S28C7_nt3v79Ev();
extern void _ZN8S28C7_nt3v80Ev();
extern void _ZN8S28C7_nt3v81Ev();
extern void _ZN8S28C7_nt3v82Ev();
extern void _ZN8S28C7_nt3v83Ev();
extern void _ZN8S28C7_nt3v84Ev();
extern void _ZN8S28C7_nt3v85Ev();
extern void _ZN8S28C7_nt3v86Ev();
extern void _ZN8S28C7_nt3v87Ev();
extern void _ZN8S28C7_nt3v88Ev();
extern void _ZN8S28C7_nt3v89Ev();
extern void _ZN8S28C7_nt3v90Ev();
extern void _ZN8S28C7_nt3v91Ev();
extern void _ZN8S28C7_nt3v92Ev();
extern void _ZN8S28C7_nt3v93Ev();
extern void _ZN8S28C7_nt3v94Ev();
extern void _ZN8S28C7_nt3v95Ev();
extern void _ZN8S28C7_nt3v96Ev();
extern void _ZN8S28C7_nt3v97Ev();
extern void _ZN8S28C7_nt3v98Ev();
extern void _ZN8S28C7_nt3v99Ev();
extern void _ZN8S28C7_nt4v100Ev();
extern void _ZN8S28C7_nt4v101Ev();
extern void _ZN8S28C7_nt4v102Ev();
extern void _ZN8S28C7_nt4v103Ev();
extern void _ZN8S28C7_nt4v104Ev();
extern void _ZN8S28C7_nt4v105Ev();
extern void _ZN8S28C7_nt4v106Ev();
extern void _ZN8S28C7_nt4v107Ev();
extern void _ZN8S28C7_nt4v108Ev();
extern void _ZN8S28C7_nt4v109Ev();
extern void _ZN8S28C7_nt4v110Ev();
extern void _ZN8S28C7_nt4v111Ev();
extern void _ZN8S28C7_nt4v112Ev();
extern void _ZN8S28C7_nt4v113Ev();
extern void _ZN8S28C7_nt4v114Ev();
extern void _ZN8S28C7_nt4v115Ev();
extern void _ZN8S28C7_nt4v116Ev();
extern void _ZN8S28C7_nt4v117Ev();
extern void _ZN8S28C7_nt4v118Ev();
extern void _ZN8S28C7_nt4v119Ev();
extern void _ZN8S28C7_nt4v120Ev();
extern void _ZN8S28C7_nt4v121Ev();
extern void _ZN8S28C7_nt4v122Ev();
extern void _ZN8S28C7_nt4v123Ev();
extern void _ZN8S28C7_nt4v124Ev();
extern void _ZN8S28C7_nt4v125Ev();
extern void _ZN8S28C7_nt4v126Ev();
extern void _ZN8S28C7_nt4v127Ev();
extern void _ZN8S28C7_nt4v128Ev();
extern void _ZN8S28C7_nt4v129Ev();
extern void _ZN8S28C7_nt4v130Ev();
extern void _ZN8S28C7_nt4v131Ev();
extern void _ZN8S28C7_nt4v132Ev();
extern void _ZN8S28C7_nt4v133Ev();
extern void _ZN8S28C7_nt4v134Ev();
extern void _ZN8S28C7_nt4v135Ev();
extern void _ZN8S28C7_nt4v136Ev();
extern void _ZN8S28C7_nt4v137Ev();
extern void _ZN8S28C7_nt4v138Ev();
extern void _ZN8S28C7_nt4v139Ev();
extern void _ZN8S28C7_nt4v140Ev();
extern void _ZN8S28C7_nt4v141Ev();
extern void _ZN8S28C7_nt4v142Ev();
extern void _ZN8S28C7_nt4v143Ev();
extern void _ZN8S28C7_nt4v144Ev();
extern void _ZN8S28C7_nt4v145Ev();
extern void _ZN8S28C7_nt4v146Ev();
extern void _ZN8S28C7_nt4v147Ev();
extern void _ZN8S28C7_nt4v148Ev();
extern void _ZN8S28C7_nt4v149Ev();
extern void _ZN8S28C7_nt4v150Ev();
extern void _ZN8S28C7_nt4v151Ev();
extern void _ZN8S28C7_nt4v152Ev();
extern void _ZN8S28C7_nt4v153Ev();
extern void _ZN8S28C7_nt4v154Ev();
extern void _ZN8S28C7_nt4v155Ev();
extern void _ZN8S28C7_nt4v156Ev();
extern void _ZN8S28C7_nt4v157Ev();
extern void _ZN8S28C7_nt4v158Ev();
extern void _ZN8S28C7_nt4v159Ev();
extern void _ZN8S28C7_nt4v160Ev();
extern void _ZN8S28C7_nt4v161Ev();
extern void _ZN8S28C7_nt4v162Ev();
extern void _ZN8S28C7_nt4v163Ev();
extern void _ZN8S28C7_nt4v164Ev();
extern void _ZN8S28C7_nt4v165Ev();
extern void _ZN8S28C7_nt4v166Ev();
extern void _ZN8S28C7_nt4v167Ev();
extern void _ZN8S28C7_nt4v168Ev();
extern void _ZN8S28C7_nt4v169Ev();
extern void _ZN8S28C7_nt4v170Ev();
extern void _ZN8S28C7_nt4v171Ev();
extern void _ZN8S28C7_nt4v172Ev();
extern void _ZN8S28C7_nt4v173Ev();
extern void _ZN8S28C7_nt4v174Ev();
extern void _ZN8S28C7_nt4v175Ev();
extern void _ZN8S28C7_nt4v176Ev();
extern void _ZN8S28C7_nt4v177Ev();
extern void _ZN8S28C7_nt4v178Ev();
extern void _ZN8S28C7_nt4v179Ev();
extern void _ZN8S28C7_nt4v180Ev();
extern void _ZN8S28C7_nt4v181Ev();
extern void _ZN8S28C7_nt4v182Ev();
extern void _ZN8S28C7_nt4v183Ev();
extern void _ZN8S28C7_nt4v184Ev();
extern void _ZN8S28C7_nt4v185Ev();
extern void _ZN8S28C7_nt4v186Ev();
extern void _ZN8S28C7_nt4v187Ev();
extern void _ZN8S28C7_nt4v188Ev();
extern void _ZN8S28C7_nt4v189Ev();
extern void _ZN8S28C7_nt4v190Ev();
extern void _ZN8S28C7_nt4v191Ev();
extern void _ZN8S28C7_nt4v192Ev();
extern void _ZN8S28C7_nt4v193Ev();
extern void _ZN8S28C7_nt4v194Ev();
extern void _ZN8S28C7_nt4v195Ev();
extern void _ZN8S28C7_nt4v196Ev();
extern void _ZN8S28C7_nt4v197Ev();
extern void _ZN8S28C7_nt4v198Ev();
extern void _ZN8S28C7_nt4v199Ev();
extern void _ZN8S28C7_nt4v200Ev();
extern void _ZN8S28C7_nt4v201Ev();
extern void _ZN8S28C7_nt4v202Ev();
extern void _ZN8S28C7_nt4v203Ev();
extern void _ZN8S28C7_nt4v204Ev();
extern void _ZN8S28C7_nt4v205Ev();
extern void _ZN8S28C7_nt4v206Ev();
extern void _ZN8S28C7_nt4v207Ev();
extern void _ZN8S28C7_nt4v208Ev();
extern void _ZN8S28C7_nt4v209Ev();
extern void _ZN8S28C7_nt4v210Ev();
extern void _ZN5S28C64v211Ev();
extern void _ZN5S28C64v212Ev();
extern void _ZN5S28C64v213Ev();
extern void _ZN5S28C64v214Ev();
extern void _ZN5S28C64v215Ev();
extern void _ZN5S28C64v216Ev();
extern void _ZN5S28C64v217Ev();
extern void _ZN5S28C64v218Ev();
extern void _ZN5S28C64v219Ev();
extern void _ZN5S28C64v220Ev();
extern void _ZN5S28C64v221Ev();
extern void _ZN5S28C64v222Ev();
extern void _ZN5S28C64v223Ev();
extern void _ZN5S28C64v224Ev();
extern void _ZN5S28C64v225Ev();
extern void _ZN5S28C64v226Ev();
extern void _ZN5S28C64v227Ev();
extern void _ZN5S28C64v228Ev();
extern void _ZN5S28C64v229Ev();
extern void _ZN5S28C64v230Ev();
extern void _ZN5S28C64v231Ev();
extern void _ZN5S28C64v232Ev();
extern void _ZN5S28C64v233Ev();
extern void _ZN5S28C64v234Ev();
extern void _ZN5S28C64v235Ev();
extern void _ZN5S28C64v236Ev();
extern void _ZN5S28C64v237Ev();
extern void _ZN5S28C64v238Ev();
extern void _ZN5S28C64v239Ev();
extern void _ZN5S28C64v240Ev();
extern void _ZN5S28C64v241Ev();
extern void _ZN5S28C64v242Ev();
extern void _ZN5S28C64v243Ev();
extern void _ZN5S28C64v244Ev();
extern void _ZN5S28C64v245Ev();
extern void _ZN5S28C64v246Ev();
extern void _ZN5S28C64v247Ev();
extern void _ZN5S28C64v248Ev();
extern void _ZN5S28C64v249Ev();
extern void _ZN5S28C64v250Ev();
extern void _ZN5S28C64v251Ev();
extern void _ZN5S28C64v252Ev();
extern void _ZN5S28C64v253Ev();
extern void _ZN5S28C64v254Ev();
extern void _ZN5S28C64v255Ev();
extern void _ZN5S28C64v256Ev();
extern void _ZN5S28C64v257Ev();
extern void _ZN5S28C64v258Ev();
extern void _ZN5S28C64v259Ev();
extern void _ZN5S28C64v260Ev();
extern void _ZN5S28C54v261Ev();
extern void _ZN5S28C54v262Ev();
extern void _ZN5S28C54v263Ev();
extern void _ZN5S28C54v264Ev();
extern void _ZN5S28C54v265Ev();
extern void _ZN5S28C54v266Ev();
extern void _ZN5S28C54v267Ev();
extern void _ZN5S28C54v268Ev();
extern void _ZN5S28C54v269Ev();
extern void _ZN5S28C54v270Ev();
extern void _ZN5S28C54v271Ev();
extern void _ZN5S28C54v272Ev();
extern void _ZN5S28C54v273Ev();
extern void _ZN5S28C54v274Ev();
extern void _ZN5S28C54v275Ev();
extern void _ZN5S28C54v276Ev();
extern void _ZN5S28C54v277Ev();
extern void _ZN5S28C54v278Ev();
extern void _ZN5S28C54v279Ev();
extern void _ZN5S28C54v280Ev();
extern void _ZN5S28C54v281Ev();
extern void _ZN5S28C54v282Ev();
extern void _ZN5S28C54v283Ev();
extern void _ZN5S28C54v284Ev();
extern void _ZN5S28C54v285Ev();
extern void _ZN5S28C54v286Ev();
extern void _ZN5S28C54v287Ev();
extern void _ZN5S28C54v288Ev();
extern void _ZN5S28C54v289Ev();
extern void _ZN5S28C54v290Ev();
extern void _ZN5S28C54v291Ev();
extern void _ZN5S28C54v292Ev();
extern void _ZN5S28C54v293Ev();
extern void _ZN5S28C54v294Ev();
extern void _ZN5S28C54v295Ev();
extern void _ZN5S28C54v296Ev();
extern void _ZN5S28C54v297Ev();
extern void _ZN5S28C54v298Ev();
extern void _ZN5S28C44v299Ev();
extern void _ZN5S28C44v300Ev();
extern void _ZN5S28C44v301Ev();
extern void _ZN5S28C34v302Ev();
extern void _ZN5S28C34v303Ev();
extern void _ZN5S28C34v304Ev();
extern void _ZN5S28C34v305Ev();
extern void _ZN5S28C34v306Ev();
extern void _ZN5S28C34v307Ev();
extern void _ZN5S28C34v308Ev();
extern void _ZN5S28C34v309Ev();
extern void _ZN5S28C34v310Ev();
extern void _ZN5S28C34v311Ev();
extern void _ZN5S28C34v312Ev();
extern void _ZN5S28C34v313Ev();
extern void _ZN5S28C34v314Ev();
extern void _ZN5S28C34v315Ev();
extern void _ZN5S28C34v316Ev();
extern void _ZN5S28C34v317Ev();
extern void _ZN5S28C34v318Ev();
extern void _ZN5S28C34v319Ev();
extern void _ZN5S28C34v320Ev();
extern void _ZN5S28C24v321Ev();
extern void _ZN5S28C24v322Ev();
extern void _ZN5S28C12v1Ev();
extern void _ZN5S28C12v2Ev();
extern void _ZN5S28C12v3Ev();
static  VTBL_ENTRY vtc_S28C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S28C1[0]),
  (VTBL_ENTRY)&_ZN5S28C1D1Ev,
  (VTBL_ENTRY)&_ZN5S28C1D0Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v4Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v6Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v7Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v8Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v17Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v23Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v24Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v25Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v32Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v33Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v34Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v35Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v36Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v37Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v38Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v39Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v40Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v42Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v43Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v44Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v45Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v46Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v47Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v48Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v49Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v50Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v51Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v52Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v53Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v54Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v55Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v56Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v57Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v58Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v59Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v60Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v61Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v62Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v63Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v64Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v65Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v66Ev,
  (VTBL_ENTRY)&_ZN8S28C8_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v68Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v69Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v70Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v71Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v72Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v73Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v74Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v75Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v76Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v77Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v78Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v79Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v80Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v81Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v82Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v83Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v84Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v85Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v86Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v87Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v88Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v89Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v90Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v91Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v92Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v93Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v94Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v95Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v96Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v97Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v98Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt3v99Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v100Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v101Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v102Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v103Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v104Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v105Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v106Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v107Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v108Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v109Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v110Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v111Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v112Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v113Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v114Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v115Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v116Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v117Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v118Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v119Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v120Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v121Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v122Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v123Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v124Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v125Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v126Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v127Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v128Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v129Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v130Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v131Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v132Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v133Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v134Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v135Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v136Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v137Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v138Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v139Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v140Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v141Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v142Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v143Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v144Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v145Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v146Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v147Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v148Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v149Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v150Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v151Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v152Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v153Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v154Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v155Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v156Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v157Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v158Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v159Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v161Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v162Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v163Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v164Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v165Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v166Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v167Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v168Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v169Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v170Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v171Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v172Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v173Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v174Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v175Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v176Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v177Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v178Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v179Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v180Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v181Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v182Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v183Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v184Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v185Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v186Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v187Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v188Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v189Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v190Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v191Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v192Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v193Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v194Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v195Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v196Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v197Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v198Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v199Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v200Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v201Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v202Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v203Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v204Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v205Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v206Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v207Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v208Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v209Ev,
  (VTBL_ENTRY)&_ZN8S28C7_nt4v210Ev,
  (VTBL_ENTRY)&_ZN5S28C64v211Ev,
  (VTBL_ENTRY)&_ZN5S28C64v212Ev,
  (VTBL_ENTRY)&_ZN5S28C64v213Ev,
  (VTBL_ENTRY)&_ZN5S28C64v214Ev,
  (VTBL_ENTRY)&_ZN5S28C64v215Ev,
  (VTBL_ENTRY)&_ZN5S28C64v216Ev,
  (VTBL_ENTRY)&_ZN5S28C64v217Ev,
  (VTBL_ENTRY)&_ZN5S28C64v218Ev,
  (VTBL_ENTRY)&_ZN5S28C64v219Ev,
  (VTBL_ENTRY)&_ZN5S28C64v220Ev,
  (VTBL_ENTRY)&_ZN5S28C64v221Ev,
  (VTBL_ENTRY)&_ZN5S28C64v222Ev,
  (VTBL_ENTRY)&_ZN5S28C64v223Ev,
  (VTBL_ENTRY)&_ZN5S28C64v224Ev,
  (VTBL_ENTRY)&_ZN5S28C64v225Ev,
  (VTBL_ENTRY)&_ZN5S28C64v226Ev,
  (VTBL_ENTRY)&_ZN5S28C64v227Ev,
  (VTBL_ENTRY)&_ZN5S28C64v228Ev,
  (VTBL_ENTRY)&_ZN5S28C64v229Ev,
  (VTBL_ENTRY)&_ZN5S28C64v230Ev,
  (VTBL_ENTRY)&_ZN5S28C64v231Ev,
  (VTBL_ENTRY)&_ZN5S28C64v232Ev,
  (VTBL_ENTRY)&_ZN5S28C64v233Ev,
  (VTBL_ENTRY)&_ZN5S28C64v234Ev,
  (VTBL_ENTRY)&_ZN5S28C64v235Ev,
  (VTBL_ENTRY)&_ZN5S28C64v236Ev,
  (VTBL_ENTRY)&_ZN5S28C64v237Ev,
  (VTBL_ENTRY)&_ZN5S28C64v238Ev,
  (VTBL_ENTRY)&_ZN5S28C64v239Ev,
  (VTBL_ENTRY)&_ZN5S28C64v240Ev,
  (VTBL_ENTRY)&_ZN5S28C64v241Ev,
  (VTBL_ENTRY)&_ZN5S28C64v242Ev,
  (VTBL_ENTRY)&_ZN5S28C64v243Ev,
  (VTBL_ENTRY)&_ZN5S28C64v244Ev,
  (VTBL_ENTRY)&_ZN5S28C64v245Ev,
  (VTBL_ENTRY)&_ZN5S28C64v246Ev,
  (VTBL_ENTRY)&_ZN5S28C64v247Ev,
  (VTBL_ENTRY)&_ZN5S28C64v248Ev,
  (VTBL_ENTRY)&_ZN5S28C64v249Ev,
  (VTBL_ENTRY)&_ZN5S28C64v250Ev,
  (VTBL_ENTRY)&_ZN5S28C64v251Ev,
  (VTBL_ENTRY)&_ZN5S28C64v252Ev,
  (VTBL_ENTRY)&_ZN5S28C64v253Ev,
  (VTBL_ENTRY)&_ZN5S28C64v254Ev,
  (VTBL_ENTRY)&_ZN5S28C64v255Ev,
  (VTBL_ENTRY)&_ZN5S28C64v256Ev,
  (VTBL_ENTRY)&_ZN5S28C64v257Ev,
  (VTBL_ENTRY)&_ZN5S28C64v258Ev,
  (VTBL_ENTRY)&_ZN5S28C64v259Ev,
  (VTBL_ENTRY)&_ZN5S28C64v260Ev,
  (VTBL_ENTRY)&_ZN5S28C54v261Ev,
  (VTBL_ENTRY)&_ZN5S28C54v262Ev,
  (VTBL_ENTRY)&_ZN5S28C54v263Ev,
  (VTBL_ENTRY)&_ZN5S28C54v264Ev,
  (VTBL_ENTRY)&_ZN5S28C54v265Ev,
  (VTBL_ENTRY)&_ZN5S28C54v266Ev,
  (VTBL_ENTRY)&_ZN5S28C54v267Ev,
  (VTBL_ENTRY)&_ZN5S28C54v268Ev,
  (VTBL_ENTRY)&_ZN5S28C54v269Ev,
  (VTBL_ENTRY)&_ZN5S28C54v270Ev,
  (VTBL_ENTRY)&_ZN5S28C54v271Ev,
  (VTBL_ENTRY)&_ZN5S28C54v272Ev,
  (VTBL_ENTRY)&_ZN5S28C54v273Ev,
  (VTBL_ENTRY)&_ZN5S28C54v274Ev,
  (VTBL_ENTRY)&_ZN5S28C54v275Ev,
  (VTBL_ENTRY)&_ZN5S28C54v276Ev,
  (VTBL_ENTRY)&_ZN5S28C54v277Ev,
  (VTBL_ENTRY)&_ZN5S28C54v278Ev,
  (VTBL_ENTRY)&_ZN5S28C54v279Ev,
  (VTBL_ENTRY)&_ZN5S28C54v280Ev,
  (VTBL_ENTRY)&_ZN5S28C54v281Ev,
  (VTBL_ENTRY)&_ZN5S28C54v282Ev,
  (VTBL_ENTRY)&_ZN5S28C54v283Ev,
  (VTBL_ENTRY)&_ZN5S28C54v284Ev,
  (VTBL_ENTRY)&_ZN5S28C54v285Ev,
  (VTBL_ENTRY)&_ZN5S28C54v286Ev,
  (VTBL_ENTRY)&_ZN5S28C54v287Ev,
  (VTBL_ENTRY)&_ZN5S28C54v288Ev,
  (VTBL_ENTRY)&_ZN5S28C54v289Ev,
  (VTBL_ENTRY)&_ZN5S28C54v290Ev,
  (VTBL_ENTRY)&_ZN5S28C54v291Ev,
  (VTBL_ENTRY)&_ZN5S28C54v292Ev,
  (VTBL_ENTRY)&_ZN5S28C54v293Ev,
  (VTBL_ENTRY)&_ZN5S28C54v294Ev,
  (VTBL_ENTRY)&_ZN5S28C54v295Ev,
  (VTBL_ENTRY)&_ZN5S28C54v296Ev,
  (VTBL_ENTRY)&_ZN5S28C54v297Ev,
  (VTBL_ENTRY)&_ZN5S28C54v298Ev,
  (VTBL_ENTRY)&_ZN5S28C44v299Ev,
  (VTBL_ENTRY)&_ZN5S28C44v300Ev,
  (VTBL_ENTRY)&_ZN5S28C44v301Ev,
  (VTBL_ENTRY)&_ZN5S28C34v302Ev,
  (VTBL_ENTRY)&_ZN5S28C34v303Ev,
  (VTBL_ENTRY)&_ZN5S28C34v304Ev,
  (VTBL_ENTRY)&_ZN5S28C34v305Ev,
  (VTBL_ENTRY)&_ZN5S28C34v306Ev,
  (VTBL_ENTRY)&_ZN5S28C34v307Ev,
  (VTBL_ENTRY)&_ZN5S28C34v308Ev,
  (VTBL_ENTRY)&_ZN5S28C34v309Ev,
  (VTBL_ENTRY)&_ZN5S28C34v310Ev,
  (VTBL_ENTRY)&_ZN5S28C34v311Ev,
  (VTBL_ENTRY)&_ZN5S28C34v312Ev,
  (VTBL_ENTRY)&_ZN5S28C34v313Ev,
  (VTBL_ENTRY)&_ZN5S28C34v314Ev,
  (VTBL_ENTRY)&_ZN5S28C34v315Ev,
  (VTBL_ENTRY)&_ZN5S28C34v316Ev,
  (VTBL_ENTRY)&_ZN5S28C34v317Ev,
  (VTBL_ENTRY)&_ZN5S28C34v318Ev,
  (VTBL_ENTRY)&_ZN5S28C34v319Ev,
  (VTBL_ENTRY)&_ZN5S28C34v320Ev,
  (VTBL_ENTRY)&_ZN5S28C24v321Ev,
  (VTBL_ENTRY)&_ZN5S28C24v322Ev,
  (VTBL_ENTRY)&_ZN5S28C12v1Ev,
  (VTBL_ENTRY)&_ZN5S28C12v2Ev,
  (VTBL_ENTRY)&_ZN5S28C12v3Ev,
};
extern VTBL_ENTRY _ZTI5S28C1[];
extern  VTBL_ENTRY _ZTV5S28C1[];
Class_Descriptor cd_S28C1 = {  "S28C1", // class name
  bases_S28C1, 7,
  &(vtc_S28C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(2680,2056), // object size
  NSPAIRA(_ZTI5S28C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S28C1),326, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  7, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S48C7  {
  int s48c7f0;
  __tsi64 s48c7f1;
  void *s48c7f2[4];
  int s48c7f3[2];
  void *s48c7f4;
  ::S28C9_nt s48c7f5;
  void *s48c7f6[2];
  virtual  ~S48C7(); // _ZN5S48C7D1Ev
  virtual void  v11(); // _ZN5S48C73v11Ev
  virtual void  v12(); // _ZN5S48C73v12Ev
  virtual void  v13(); // _ZN5S48C73v13Ev
  virtual void  v14(); // _ZN5S48C73v14Ev
  virtual void  v15(); // _ZN5S48C73v15Ev
  virtual void  v16(); // _ZN5S48C73v16Ev
  virtual void  v17(); // _ZN5S48C73v17Ev
  virtual void  v18(); // _ZN5S48C73v18Ev
  virtual void  v19(); // _ZN5S48C73v19Ev
  virtual void  v20(); // _ZN5S48C73v20Ev
  virtual void  v21(); // _ZN5S48C73v21Ev
  virtual void  v22(); // _ZN5S48C73v22Ev
  virtual void  v23(); // _ZN5S48C73v23Ev
  virtual void  v24(); // _ZN5S48C73v24Ev
  virtual void  v25(); // _ZN5S48C73v25Ev
  virtual void  v26(); // _ZN5S48C73v26Ev
  virtual void  v27(); // _ZN5S48C73v27Ev
  virtual void  v28(); // _ZN5S48C73v28Ev
  virtual void  v29(); // _ZN5S48C73v29Ev
  virtual void  v30(); // _ZN5S48C73v30Ev
  virtual void  v31(); // _ZN5S48C73v31Ev
  virtual void  v32(); // _ZN5S48C73v32Ev
  virtual void  v33(); // _ZN5S48C73v33Ev
  virtual void  v34(); // _ZN5S48C73v34Ev
  virtual void  v35(); // _ZN5S48C73v35Ev
  virtual void  v36(); // _ZN5S48C73v36Ev
  virtual void  v37(); // _ZN5S48C73v37Ev
  virtual void  v38(); // _ZN5S48C73v38Ev
  virtual void  v39(); // _ZN5S48C73v39Ev
  virtual void  v40(); // _ZN5S48C73v40Ev
  virtual void  v41(); // _ZN5S48C73v41Ev
  virtual void  v42(); // _ZN5S48C73v42Ev
  virtual void  v43(); // _ZN5S48C73v43Ev
  virtual void  v44(); // _ZN5S48C73v44Ev
  virtual void  v45(); // _ZN5S48C73v45Ev
  virtual void  v46(); // _ZN5S48C73v46Ev
  virtual void  v47(); // _ZN5S48C73v47Ev
  virtual void  v48(); // _ZN5S48C73v48Ev
  virtual void  v49(); // _ZN5S48C73v49Ev
  virtual void  v50(); // _ZN5S48C73v50Ev
  virtual void  v51(); // _ZN5S48C73v51Ev
  virtual void  v52(); // _ZN5S48C73v52Ev
  virtual void  v53(); // _ZN5S48C73v53Ev
  virtual void  v54(); // _ZN5S48C73v54Ev
  virtual void  v55(); // _ZN5S48C73v55Ev
  virtual void  v56(); // _ZN5S48C73v56Ev
  virtual void  v57(); // _ZN5S48C73v57Ev
  virtual void  v58(); // _ZN5S48C73v58Ev
  virtual void  v59(); // _ZN5S48C73v59Ev
  virtual void  v60(); // _ZN5S48C73v60Ev
  virtual void  v61(); // _ZN5S48C73v61Ev
  virtual void  v62(); // _ZN5S48C73v62Ev
  virtual void  v63(); // _ZN5S48C73v63Ev
  virtual void  v64(); // _ZN5S48C73v64Ev
  virtual void  v65(); // _ZN5S48C73v65Ev
  virtual void  v66(); // _ZN5S48C73v66Ev
  virtual void  v67(); // _ZN5S48C73v67Ev
  virtual void  v68(); // _ZN5S48C73v68Ev
  virtual void  v69(); // _ZN5S48C73v69Ev
  virtual void  v70(); // _ZN5S48C73v70Ev
  virtual void  v71(); // _ZN5S48C73v71Ev
  virtual void  v72(); // _ZN5S48C73v72Ev
  virtual void  v73(); // _ZN5S48C73v73Ev
  virtual void  v74(); // _ZN5S48C73v74Ev
  S48C7(); // tgen
};
//SIG(-1 S48C7) 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]}


 S48C7 ::~S48C7(){ note_dtor("S48C7", this);}
void  S48C7 ::v11(){vfunc_called(this, "_ZN5S48C73v11Ev");}
void  S48C7 ::v12(){vfunc_called(this, "_ZN5S48C73v12Ev");}
void  S48C7 ::v13(){vfunc_called(this, "_ZN5S48C73v13Ev");}
void  S48C7 ::v14(){vfunc_called(this, "_ZN5S48C73v14Ev");}
void  S48C7 ::v15(){vfunc_called(this, "_ZN5S48C73v15Ev");}
void  S48C7 ::v16(){vfunc_called(this, "_ZN5S48C73v16Ev");}
void  S48C7 ::v17(){vfunc_called(this, "_ZN5S48C73v17Ev");}
void  S48C7 ::v18(){vfunc_called(this, "_ZN5S48C73v18Ev");}
void  S48C7 ::v19(){vfunc_called(this, "_ZN5S48C73v19Ev");}
void  S48C7 ::v20(){vfunc_called(this, "_ZN5S48C73v20Ev");}
void  S48C7 ::v21(){vfunc_called(this, "_ZN5S48C73v21Ev");}
void  S48C7 ::v22(){vfunc_called(this, "_ZN5S48C73v22Ev");}
void  S48C7 ::v23(){vfunc_called(this, "_ZN5S48C73v23Ev");}
void  S48C7 ::v24(){vfunc_called(this, "_ZN5S48C73v24Ev");}
void  S48C7 ::v25(){vfunc_called(this, "_ZN5S48C73v25Ev");}
void  S48C7 ::v26(){vfunc_called(this, "_ZN5S48C73v26Ev");}
void  S48C7 ::v27(){vfunc_called(this, "_ZN5S48C73v27Ev");}
void  S48C7 ::v28(){vfunc_called(this, "_ZN5S48C73v28Ev");}
void  S48C7 ::v29(){vfunc_called(this, "_ZN5S48C73v29Ev");}
void  S48C7 ::v30(){vfunc_called(this, "_ZN5S48C73v30Ev");}
void  S48C7 ::v31(){vfunc_called(this, "_ZN5S48C73v31Ev");}
void  S48C7 ::v32(){vfunc_called(this, "_ZN5S48C73v32Ev");}
void  S48C7 ::v33(){vfunc_called(this, "_ZN5S48C73v33Ev");}
void  S48C7 ::v34(){vfunc_called(this, "_ZN5S48C73v34Ev");}
void  S48C7 ::v35(){vfunc_called(this, "_ZN5S48C73v35Ev");}
void  S48C7 ::v36(){vfunc_called(this, "_ZN5S48C73v36Ev");}
void  S48C7 ::v37(){vfunc_called(this, "_ZN5S48C73v37Ev");}
void  S48C7 ::v38(){vfunc_called(this, "_ZN5S48C73v38Ev");}
void  S48C7 ::v39(){vfunc_called(this, "_ZN5S48C73v39Ev");}
void  S48C7 ::v40(){vfunc_called(this, "_ZN5S48C73v40Ev");}
void  S48C7 ::v41(){vfunc_called(this, "_ZN5S48C73v41Ev");}
void  S48C7 ::v42(){vfunc_called(this, "_ZN5S48C73v42Ev");}
void  S48C7 ::v43(){vfunc_called(this, "_ZN5S48C73v43Ev");}
void  S48C7 ::v44(){vfunc_called(this, "_ZN5S48C73v44Ev");}
void  S48C7 ::v45(){vfunc_called(this, "_ZN5S48C73v45Ev");}
void  S48C7 ::v46(){vfunc_called(this, "_ZN5S48C73v46Ev");}
void  S48C7 ::v47(){vfunc_called(this, "_ZN5S48C73v47Ev");}
void  S48C7 ::v48(){vfunc_called(this, "_ZN5S48C73v48Ev");}
void  S48C7 ::v49(){vfunc_called(this, "_ZN5S48C73v49Ev");}
void  S48C7 ::v50(){vfunc_called(this, "_ZN5S48C73v50Ev");}
void  S48C7 ::v51(){vfunc_called(this, "_ZN5S48C73v51Ev");}
void  S48C7 ::v52(){vfunc_called(this, "_ZN5S48C73v52Ev");}
void  S48C7 ::v53(){vfunc_called(this, "_ZN5S48C73v53Ev");}
void  S48C7 ::v54(){vfunc_called(this, "_ZN5S48C73v54Ev");}
void  S48C7 ::v55(){vfunc_called(this, "_ZN5S48C73v55Ev");}
void  S48C7 ::v56(){vfunc_called(this, "_ZN5S48C73v56Ev");}
void  S48C7 ::v57(){vfunc_called(this, "_ZN5S48C73v57Ev");}
void  S48C7 ::v58(){vfunc_called(this, "_ZN5S48C73v58Ev");}
void  S48C7 ::v59(){vfunc_called(this, "_ZN5S48C73v59Ev");}
void  S48C7 ::v60(){vfunc_called(this, "_ZN5S48C73v60Ev");}
void  S48C7 ::v61(){vfunc_called(this, "_ZN5S48C73v61Ev");}
void  S48C7 ::v62(){vfunc_called(this, "_ZN5S48C73v62Ev");}
void  S48C7 ::v63(){vfunc_called(this, "_ZN5S48C73v63Ev");}
void  S48C7 ::v64(){vfunc_called(this, "_ZN5S48C73v64Ev");}
void  S48C7 ::v65(){vfunc_called(this, "_ZN5S48C73v65Ev");}
void  S48C7 ::v66(){vfunc_called(this, "_ZN5S48C73v66Ev");}
void  S48C7 ::v67(){vfunc_called(this, "_ZN5S48C73v67Ev");}
void  S48C7 ::v68(){vfunc_called(this, "_ZN5S48C73v68Ev");}
void  S48C7 ::v69(){vfunc_called(this, "_ZN5S48C73v69Ev");}
void  S48C7 ::v70(){vfunc_called(this, "_ZN5S48C73v70Ev");}
void  S48C7 ::v71(){vfunc_called(this, "_ZN5S48C73v71Ev");}
void  S48C7 ::v72(){vfunc_called(this, "_ZN5S48C73v72Ev");}
void  S48C7 ::v73(){vfunc_called(this, "_ZN5S48C73v73Ev");}
void  S48C7 ::v74(){vfunc_called(this, "_ZN5S48C73v74Ev");}
S48C7 ::S48C7(){ note_ctor("S48C7", this);} // tgen

static void Test_S48C7()
{
  extern Class_Descriptor cd_S48C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S48C7, buf);
    S48C7 *dp, &lv = *(dp=new (buf) S48C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S48C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S48C7)");
    check_field_offset(lv, s48c7f0, ABISELECT(8,4), "S48C7.s48c7f0");
    check_field_offset(lv, s48c7f1, ABISELECT(16,8), "S48C7.s48c7f1");
    check_field_offset(lv, s48c7f2, ABISELECT(24,16), "S48C7.s48c7f2");
    check_field_offset(lv, s48c7f3, ABISELECT(56,32), "S48C7.s48c7f3");
    check_field_offset(lv, s48c7f4, ABISELECT(64,40), "S48C7.s48c7f4");
    check_field_offset(lv, s48c7f5, ABISELECT(72,44), "S48C7.s48c7f5");
    check_field_offset(lv, s48c7f6, ABISELECT(80,52), "S48C7.s48c7f6");
    test_class_info(&lv, &cd_S48C7);
    dp->~S48C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS48C7(Test_S48C7, "S48C7", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN5S48C7C1Ev();
extern void _ZN5S48C7D1Ev();
Name_Map name_map_S48C7[] = {
  NSPAIR(_ZN5S48C7C1Ev),
  NSPAIR(_ZN5S48C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI5S48C7[];
extern void _ZN5S48C7D1Ev();
extern void _ZN5S48C7D0Ev();
extern void _ZN5S48C73v11Ev();
extern void _ZN5S48C73v12Ev();
extern void _ZN5S48C73v13Ev();
extern void _ZN5S48C73v14Ev();
extern void _ZN5S48C73v15Ev();
extern void _ZN5S48C73v16Ev();
extern void _ZN5S48C73v17Ev();
extern void _ZN5S48C73v18Ev();
extern void _ZN5S48C73v19Ev();
extern void _ZN5S48C73v20Ev();
extern void _ZN5S48C73v21Ev();
extern void _ZN5S48C73v22Ev();
extern void _ZN5S48C73v23Ev();
extern void _ZN5S48C73v24Ev();
extern void _ZN5S48C73v25Ev();
extern void _ZN5S48C73v26Ev();
extern void _ZN5S48C73v27Ev();
extern void _ZN5S48C73v28Ev();
extern void _ZN5S48C73v29Ev();
extern void _ZN5S48C73v30Ev();
extern void _ZN5S48C73v31Ev();
extern void _ZN5S48C73v32Ev();
extern void _ZN5S48C73v33Ev();
extern void _ZN5S48C73v34Ev();
extern void _ZN5S48C73v35Ev();
extern void _ZN5S48C73v36Ev();
extern void _ZN5S48C73v37Ev();
extern void _ZN5S48C73v38Ev();
extern void _ZN5S48C73v39Ev();
extern void _ZN5S48C73v40Ev();
extern void _ZN5S48C73v41Ev();
extern void _ZN5S48C73v42Ev();
extern void _ZN5S48C73v43Ev();
extern void _ZN5S48C73v44Ev();
extern void _ZN5S48C73v45Ev();
extern void _ZN5S48C73v46Ev();
extern void _ZN5S48C73v47Ev();
extern void _ZN5S48C73v48Ev();
extern void _ZN5S48C73v49Ev();
extern void _ZN5S48C73v50Ev();
extern void _ZN5S48C73v51Ev();
extern void _ZN5S48C73v52Ev();
extern void _ZN5S48C73v53Ev();
extern void _ZN5S48C73v54Ev();
extern void _ZN5S48C73v55Ev();
extern void _ZN5S48C73v56Ev();
extern void _ZN5S48C73v57Ev();
extern void _ZN5S48C73v58Ev();
extern void _ZN5S48C73v59Ev();
extern void _ZN5S48C73v60Ev();
extern void _ZN5S48C73v61Ev();
extern void _ZN5S48C73v62Ev();
extern void _ZN5S48C73v63Ev();
extern void _ZN5S48C73v64Ev();
extern void _ZN5S48C73v65Ev();
extern void _ZN5S48C73v66Ev();
extern void _ZN5S48C73v67Ev();
extern void _ZN5S48C73v68Ev();
extern void _ZN5S48C73v69Ev();
extern void _ZN5S48C73v70Ev();
extern void _ZN5S48C73v71Ev();
extern void _ZN5S48C73v72Ev();
extern void _ZN5S48C73v73Ev();
extern void _ZN5S48C73v74Ev();
static  VTBL_ENTRY vtc_S48C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S48C7[0]),
  (VTBL_ENTRY)&_ZN5S48C7D1Ev,
  (VTBL_ENTRY)&_ZN5S48C7D0Ev,
  (VTBL_ENTRY)&_ZN5S48C73v11Ev,
  (VTBL_ENTRY)&_ZN5S48C73v12Ev,
  (VTBL_ENTRY)&_ZN5S48C73v13Ev,
  (VTBL_ENTRY)&_ZN5S48C73v14Ev,
  (VTBL_ENTRY)&_ZN5S48C73v15Ev,
  (VTBL_ENTRY)&_ZN5S48C73v16Ev,
  (VTBL_ENTRY)&_ZN5S48C73v17Ev,
  (VTBL_ENTRY)&_ZN5S48C73v18Ev,
  (VTBL_ENTRY)&_ZN5S48C73v19Ev,
  (VTBL_ENTRY)&_ZN5S48C73v20Ev,
  (VTBL_ENTRY)&_ZN5S48C73v21Ev,
  (VTBL_ENTRY)&_ZN5S48C73v22Ev,
  (VTBL_ENTRY)&_ZN5S48C73v23Ev,
  (VTBL_ENTRY)&_ZN5S48C73v24Ev,
  (VTBL_ENTRY)&_ZN5S48C73v25Ev,
  (VTBL_ENTRY)&_ZN5S48C73v26Ev,
  (VTBL_ENTRY)&_ZN5S48C73v27Ev,
  (VTBL_ENTRY)&_ZN5S48C73v28Ev,
  (VTBL_ENTRY)&_ZN5S48C73v29Ev,
  (VTBL_ENTRY)&_ZN5S48C73v30Ev,
  (VTBL_ENTRY)&_ZN5S48C73v31Ev,
  (VTBL_ENTRY)&_ZN5S48C73v32Ev,
  (VTBL_ENTRY)&_ZN5S48C73v33Ev,
  (VTBL_ENTRY)&_ZN5S48C73v34Ev,
  (VTBL_ENTRY)&_ZN5S48C73v35Ev,
  (VTBL_ENTRY)&_ZN5S48C73v36Ev,
  (VTBL_ENTRY)&_ZN5S48C73v37Ev,
  (VTBL_ENTRY)&_ZN5S48C73v38Ev,
  (VTBL_ENTRY)&_ZN5S48C73v39Ev,
  (VTBL_ENTRY)&_ZN5S48C73v40Ev,
  (VTBL_ENTRY)&_ZN5S48C73v41Ev,
  (VTBL_ENTRY)&_ZN5S48C73v42Ev,
  (VTBL_ENTRY)&_ZN5S48C73v43Ev,
  (VTBL_ENTRY)&_ZN5S48C73v44Ev,
  (VTBL_ENTRY)&_ZN5S48C73v45Ev,
  (VTBL_ENTRY)&_ZN5S48C73v46Ev,
  (VTBL_ENTRY)&_ZN5S48C73v47Ev,
  (VTBL_ENTRY)&_ZN5S48C73v48Ev,
  (VTBL_ENTRY)&_ZN5S48C73v49Ev,
  (VTBL_ENTRY)&_ZN5S48C73v50Ev,
  (VTBL_ENTRY)&_ZN5S48C73v51Ev,
  (VTBL_ENTRY)&_ZN5S48C73v52Ev,
  (VTBL_ENTRY)&_ZN5S48C73v53Ev,
  (VTBL_ENTRY)&_ZN5S48C73v54Ev,
  (VTBL_ENTRY)&_ZN5S48C73v55Ev,
  (VTBL_ENTRY)&_ZN5S48C73v56Ev,
  (VTBL_ENTRY)&_ZN5S48C73v57Ev,
  (VTBL_ENTRY)&_ZN5S48C73v58Ev,
  (VTBL_ENTRY)&_ZN5S48C73v59Ev,
  (VTBL_ENTRY)&_ZN5S48C73v60Ev,
  (VTBL_ENTRY)&_ZN5S48C73v61Ev,
  (VTBL_ENTRY)&_ZN5S48C73v62Ev,
  (VTBL_ENTRY)&_ZN5S48C73v63Ev,
  (VTBL_ENTRY)&_ZN5S48C73v64Ev,
  (VTBL_ENTRY)&_ZN5S48C73v65Ev,
  (VTBL_ENTRY)&_ZN5S48C73v66Ev,
  (VTBL_ENTRY)&_ZN5S48C73v67Ev,
  (VTBL_ENTRY)&_ZN5S48C73v68Ev,
  (VTBL_ENTRY)&_ZN5S48C73v69Ev,
  (VTBL_ENTRY)&_ZN5S48C73v70Ev,
  (VTBL_ENTRY)&_ZN5S48C73v71Ev,
  (VTBL_ENTRY)&_ZN5S48C73v72Ev,
  (VTBL_ENTRY)&_ZN5S48C73v73Ev,
  (VTBL_ENTRY)&_ZN5S48C73v74Ev,
};
extern VTBL_ENTRY _ZTI5S48C7[];
extern  VTBL_ENTRY _ZTV5S48C7[];
Class_Descriptor cd_S48C7 = {  "S48C7", // class name
  0,0,//no base classes
  &(vtc_S48C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI5S48C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV5S48C7),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  S48C18  {
  int s48c18f0[3];
  void  mf48c18(); // _ZN6S48C187mf48c18Ev
};
//SIG(-1 S48C18) C1{ m Fi[3]}


void  S48C18 ::mf48c18(){}

static void Test_S48C18()
{
  {
    init_simple_test("S48C18");
    S48C18 lv;
    check2(sizeof(lv), 12, "sizeof(S48C18)");
    check2(__alignof__(lv), 4, "__alignof__(S48C18)");
    check_field_offset(lv, s48c18f0, 0, "S48C18.s48c18f0");
  }
}
static Arrange_To_Call_Me vS48C18(Test_S48C18, "S48C18", 12);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S48C6  : S48C7 {
  ::S28C55 s48c6f0;
  ::S28C55 s48c6f1;
  ::S28C13_nt s48c6f2;
  int s48c6f3;
  char s48c6f4[4];
  void *s48c6f5[2];
  ::S28C48 s48c6f6;
  unsigned int s48c6f7:1;
  unsigned int s48c6f8:1;
  unsigned int s48c6f9:1;
  unsigned int s48c6f10:1;
  unsigned int s48c6f11:1;
  unsigned int s48c6f12:1;
  unsigned int s48c6f13:1;
  unsigned int s48c6f14:1;
  unsigned int s48c6f15:1;
  unsigned int s48c6f16:1;
  unsigned int s48c6f17:1;
  unsigned int s48c6f18:1;
  unsigned int s48c6f19:1;
  unsigned int s48c6f20:1;
  unsigned int s48c6f21:1;
  unsigned int s48c6f22:1;
  unsigned int s48c6f23:1;
  unsigned int s48c6f24:1;
  unsigned int s48c6f25:1;
  unsigned int s48c6f26:1;
  unsigned int s48c6f27:1;
  unsigned int s48c6f28:1;
  unsigned int s48c6f29:1;
  unsigned int s48c6f30:1;
  unsigned int s48c6f31:1;
  unsigned int s48c6f32:1;
  unsigned int s48c6f33:1;
  unsigned int s48c6f34:1;
  unsigned int s48c6f35:1;
  unsigned int s48c6f36:1;
  unsigned int s48c6f37:1;
  unsigned int s48c6f38:1;
  unsigned int s48c6f39:1;
  unsigned int s48c6f40:1;
  unsigned int s48c6f41:1;
  unsigned int s48c6f42:1;
  unsigned int s48c6f43:1;
  unsigned int s48c6f44:1;
  unsigned int s48c6f45:1;
  unsigned int s48c6f46:1;
  unsigned int s48c6f47:1;
  unsigned int s48c6f48:1;
  unsigned int s48c6f49:1;
  unsigned int s48c6f50:1;
  unsigned int s48c6f51:1;
  unsigned int s48c6f52:1;
  unsigned int s48c6f53:1;
  unsigned int s48c6f54:1;
  unsigned int s48c6f55:1;
  unsigned int s48c6f56:1;
  unsigned int s48c6f57:1;
  unsigned int s48c6f58:1;
  unsigned int s48c6f59:1;
  unsigned int s48c6f60:1;
  unsigned int s48c6f61:1;
  unsigned int s48c6f62:1;
  unsigned int s48c6f63:1;
  unsigned int s48c6f64:1;
  unsigned int s48c6f65:1;
  unsigned int s48c6f66:1;
  unsigned int s48c6f67:1;
  unsigned int s48c6f68:1;
  unsigned int s48c6f69:1;
  unsigned int s48c6f70:1;
  unsigned int s48c6f71:1;
  unsigned int s48c6f72:1;
  unsigned int s48c6f73:1;
  unsigned int s48c6f74:1;
  unsigned int s48c6f75:1;
  unsigned int s48c6f76:1;
  unsigned int s48c6f77:1;
  unsigned int s48c6f78:1;
  unsigned int s48c6f79:1;
  unsigned int s48c6f80:1;
  unsigned int s48c6f81:1;
  unsigned int s48c6f82:1;
  unsigned int s48c6f83:1;
  int s48c6f84[5];
  void *s48c6f85[2];
  int s48c6f86[3];
  ::S28C9_nt s48c6f87;
  ::S28C9_nt s48c6f88;
  ::S28C9_nt s48c6f89;
  ::S28C44 s48c6f90;
  ::S28C44 s48c6f91;
  int s48c6f92;
  void *s48c6f93[2];
  ::S28C18_nt s48c6f94;
  ::S48C18 s48c6f95;
  ::S28C18_nt s48c6f96;
  ::S28C18_nt s48c6f97;
  void *s48c6f98;
  ::S28C9_nt s48c6f99;
  ::S28C44 s48c6f100;
  ::S28C18_nt s48c6f101;
  ::S48C18 s48c6f102;
  int s48c6f103;
  ::S28C18_nt s48c6f104;
  ::S28C18_nt s48c6f105;
  void *s48c6f106;
  int s48c6f107;
  char s48c6f108;
  ::S48C18 s48c6f109;
  ::S48C18 s48c6f110;
  void *s48c6f111;
  int s48c6f112;
  void *s48c6f113;
  ::S28C40 s48c6f114;
  ::S28C34 s48c6f115;
  ::S28C32 s48c6f116;
  virtual  ~S48C6(); // _ZN5S48C6D1Ev
  virtual void  v75(); // _ZN5S48C63v75Ev
  virtual void  v76(); // _ZN5S48C63v76Ev
  virtual void  v77(); // _ZN5S48C63v77Ev
  virtual void  v78(); // _ZN5S48C63v78Ev
  virtual void  v79(); // _ZN5S48C63v79Ev
  virtual void  v80(); // _ZN5S48C63v80Ev
  virtual void  v81(); // _ZN5S48C63v81Ev
  virtual void  v82(); // _ZN5S48C63v82Ev
  virtual void  v83(); // _ZN5S48C63v83Ev
  virtual void  v84(); // _ZN5S48C63v84Ev
  virtual void  v85(); // _ZN5S48C63v85Ev
  virtual void  v86(); // _ZN5S48C63v86Ev
  virtual void  v87(); // _ZN5S48C63v87Ev
  virtual void  v88(); // _ZN5S48C63v88Ev
  virtual void  v89(); // _ZN5S48C63v89Ev
  virtual void  v90(); // _ZN5S48C63v90Ev
  virtual void  v91(); // _ZN5S48C63v91Ev
  virtual void  v92(); // _ZN5S48C63v92Ev
  virtual void  v93(); // _ZN5S48C63v93Ev
  virtual void  v94(); // _ZN5S48C63v94Ev
  virtual void  v95(); // _ZN5S48C63v95Ev
  virtual void  v96(); // _ZN5S48C63v96Ev
  virtual void  v97(); // _ZN5S48C63v97Ev
  virtual void  v98(); // _ZN5S48C63v98Ev
  virtual void  v99(); // _ZN5S48C63v99Ev
  virtual void  v100(); // _ZN5S48C64v100Ev
  virtual void  v101(); // _ZN5S48C64v101Ev
  virtual void  v102(); // _ZN5S48C64v102Ev
  virtual void  v103(); // _ZN5S48C64v103Ev
  virtual void  v104(); // _ZN5S48C64v104Ev
  virtual void  v105(); // _ZN5S48C64v105Ev
  virtual void  v106(); // _ZN5S48C64v106Ev
  virtual void  v107(); // _ZN5S48C64v107Ev
  virtual void  v108(); // _ZN5S48C64v108Ev
  virtual void  v109(); // _ZN5S48C64v109Ev
  virtual void  v110(); // _ZN5S48C64v110Ev
  virtual void  v111(); // _ZN5S48C64v111Ev
  virtual void  v112(); // _ZN5S48C64v112Ev
  virtual void  v113(); // _ZN5S48C64v113Ev
  virtual void  v114(); // _ZN5S48C64v114Ev
  virtual void  v115(); // _ZN5S48C64v115Ev
  virtual void  v116(); // _ZN5S48C64v116Ev
  virtual void  v117(); // _ZN5S48C64v117Ev
  virtual void  v118(); // _ZN5S48C64v118Ev
  virtual void  v119(); // _ZN5S48C64v119Ev
  virtual void  v120(); // _ZN5S48C64v120Ev
  virtual void  v121(); // _ZN5S48C64v121Ev
  virtual void  v122(); // _ZN5S48C64v122Ev
  virtual void  v123(); // _ZN5S48C64v123Ev
  virtual void  v124(); // _ZN5S48C64v124Ev
  virtual void  v125(); // _ZN5S48C64v125Ev
  virtual void  v126(); // _ZN5S48C64v126Ev
  virtual void  v127(); // _ZN5S48C64v127Ev
  virtual void  v128(); // _ZN5S48C64v128Ev
  virtual void  v129(); // _ZN5S48C64v129Ev
  virtual void  v130(); // _ZN5S48C64v130Ev
  virtual void  v131(); // _ZN5S48C64v131Ev
  virtual void  v132(); // _ZN5S48C64v132Ev
  virtual void  v133(); // _ZN5S48C64v133Ev
  virtual void  v134(); // _ZN5S48C64v134Ev
  virtual void  v135(); // _ZN5S48C64v135Ev
  virtual void  v136(); // _ZN5S48C64v136Ev
  virtual void  v137(); // _ZN5S48C64v137Ev
  virtual void  v138(); // _ZN5S48C64v138Ev
  virtual void  v139(); // _ZN5S48C64v139Ev
  virtual void  v140(); // _ZN5S48C64v140Ev
  virtual void  v141(); // _ZN5S48C64v141Ev
  virtual void  v142(); // _ZN5S48C64v142Ev
  virtual void  v143(); // _ZN5S48C64v143Ev
  virtual void  v144(); // _ZN5S48C64v144Ev
  virtual void  v145(); // _ZN5S48C64v145Ev
  virtual void  v146(); // _ZN5S48C64v146Ev
  virtual void  v147(); // _ZN5S48C64v147Ev
  virtual void  v148(); // _ZN5S48C64v148Ev
  virtual void  v149(); // _ZN5S48C64v149Ev
  virtual void  v150(); // _ZN5S48C64v150Ev
  virtual void  v151(); // _ZN5S48C64v151Ev
  virtual void  v152(); // _ZN5S48C64v152Ev
  virtual void  v153(); // _ZN5S48C64v153Ev
  virtual void  v154(); // _ZN5S48C64v154Ev
  virtual void  v155(); // _ZN5S48C64v155Ev
  virtual void  v156(); // _ZN5S48C64v156Ev
  virtual void  v157(); // _ZN5S48C64v157Ev
  virtual void  v158(); // _ZN5S48C64v158Ev
  virtual void  v159(); // _ZN5S48C64v159Ev
  virtual void  v160(); // _ZN5S48C64v160Ev
  virtual void  v161(); // _ZN5S48C64v161Ev
  virtual void  v162(); // _ZN5S48C64v162Ev
  virtual void  v163(); // _ZN5S48C64v163Ev
  virtual void  v164(); // _ZN5S48C64v164Ev
  virtual void  v165(); // _ZN5S48C64v165Ev
  virtual void  v166(); // _ZN5S48C64v166Ev
  virtual void  v167(); // _ZN5S48C64v167Ev
  virtual void  v168(); // _ZN5S48C64v168Ev
  virtual void  v169(); // _ZN5S48C64v169Ev
  virtual void  v170(); // _ZN5S48C64v170Ev
  virtual void  v171(); // _ZN5S48C64v171Ev
  virtual void  v172(); // _ZN5S48C64v172Ev
  virtual void  v173(); // _ZN5S48C64v173Ev
  virtual void  v174(); // _ZN5S48C64v174Ev
  virtual void  v175(); // _ZN5S48C64v175Ev
  virtual void  v176(); // _ZN5S48C64v176Ev
  virtual void  v177(); // _ZN5S48C64v177Ev
  virtual void  v178(); // _ZN5S48C64v178Ev
  virtual void  v179(); // _ZN5S48C64v179Ev
  virtual void  v180(); // _ZN5S48C64v180Ev
  virtual void  v181(); // _ZN5S48C64v181Ev
  virtual void  v182(); // _ZN5S48C64v182Ev
  virtual void  v183(); // _ZN5S48C64v183Ev
  virtual void  v184(); // _ZN5S48C64v184Ev
  virtual void  v185(); // _ZN5S48C64v185Ev
  virtual void  v186(); // _ZN5S48C64v186Ev
  virtual void  v187(); // _ZN5S48C64v187Ev
  virtual void  v188(); // _ZN5S48C64v188Ev
  virtual void  v189(); // _ZN5S48C64v189Ev
  virtual void  v190(); // _ZN5S48C64v190Ev
  virtual void  v191(); // _ZN5S48C64v191Ev
  virtual void  v192(); // _ZN5S48C64v192Ev
  virtual void  v193(); // _ZN5S48C64v193Ev
  virtual void  v194(); // _ZN5S48C64v194Ev
  virtual void  v195(); // _ZN5S48C64v195Ev
  virtual void  v196(); // _ZN5S48C64v196Ev
  virtual void  v197(); // _ZN5S48C64v197Ev
  virtual void  v198(); // _ZN5S48C64v198Ev
  virtual void  v199(); // _ZN5S48C64v199Ev
  virtual void  v200(); // _ZN5S48C64v200Ev
  virtual void  v201(); // _ZN5S48C64v201Ev
  virtual void  v202(); // _ZN5S48C64v202Ev
  virtual void  v203(); // _ZN5S48C64v203Ev
  virtual void  v204(); // _ZN5S48C64v204Ev
  virtual void  v205(); // _ZN5S48C64v205Ev
  virtual void  v206(); // _ZN5S48C64v206Ev
  virtual void  v207(); // _ZN5S48C64v207Ev
  virtual void  v208(); // _ZN5S48C64v208Ev
  virtual void  v209(); // _ZN5S48C64v209Ev
  virtual void  v210(); // _ZN5S48C64v210Ev
  virtual void  v211(); // _ZN5S48C64v211Ev
  virtual void  v212(); // _ZN5S48C64v212Ev
  virtual void  v213(); // _ZN5S48C64v213Ev
  virtual void  v214(); // _ZN5S48C64v214Ev
  virtual void  v215(); // _ZN5S48C64v215Ev
  virtual void  v216(); // _ZN5S48C64v216Ev
  virtual void  v217(); // _ZN5S48C64v217Ev
  S48C6(); // tgen
};
//SIG(-1 S48C6) C1{ BC2{ vd v144 v145 v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 FC4{ BC5{ BC6{ m Fp Fi[2]}}} FC4 FC7{ m Fi} Fi Fc[4] Fp[2] FC8{ BC9{ BC6}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC3 FC3 FC3 FC10{ BC11{ BC6}} FC10 Fi Fp[2] FC12{ m Fi[3]} FC13{ m Fi[3]} FC12 FC12 Fp FC3 FC10 FC12 FC13 Fi FC12 FC12 Fp Fi Fc FC13 FC13 Fp Fi Fp FC14{ BC15{ BC6}} FC16{ BC17{ BC6}} FC18{ BC19{ BC6}}}


 S48C6 ::~S48C6(){ note_dtor("S48C6", this);}
void  S48C6 ::v75(){vfunc_called(this, "_ZN5S48C63v75Ev");}
void  S48C6 ::v76(){vfunc_called(this, "_ZN5S48C63v76Ev");}
void  S48C6 ::v77(){vfunc_called(this, "_ZN5S48C63v77Ev");}
void  S48C6 ::v78(){vfunc_called(this, "_ZN5S48C63v78Ev");}
void  S48C6 ::v79(){vfunc_called(this, "_ZN5S48C63v79Ev");}
void  S48C6 ::v80(){vfunc_called(this, "_ZN5S48C63v80Ev");}
void  S48C6 ::v81(){vfunc_called(this, "_ZN5S48C63v81Ev");}
void  S48C6 ::v82(){vfunc_called(this, "_ZN5S48C63v82Ev");}
void  S48C6 ::v83(){vfunc_called(this, "_ZN5S48C63v83Ev");}
void  S48C6 ::v84(){vfunc_called(this, "_ZN5S48C63v84Ev");}
void  S48C6 ::v85(){vfunc_called(this, "_ZN5S48C63v85Ev");}
void  S48C6 ::v86(){vfunc_called(this, "_ZN5S48C63v86Ev");}
void  S48C6 ::v87(){vfunc_called(this, "_ZN5S48C63v87Ev");}
void  S48C6 ::v88(){vfunc_called(this, "_ZN5S48C63v88Ev");}
void  S48C6 ::v89(){vfunc_called(this, "_ZN5S48C63v89Ev");}
void  S48C6 ::v90(){vfunc_called(this, "_ZN5S48C63v90Ev");}
void  S48C6 ::v91(){vfunc_called(this, "_ZN5S48C63v91Ev");}
void  S48C6 ::v92(){vfunc_called(this, "_ZN5S48C63v92Ev");}
void  S48C6 ::v93(){vfunc_called(this, "_ZN5S48C63v93Ev");}
void  S48C6 ::v94(){vfunc_called(this, "_ZN5S48C63v94Ev");}
void  S48C6 ::v95(){vfunc_called(this, "_ZN5S48C63v95Ev");}
void  S48C6 ::v96(){vfunc_called(this, "_ZN5S48C63v96Ev");}
void  S48C6 ::v97(){vfunc_called(this, "_ZN5S48C63v97Ev");}
void  S48C6 ::v98(){vfunc_called(this, "_ZN5S48C63v98Ev");}
void  S48C6 ::v99(){vfunc_called(this, "_ZN5S48C63v99Ev");}
void  S48C6 ::v100(){vfunc_called(this, "_ZN5S48C64v100Ev");}
void  S48C6 ::v101(){vfunc_called(this, "_ZN5S48C64v101Ev");}
void  S48C6 ::v102(){vfunc_called(this, "_ZN5S48C64v102Ev");}
void  S48C6 ::v103(){vfunc_called(this, "_ZN5S48C64v103Ev");}
void  S48C6 ::v104(){vfunc_called(this, "_ZN5S48C64v104Ev");}
void  S48C6 ::v105(){vfunc_called(this, "_ZN5S48C64v105Ev");}
void  S48C6 ::v106(){vfunc_called(this, "_ZN5S48C64v106Ev");}
void  S48C6 ::v107(){vfunc_called(this, "_ZN5S48C64v107Ev");}
void  S48C6 ::v108(){vfunc_called(this, "_ZN5S48C64v108Ev");}
void  S48C6 ::v109(){vfunc_called(this, "_ZN5S48C64v109Ev");}
void  S48C6 ::v110(){vfunc_called(this, "_ZN5S48C64v110Ev");}
void  S48C6 ::v111(){vfunc_called(this, "_ZN5S48C64v111Ev");}
void  S48C6 ::v112(){vfunc_called(this, "_ZN5S48C64v112Ev");}
void  S48C6 ::v113(){vfunc_called(this, "_ZN5S48C64v113Ev");}
void  S48C6 ::v114(){vfunc_called(this, "_ZN5S48C64v114Ev");}
void  S48C6 ::v115(){vfunc_called(this, "_ZN5S48C64v115Ev");}
void  S48C6 ::v116(){vfunc_called(this, "_ZN5S48C64v116Ev");}
void  S48C6 ::v117(){vfunc_called(this, "_ZN5S48C64v117Ev");}
void  S48C6 ::v118(){vfunc_called(this, "_ZN5S48C64v118Ev");}
void  S48C6 ::v119(){vfunc_called(this, "_ZN5S48C64v119Ev");}
void  S48C6 ::v120(){vfunc_called(this, "_ZN5S48C64v120Ev");}
void  S48C6 ::v121(){vfunc_called(this, "_ZN5S48C64v121Ev");}
void  S48C6 ::v122(){vfunc_called(this, "_ZN5S48C64v122Ev");}
void  S48C6 ::v123(){vfunc_called(this, "_ZN5S48C64v123Ev");}
void  S48C6 ::v124(){vfunc_called(this, "_ZN5S48C64v124Ev");}
void  S48C6 ::v125(){vfunc_called(this, "_ZN5S48C64v125Ev");}
void  S48C6 ::v126(){vfunc_called(this, "_ZN5S48C64v126Ev");}
void  S48C6 ::v127(){vfunc_called(this, "_ZN5S48C64v127Ev");}
void  S48C6 ::v128(){vfunc_called(this, "_ZN5S48C64v128Ev");}
void  S48C6 ::v129(){vfunc_called(this, "_ZN5S48C64v129Ev");}
void  S48C6 ::v130(){vfunc_called(this, "_ZN5S48C64v130Ev");}
void  S48C6 ::v131(){vfunc_called(this, "_ZN5S48C64v131Ev");}
void  S48C6 ::v132(){vfunc_called(this, "_ZN5S48C64v132Ev");}
void  S48C6 ::v133(){vfunc_called(this, "_ZN5S48C64v133Ev");}
void  S48C6 ::v134(){vfunc_called(this, "_ZN5S48C64v134Ev");}
void  S48C6 ::v135(){vfunc_called(this, "_ZN5S48C64v135Ev");}
void  S48C6 ::v136(){vfunc_called(this, "_ZN5S48C64v136Ev");}
void  S48C6 ::v137(){vfunc_called(this, "_ZN5S48C64v137Ev");}
void  S48C6 ::v138(){vfunc_called(this, "_ZN5S48C64v138Ev");}
void  S48C6 ::v139(){vfunc_called(this, "_ZN5S48C64v139Ev");}
void  S48C6 ::v140(){vfunc_called(this, "_ZN5S48C64v140Ev");}
void  S48C6 ::v141(){vfunc_called(this, "_ZN5S48C64v141Ev");}
void  S48C6 ::v142(){vfunc_called(this, "_ZN5S48C64v142Ev");}
void  S48C6 ::v143(){vfunc_called(this, "_ZN5S48C64v143Ev");}
void  S48C6 ::v144(){vfunc_called(this, "_ZN5S48C64v144Ev");}
void  S48C6 ::v145(){vfunc_called(this, "_ZN5S48C64v145Ev");}
void  S48C6 ::v146(){vfunc_called(this, "_ZN5S48C64v146Ev");}
void  S48C6 ::v147(){vfunc_called(this, "_ZN5S48C64v147Ev");}
void  S48C6 ::v148(){vfunc_called(this, "_ZN5S48C64v148Ev");}
void  S48C6 ::v149(){vfunc_called(this, "_ZN5S48C64v149Ev");}
void  S48C6 ::v150(){vfunc_called(this, "_ZN5S48C64v150Ev");}
void  S48C6 ::v151(){vfunc_called(this, "_ZN5S48C64v151Ev");}
void  S48C6 ::v152(){vfunc_called(this, "_ZN5S48C64v152Ev");}
void  S48C6 ::v153(){vfunc_called(this, "_ZN5S48C64v153Ev");}
void  S48C6 ::v154(){vfunc_called(this, "_ZN5S48C64v154Ev");}
void  S48C6 ::v155(){vfunc_called(this, "_ZN5S48C64v155Ev");}
void  S48C6 ::v156(){vfunc_called(this, "_ZN5S48C64v156Ev");}
void  S48C6 ::v157(){vfunc_called(this, "_ZN5S48C64v157Ev");}
void  S48C6 ::v158(){vfunc_called(this, "_ZN5S48C64v158Ev");}
void  S48C6 ::v159(){vfunc_called(this, "_ZN5S48C64v159Ev");}
void  S48C6 ::v160(){vfunc_called(this, "_ZN5S48C64v160Ev");}
void  S48C6 ::v161(){vfunc_called(this, "_ZN5S48C64v161Ev");}
void  S48C6 ::v162(){vfunc_called(this, "_ZN5S48C64v162Ev");}
void  S48C6 ::v163(){vfunc_called(this, "_ZN5S48C64v163Ev");}
void  S48C6 ::v164(){vfunc_called(this, "_ZN5S48C64v164Ev");}
void  S48C6 ::v165(){vfunc_called(this, "_ZN5S48C64v165Ev");}
void  S48C6 ::v166(){vfunc_called(this, "_ZN5S48C64v166Ev");}
void  S48C6 ::v167(){vfunc_called(this, "_ZN5S48C64v167Ev");}
void  S48C6 ::v168(){vfunc_called(this, "_ZN5S48C64v168Ev");}
void  S48C6 ::v169(){vfunc_called(this, "_ZN5S48C64v169Ev");}
void  S48C6 ::v170(){vfunc_called(this, "_ZN5S48C64v170Ev");}
void  S48C6 ::v171(){vfunc_called(this, "_ZN5S48C64v171Ev");}
void  S48C6 ::v172(){vfunc_called(this, "_ZN5S48C64v172Ev");}
void  S48C6 ::v173(){vfunc_called(this, "_ZN5S48C64v173Ev");}
void  S48C6 ::v174(){vfunc_called(this, "_ZN5S48C64v174Ev");}
void  S48C6 ::v175(){vfunc_called(this, "_ZN5S48C64v175Ev");}
void  S48C6 ::v176(){vfunc_called(this, "_ZN5S48C64v176Ev");}
void  S48C6 ::v177(){vfunc_called(this, "_ZN5S48C64v177Ev");}
void  S48C6 ::v178(){vfunc_called(this, "_ZN5S48C64v178Ev");}
void  S48C6 ::v179(){vfunc_called(this, "_ZN5S48C64v179Ev");}
void  S48C6 ::v180(){vfunc_called(this, "_ZN5S48C64v180Ev");}
void  S48C6 ::v181(){vfunc_called(this, "_ZN5S48C64v181Ev");}
void  S48C6 ::v182(){vfunc_called(this, "_ZN5S48C64v182Ev");}
void  S48C6 ::v183(){vfunc_called(this, "_ZN5S48C64v183Ev");}
void  S48C6 ::v184(){vfunc_called(this, "_ZN5S48C64v184Ev");}
void  S48C6 ::v185(){vfunc_called(this, "_ZN5S48C64v185Ev");}
void  S48C6 ::v186(){vfunc_called(this, "_ZN5S48C64v186Ev");}
void  S48C6 ::v187(){vfunc_called(this, "_ZN5S48C64v187Ev");}
void  S48C6 ::v188(){vfunc_called(this, "_ZN5S48C64v188Ev");}
void  S48C6 ::v189(){vfunc_called(this, "_ZN5S48C64v189Ev");}
void  S48C6 ::v190(){vfunc_called(this, "_ZN5S48C64v190Ev");}
void  S48C6 ::v191(){vfunc_called(this, "_ZN5S48C64v191Ev");}
void  S48C6 ::v192(){vfunc_called(this, "_ZN5S48C64v192Ev");}
void  S48C6 ::v193(){vfunc_called(this, "_ZN5S48C64v193Ev");}
void  S48C6 ::v194(){vfunc_called(this, "_ZN5S48C64v194Ev");}
void  S48C6 ::v195(){vfunc_called(this, "_ZN5S48C64v195Ev");}
void  S48C6 ::v196(){vfunc_called(this, "_ZN5S48C64v196Ev");}
void  S48C6 ::v197(){vfunc_called(this, "_ZN5S48C64v197Ev");}
void  S48C6 ::v198(){vfunc_called(this, "_ZN5S48C64v198Ev");}
void  S48C6 ::v199(){vfunc_called(this, "_ZN5S48C64v199Ev");}
void  S48C6 ::v200(){vfunc_called(this, "_ZN5S48C64v200Ev");}
void  S48C6 ::v201(){vfunc_called(this, "_ZN5S48C64v201Ev");}
void  S48C6 ::v202(){vfunc_called(this, "_ZN5S48C64v202Ev");}
void  S48C6 ::v203(){vfunc_called(this, "_ZN5S48C64v203Ev");}
void  S48C6 ::v204(){vfunc_called(this, "_ZN5S48C64v204Ev");}
void  S48C6 ::v205(){vfunc_called(this, "_ZN5S48C64v205Ev");}
void  S48C6 ::v206(){vfunc_called(this, "_ZN5S48C64v206Ev");}
void  S48C6 ::v207(){vfunc_called(this, "_ZN5S48C64v207Ev");}
void  S48C6 ::v208(){vfunc_called(this, "_ZN5S48C64v208Ev");}
void  S48C6 ::v209(){vfunc_called(this, "_ZN5S48C64v209Ev");}
void  S48C6 ::v210(){vfunc_called(this, "_ZN5S48C64v210Ev");}
void  S48C6 ::v211(){vfunc_called(this, "_ZN5S48C64v211Ev");}
void  S48C6 ::v212(){vfunc_called(this, "_ZN5S48C64v212Ev");}
void  S48C6 ::v213(){vfunc_called(this, "_ZN5S48C64v213Ev");}
void  S48C6 ::v214(){vfunc_called(this, "_ZN5S48C64v214Ev");}
void  S48C6 ::v215(){vfunc_called(this, "_ZN5S48C64v215Ev");}
void  S48C6 ::v216(){vfunc_called(this, "_ZN5S48C64v216Ev");}
void  S48C6 ::v217(){vfunc_called(this, "_ZN5S48C64v217Ev");}
S48C6 ::S48C6(){ note_ctor("S48C6", this);} // tgen

static void Test_S48C6()
{
  extern Class_Descriptor cd_S48C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(72,110)];
    init_test(&cd_S48C6, buf);
    S48C6 *dp, &lv = *(dp=new (buf) S48C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(568,436), "sizeof(S48C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S48C6)");
    check_base_class_offset(lv, (S48C7*), 0, "S48C6");
    check_field_offset(lv, s48c6f0, ABISELECT(96,60), "S48C6.s48c6f0");
    check_field_offset(lv, s48c6f1, ABISELECT(112,72), "S48C6.s48c6f1");
    check_field_offset(lv, s48c6f2, ABISELECT(128,84), "S48C6.s48c6f2");
    check_field_offset(lv, s48c6f3, ABISELECT(132,88), "S48C6.s48c6f3");
    check_field_offset(lv, s48c6f4, ABISELECT(136,92), "S48C6.s48c6f4");
    check_field_offset(lv, s48c6f5, ABISELECT(144,96), "S48C6.s48c6f5");
    check_field_offset(lv, s48c6f6, ABISELECT(160,104), "S48C6.s48c6f6");
    set_bf_and_test(lv, s48c6f7, ABISELECT(176,116), 0, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f8, ABISELECT(176,116), 1, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f9, ABISELECT(176,116), 2, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f10, ABISELECT(176,116), 3, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f11, ABISELECT(176,116), 4, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f12, ABISELECT(176,116), 5, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f13, ABISELECT(176,116), 6, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f14, ABISELECT(176,116), 7, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f15, ABISELECT(177,117), 0, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f16, ABISELECT(177,117), 1, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f17, ABISELECT(177,117), 2, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f18, ABISELECT(177,117), 3, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f19, ABISELECT(177,117), 4, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f20, ABISELECT(177,117), 5, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f21, ABISELECT(177,117), 6, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f22, ABISELECT(177,117), 7, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f23, ABISELECT(178,118), 0, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f24, ABISELECT(178,118), 1, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f25, ABISELECT(178,118), 2, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f26, ABISELECT(178,118), 3, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f27, ABISELECT(178,118), 4, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f28, ABISELECT(178,118), 5, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f29, ABISELECT(178,118), 6, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f30, ABISELECT(178,118), 7, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f31, ABISELECT(179,119), 0, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f32, ABISELECT(179,119), 1, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f33, ABISELECT(179,119), 2, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f34, ABISELECT(179,119), 3, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f35, ABISELECT(179,119), 4, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f36, ABISELECT(179,119), 5, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f37, ABISELECT(179,119), 6, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f38, ABISELECT(179,119), 7, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f39, ABISELECT(180,120), 0, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f40, ABISELECT(180,120), 1, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f41, ABISELECT(180,120), 2, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f42, ABISELECT(180,120), 3, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f43, ABISELECT(180,120), 4, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f44, ABISELECT(180,120), 5, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f45, ABISELECT(180,120), 6, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f46, ABISELECT(180,120), 7, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f47, ABISELECT(181,121), 0, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f48, ABISELECT(181,121), 1, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f49, ABISELECT(181,121), 2, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f50, ABISELECT(181,121), 3, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f51, ABISELECT(181,121), 4, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f52, ABISELECT(181,121), 5, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f53, ABISELECT(181,121), 6, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f54, ABISELECT(181,121), 7, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f55, ABISELECT(182,122), 0, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f56, ABISELECT(182,122), 1, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f57, ABISELECT(182,122), 2, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f58, ABISELECT(182,122), 3, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f59, ABISELECT(182,122), 4, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f60, ABISELECT(182,122), 5, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f61, ABISELECT(182,122), 6, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f62, ABISELECT(182,122), 7, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f63, ABISELECT(183,123), 0, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f64, ABISELECT(183,123), 1, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f65, ABISELECT(183,123), 2, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f66, ABISELECT(183,123), 3, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f67, ABISELECT(183,123), 4, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f68, ABISELECT(183,123), 5, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f69, ABISELECT(183,123), 6, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f70, ABISELECT(183,123), 7, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f71, ABISELECT(184,124), 0, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f72, ABISELECT(184,124), 1, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f73, ABISELECT(184,124), 2, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f74, ABISELECT(184,124), 3, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f75, ABISELECT(184,124), 4, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f76, ABISELECT(184,124), 5, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f77, ABISELECT(184,124), 6, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f78, ABISELECT(184,124), 7, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f79, ABISELECT(185,125), 0, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f80, ABISELECT(185,125), 1, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f81, ABISELECT(185,125), 2, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f82, ABISELECT(185,125), 3, 1, 1, "S48C6");
    set_bf_and_test(lv, s48c6f83, ABISELECT(185,125), 4, 1, 1, "S48C6");
    check_field_offset(lv, s48c6f84, ABISELECT(188,128), "S48C6.s48c6f84");
    check_field_offset(lv, s48c6f85, ABISELECT(208,148), "S48C6.s48c6f85");
    check_field_offset(lv, s48c6f86, ABISELECT(224,156), "S48C6.s48c6f86");
    check_field_offset(lv, s48c6f87, ABISELECT(236,168), "S48C6.s48c6f87");
    check_field_offset(lv, s48c6f88, ABISELECT(244,176), "S48C6.s48c6f88");
    check_field_offset(lv, s48c6f89, ABISELECT(252,184), "S48C6.s48c6f89");
    check_field_offset(lv, s48c6f90, ABISELECT(264,192), "S48C6.s48c6f90");
    check_field_offset(lv, s48c6f91, ABISELECT(280,204), "S48C6.s48c6f91");
    check_field_offset(lv, s48c6f92, ABISELECT(296,216), "S48C6.s48c6f92");
    check_field_offset(lv, s48c6f93, ABISELECT(304,220), "S48C6.s48c6f93");
    check_field_offset(lv, s48c6f94, ABISELECT(320,228), "S48C6.s48c6f94");
    check_field_offset(lv, s48c6f95, ABISELECT(332,240), "S48C6.s48c6f95");
    check_field_offset(lv, s48c6f96, ABISELECT(344,252), "S48C6.s48c6f96");
    check_field_offset(lv, s48c6f97, ABISELECT(356,264), "S48C6.s48c6f97");
    check_field_offset(lv, s48c6f98, ABISELECT(368,276), "S48C6.s48c6f98");
    check_field_offset(lv, s48c6f99, ABISELECT(376,280), "S48C6.s48c6f99");
    check_field_offset(lv, s48c6f100, ABISELECT(384,288), "S48C6.s48c6f100");
    check_field_offset(lv, s48c6f101, ABISELECT(400,300), "S48C6.s48c6f101");
    check_field_offset(lv, s48c6f102, ABISELECT(412,312), "S48C6.s48c6f102");
    check_field_offset(lv, s48c6f103, ABISELECT(424,324), "S48C6.s48c6f103");
    check_field_offset(lv, s48c6f104, ABISELECT(428,328), "S48C6.s48c6f104");
    check_field_offset(lv, s48c6f105, ABISELECT(440,340), "S48C6.s48c6f105");
    check_field_offset(lv, s48c6f106, ABISELECT(456,352), "S48C6.s48c6f106");
    check_field_offset(lv, s48c6f107, ABISELECT(464,356), "S48C6.s48c6f107");
    check_field_offset(lv, s48c6f108, ABISELECT(468,360), "S48C6.s48c6f108");
    check_field_offset(lv, s48c6f109, ABISELECT(472,364), "S48C6.s48c6f109");
    check_field_offset(lv, s48c6f110, ABISELECT(484,376), "S48C6.s48c6f110");
    check_field_offset(lv, s48c6f111, ABISELECT(496,388), "S48C6.s48c6f111");
    check_field_offset(lv, s48c6f112, ABISELECT(504,392), "S48C6.s48c6f112");
    check_field_offset(lv, s48c6f113, ABISELECT(512,396), "S48C6.s48c6f113");
    check_field_offset(lv, s48c6f114, ABISELECT(520,400), "S48C6.s48c6f114");
    check_field_offset(lv, s48c6f115, ABISELECT(536,412), "S48C6.s48c6f115");
    check_field_offset(lv, s48c6f116, ABISELECT(552,424), "S48C6.s48c6f116");
    test_class_info(&lv, &cd_S48C6);
    dp->~S48C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS48C6(Test_S48C6, "S48C6", ABISELECT(568,436));

#else // __cplusplus

extern void _ZN5S48C6C1Ev();
extern void _ZN5S48C6D1Ev();
Name_Map name_map_S48C6[] = {
  NSPAIR(_ZN5S48C6C1Ev),
  NSPAIR(_ZN5S48C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S48C7;
extern VTBL_ENTRY _ZTI5S48C7[];
extern  VTBL_ENTRY _ZTV5S48C7[];
static Base_Class bases_S48C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S48C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI5S48C6[];
extern void _ZN5S48C6D1Ev();
extern void _ZN5S48C6D0Ev();
extern void _ZN5S48C73v11Ev();
extern void _ZN5S48C73v12Ev();
extern void _ZN5S48C73v13Ev();
extern void _ZN5S48C73v14Ev();
extern void _ZN5S48C73v15Ev();
extern void _ZN5S48C73v16Ev();
extern void _ZN5S48C73v17Ev();
extern void _ZN5S48C73v18Ev();
extern void _ZN5S48C73v19Ev();
extern void _ZN5S48C73v20Ev();
extern void _ZN5S48C73v21Ev();
extern void _ZN5S48C73v22Ev();
extern void _ZN5S48C73v23Ev();
extern void _ZN5S48C73v24Ev();
extern void _ZN5S48C73v25Ev();
extern void _ZN5S48C73v26Ev();
extern void _ZN5S48C73v27Ev();
extern void _ZN5S48C73v28Ev();
extern void _ZN5S48C73v29Ev();
extern void _ZN5S48C73v30Ev();
extern void _ZN5S48C73v31Ev();
extern void _ZN5S48C73v32Ev();
extern void _ZN5S48C73v33Ev();
extern void _ZN5S48C73v34Ev();
extern void _ZN5S48C73v35Ev();
extern void _ZN5S48C73v36Ev();
extern void _ZN5S48C73v37Ev();
extern void _ZN5S48C73v38Ev();
extern void _ZN5S48C73v39Ev();
extern void _ZN5S48C73v40Ev();
extern void _ZN5S48C73v41Ev();
extern void _ZN5S48C73v42Ev();
extern void _ZN5S48C73v43Ev();
extern void _ZN5S48C73v44Ev();
extern void _ZN5S48C73v45Ev();
extern void _ZN5S48C73v46Ev();
extern void _ZN5S48C73v47Ev();
extern void _ZN5S48C73v48Ev();
extern void _ZN5S48C73v49Ev();
extern void _ZN5S48C73v50Ev();
extern void _ZN5S48C73v51Ev();
extern void _ZN5S48C73v52Ev();
extern void _ZN5S48C73v53Ev();
extern void _ZN5S48C73v54Ev();
extern void _ZN5S48C73v55Ev();
extern void _ZN5S48C73v56Ev();
extern void _ZN5S48C73v57Ev();
extern void _ZN5S48C73v58Ev();
extern void _ZN5S48C73v59Ev();
extern void _ZN5S48C73v60Ev();
extern void _ZN5S48C73v61Ev();
extern void _ZN5S48C73v62Ev();
extern void _ZN5S48C73v63Ev();
extern void _ZN5S48C73v64Ev();
extern void _ZN5S48C73v65Ev();
extern void _ZN5S48C73v66Ev();
extern void _ZN5S48C73v67Ev();
extern void _ZN5S48C73v68Ev();
extern void _ZN5S48C73v69Ev();
extern void _ZN5S48C73v70Ev();
extern void _ZN5S48C73v71Ev();
extern void _ZN5S48C73v72Ev();
extern void _ZN5S48C73v73Ev();
extern void _ZN5S48C73v74Ev();
extern void _ZN5S48C63v75Ev();
extern void _ZN5S48C63v76Ev();
extern void _ZN5S48C63v77Ev();
extern void _ZN5S48C63v78Ev();
extern void _ZN5S48C63v79Ev();
extern void _ZN5S48C63v80Ev();
extern void _ZN5S48C63v81Ev();
extern void _ZN5S48C63v82Ev();
extern void _ZN5S48C63v83Ev();
extern void _ZN5S48C63v84Ev();
extern void _ZN5S48C63v85Ev();
extern void _ZN5S48C63v86Ev();
extern void _ZN5S48C63v87Ev();
extern void _ZN5S48C63v88Ev();
extern void _ZN5S48C63v89Ev();
extern void _ZN5S48C63v90Ev();
extern void _ZN5S48C63v91Ev();
extern void _ZN5S48C63v92Ev();
extern void _ZN5S48C63v93Ev();
extern void _ZN5S48C63v94Ev();
extern void _ZN5S48C63v95Ev();
extern void _ZN5S48C63v96Ev();
extern void _ZN5S48C63v97Ev();
extern void _ZN5S48C63v98Ev();
extern void _ZN5S48C63v99Ev();
extern void _ZN5S48C64v100Ev();
extern void _ZN5S48C64v101Ev();
extern void _ZN5S48C64v102Ev();
extern void _ZN5S48C64v103Ev();
extern void _ZN5S48C64v104Ev();
extern void _ZN5S48C64v105Ev();
extern void _ZN5S48C64v106Ev();
extern void _ZN5S48C64v107Ev();
extern void _ZN5S48C64v108Ev();
extern void _ZN5S48C64v109Ev();
extern void _ZN5S48C64v110Ev();
extern void _ZN5S48C64v111Ev();
extern void _ZN5S48C64v112Ev();
extern void _ZN5S48C64v113Ev();
extern void _ZN5S48C64v114Ev();
extern void _ZN5S48C64v115Ev();
extern void _ZN5S48C64v116Ev();
extern void _ZN5S48C64v117Ev();
extern void _ZN5S48C64v118Ev();
extern void _ZN5S48C64v119Ev();
extern void _ZN5S48C64v120Ev();
extern void _ZN5S48C64v121Ev();
extern void _ZN5S48C64v122Ev();
extern void _ZN5S48C64v123Ev();
extern void _ZN5S48C64v124Ev();
extern void _ZN5S48C64v125Ev();
extern void _ZN5S48C64v126Ev();
extern void _ZN5S48C64v127Ev();
extern void _ZN5S48C64v128Ev();
extern void _ZN5S48C64v129Ev();
extern void _ZN5S48C64v130Ev();
extern void _ZN5S48C64v131Ev();
extern void _ZN5S48C64v132Ev();
extern void _ZN5S48C64v133Ev();
extern void _ZN5S48C64v134Ev();
extern void _ZN5S48C64v135Ev();
extern void _ZN5S48C64v136Ev();
extern void _ZN5S48C64v137Ev();
extern void _ZN5S48C64v138Ev();
extern void _ZN5S48C64v139Ev();
extern void _ZN5S48C64v140Ev();
extern void _ZN5S48C64v141Ev();
extern void _ZN5S48C64v142Ev();
extern void _ZN5S48C64v143Ev();
extern void _ZN5S48C64v144Ev();
extern void _ZN5S48C64v145Ev();
extern void _ZN5S48C64v146Ev();
extern void _ZN5S48C64v147Ev();
extern void _ZN5S48C64v148Ev();
extern void _ZN5S48C64v149Ev();
extern void _ZN5S48C64v150Ev();
extern void _ZN5S48C64v151Ev();
extern void _ZN5S48C64v152Ev();
extern void _ZN5S48C64v153Ev();
extern void _ZN5S48C64v154Ev();
extern void _ZN5S48C64v155Ev();
extern void _ZN5S48C64v156Ev();
extern void _ZN5S48C64v157Ev();
extern void _ZN5S48C64v158Ev();
extern void _ZN5S48C64v159Ev();
extern void _ZN5S48C64v160Ev();
extern void _ZN5S48C64v161Ev();
extern void _ZN5S48C64v162Ev();
extern void _ZN5S48C64v163Ev();
extern void _ZN5S48C64v164Ev();
extern void _ZN5S48C64v165Ev();
extern void _ZN5S48C64v166Ev();
extern void _ZN5S48C64v167Ev();
extern void _ZN5S48C64v168Ev();
extern void _ZN5S48C64v169Ev();
extern void _ZN5S48C64v170Ev();
extern void _ZN5S48C64v171Ev();
extern void _ZN5S48C64v172Ev();
extern void _ZN5S48C64v173Ev();
extern void _ZN5S48C64v174Ev();
extern void _ZN5S48C64v175Ev();
extern void _ZN5S48C64v176Ev();
extern void _ZN5S48C64v177Ev();
extern void _ZN5S48C64v178Ev();
extern void _ZN5S48C64v179Ev();
extern void _ZN5S48C64v180Ev();
extern void _ZN5S48C64v181Ev();
extern void _ZN5S48C64v182Ev();
extern void _ZN5S48C64v183Ev();
extern void _ZN5S48C64v184Ev();
extern void _ZN5S48C64v185Ev();
extern void _ZN5S48C64v186Ev();
extern void _ZN5S48C64v187Ev();
extern void _ZN5S48C64v188Ev();
extern void _ZN5S48C64v189Ev();
extern void _ZN5S48C64v190Ev();
extern void _ZN5S48C64v191Ev();
extern void _ZN5S48C64v192Ev();
extern void _ZN5S48C64v193Ev();
extern void _ZN5S48C64v194Ev();
extern void _ZN5S48C64v195Ev();
extern void _ZN5S48C64v196Ev();
extern void _ZN5S48C64v197Ev();
extern void _ZN5S48C64v198Ev();
extern void _ZN5S48C64v199Ev();
extern void _ZN5S48C64v200Ev();
extern void _ZN5S48C64v201Ev();
extern void _ZN5S48C64v202Ev();
extern void _ZN5S48C64v203Ev();
extern void _ZN5S48C64v204Ev();
extern void _ZN5S48C64v205Ev();
extern void _ZN5S48C64v206Ev();
extern void _ZN5S48C64v207Ev();
extern void _ZN5S48C64v208Ev();
extern void _ZN5S48C64v209Ev();
extern void _ZN5S48C64v210Ev();
extern void _ZN5S48C64v211Ev();
extern void _ZN5S48C64v212Ev();
extern void _ZN5S48C64v213Ev();
extern void _ZN5S48C64v214Ev();
extern void _ZN5S48C64v215Ev();
extern void _ZN5S48C64v216Ev();
extern void _ZN5S48C64v217Ev();
static  VTBL_ENTRY vtc_S48C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S48C6[0]),
  (VTBL_ENTRY)&_ZN5S48C6D1Ev,
  (VTBL_ENTRY)&_ZN5S48C6D0Ev,
  (VTBL_ENTRY)&_ZN5S48C73v11Ev,
  (VTBL_ENTRY)&_ZN5S48C73v12Ev,
  (VTBL_ENTRY)&_ZN5S48C73v13Ev,
  (VTBL_ENTRY)&_ZN5S48C73v14Ev,
  (VTBL_ENTRY)&_ZN5S48C73v15Ev,
  (VTBL_ENTRY)&_ZN5S48C73v16Ev,
  (VTBL_ENTRY)&_ZN5S48C73v17Ev,
  (VTBL_ENTRY)&_ZN5S48C73v18Ev,
  (VTBL_ENTRY)&_ZN5S48C73v19Ev,
  (VTBL_ENTRY)&_ZN5S48C73v20Ev,
  (VTBL_ENTRY)&_ZN5S48C73v21Ev,
  (VTBL_ENTRY)&_ZN5S48C73v22Ev,
  (VTBL_ENTRY)&_ZN5S48C73v23Ev,
  (VTBL_ENTRY)&_ZN5S48C73v24Ev,
  (VTBL_ENTRY)&_ZN5S48C73v25Ev,
  (VTBL_ENTRY)&_ZN5S48C73v26Ev,
  (VTBL_ENTRY)&_ZN5S48C73v27Ev,
  (VTBL_ENTRY)&_ZN5S48C73v28Ev,
  (VTBL_ENTRY)&_ZN5S48C73v29Ev,
  (VTBL_ENTRY)&_ZN5S48C73v30Ev,
  (VTBL_ENTRY)&_ZN5S48C73v31Ev,
  (VTBL_ENTRY)&_ZN5S48C73v32Ev,
  (VTBL_ENTRY)&_ZN5S48C73v33Ev,
  (VTBL_ENTRY)&_ZN5S48C73v34Ev,
  (VTBL_ENTRY)&_ZN5S48C73v35Ev,
  (VTBL_ENTRY)&_ZN5S48C73v36Ev,
  (VTBL_ENTRY)&_ZN5S48C73v37Ev,
  (VTBL_ENTRY)&_ZN5S48C73v38Ev,
  (VTBL_ENTRY)&_ZN5S48C73v39Ev,
  (VTBL_ENTRY)&_ZN5S48C73v40Ev,
  (VTBL_ENTRY)&_ZN5S48C73v41Ev,
  (VTBL_ENTRY)&_ZN5S48C73v42Ev,
  (VTBL_ENTRY)&_ZN5S48C73v43Ev,
  (VTBL_ENTRY)&_ZN5S48C73v44Ev,
  (VTBL_ENTRY)&_ZN5S48C73v45Ev,
  (VTBL_ENTRY)&_ZN5S48C73v46Ev,
  (VTBL_ENTRY)&_ZN5S48C73v47Ev,
  (VTBL_ENTRY)&_ZN5S48C73v48Ev,
  (VTBL_ENTRY)&_ZN5S48C73v49Ev,
  (VTBL_ENTRY)&_ZN5S48C73v50Ev,
  (VTBL_ENTRY)&_ZN5S48C73v51Ev,
  (VTBL_ENTRY)&_ZN5S48C73v52Ev,
  (VTBL_ENTRY)&_ZN5S48C73v53Ev,
  (VTBL_ENTRY)&_ZN5S48C73v54Ev,
  (VTBL_ENTRY)&_ZN5S48C73v55Ev,
  (VTBL_ENTRY)&_ZN5S48C73v56Ev,
  (VTBL_ENTRY)&_ZN5S48C73v57Ev,
  (VTBL_ENTRY)&_ZN5S48C73v58Ev,
  (VTBL_ENTRY)&_ZN5S48C73v59Ev,
  (VTBL_ENTRY)&_ZN5S48C73v60Ev,
  (VTBL_ENTRY)&_ZN5S48C73v61Ev,
  (VTBL_ENTRY)&_ZN5S48C73v62Ev,
  (VTBL_ENTRY)&_ZN5S48C73v63Ev,
  (VTBL_ENTRY)&_ZN5S48C73v64Ev,
  (VTBL_ENTRY)&_ZN5S48C73v65Ev,
  (VTBL_ENTRY)&_ZN5S48C73v66Ev,
  (VTBL_ENTRY)&_ZN5S48C73v67Ev,
  (VTBL_ENTRY)&_ZN5S48C73v68Ev,
  (VTBL_ENTRY)&_ZN5S48C73v69Ev,
  (VTBL_ENTRY)&_ZN5S48C73v70Ev,
  (VTBL_ENTRY)&_ZN5S48C73v71Ev,
  (VTBL_ENTRY)&_ZN5S48C73v72Ev,
  (VTBL_ENTRY)&_ZN5S48C73v73Ev,
  (VTBL_ENTRY)&_ZN5S48C73v74Ev,
  (VTBL_ENTRY)&_ZN5S48C63v75Ev,
  (VTBL_ENTRY)&_ZN5S48C63v76Ev,
  (VTBL_ENTRY)&_ZN5S48C63v77Ev,
  (VTBL_ENTRY)&_ZN5S48C63v78Ev,
  (VTBL_ENTRY)&_ZN5S48C63v79Ev,
  (VTBL_ENTRY)&_ZN5S48C63v80Ev,
  (VTBL_ENTRY)&_ZN5S48C63v81Ev,
  (VTBL_ENTRY)&_ZN5S48C63v82Ev,
  (VTBL_ENTRY)&_ZN5S48C63v83Ev,
  (VTBL_ENTRY)&_ZN5S48C63v84Ev,
  (VTBL_ENTRY)&_ZN5S48C63v85Ev,
  (VTBL_ENTRY)&_ZN5S48C63v86Ev,
  (VTBL_ENTRY)&_ZN5S48C63v87Ev,
  (VTBL_ENTRY)&_ZN5S48C63v88Ev,
  (VTBL_ENTRY)&_ZN5S48C63v89Ev,
  (VTBL_ENTRY)&_ZN5S48C63v90Ev,
  (VTBL_ENTRY)&_ZN5S48C63v91Ev,
  (VTBL_ENTRY)&_ZN5S48C63v92Ev,
  (VTBL_ENTRY)&_ZN5S48C63v93Ev,
  (VTBL_ENTRY)&_ZN5S48C63v94Ev,
  (VTBL_ENTRY)&_ZN5S48C63v95Ev,
  (VTBL_ENTRY)&_ZN5S48C63v96Ev,
  (VTBL_ENTRY)&_ZN5S48C63v97Ev,
  (VTBL_ENTRY)&_ZN5S48C63v98Ev,
  (VTBL_ENTRY)&_ZN5S48C63v99Ev,
  (VTBL_ENTRY)&_ZN5S48C64v100Ev,
  (VTBL_ENTRY)&_ZN5S48C64v101Ev,
  (VTBL_ENTRY)&_ZN5S48C64v102Ev,
  (VTBL_ENTRY)&_ZN5S48C64v103Ev,
  (VTBL_ENTRY)&_ZN5S48C64v104Ev,
  (VTBL_ENTRY)&_ZN5S48C64v105Ev,
  (VTBL_ENTRY)&_ZN5S48C64v106Ev,
  (VTBL_ENTRY)&_ZN5S48C64v107Ev,
  (VTBL_ENTRY)&_ZN5S48C64v108Ev,
  (VTBL_ENTRY)&_ZN5S48C64v109Ev,
  (VTBL_ENTRY)&_ZN5S48C64v110Ev,
  (VTBL_ENTRY)&_ZN5S48C64v111Ev,
  (VTBL_ENTRY)&_ZN5S48C64v112Ev,
  (VTBL_ENTRY)&_ZN5S48C64v113Ev,
  (VTBL_ENTRY)&_ZN5S48C64v114Ev,
  (VTBL_ENTRY)&_ZN5S48C64v115Ev,
  (VTBL_ENTRY)&_ZN5S48C64v116Ev,
  (VTBL_ENTRY)&_ZN5S48C64v117Ev,
  (VTBL_ENTRY)&_ZN5S48C64v118Ev,
  (VTBL_ENTRY)&_ZN5S48C64v119Ev,
  (VTBL_ENTRY)&_ZN5S48C64v120Ev,
  (VTBL_ENTRY)&_ZN5S48C64v121Ev,
  (VTBL_ENTRY)&_ZN5S48C64v122Ev,
  (VTBL_ENTRY)&_ZN5S48C64v123Ev,
  (VTBL_ENTRY)&_ZN5S48C64v124Ev,
  (VTBL_ENTRY)&_ZN5S48C64v125Ev,
  (VTBL_ENTRY)&_ZN5S48C64v126Ev,
  (VTBL_ENTRY)&_ZN5S48C64v127Ev,
  (VTBL_ENTRY)&_ZN5S48C64v128Ev,
  (VTBL_ENTRY)&_ZN5S48C64v129Ev,
  (VTBL_ENTRY)&_ZN5S48C64v130Ev,
  (VTBL_ENTRY)&_ZN5S48C64v131Ev,
  (VTBL_ENTRY)&_ZN5S48C64v132Ev,
  (VTBL_ENTRY)&_ZN5S48C64v133Ev,
  (VTBL_ENTRY)&_ZN5S48C64v134Ev,
  (VTBL_ENTRY)&_ZN5S48C64v135Ev,
  (VTBL_ENTRY)&_ZN5S48C64v136Ev,
  (VTBL_ENTRY)&_ZN5S48C64v137Ev,
  (VTBL_ENTRY)&_ZN5S48C64v138Ev,
  (VTBL_ENTRY)&_ZN5S48C64v139Ev,
  (VTBL_ENTRY)&_ZN5S48C64v140Ev,
  (VTBL_ENTRY)&_ZN5S48C64v141Ev,
  (VTBL_ENTRY)&_ZN5S48C64v142Ev,
  (VTBL_ENTRY)&_ZN5S48C64v143Ev,
  (VTBL_ENTRY)&_ZN5S48C64v144Ev,
  (VTBL_ENTRY)&_ZN5S48C64v145Ev,
  (VTBL_ENTRY)&_ZN5S48C64v146Ev,
  (VTBL_ENTRY)&_ZN5S48C64v147Ev,
  (VTBL_ENTRY)&_ZN5S48C64v148Ev,
  (VTBL_ENTRY)&_ZN5S48C64v149Ev,
  (VTBL_ENTRY)&_ZN5S48C64v150Ev,
  (VTBL_ENTRY)&_ZN5S48C64v151Ev,
  (VTBL_ENTRY)&_ZN5S48C64v152Ev,
  (VTBL_ENTRY)&_ZN5S48C64v153Ev,
  (VTBL_ENTRY)&_ZN5S48C64v154Ev,
  (VTBL_ENTRY)&_ZN5S48C64v155Ev,
  (VTBL_ENTRY)&_ZN5S48C64v156Ev,
  (VTBL_ENTRY)&_ZN5S48C64v157Ev,
  (VTBL_ENTRY)&_ZN5S48C64v158Ev,
  (VTBL_ENTRY)&_ZN5S48C64v159Ev,
  (VTBL_ENTRY)&_ZN5S48C64v160Ev,
  (VTBL_ENTRY)&_ZN5S48C64v161Ev,
  (VTBL_ENTRY)&_ZN5S48C64v162Ev,
  (VTBL_ENTRY)&_ZN5S48C64v163Ev,
  (VTBL_ENTRY)&_ZN5S48C64v164Ev,
  (VTBL_ENTRY)&_ZN5S48C64v165Ev,
  (VTBL_ENTRY)&_ZN5S48C64v166Ev,
  (VTBL_ENTRY)&_ZN5S48C64v167Ev,
  (VTBL_ENTRY)&_ZN5S48C64v168Ev,
  (VTBL_ENTRY)&_ZN5S48C64v169Ev,
  (VTBL_ENTRY)&_ZN5S48C64v170Ev,
  (VTBL_ENTRY)&_ZN5S48C64v171Ev,
  (VTBL_ENTRY)&_ZN5S48C64v172Ev,
  (VTBL_ENTRY)&_ZN5S48C64v173Ev,
  (VTBL_ENTRY)&_ZN5S48C64v174Ev,
  (VTBL_ENTRY)&_ZN5S48C64v175Ev,
  (VTBL_ENTRY)&_ZN5S48C64v176Ev,
  (VTBL_ENTRY)&_ZN5S48C64v177Ev,
  (VTBL_ENTRY)&_ZN5S48C64v178Ev,
  (VTBL_ENTRY)&_ZN5S48C64v179Ev,
  (VTBL_ENTRY)&_ZN5S48C64v180Ev,
  (VTBL_ENTRY)&_ZN5S48C64v181Ev,
  (VTBL_ENTRY)&_ZN5S48C64v182Ev,
  (VTBL_ENTRY)&_ZN5S48C64v183Ev,
  (VTBL_ENTRY)&_ZN5S48C64v184Ev,
  (VTBL_ENTRY)&_ZN5S48C64v185Ev,
  (VTBL_ENTRY)&_ZN5S48C64v186Ev,
  (VTBL_ENTRY)&_ZN5S48C64v187Ev,
  (VTBL_ENTRY)&_ZN5S48C64v188Ev,
  (VTBL_ENTRY)&_ZN5S48C64v189Ev,
  (VTBL_ENTRY)&_ZN5S48C64v190Ev,
  (VTBL_ENTRY)&_ZN5S48C64v191Ev,
  (VTBL_ENTRY)&_ZN5S48C64v192Ev,
  (VTBL_ENTRY)&_ZN5S48C64v193Ev,
  (VTBL_ENTRY)&_ZN5S48C64v194Ev,
  (VTBL_ENTRY)&_ZN5S48C64v195Ev,
  (VTBL_ENTRY)&_ZN5S48C64v196Ev,
  (VTBL_ENTRY)&_ZN5S48C64v197Ev,
  (VTBL_ENTRY)&_ZN5S48C64v198Ev,
  (VTBL_ENTRY)&_ZN5S48C64v199Ev,
  (VTBL_ENTRY)&_ZN5S48C64v200Ev,
  (VTBL_ENTRY)&_ZN5S48C64v201Ev,
  (VTBL_ENTRY)&_ZN5S48C64v202Ev,
  (VTBL_ENTRY)&_ZN5S48C64v203Ev,
  (VTBL_ENTRY)&_ZN5S48C64v204Ev,
  (VTBL_ENTRY)&_ZN5S48C64v205Ev,
  (VTBL_ENTRY)&_ZN5S48C64v206Ev,
  (VTBL_ENTRY)&_ZN5S48C64v207Ev,
  (VTBL_ENTRY)&_ZN5S48C64v208Ev,
  (VTBL_ENTRY)&_ZN5S48C64v209Ev,
  (VTBL_ENTRY)&_ZN5S48C64v210Ev,
  (VTBL_ENTRY)&_ZN5S48C64v211Ev,
  (VTBL_ENTRY)&_ZN5S48C64v212Ev,
  (VTBL_ENTRY)&_ZN5S48C64v213Ev,
  (VTBL_ENTRY)&_ZN5S48C64v214Ev,
  (VTBL_ENTRY)&_ZN5S48C64v215Ev,
  (VTBL_ENTRY)&_ZN5S48C64v216Ev,
  (VTBL_ENTRY)&_ZN5S48C64v217Ev,
};
extern VTBL_ENTRY _ZTI5S48C6[];
extern  VTBL_ENTRY _ZTV5S48C6[];
Class_Descriptor cd_S48C6 = {  "S48C6", // class name
  bases_S48C6, 1,
  &(vtc_S48C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(568,436), // object size
  NSPAIRA(_ZTI5S48C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S48C6),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  S48C5  : S48C6 {
  void *s48c5f0[2];
  int s48c5f1;
  void *s48c5f2;
  unsigned int s48c5f3:1;
  unsigned int s48c5f4:1;
  unsigned int s48c5f5:1;
  unsigned int s48c5f6:1;
  unsigned int s48c5f7:1;
  unsigned int s48c5f8:1;
  unsigned int s48c5f9:1;
  unsigned int s48c5f10:1;
  unsigned int s48c5f11:1;
  unsigned int s48c5f12:1;
  unsigned int s48c5f13:1;
  unsigned int s48c5f14:1;
  unsigned int s48c5f15:1;
  unsigned int s48c5f16:1;
  unsigned int s48c5f17:1;
  unsigned int s48c5f18:1;
  unsigned int s48c5f19:1;
  unsigned int s48c5f20:1;
  unsigned int s48c5f21:1;
  char s48c5f22;
  int s48c5f23[2];
  void *s48c5f24;
  ::S28C18_nt s48c5f25;
  ::S28C18_nt s48c5f26;
  void *s48c5f27[5];
  ::S28C18_nt s48c5f28;
  void *s48c5f29;
  ::S28C26 s48c5f30;
  void *s48c5f31[2];
  ::S28C18_nt s48c5f32;
  void *s48c5f33;
  int s48c5f34[2];
  void *s48c5f35;
  int s48c5f36;
  ::S28C18_nt s48c5f37;
  ::S28C18_nt s48c5f38;
  ::S28C18_nt s48c5f39;
  void *s48c5f40[2];
  int s48c5f41;
  ::S28C18_nt s48c5f42;
  int s48c5f43[4];
  void *s48c5f44[2];
  ::S28C22 s48c5f45;
  int s48c5f46;
  ::S48C18 s48c5f47;
  virtual  ~S48C5(); // _ZN5S48C5D1Ev
  virtual void  v218(); // _ZN5S48C54v218Ev
  virtual void  v219(); // _ZN5S48C54v219Ev
  virtual void  v220(); // _ZN5S48C54v220Ev
  virtual void  v221(); // _ZN5S48C54v221Ev
  virtual void  v222(); // _ZN5S48C54v222Ev
  virtual void  v223(); // _ZN5S48C54v223Ev
  virtual void  v224(); // _ZN5S48C54v224Ev
  virtual void  v225(); // _ZN5S48C54v225Ev
  virtual void  v226(); // _ZN5S48C54v226Ev
  virtual void  v227(); // _ZN5S48C54v227Ev
  virtual void  v228(); // _ZN5S48C54v228Ev
  virtual void  v229(); // _ZN5S48C54v229Ev
  virtual void  v230(); // _ZN5S48C54v230Ev
  virtual void  v231(); // _ZN5S48C54v231Ev
  virtual void  v232(); // _ZN5S48C54v232Ev
  virtual void  v233(); // _ZN5S48C54v233Ev
  virtual void  v234(); // _ZN5S48C54v234Ev
  virtual void  v235(); // _ZN5S48C54v235Ev
  virtual void  v236(); // _ZN5S48C54v236Ev
  virtual void  v237(); // _ZN5S48C54v237Ev
  virtual void  v238(); // _ZN5S48C54v238Ev
  virtual void  v239(); // _ZN5S48C54v239Ev
  virtual void  v240(); // _ZN5S48C54v240Ev
  virtual void  v241(); // _ZN5S48C54v241Ev
  virtual void  v242(); // _ZN5S48C54v242Ev
  virtual void  v243(); // _ZN5S48C54v243Ev
  virtual void  v244(); // _ZN5S48C54v244Ev
  virtual void  v245(); // _ZN5S48C54v245Ev
  virtual void  v246(); // _ZN5S48C54v246Ev
  virtual void  v247(); // _ZN5S48C54v247Ev
  virtual void  v248(); // _ZN5S48C54v248Ev
  virtual void  v249(); // _ZN5S48C54v249Ev
  virtual void  v250(); // _ZN5S48C54v250Ev
  virtual void  v251(); // _ZN5S48C54v251Ev
  virtual void  v252(); // _ZN5S48C54v252Ev
  virtual void  v253(); // _ZN5S48C54v253Ev
  virtual void  v254(); // _ZN5S48C54v254Ev
  virtual void  v255(); // _ZN5S48C54v255Ev
  virtual void  v256(); // _ZN5S48C54v256Ev
  virtual void  v257(); // _ZN5S48C54v257Ev
  virtual void  v258(); // _ZN5S48C54v258Ev
  virtual void  v259(); // _ZN5S48C54v259Ev
  virtual void  v260(); // _ZN5S48C54v260Ev
  virtual void  v261(); // _ZN5S48C54v261Ev
  virtual void  v262(); // _ZN5S48C54v262Ev
  virtual void  v263(); // _ZN5S48C54v263Ev
  virtual void  v264(); // _ZN5S48C54v264Ev
  virtual void  v265(); // _ZN5S48C54v265Ev
  virtual void  v266(); // _ZN5S48C54v266Ev
  virtual void  v267(); // _ZN5S48C54v267Ev
  S48C5(); // tgen
};
//SIG(-1 S48C5) C1{ BC2{ BC3{ vd 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 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd 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 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 FC5{ BC6{ BC7{ m Fp Fi[2]}}} FC5 FC8{ m Fi} Fi Fc[4] Fp[2] FC9{ BC10{ BC7}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC4 FC4 FC4 FC11{ BC12{ BC7}} FC11 Fi Fp[2] FC13{ m Fi[3]} FC14{ m Fi[3]} FC13 FC13 Fp FC4 FC11 FC13 FC14 Fi FC13 FC13 Fp Fi Fc FC14 FC14 Fp Fi Fp FC15{ BC16{ BC7}} FC17{ BC18{ BC7}} FC19{ BC20{ BC7}}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 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 Fp[2] Fi Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fc Fi[2] Fp FC13 FC13 Fp[5] FC13 Fp FC21{ BC22{ BC7}} Fp[2] FC13 Fp Fi[2] Fp Fi FC13 FC13 FC13 Fp[2] Fi FC13 Fi[4] Fp[2] FC23{ BC24{ BC7}} Fi FC14}


 S48C5 ::~S48C5(){ note_dtor("S48C5", this);}
void  S48C5 ::v218(){vfunc_called(this, "_ZN5S48C54v218Ev");}
void  S48C5 ::v219(){vfunc_called(this, "_ZN5S48C54v219Ev");}
void  S48C5 ::v220(){vfunc_called(this, "_ZN5S48C54v220Ev");}
void  S48C5 ::v221(){vfunc_called(this, "_ZN5S48C54v221Ev");}
void  S48C5 ::v222(){vfunc_called(this, "_ZN5S48C54v222Ev");}
void  S48C5 ::v223(){vfunc_called(this, "_ZN5S48C54v223Ev");}
void  S48C5 ::v224(){vfunc_called(this, "_ZN5S48C54v224Ev");}
void  S48C5 ::v225(){vfunc_called(this, "_ZN5S48C54v225Ev");}
void  S48C5 ::v226(){vfunc_called(this, "_ZN5S48C54v226Ev");}
void  S48C5 ::v227(){vfunc_called(this, "_ZN5S48C54v227Ev");}
void  S48C5 ::v228(){vfunc_called(this, "_ZN5S48C54v228Ev");}
void  S48C5 ::v229(){vfunc_called(this, "_ZN5S48C54v229Ev");}
void  S48C5 ::v230(){vfunc_called(this, "_ZN5S48C54v230Ev");}
void  S48C5 ::v231(){vfunc_called(this, "_ZN5S48C54v231Ev");}
void  S48C5 ::v232(){vfunc_called(this, "_ZN5S48C54v232Ev");}
void  S48C5 ::v233(){vfunc_called(this, "_ZN5S48C54v233Ev");}
void  S48C5 ::v234(){vfunc_called(this, "_ZN5S48C54v234Ev");}
void  S48C5 ::v235(){vfunc_called(this, "_ZN5S48C54v235Ev");}
void  S48C5 ::v236(){vfunc_called(this, "_ZN5S48C54v236Ev");}
void  S48C5 ::v237(){vfunc_called(this, "_ZN5S48C54v237Ev");}
void  S48C5 ::v238(){vfunc_called(this, "_ZN5S48C54v238Ev");}
void  S48C5 ::v239(){vfunc_called(this, "_ZN5S48C54v239Ev");}
void  S48C5 ::v240(){vfunc_called(this, "_ZN5S48C54v240Ev");}
void  S48C5 ::v241(){vfunc_called(this, "_ZN5S48C54v241Ev");}
void  S48C5 ::v242(){vfunc_called(this, "_ZN5S48C54v242Ev");}
void  S48C5 ::v243(){vfunc_called(this, "_ZN5S48C54v243Ev");}
void  S48C5 ::v244(){vfunc_called(this, "_ZN5S48C54v244Ev");}
void  S48C5 ::v245(){vfunc_called(this, "_ZN5S48C54v245Ev");}
void  S48C5 ::v246(){vfunc_called(this, "_ZN5S48C54v246Ev");}
void  S48C5 ::v247(){vfunc_called(this, "_ZN5S48C54v247Ev");}
void  S48C5 ::v248(){vfunc_called(this, "_ZN5S48C54v248Ev");}
void  S48C5 ::v249(){vfunc_called(this, "_ZN5S48C54v249Ev");}
void  S48C5 ::v250(){vfunc_called(this, "_ZN5S48C54v250Ev");}
void  S48C5 ::v251(){vfunc_called(this, "_ZN5S48C54v251Ev");}
void  S48C5 ::v252(){vfunc_called(this, "_ZN5S48C54v252Ev");}
void  S48C5 ::v253(){vfunc_called(this, "_ZN5S48C54v253Ev");}
void  S48C5 ::v254(){vfunc_called(this, "_ZN5S48C54v254Ev");}
void  S48C5 ::v255(){vfunc_called(this, "_ZN5S48C54v255Ev");}
void  S48C5 ::v256(){vfunc_called(this, "_ZN5S48C54v256Ev");}
void  S48C5 ::v257(){vfunc_called(this, "_ZN5S48C54v257Ev");}
void  S48C5 ::v258(){vfunc_called(this, "_ZN5S48C54v258Ev");}
void  S48C5 ::v259(){vfunc_called(this, "_ZN5S48C54v259Ev");}
void  S48C5 ::v260(){vfunc_called(this, "_ZN5S48C54v260Ev");}
void  S48C5 ::v261(){vfunc_called(this, "_ZN5S48C54v261Ev");}
void  S48C5 ::v262(){vfunc_called(this, "_ZN5S48C54v262Ev");}
void  S48C5 ::v263(){vfunc_called(this, "_ZN5S48C54v263Ev");}
void  S48C5 ::v264(){vfunc_called(this, "_ZN5S48C54v264Ev");}
void  S48C5 ::v265(){vfunc_called(this, "_ZN5S48C54v265Ev");}
void  S48C5 ::v266(){vfunc_called(this, "_ZN5S48C54v266Ev");}
void  S48C5 ::v267(){vfunc_called(this, "_ZN5S48C54v267Ev");}
S48C5 ::S48C5(){ note_ctor("S48C5", this);} // tgen

static void Test_S48C5()
{
  extern Class_Descriptor cd_S48C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(116,174)];
    init_test(&cd_S48C5, buf);
    S48C5 *dp, &lv = *(dp=new (buf) S48C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(920,692), "sizeof(S48C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S48C5)");
    check_base_class_offset(lv, (S48C7*)(S48C6*), 0, "S48C5");
    check_base_class_offset(lv, (S48C6*), 0, "S48C5");
    check_field_offset(lv, s48c5f0, ABISELECT(568,436), "S48C5.s48c5f0");
    check_field_offset(lv, s48c5f1, ABISELECT(584,444), "S48C5.s48c5f1");
    check_field_offset(lv, s48c5f2, ABISELECT(592,448), "S48C5.s48c5f2");
    set_bf_and_test(lv, s48c5f3, ABISELECT(600,452), 0, 1, 1, "S48C5");
    set_bf_and_test(lv, s48c5f4, ABISELECT(600,452), 1, 1, 1, "S48C5");
    set_bf_and_test(lv, s48c5f5, ABISELECT(600,452), 2, 1, 1, "S48C5");
    set_bf_and_test(lv, s48c5f6, ABISELECT(600,452), 3, 1, 1, "S48C5");
    set_bf_and_test(lv, s48c5f7, ABISELECT(600,452), 4, 1, 1, "S48C5");
    set_bf_and_test(lv, s48c5f8, ABISELECT(600,452), 5, 1, 1, "S48C5");
    set_bf_and_test(lv, s48c5f9, ABISELECT(600,452), 6, 1, 1, "S48C5");
    set_bf_and_test(lv, s48c5f10, ABISELECT(600,452), 7, 1, 1, "S48C5");
    set_bf_and_test(lv, s48c5f11, ABISELECT(601,453), 0, 1, 1, "S48C5");
    set_bf_and_test(lv, s48c5f12, ABISELECT(601,453), 1, 1, 1, "S48C5");
    set_bf_and_test(lv, s48c5f13, ABISELECT(601,453), 2, 1, 1, "S48C5");
    set_bf_and_test(lv, s48c5f14, ABISELECT(601,453), 3, 1, 1, "S48C5");
    set_bf_and_test(lv, s48c5f15, ABISELECT(601,453), 4, 1, 1, "S48C5");
    set_bf_and_test(lv, s48c5f16, ABISELECT(601,453), 5, 1, 1, "S48C5");
    set_bf_and_test(lv, s48c5f17, ABISELECT(601,453), 6, 1, 1, "S48C5");
    set_bf_and_test(lv, s48c5f18, ABISELECT(601,453), 7, 1, 1, "S48C5");
    set_bf_and_test(lv, s48c5f19, ABISELECT(602,454), 0, 1, 1, "S48C5");
    set_bf_and_test(lv, s48c5f20, ABISELECT(602,454), 1, 1, 1, "S48C5");
    set_bf_and_test(lv, s48c5f21, ABISELECT(602,454), 2, 1, 1, "S48C5");
    check_field_offset(lv, s48c5f22, ABISELECT(603,455), "S48C5.s48c5f22");
    check_field_offset(lv, s48c5f23, ABISELECT(604,456), "S48C5.s48c5f23");
    check_field_offset(lv, s48c5f24, ABISELECT(616,464), "S48C5.s48c5f24");
    check_field_offset(lv, s48c5f25, ABISELECT(624,468), "S48C5.s48c5f25");
    check_field_offset(lv, s48c5f26, ABISELECT(636,480), "S48C5.s48c5f26");
    check_field_offset(lv, s48c5f27, ABISELECT(648,492), "S48C5.s48c5f27");
    check_field_offset(lv, s48c5f28, ABISELECT(688,512), "S48C5.s48c5f28");
    check_field_offset(lv, s48c5f29, ABISELECT(704,524), "S48C5.s48c5f29");
    check_field_offset(lv, s48c5f30, ABISELECT(712,528), "S48C5.s48c5f30");
    check_field_offset(lv, s48c5f31, ABISELECT(728,540), "S48C5.s48c5f31");
    check_field_offset(lv, s48c5f32, ABISELECT(744,548), "S48C5.s48c5f32");
    check_field_offset(lv, s48c5f33, ABISELECT(760,560), "S48C5.s48c5f33");
    check_field_offset(lv, s48c5f34, ABISELECT(768,564), "S48C5.s48c5f34");
    check_field_offset(lv, s48c5f35, ABISELECT(776,572), "S48C5.s48c5f35");
    check_field_offset(lv, s48c5f36, ABISELECT(784,576), "S48C5.s48c5f36");
    check_field_offset(lv, s48c5f37, ABISELECT(788,580), "S48C5.s48c5f37");
    check_field_offset(lv, s48c5f38, ABISELECT(800,592), "S48C5.s48c5f38");
    check_field_offset(lv, s48c5f39, ABISELECT(812,604), "S48C5.s48c5f39");
    check_field_offset(lv, s48c5f40, ABISELECT(824,616), "S48C5.s48c5f40");
    check_field_offset(lv, s48c5f41, ABISELECT(840,624), "S48C5.s48c5f41");
    check_field_offset(lv, s48c5f42, ABISELECT(844,628), "S48C5.s48c5f42");
    check_field_offset(lv, s48c5f43, ABISELECT(856,640), "S48C5.s48c5f43");
    check_field_offset(lv, s48c5f44, ABISELECT(872,656), "S48C5.s48c5f44");
    check_field_offset(lv, s48c5f45, ABISELECT(888,664), "S48C5.s48c5f45");
    check_field_offset(lv, s48c5f46, ABISELECT(904,676), "S48C5.s48c5f46");
    check_field_offset(lv, s48c5f47, ABISELECT(908,680), "S48C5.s48c5f47");
    test_class_info(&lv, &cd_S48C5);
    dp->~S48C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS48C5(Test_S48C5, "S48C5", ABISELECT(920,692));

#else // __cplusplus

extern void _ZN5S48C5C1Ev();
extern void _ZN5S48C5D1Ev();
Name_Map name_map_S48C5[] = {
  NSPAIR(_ZN5S48C5C1Ev),
  NSPAIR(_ZN5S48C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S48C7;
extern VTBL_ENTRY _ZTI5S48C7[];
extern  VTBL_ENTRY _ZTV5S48C7[];
extern Class_Descriptor cd_S48C6;
extern VTBL_ENTRY _ZTI5S48C6[];
extern  VTBL_ENTRY _ZTV5S48C6[];
static Base_Class bases_S48C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S48C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S48C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI5S48C5[];
extern void _ZN5S48C5D1Ev();
extern void _ZN5S48C5D0Ev();
extern void _ZN5S48C73v11Ev();
extern void _ZN5S48C73v12Ev();
extern void _ZN5S48C73v13Ev();
extern void _ZN5S48C73v14Ev();
extern void _ZN5S48C73v15Ev();
extern void _ZN5S48C73v16Ev();
extern void _ZN5S48C73v17Ev();
extern void _ZN5S48C73v18Ev();
extern void _ZN5S48C73v19Ev();
extern void _ZN5S48C73v20Ev();
extern void _ZN5S48C73v21Ev();
extern void _ZN5S48C73v22Ev();
extern void _ZN5S48C73v23Ev();
extern void _ZN5S48C73v24Ev();
extern void _ZN5S48C73v25Ev();
extern void _ZN5S48C73v26Ev();
extern void _ZN5S48C73v27Ev();
extern void _ZN5S48C73v28Ev();
extern void _ZN5S48C73v29Ev();
extern void _ZN5S48C73v30Ev();
extern void _ZN5S48C73v31Ev();
extern void _ZN5S48C73v32Ev();
extern void _ZN5S48C73v33Ev();
extern void _ZN5S48C73v34Ev();
extern void _ZN5S48C73v35Ev();
extern void _ZN5S48C73v36Ev();
extern void _ZN5S48C73v37Ev();
extern void _ZN5S48C73v38Ev();
extern void _ZN5S48C73v39Ev();
extern void _ZN5S48C73v40Ev();
extern void _ZN5S48C73v41Ev();
extern void _ZN5S48C73v42Ev();
extern void _ZN5S48C73v43Ev();
extern void _ZN5S48C73v44Ev();
extern void _ZN5S48C73v45Ev();
extern void _ZN5S48C73v46Ev();
extern void _ZN5S48C73v47Ev();
extern void _ZN5S48C73v48Ev();
extern void _ZN5S48C73v49Ev();
extern void _ZN5S48C73v50Ev();
extern void _ZN5S48C73v51Ev();
extern void _ZN5S48C73v52Ev();
extern void _ZN5S48C73v53Ev();
extern void _ZN5S48C73v54Ev();
extern void _ZN5S48C73v55Ev();
extern void _ZN5S48C73v56Ev();
extern void _ZN5S48C73v57Ev();
extern void _ZN5S48C73v58Ev();
extern void _ZN5S48C73v59Ev();
extern void _ZN5S48C73v60Ev();
extern void _ZN5S48C73v61Ev();
extern void _ZN5S48C73v62Ev();
extern void _ZN5S48C73v63Ev();
extern void _ZN5S48C73v64Ev();
extern void _ZN5S48C73v65Ev();
extern void _ZN5S48C73v66Ev();
extern void _ZN5S48C73v67Ev();
extern void _ZN5S48C73v68Ev();
extern void _ZN5S48C73v69Ev();
extern void _ZN5S48C73v70Ev();
extern void _ZN5S48C73v71Ev();
extern void _ZN5S48C73v72Ev();
extern void _ZN5S48C73v73Ev();
extern void _ZN5S48C73v74Ev();
extern void _ZN5S48C63v75Ev();
extern void _ZN5S48C63v76Ev();
extern void _ZN5S48C63v77Ev();
extern void _ZN5S48C63v78Ev();
extern void _ZN5S48C63v79Ev();
extern void _ZN5S48C63v80Ev();
extern void _ZN5S48C63v81Ev();
extern void _ZN5S48C63v82Ev();
extern void _ZN5S48C63v83Ev();
extern void _ZN5S48C63v84Ev();
extern void _ZN5S48C63v85Ev();
extern void _ZN5S48C63v86Ev();
extern void _ZN5S48C63v87Ev();
extern void _ZN5S48C63v88Ev();
extern void _ZN5S48C63v89Ev();
extern void _ZN5S48C63v90Ev();
extern void _ZN5S48C63v91Ev();
extern void _ZN5S48C63v92Ev();
extern void _ZN5S48C63v93Ev();
extern void _ZN5S48C63v94Ev();
extern void _ZN5S48C63v95Ev();
extern void _ZN5S48C63v96Ev();
extern void _ZN5S48C63v97Ev();
extern void _ZN5S48C63v98Ev();
extern void _ZN5S48C63v99Ev();
extern void _ZN5S48C64v100Ev();
extern void _ZN5S48C64v101Ev();
extern void _ZN5S48C64v102Ev();
extern void _ZN5S48C64v103Ev();
extern void _ZN5S48C64v104Ev();
extern void _ZN5S48C64v105Ev();
extern void _ZN5S48C64v106Ev();
extern void _ZN5S48C64v107Ev();
extern void _ZN5S48C64v108Ev();
extern void _ZN5S48C64v109Ev();
extern void _ZN5S48C64v110Ev();
extern void _ZN5S48C64v111Ev();
extern void _ZN5S48C64v112Ev();
extern void _ZN5S48C64v113Ev();
extern void _ZN5S48C64v114Ev();
extern void _ZN5S48C64v115Ev();
extern void _ZN5S48C64v116Ev();
extern void _ZN5S48C64v117Ev();
extern void _ZN5S48C64v118Ev();
extern void _ZN5S48C64v119Ev();
extern void _ZN5S48C64v120Ev();
extern void _ZN5S48C64v121Ev();
extern void _ZN5S48C64v122Ev();
extern void _ZN5S48C64v123Ev();
extern void _ZN5S48C64v124Ev();
extern void _ZN5S48C64v125Ev();
extern void _ZN5S48C64v126Ev();
extern void _ZN5S48C64v127Ev();
extern void _ZN5S48C64v128Ev();
extern void _ZN5S48C64v129Ev();
extern void _ZN5S48C64v130Ev();
extern void _ZN5S48C64v131Ev();
extern void _ZN5S48C64v132Ev();
extern void _ZN5S48C64v133Ev();
extern void _ZN5S48C64v134Ev();
extern void _ZN5S48C64v135Ev();
extern void _ZN5S48C64v136Ev();
extern void _ZN5S48C64v137Ev();
extern void _ZN5S48C64v138Ev();
extern void _ZN5S48C64v139Ev();
extern void _ZN5S48C64v140Ev();
extern void _ZN5S48C64v141Ev();
extern void _ZN5S48C64v142Ev();
extern void _ZN5S48C64v143Ev();
extern void _ZN5S48C64v144Ev();
extern void _ZN5S48C64v145Ev();
extern void _ZN5S48C64v146Ev();
extern void _ZN5S48C64v147Ev();
extern void _ZN5S48C64v148Ev();
extern void _ZN5S48C64v149Ev();
extern void _ZN5S48C64v150Ev();
extern void _ZN5S48C64v151Ev();
extern void _ZN5S48C64v152Ev();
extern void _ZN5S48C64v153Ev();
extern void _ZN5S48C64v154Ev();
extern void _ZN5S48C64v155Ev();
extern void _ZN5S48C64v156Ev();
extern void _ZN5S48C64v157Ev();
extern void _ZN5S48C64v158Ev();
extern void _ZN5S48C64v159Ev();
extern void _ZN5S48C64v160Ev();
extern void _ZN5S48C64v161Ev();
extern void _ZN5S48C64v162Ev();
extern void _ZN5S48C64v163Ev();
extern void _ZN5S48C64v164Ev();
extern void _ZN5S48C64v165Ev();
extern void _ZN5S48C64v166Ev();
extern void _ZN5S48C64v167Ev();
extern void _ZN5S48C64v168Ev();
extern void _ZN5S48C64v169Ev();
extern void _ZN5S48C64v170Ev();
extern void _ZN5S48C64v171Ev();
extern void _ZN5S48C64v172Ev();
extern void _ZN5S48C64v173Ev();
extern void _ZN5S48C64v174Ev();
extern void _ZN5S48C64v175Ev();
extern void _ZN5S48C64v176Ev();
extern void _ZN5S48C64v177Ev();
extern void _ZN5S48C64v178Ev();
extern void _ZN5S48C64v179Ev();
extern void _ZN5S48C64v180Ev();
extern void _ZN5S48C64v181Ev();
extern void _ZN5S48C64v182Ev();
extern void _ZN5S48C64v183Ev();
extern void _ZN5S48C64v184Ev();
extern void _ZN5S48C64v185Ev();
extern void _ZN5S48C64v186Ev();
extern void _ZN5S48C64v187Ev();
extern void _ZN5S48C64v188Ev();
extern void _ZN5S48C64v189Ev();
extern void _ZN5S48C64v190Ev();
extern void _ZN5S48C64v191Ev();
extern void _ZN5S48C64v192Ev();
extern void _ZN5S48C64v193Ev();
extern void _ZN5S48C64v194Ev();
extern void _ZN5S48C64v195Ev();
extern void _ZN5S48C64v196Ev();
extern void _ZN5S48C64v197Ev();
extern void _ZN5S48C64v198Ev();
extern void _ZN5S48C64v199Ev();
extern void _ZN5S48C64v200Ev();
extern void _ZN5S48C64v201Ev();
extern void _ZN5S48C64v202Ev();
extern void _ZN5S48C64v203Ev();
extern void _ZN5S48C64v204Ev();
extern void _ZN5S48C64v205Ev();
extern void _ZN5S48C64v206Ev();
extern void _ZN5S48C64v207Ev();
extern void _ZN5S48C64v208Ev();
extern void _ZN5S48C64v209Ev();
extern void _ZN5S48C64v210Ev();
extern void _ZN5S48C64v211Ev();
extern void _ZN5S48C64v212Ev();
extern void _ZN5S48C64v213Ev();
extern void _ZN5S48C64v214Ev();
extern void _ZN5S48C64v215Ev();
extern void _ZN5S48C64v216Ev();
extern void _ZN5S48C64v217Ev();
extern void _ZN5S48C54v218Ev();
extern void _ZN5S48C54v219Ev();
extern void _ZN5S48C54v220Ev();
extern void _ZN5S48C54v221Ev();
extern void _ZN5S48C54v222Ev();
extern void _ZN5S48C54v223Ev();
extern void _ZN5S48C54v224Ev();
extern void _ZN5S48C54v225Ev();
extern void _ZN5S48C54v226Ev();
extern void _ZN5S48C54v227Ev();
extern void _ZN5S48C54v228Ev();
extern void _ZN5S48C54v229Ev();
extern void _ZN5S48C54v230Ev();
extern void _ZN5S48C54v231Ev();
extern void _ZN5S48C54v232Ev();
extern void _ZN5S48C54v233Ev();
extern void _ZN5S48C54v234Ev();
extern void _ZN5S48C54v235Ev();
extern void _ZN5S48C54v236Ev();
extern void _ZN5S48C54v237Ev();
extern void _ZN5S48C54v238Ev();
extern void _ZN5S48C54v239Ev();
extern void _ZN5S48C54v240Ev();
extern void _ZN5S48C54v241Ev();
extern void _ZN5S48C54v242Ev();
extern void _ZN5S48C54v243Ev();
extern void _ZN5S48C54v244Ev();
extern void _ZN5S48C54v245Ev();
extern void _ZN5S48C54v246Ev();
extern void _ZN5S48C54v247Ev();
extern void _ZN5S48C54v248Ev();
extern void _ZN5S48C54v249Ev();
extern void _ZN5S48C54v250Ev();
extern void _ZN5S48C54v251Ev();
extern void _ZN5S48C54v252Ev();
extern void _ZN5S48C54v253Ev();
extern void _ZN5S48C54v254Ev();
extern void _ZN5S48C54v255Ev();
extern void _ZN5S48C54v256Ev();
extern void _ZN5S48C54v257Ev();
extern void _ZN5S48C54v258Ev();
extern void _ZN5S48C54v259Ev();
extern void _ZN5S48C54v260Ev();
extern void _ZN5S48C54v261Ev();
extern void _ZN5S48C54v262Ev();
extern void _ZN5S48C54v263Ev();
extern void _ZN5S48C54v264Ev();
extern void _ZN5S48C54v265Ev();
extern void _ZN5S48C54v266Ev();
extern void _ZN5S48C54v267Ev();
static  VTBL_ENTRY vtc_S48C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S48C5[0]),
  (VTBL_ENTRY)&_ZN5S48C5D1Ev,
  (VTBL_ENTRY)&_ZN5S48C5D0Ev,
  (VTBL_ENTRY)&_ZN5S48C73v11Ev,
  (VTBL_ENTRY)&_ZN5S48C73v12Ev,
  (VTBL_ENTRY)&_ZN5S48C73v13Ev,
  (VTBL_ENTRY)&_ZN5S48C73v14Ev,
  (VTBL_ENTRY)&_ZN5S48C73v15Ev,
  (VTBL_ENTRY)&_ZN5S48C73v16Ev,
  (VTBL_ENTRY)&_ZN5S48C73v17Ev,
  (VTBL_ENTRY)&_ZN5S48C73v18Ev,
  (VTBL_ENTRY)&_ZN5S48C73v19Ev,
  (VTBL_ENTRY)&_ZN5S48C73v20Ev,
  (VTBL_ENTRY)&_ZN5S48C73v21Ev,
  (VTBL_ENTRY)&_ZN5S48C73v22Ev,
  (VTBL_ENTRY)&_ZN5S48C73v23Ev,
  (VTBL_ENTRY)&_ZN5S48C73v24Ev,
  (VTBL_ENTRY)&_ZN5S48C73v25Ev,
  (VTBL_ENTRY)&_ZN5S48C73v26Ev,
  (VTBL_ENTRY)&_ZN5S48C73v27Ev,
  (VTBL_ENTRY)&_ZN5S48C73v28Ev,
  (VTBL_ENTRY)&_ZN5S48C73v29Ev,
  (VTBL_ENTRY)&_ZN5S48C73v30Ev,
  (VTBL_ENTRY)&_ZN5S48C73v31Ev,
  (VTBL_ENTRY)&_ZN5S48C73v32Ev,
  (VTBL_ENTRY)&_ZN5S48C73v33Ev,
  (VTBL_ENTRY)&_ZN5S48C73v34Ev,
  (VTBL_ENTRY)&_ZN5S48C73v35Ev,
  (VTBL_ENTRY)&_ZN5S48C73v36Ev,
  (VTBL_ENTRY)&_ZN5S48C73v37Ev,
  (VTBL_ENTRY)&_ZN5S48C73v38Ev,
  (VTBL_ENTRY)&_ZN5S48C73v39Ev,
  (VTBL_ENTRY)&_ZN5S48C73v40Ev,
  (VTBL_ENTRY)&_ZN5S48C73v41Ev,
  (VTBL_ENTRY)&_ZN5S48C73v42Ev,
  (VTBL_ENTRY)&_ZN5S48C73v43Ev,
  (VTBL_ENTRY)&_ZN5S48C73v44Ev,
  (VTBL_ENTRY)&_ZN5S48C73v45Ev,
  (VTBL_ENTRY)&_ZN5S48C73v46Ev,
  (VTBL_ENTRY)&_ZN5S48C73v47Ev,
  (VTBL_ENTRY)&_ZN5S48C73v48Ev,
  (VTBL_ENTRY)&_ZN5S48C73v49Ev,
  (VTBL_ENTRY)&_ZN5S48C73v50Ev,
  (VTBL_ENTRY)&_ZN5S48C73v51Ev,
  (VTBL_ENTRY)&_ZN5S48C73v52Ev,
  (VTBL_ENTRY)&_ZN5S48C73v53Ev,
  (VTBL_ENTRY)&_ZN5S48C73v54Ev,
  (VTBL_ENTRY)&_ZN5S48C73v55Ev,
  (VTBL_ENTRY)&_ZN5S48C73v56Ev,
  (VTBL_ENTRY)&_ZN5S48C73v57Ev,
  (VTBL_ENTRY)&_ZN5S48C73v58Ev,
  (VTBL_ENTRY)&_ZN5S48C73v59Ev,
  (VTBL_ENTRY)&_ZN5S48C73v60Ev,
  (VTBL_ENTRY)&_ZN5S48C73v61Ev,
  (VTBL_ENTRY)&_ZN5S48C73v62Ev,
  (VTBL_ENTRY)&_ZN5S48C73v63Ev,
  (VTBL_ENTRY)&_ZN5S48C73v64Ev,
  (VTBL_ENTRY)&_ZN5S48C73v65Ev,
  (VTBL_ENTRY)&_ZN5S48C73v66Ev,
  (VTBL_ENTRY)&_ZN5S48C73v67Ev,
  (VTBL_ENTRY)&_ZN5S48C73v68Ev,
  (VTBL_ENTRY)&_ZN5S48C73v69Ev,
  (VTBL_ENTRY)&_ZN5S48C73v70Ev,
  (VTBL_ENTRY)&_ZN5S48C73v71Ev,
  (VTBL_ENTRY)&_ZN5S48C73v72Ev,
  (VTBL_ENTRY)&_ZN5S48C73v73Ev,
  (VTBL_ENTRY)&_ZN5S48C73v74Ev,
  (VTBL_ENTRY)&_ZN5S48C63v75Ev,
  (VTBL_ENTRY)&_ZN5S48C63v76Ev,
  (VTBL_ENTRY)&_ZN5S48C63v77Ev,
  (VTBL_ENTRY)&_ZN5S48C63v78Ev,
  (VTBL_ENTRY)&_ZN5S48C63v79Ev,
  (VTBL_ENTRY)&_ZN5S48C63v80Ev,
  (VTBL_ENTRY)&_ZN5S48C63v81Ev,
  (VTBL_ENTRY)&_ZN5S48C63v82Ev,
  (VTBL_ENTRY)&_ZN5S48C63v83Ev,
  (VTBL_ENTRY)&_ZN5S48C63v84Ev,
  (VTBL_ENTRY)&_ZN5S48C63v85Ev,
  (VTBL_ENTRY)&_ZN5S48C63v86Ev,
  (VTBL_ENTRY)&_ZN5S48C63v87Ev,
  (VTBL_ENTRY)&_ZN5S48C63v88Ev,
  (VTBL_ENTRY)&_ZN5S48C63v89Ev,
  (VTBL_ENTRY)&_ZN5S48C63v90Ev,
  (VTBL_ENTRY)&_ZN5S48C63v91Ev,
  (VTBL_ENTRY)&_ZN5S48C63v92Ev,
  (VTBL_ENTRY)&_ZN5S48C63v93Ev,
  (VTBL_ENTRY)&_ZN5S48C63v94Ev,
  (VTBL_ENTRY)&_ZN5S48C63v95Ev,
  (VTBL_ENTRY)&_ZN5S48C63v96Ev,
  (VTBL_ENTRY)&_ZN5S48C63v97Ev,
  (VTBL_ENTRY)&_ZN5S48C63v98Ev,
  (VTBL_ENTRY)&_ZN5S48C63v99Ev,
  (VTBL_ENTRY)&_ZN5S48C64v100Ev,
  (VTBL_ENTRY)&_ZN5S48C64v101Ev,
  (VTBL_ENTRY)&_ZN5S48C64v102Ev,
  (VTBL_ENTRY)&_ZN5S48C64v103Ev,
  (VTBL_ENTRY)&_ZN5S48C64v104Ev,
  (VTBL_ENTRY)&_ZN5S48C64v105Ev,
  (VTBL_ENTRY)&_ZN5S48C64v106Ev,
  (VTBL_ENTRY)&_ZN5S48C64v107Ev,
  (VTBL_ENTRY)&_ZN5S48C64v108Ev,
  (VTBL_ENTRY)&_ZN5S48C64v109Ev,
  (VTBL_ENTRY)&_ZN5S48C64v110Ev,
  (VTBL_ENTRY)&_ZN5S48C64v111Ev,
  (VTBL_ENTRY)&_ZN5S48C64v112Ev,
  (VTBL_ENTRY)&_ZN5S48C64v113Ev,
  (VTBL_ENTRY)&_ZN5S48C64v114Ev,
  (VTBL_ENTRY)&_ZN5S48C64v115Ev,
  (VTBL_ENTRY)&_ZN5S48C64v116Ev,
  (VTBL_ENTRY)&_ZN5S48C64v117Ev,
  (VTBL_ENTRY)&_ZN5S48C64v118Ev,
  (VTBL_ENTRY)&_ZN5S48C64v119Ev,
  (VTBL_ENTRY)&_ZN5S48C64v120Ev,
  (VTBL_ENTRY)&_ZN5S48C64v121Ev,
  (VTBL_ENTRY)&_ZN5S48C64v122Ev,
  (VTBL_ENTRY)&_ZN5S48C64v123Ev,
  (VTBL_ENTRY)&_ZN5S48C64v124Ev,
  (VTBL_ENTRY)&_ZN5S48C64v125Ev,
  (VTBL_ENTRY)&_ZN5S48C64v126Ev,
  (VTBL_ENTRY)&_ZN5S48C64v127Ev,
  (VTBL_ENTRY)&_ZN5S48C64v128Ev,
  (VTBL_ENTRY)&_ZN5S48C64v129Ev,
  (VTBL_ENTRY)&_ZN5S48C64v130Ev,
  (VTBL_ENTRY)&_ZN5S48C64v131Ev,
  (VTBL_ENTRY)&_ZN5S48C64v132Ev,
  (VTBL_ENTRY)&_ZN5S48C64v133Ev,
  (VTBL_ENTRY)&_ZN5S48C64v134Ev,
  (VTBL_ENTRY)&_ZN5S48C64v135Ev,
  (VTBL_ENTRY)&_ZN5S48C64v136Ev,
  (VTBL_ENTRY)&_ZN5S48C64v137Ev,
  (VTBL_ENTRY)&_ZN5S48C64v138Ev,
  (VTBL_ENTRY)&_ZN5S48C64v139Ev,
  (VTBL_ENTRY)&_ZN5S48C64v140Ev,
  (VTBL_ENTRY)&_ZN5S48C64v141Ev,
  (VTBL_ENTRY)&_ZN5S48C64v142Ev,
  (VTBL_ENTRY)&_ZN5S48C64v143Ev,
  (VTBL_ENTRY)&_ZN5S48C64v144Ev,
  (VTBL_ENTRY)&_ZN5S48C64v145Ev,
  (VTBL_ENTRY)&_ZN5S48C64v146Ev,
  (VTBL_ENTRY)&_ZN5S48C64v147Ev,
  (VTBL_ENTRY)&_ZN5S48C64v148Ev,
  (VTBL_ENTRY)&_ZN5S48C64v149Ev,
  (VTBL_ENTRY)&_ZN5S48C64v150Ev,
  (VTBL_ENTRY)&_ZN5S48C64v151Ev,
  (VTBL_ENTRY)&_ZN5S48C64v152Ev,
  (VTBL_ENTRY)&_ZN5S48C64v153Ev,
  (VTBL_ENTRY)&_ZN5S48C64v154Ev,
  (VTBL_ENTRY)&_ZN5S48C64v155Ev,
  (VTBL_ENTRY)&_ZN5S48C64v156Ev,
  (VTBL_ENTRY)&_ZN5S48C64v157Ev,
  (VTBL_ENTRY)&_ZN5S48C64v158Ev,
  (VTBL_ENTRY)&_ZN5S48C64v159Ev,
  (VTBL_ENTRY)&_ZN5S48C64v160Ev,
  (VTBL_ENTRY)&_ZN5S48C64v161Ev,
  (VTBL_ENTRY)&_ZN5S48C64v162Ev,
  (VTBL_ENTRY)&_ZN5S48C64v163Ev,
  (VTBL_ENTRY)&_ZN5S48C64v164Ev,
  (VTBL_ENTRY)&_ZN5S48C64v165Ev,
  (VTBL_ENTRY)&_ZN5S48C64v166Ev,
  (VTBL_ENTRY)&_ZN5S48C64v167Ev,
  (VTBL_ENTRY)&_ZN5S48C64v168Ev,
  (VTBL_ENTRY)&_ZN5S48C64v169Ev,
  (VTBL_ENTRY)&_ZN5S48C64v170Ev,
  (VTBL_ENTRY)&_ZN5S48C64v171Ev,
  (VTBL_ENTRY)&_ZN5S48C64v172Ev,
  (VTBL_ENTRY)&_ZN5S48C64v173Ev,
  (VTBL_ENTRY)&_ZN5S48C64v174Ev,
  (VTBL_ENTRY)&_ZN5S48C64v175Ev,
  (VTBL_ENTRY)&_ZN5S48C64v176Ev,
  (VTBL_ENTRY)&_ZN5S48C64v177Ev,
  (VTBL_ENTRY)&_ZN5S48C64v178Ev,
  (VTBL_ENTRY)&_ZN5S48C64v179Ev,
  (VTBL_ENTRY)&_ZN5S48C64v180Ev,
  (VTBL_ENTRY)&_ZN5S48C64v181Ev,
  (VTBL_ENTRY)&_ZN5S48C64v182Ev,
  (VTBL_ENTRY)&_ZN5S48C64v183Ev,
  (VTBL_ENTRY)&_ZN5S48C64v184Ev,
  (VTBL_ENTRY)&_ZN5S48C64v185Ev,
  (VTBL_ENTRY)&_ZN5S48C64v186Ev,
  (VTBL_ENTRY)&_ZN5S48C64v187Ev,
  (VTBL_ENTRY)&_ZN5S48C64v188Ev,
  (VTBL_ENTRY)&_ZN5S48C64v189Ev,
  (VTBL_ENTRY)&_ZN5S48C64v190Ev,
  (VTBL_ENTRY)&_ZN5S48C64v191Ev,
  (VTBL_ENTRY)&_ZN5S48C64v192Ev,
  (VTBL_ENTRY)&_ZN5S48C64v193Ev,
  (VTBL_ENTRY)&_ZN5S48C64v194Ev,
  (VTBL_ENTRY)&_ZN5S48C64v195Ev,
  (VTBL_ENTRY)&_ZN5S48C64v196Ev,
  (VTBL_ENTRY)&_ZN5S48C64v197Ev,
  (VTBL_ENTRY)&_ZN5S48C64v198Ev,
  (VTBL_ENTRY)&_ZN5S48C64v199Ev,
  (VTBL_ENTRY)&_ZN5S48C64v200Ev,
  (VTBL_ENTRY)&_ZN5S48C64v201Ev,
  (VTBL_ENTRY)&_ZN5S48C64v202Ev,
  (VTBL_ENTRY)&_ZN5S48C64v203Ev,
  (VTBL_ENTRY)&_ZN5S48C64v204Ev,
  (VTBL_ENTRY)&_ZN5S48C64v205Ev,
  (VTBL_ENTRY)&_ZN5S48C64v206Ev,
  (VTBL_ENTRY)&_ZN5S48C64v207Ev,
  (VTBL_ENTRY)&_ZN5S48C64v208Ev,
  (VTBL_ENTRY)&_ZN5S48C64v209Ev,
  (VTBL_ENTRY)&_ZN5S48C64v210Ev,
  (VTBL_ENTRY)&_ZN5S48C64v211Ev,
  (VTBL_ENTRY)&_ZN5S48C64v212Ev,
  (VTBL_ENTRY)&_ZN5S48C64v213Ev,
  (VTBL_ENTRY)&_ZN5S48C64v214Ev,
  (VTBL_ENTRY)&_ZN5S48C64v215Ev,
  (VTBL_ENTRY)&_ZN5S48C64v216Ev,
  (VTBL_ENTRY)&_ZN5S48C64v217Ev,
  (VTBL_ENTRY)&_ZN5S48C54v218Ev,
  (VTBL_ENTRY)&_ZN5S48C54v219Ev,
  (VTBL_ENTRY)&_ZN5S48C54v220Ev,
  (VTBL_ENTRY)&_ZN5S48C54v221Ev,
  (VTBL_ENTRY)&_ZN5S48C54v222Ev,
  (VTBL_ENTRY)&_ZN5S48C54v223Ev,
  (VTBL_ENTRY)&_ZN5S48C54v224Ev,
  (VTBL_ENTRY)&_ZN5S48C54v225Ev,
  (VTBL_ENTRY)&_ZN5S48C54v226Ev,
  (VTBL_ENTRY)&_ZN5S48C54v227Ev,
  (VTBL_ENTRY)&_ZN5S48C54v228Ev,
  (VTBL_ENTRY)&_ZN5S48C54v229Ev,
  (VTBL_ENTRY)&_ZN5S48C54v230Ev,
  (VTBL_ENTRY)&_ZN5S48C54v231Ev,
  (VTBL_ENTRY)&_ZN5S48C54v232Ev,
  (VTBL_ENTRY)&_ZN5S48C54v233Ev,
  (VTBL_ENTRY)&_ZN5S48C54v234Ev,
  (VTBL_ENTRY)&_ZN5S48C54v235Ev,
  (VTBL_ENTRY)&_ZN5S48C54v236Ev,
  (VTBL_ENTRY)&_ZN5S48C54v237Ev,
  (VTBL_ENTRY)&_ZN5S48C54v238Ev,
  (VTBL_ENTRY)&_ZN5S48C54v239Ev,
  (VTBL_ENTRY)&_ZN5S48C54v240Ev,
  (VTBL_ENTRY)&_ZN5S48C54v241Ev,
  (VTBL_ENTRY)&_ZN5S48C54v242Ev,
  (VTBL_ENTRY)&_ZN5S48C54v243Ev,
  (VTBL_ENTRY)&_ZN5S48C54v244Ev,
  (VTBL_ENTRY)&_ZN5S48C54v245Ev,
  (VTBL_ENTRY)&_ZN5S48C54v246Ev,
  (VTBL_ENTRY)&_ZN5S48C54v247Ev,
  (VTBL_ENTRY)&_ZN5S48C54v248Ev,
  (VTBL_ENTRY)&_ZN5S48C54v249Ev,
  (VTBL_ENTRY)&_ZN5S48C54v250Ev,
  (VTBL_ENTRY)&_ZN5S48C54v251Ev,
  (VTBL_ENTRY)&_ZN5S48C54v252Ev,
  (VTBL_ENTRY)&_ZN5S48C54v253Ev,
  (VTBL_ENTRY)&_ZN5S48C54v254Ev,
  (VTBL_ENTRY)&_ZN5S48C54v255Ev,
  (VTBL_ENTRY)&_ZN5S48C54v256Ev,
  (VTBL_ENTRY)&_ZN5S48C54v257Ev,
  (VTBL_ENTRY)&_ZN5S48C54v258Ev,
  (VTBL_ENTRY)&_ZN5S48C54v259Ev,
  (VTBL_ENTRY)&_ZN5S48C54v260Ev,
  (VTBL_ENTRY)&_ZN5S48C54v261Ev,
  (VTBL_ENTRY)&_ZN5S48C54v262Ev,
  (VTBL_ENTRY)&_ZN5S48C54v263Ev,
  (VTBL_ENTRY)&_ZN5S48C54v264Ev,
  (VTBL_ENTRY)&_ZN5S48C54v265Ev,
  (VTBL_ENTRY)&_ZN5S48C54v266Ev,
  (VTBL_ENTRY)&_ZN5S48C54v267Ev,
};
extern VTBL_ENTRY _ZTI5S48C5[];
extern  VTBL_ENTRY _ZTV5S48C5[];
Class_Descriptor cd_S48C5 = {  "S48C5", // class name
  bases_S48C5, 2,
  &(vtc_S48C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(920,692), // object size
  NSPAIRA(_ZTI5S48C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S48C5),261, //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  S48C40  : S28C12_nt {
};
//SIG(-1 S48C40) C1{ BC2{ m Fp Fi[2]}}



static void Test_S48C40()
{
  extern Class_Descriptor cd_S48C40;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S48C40, buf);
    S48C40 &lv = *(new (buf) S48C40());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S48C40)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S48C40)");
    check_base_class_offset(lv, (S28C12_nt*), 0, "S48C40");
    test_class_info(&lv, &cd_S48C40);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS48C40(Test_S48C40, "S48C40", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S48C39()
{
  extern Class_Descriptor cd_S48C39;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S48C39, buf);
    S48C39 &lv = *(new (buf) S48C39());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S48C39)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S48C39)");
    check_base_class_offset(lv, (S28C12_nt*)(S48C40*), 0, "S48C39");
    check_base_class_offset(lv, (S48C40*), 0, "S48C39");
    test_class_info(&lv, &cd_S48C39);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS48C39(Test_S48C39, "S48C39", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S48C44()
{
  extern Class_Descriptor cd_S48C44;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S48C44, buf);
    S48C44 &lv = *(new (buf) S48C44());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S48C44)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S48C44)");
    check_base_class_offset(lv, (S28C12_nt*), 0, "S48C44");
    test_class_info(&lv, &cd_S48C44);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS48C44(Test_S48C44, "S48C44", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S48C43()
{
  extern Class_Descriptor cd_S48C43;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S48C43, buf);
    S48C43 &lv = *(new (buf) S48C43());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S48C43)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S48C43)");
    check_base_class_offset(lv, (S28C12_nt*)(S48C44*), 0, "S48C43");
    check_base_class_offset(lv, (S48C44*), 0, "S48C43");
    test_class_info(&lv, &cd_S48C43);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS48C43(Test_S48C43, "S48C43", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S48C48()
{
  extern Class_Descriptor cd_S48C48;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S48C48, buf);
    S48C48 &lv = *(new (buf) S48C48());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S48C48)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S48C48)");
    check_base_class_offset(lv, (S28C12_nt*), 0, "S48C48");
    test_class_info(&lv, &cd_S48C48);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS48C48(Test_S48C48, "S48C48", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S48C47()
{
  extern Class_Descriptor cd_S48C47;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S48C47, buf);
    S48C47 &lv = *(new (buf) S48C47());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S48C47)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S48C47)");
    check_base_class_offset(lv, (S28C12_nt*)(S48C48*), 0, "S48C47");
    check_base_class_offset(lv, (S48C48*), 0, "S48C47");
    test_class_info(&lv, &cd_S48C47);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS48C47(Test_S48C47, "S48C47", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S28C12_nt;
extern Class_Descriptor cd_S48C48;
static Base_Class bases_S48C47[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S48C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S48C47 = {  "S48C47", // class name
  bases_S48C47, 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  S48C4  : S48C5 {
  void *s48c4f0[8];
  unsigned int s48c4f1:1;
  unsigned int s48c4f2:1;
  unsigned int s48c4f3:1;
  unsigned int s48c4f4:1;
  unsigned int s48c4f5:1;
  unsigned int s48c4f6:1;
  unsigned int s48c4f7:1;
  unsigned int s48c4f8:1;
  unsigned int s48c4f9:1;
  unsigned int s48c4f10:1;
  unsigned int s48c4f11:1;
  unsigned int s48c4f12:1;
  unsigned int s48c4f13:1;
  unsigned int s48c4f14:1;
  unsigned int s48c4f15:1;
  unsigned int s48c4f16:1;
  unsigned int s48c4f17:1;
  unsigned int s48c4f18:1;
  unsigned int s48c4f19:1;
  unsigned int s48c4f20:1;
  unsigned int s48c4f21:1;
  unsigned int s48c4f22:1;
  unsigned int s48c4f23:1;
  unsigned int s48c4f24:1;
  int s48c4f25[2];
  void *s48c4f26;
  char s48c4f27[6];
  void *s48c4f28[2];
  int s48c4f29[4];
  ::S48C18 s48c4f30;
  int s48c4f31;
  ::S48C18 s48c4f32;
  void *s48c4f33[5];
  ::S28C18_nt s48c4f34;
  int s48c4f35[12];
  ::S28C30 s48c4f36;
  ::S28C31_nt s48c4f37[2];
  int s48c4f38;
  ::S28C31_nt s48c4f39;
  ::S28C31_nt s48c4f40;
  ::S28C31_nt s48c4f41;
  ::S28C31_nt s48c4f42;
  int s48c4f43;
  ::S28C18_nt s48c4f44;
  void *s48c4f45[4];
  ::S28C18_nt s48c4f46;
  void *s48c4f47;
  ::S28C31_nt s48c4f48;
  void *s48c4f49;
  ::S28C16 s48c4f50;
  ::S28C10_nt s48c4f51;
  ::S28C10_nt s48c4f52;
  ::S28C10_nt s48c4f53;
  void *s48c4f54;
  ::S28C38 s48c4f55;
  void *s48c4f56;
  int s48c4f57;
  ::S48C39 s48c4f58;
  int s48c4f59;
  ::S28C31_nt s48c4f60[4];
  ::S48C39 s48c4f61;
  void *s48c4f62;
  ::S48C43 s48c4f63;
  int s48c4f64[3];
  ::S48C43 s48c4f65;
  ::S48C43 s48c4f66;
  ::S28C44 s48c4f67;
  ::S48C47 s48c4f68;
  int s48c4f69;
  ::S28C50 s48c4f70;
  virtual  ~S48C4(); // _ZN5S48C4D1Ev
  virtual void  v268(); // _ZN5S48C44v268Ev
  virtual void  v269(); // _ZN5S48C44v269Ev
  virtual void  v270(); // _ZN5S48C44v270Ev
  virtual void  v271(); // _ZN5S48C44v271Ev
  virtual void  v272(); // _ZN5S48C44v272Ev
  virtual void  v273(); // _ZN5S48C44v273Ev
  virtual void  v274(); // _ZN5S48C44v274Ev
  virtual void  v275(); // _ZN5S48C44v275Ev
  virtual void  v276(); // _ZN5S48C44v276Ev
  virtual void  v277(); // _ZN5S48C44v277Ev
  virtual void  v278(); // _ZN5S48C44v278Ev
  virtual void  v279(); // _ZN5S48C44v279Ev
  virtual void  v280(); // _ZN5S48C44v280Ev
  virtual void  v281(); // _ZN5S48C44v281Ev
  virtual void  v282(); // _ZN5S48C44v282Ev
  virtual void  v283(); // _ZN5S48C44v283Ev
  virtual void  v284(); // _ZN5S48C44v284Ev
  virtual void  v285(); // _ZN5S48C44v285Ev
  virtual void  v286(); // _ZN5S48C44v286Ev
  virtual void  v287(); // _ZN5S48C44v287Ev
  virtual void  v288(); // _ZN5S48C44v288Ev
  virtual void  v289(); // _ZN5S48C44v289Ev
  virtual void  v290(); // _ZN5S48C44v290Ev
  virtual void  v291(); // _ZN5S48C44v291Ev
  virtual void  v292(); // _ZN5S48C44v292Ev
  virtual void  v293(); // _ZN5S48C44v293Ev
  virtual void  v294(); // _ZN5S48C44v294Ev
  virtual void  v295(); // _ZN5S48C44v295Ev
  virtual void  v296(); // _ZN5S48C44v296Ev
  virtual void  v297(); // _ZN5S48C44v297Ev
  virtual void  v298(); // _ZN5S48C44v298Ev
  virtual void  v299(); // _ZN5S48C44v299Ev
  virtual void  v300(); // _ZN5S48C44v300Ev
  virtual void  v301(); // _ZN5S48C44v301Ev
  virtual void  v302(); // _ZN5S48C44v302Ev
  virtual void  v303(); // _ZN5S48C44v303Ev
  virtual void  v304(); // _ZN5S48C44v304Ev
  virtual void  v305(); // _ZN5S48C44v305Ev
  S48C4(); // tgen
};
//SIG(-1 S48C4) C1{ BC2{ BC3{ BC4{ vd 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 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd 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 v245 FC6{ BC7{ BC8{ m Fp Fi[2]}}} FC6 FC9{ m Fi} Fi Fc[4] Fp[2] FC10{ BC11{ BC8}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC5 FC5 FC5 FC12{ BC13{ BC8}} FC12 Fi Fp[2] FC14{ m Fi[3]} FC15{ m Fi[3]} FC14 FC14 Fp FC5 FC12 FC14 FC15 Fi FC14 FC14 Fp Fi Fc FC15 FC15 Fp Fi Fp FC16{ BC17{ BC8}} FC18{ BC19{ BC8}} FC20{ BC21{ BC8}}} vd v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 v258 v259 v260 v261 v262 v263 v264 v265 v266 v267 v268 v269 v270 v271 v272 v273 v274 v275 v276 v277 v278 v279 v280 v281 v282 v283 v284 v285 v286 v287 v288 v289 v290 v291 v292 v293 v294 v295 Fp[2] Fi Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fc Fi[2] Fp FC14 FC14 Fp[5] FC14 Fp FC22{ BC23{ BC8}} Fp[2] FC14 Fp Fi[2] Fp Fi FC14 FC14 FC14 Fp[2] Fi FC14 Fi[4] Fp[2] FC24{ BC25{ BC8}} Fi FC15} 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 Fp[8] Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2] Fp Fc[6] Fp[2] Fi[4] FC15 Fi FC15 Fp[5] FC14 Fi[12] FC26{ Fi Fc FC14 FC14 Fp FC14 Fc} FC27{ BC20}[2] Fi FC27 FC27 FC27 FC27 Fi FC14 Fp[4] FC14 Fp FC27 Fp FC28{ BC29{ BC8}} FC30{ BC31{ BC8}} FC30 FC30 Fp FC32{ BC33{ m Fp[2]}} Fp Fi FC34{ BC35{ BC8}} Fi FC27[4] FC34 Fp FC36{ BC37{ BC8}} Fi[3] FC36 FC36 FC12 FC38{ BC39{ BC8}} Fi FC40{ m Fp FC5}}


 S48C4 ::~S48C4(){ note_dtor("S48C4", this);}
void  S48C4 ::v268(){vfunc_called(this, "_ZN5S48C44v268Ev");}
void  S48C4 ::v269(){vfunc_called(this, "_ZN5S48C44v269Ev");}
void  S48C4 ::v270(){vfunc_called(this, "_ZN5S48C44v270Ev");}
void  S48C4 ::v271(){vfunc_called(this, "_ZN5S48C44v271Ev");}
void  S48C4 ::v272(){vfunc_called(this, "_ZN5S48C44v272Ev");}
void  S48C4 ::v273(){vfunc_called(this, "_ZN5S48C44v273Ev");}
void  S48C4 ::v274(){vfunc_called(this, "_ZN5S48C44v274Ev");}
void  S48C4 ::v275(){vfunc_called(this, "_ZN5S48C44v275Ev");}
void  S48C4 ::v276(){vfunc_called(this, "_ZN5S48C44v276Ev");}
void  S48C4 ::v277(){vfunc_called(this, "_ZN5S48C44v277Ev");}
void  S48C4 ::v278(){vfunc_called(this, "_ZN5S48C44v278Ev");}
void  S48C4 ::v279(){vfunc_called(this, "_ZN5S48C44v279Ev");}
void  S48C4 ::v280(){vfunc_called(this, "_ZN5S48C44v280Ev");}
void  S48C4 ::v281(){vfunc_called(this, "_ZN5S48C44v281Ev");}
void  S48C4 ::v282(){vfunc_called(this, "_ZN5S48C44v282Ev");}
void  S48C4 ::v283(){vfunc_called(this, "_ZN5S48C44v283Ev");}
void  S48C4 ::v284(){vfunc_called(this, "_ZN5S48C44v284Ev");}
void  S48C4 ::v285(){vfunc_called(this, "_ZN5S48C44v285Ev");}
void  S48C4 ::v286(){vfunc_called(this, "_ZN5S48C44v286Ev");}
void  S48C4 ::v287(){vfunc_called(this, "_ZN5S48C44v287Ev");}
void  S48C4 ::v288(){vfunc_called(this, "_ZN5S48C44v288Ev");}
void  S48C4 ::v289(){vfunc_called(this, "_ZN5S48C44v289Ev");}
void  S48C4 ::v290(){vfunc_called(this, "_ZN5S48C44v290Ev");}
void  S48C4 ::v291(){vfunc_called(this, "_ZN5S48C44v291Ev");}
void  S48C4 ::v292(){vfunc_called(this, "_ZN5S48C44v292Ev");}
void  S48C4 ::v293(){vfunc_called(this, "_ZN5S48C44v293Ev");}
void  S48C4 ::v294(){vfunc_called(this, "_ZN5S48C44v294Ev");}
void  S48C4 ::v295(){vfunc_called(this, "_ZN5S48C44v295Ev");}
void  S48C4 ::v296(){vfunc_called(this, "_ZN5S48C44v296Ev");}
void  S48C4 ::v297(){vfunc_called(this, "_ZN5S48C44v297Ev");}
void  S48C4 ::v298(){vfunc_called(this, "_ZN5S48C44v298Ev");}
void  S48C4 ::v299(){vfunc_called(this, "_ZN5S48C44v299Ev");}
void  S48C4 ::v300(){vfunc_called(this, "_ZN5S48C44v300Ev");}
void  S48C4 ::v301(){vfunc_called(this, "_ZN5S48C44v301Ev");}
void  S48C4 ::v302(){vfunc_called(this, "_ZN5S48C44v302Ev");}
void  S48C4 ::v303(){vfunc_called(this, "_ZN5S48C44v303Ev");}
void  S48C4 ::v304(){vfunc_called(this, "_ZN5S48C44v304Ev");}
void  S48C4 ::v305(){vfunc_called(this, "_ZN5S48C44v305Ev");}
S48C4 ::S48C4(){ note_ctor("S48C4", this);} // tgen

static void Test_S48C4()
{
  extern Class_Descriptor cd_S48C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(223,328)];
    init_test(&cd_S48C4, buf);
    S48C4 *dp, &lv = *(dp=new (buf) S48C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1776,1308), "sizeof(S48C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S48C4)");
    check_base_class_offset(lv, (S48C7*)(S48C6*)(S48C5*), 0, "S48C4");
    check_base_class_offset(lv, (S48C6*)(S48C5*), 0, "S48C4");
    check_base_class_offset(lv, (S48C5*), 0, "S48C4");
    check_field_offset(lv, s48c4f0, ABISELECT(920,692), "S48C4.s48c4f0");
    set_bf_and_test(lv, s48c4f1, ABISELECT(984,724), 0, 1, 1, "S48C4");
    set_bf_and_test(lv, s48c4f2, ABISELECT(984,724), 1, 1, 1, "S48C4");
    set_bf_and_test(lv, s48c4f3, ABISELECT(984,724), 2, 1, 1, "S48C4");
    set_bf_and_test(lv, s48c4f4, ABISELECT(984,724), 3, 1, 1, "S48C4");
    set_bf_and_test(lv, s48c4f5, ABISELECT(984,724), 4, 1, 1, "S48C4");
    set_bf_and_test(lv, s48c4f6, ABISELECT(984,724), 5, 1, 1, "S48C4");
    set_bf_and_test(lv, s48c4f7, ABISELECT(984,724), 6, 1, 1, "S48C4");
    set_bf_and_test(lv, s48c4f8, ABISELECT(984,724), 7, 1, 1, "S48C4");
    set_bf_and_test(lv, s48c4f9, ABISELECT(985,725), 0, 1, 1, "S48C4");
    set_bf_and_test(lv, s48c4f10, ABISELECT(985,725), 1, 1, 1, "S48C4");
    set_bf_and_test(lv, s48c4f11, ABISELECT(985,725), 2, 1, 1, "S48C4");
    set_bf_and_test(lv, s48c4f12, ABISELECT(985,725), 3, 1, 1, "S48C4");
    set_bf_and_test(lv, s48c4f13, ABISELECT(985,725), 4, 1, 1, "S48C4");
    set_bf_and_test(lv, s48c4f14, ABISELECT(985,725), 5, 1, 1, "S48C4");
    set_bf_and_test(lv, s48c4f15, ABISELECT(985,725), 6, 1, 1, "S48C4");
    set_bf_and_test(lv, s48c4f16, ABISELECT(985,725), 7, 1, 1, "S48C4");
    set_bf_and_test(lv, s48c4f17, ABISELECT(986,726), 0, 1, 1, "S48C4");
    set_bf_and_test(lv, s48c4f18, ABISELECT(986,726), 1, 1, 1, "S48C4");
    set_bf_and_test(lv, s48c4f19, ABISELECT(986,726), 2, 1, 1, "S48C4");
    set_bf_and_test(lv, s48c4f20, ABISELECT(986,726), 3, 1, 1, "S48C4");
    set_bf_and_test(lv, s48c4f21, ABISELECT(986,726), 4, 1, 1, "S48C4");
    set_bf_and_test(lv, s48c4f22, ABISELECT(986,726), 5, 1, 1, "S48C4");
    set_bf_and_test(lv, s48c4f23, ABISELECT(986,726), 6, 1, 1, "S48C4");
    set_bf_and_test(lv, s48c4f24, ABISELECT(986,726), 7, 1, 1, "S48C4");
    check_field_offset(lv, s48c4f25, ABISELECT(988,728), "S48C4.s48c4f25");
    check_field_offset(lv, s48c4f26, ABISELECT(1000,736), "S48C4.s48c4f26");
    check_field_offset(lv, s48c4f27, ABISELECT(1008,740), "S48C4.s48c4f27");
    check_field_offset(lv, s48c4f28, ABISELECT(1016,748), "S48C4.s48c4f28");
    check_field_offset(lv, s48c4f29, ABISELECT(1032,756), "S48C4.s48c4f29");
    check_field_offset(lv, s48c4f30, ABISELECT(1048,772), "S48C4.s48c4f30");
    check_field_offset(lv, s48c4f31, ABISELECT(1060,784), "S48C4.s48c4f31");
    check_field_offset(lv, s48c4f32, ABISELECT(1064,788), "S48C4.s48c4f32");
    check_field_offset(lv, s48c4f33, ABISELECT(1080,800), "S48C4.s48c4f33");
    check_field_offset(lv, s48c4f34, ABISELECT(1120,820), "S48C4.s48c4f34");
    check_field_offset(lv, s48c4f35, ABISELECT(1132,832), "S48C4.s48c4f35");
    check_field_offset(lv, s48c4f36, ABISELECT(1184,880), "S48C4.s48c4f36");
    check_field_offset(lv, s48c4f37, ABISELECT(1240,932), "S48C4.s48c4f37");
    check_field_offset(lv, s48c4f38, ABISELECT(1272,956), "S48C4.s48c4f38");
    check_field_offset(lv, s48c4f39, ABISELECT(1280,960), "S48C4.s48c4f39");
    check_field_offset(lv, s48c4f40, ABISELECT(1296,972), "S48C4.s48c4f40");
    check_field_offset(lv, s48c4f41, ABISELECT(1312,984), "S48C4.s48c4f41");
    check_field_offset(lv, s48c4f42, ABISELECT(1328,996), "S48C4.s48c4f42");
    check_field_offset(lv, s48c4f43, ABISELECT(1344,1008), "S48C4.s48c4f43");
    check_field_offset(lv, s48c4f44, ABISELECT(1348,1012), "S48C4.s48c4f44");
    check_field_offset(lv, s48c4f45, ABISELECT(1360,1024), "S48C4.s48c4f45");
    check_field_offset(lv, s48c4f46, ABISELECT(1392,1040), "S48C4.s48c4f46");
    check_field_offset(lv, s48c4f47, ABISELECT(1408,1052), "S48C4.s48c4f47");
    check_field_offset(lv, s48c4f48, ABISELECT(1416,1056), "S48C4.s48c4f48");
    check_field_offset(lv, s48c4f49, ABISELECT(1432,1068), "S48C4.s48c4f49");
    check_field_offset(lv, s48c4f50, ABISELECT(1440,1072), "S48C4.s48c4f50");
    check_field_offset(lv, s48c4f51, ABISELECT(1456,1084), "S48C4.s48c4f51");
    check_field_offset(lv, s48c4f52, ABISELECT(1472,1096), "S48C4.s48c4f52");
    check_field_offset(lv, s48c4f53, ABISELECT(1488,1108), "S48C4.s48c4f53");
    check_field_offset(lv, s48c4f54, ABISELECT(1504,1120), "S48C4.s48c4f54");
    check_field_offset(lv, s48c4f55, ABISELECT(1512,1124), "S48C4.s48c4f55");
    check_field_offset(lv, s48c4f56, ABISELECT(1528,1132), "S48C4.s48c4f56");
    check_field_offset(lv, s48c4f57, ABISELECT(1536,1136), "S48C4.s48c4f57");
    check_field_offset(lv, s48c4f58, ABISELECT(1544,1140), "S48C4.s48c4f58");
    check_field_offset(lv, s48c4f59, ABISELECT(1560,1152), "S48C4.s48c4f59");
    check_field_offset(lv, s48c4f60, ABISELECT(1568,1156), "S48C4.s48c4f60");
    check_field_offset(lv, s48c4f61, ABISELECT(1632,1204), "S48C4.s48c4f61");
    check_field_offset(lv, s48c4f62, ABISELECT(1648,1216), "S48C4.s48c4f62");
    check_field_offset(lv, s48c4f63, ABISELECT(1656,1220), "S48C4.s48c4f63");
    check_field_offset(lv, s48c4f64, ABISELECT(1672,1232), "S48C4.s48c4f64");
    check_field_offset(lv, s48c4f65, ABISELECT(1688,1244), "S48C4.s48c4f65");
    check_field_offset(lv, s48c4f66, ABISELECT(1704,1256), "S48C4.s48c4f66");
    check_field_offset(lv, s48c4f67, ABISELECT(1720,1268), "S48C4.s48c4f67");
    check_field_offset(lv, s48c4f68, ABISELECT(1736,1280), "S48C4.s48c4f68");
    check_field_offset(lv, s48c4f69, ABISELECT(1752,1292), "S48C4.s48c4f69");
    check_field_offset(lv, s48c4f70, ABISELECT(1760,1296), "S48C4.s48c4f70");
    test_class_info(&lv, &cd_S48C4);
    dp->~S48C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS48C4(Test_S48C4, "S48C4", ABISELECT(1776,1308));

#else // __cplusplus

extern void _ZN5S48C4C1Ev();
extern void _ZN5S48C4D1Ev();
Name_Map name_map_S48C4[] = {
  NSPAIR(_ZN5S48C4C1Ev),
  NSPAIR(_ZN5S48C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S48C7;
extern VTBL_ENTRY _ZTI5S48C7[];
extern  VTBL_ENTRY _ZTV5S48C7[];
extern Class_Descriptor cd_S48C6;
extern VTBL_ENTRY _ZTI5S48C6[];
extern  VTBL_ENTRY _ZTV5S48C6[];
extern Class_Descriptor cd_S48C5;
extern VTBL_ENTRY _ZTI5S48C5[];
extern  VTBL_ENTRY _ZTV5S48C5[];
static Base_Class bases_S48C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S48C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S48C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S48C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI5S48C4[];
extern void _ZN5S48C4D1Ev();
extern void _ZN5S48C4D0Ev();
extern void _ZN5S48C73v11Ev();
extern void _ZN5S48C73v12Ev();
extern void _ZN5S48C73v13Ev();
extern void _ZN5S48C73v14Ev();
extern void _ZN5S48C73v15Ev();
extern void _ZN5S48C73v16Ev();
extern void _ZN5S48C73v17Ev();
extern void _ZN5S48C73v18Ev();
extern void _ZN5S48C73v19Ev();
extern void _ZN5S48C73v20Ev();
extern void _ZN5S48C73v21Ev();
extern void _ZN5S48C73v22Ev();
extern void _ZN5S48C73v23Ev();
extern void _ZN5S48C73v24Ev();
extern void _ZN5S48C73v25Ev();
extern void _ZN5S48C73v26Ev();
extern void _ZN5S48C73v27Ev();
extern void _ZN5S48C73v28Ev();
extern void _ZN5S48C73v29Ev();
extern void _ZN5S48C73v30Ev();
extern void _ZN5S48C73v31Ev();
extern void _ZN5S48C73v32Ev();
extern void _ZN5S48C73v33Ev();
extern void _ZN5S48C73v34Ev();
extern void _ZN5S48C73v35Ev();
extern void _ZN5S48C73v36Ev();
extern void _ZN5S48C73v37Ev();
extern void _ZN5S48C73v38Ev();
extern void _ZN5S48C73v39Ev();
extern void _ZN5S48C73v40Ev();
extern void _ZN5S48C73v41Ev();
extern void _ZN5S48C73v42Ev();
extern void _ZN5S48C73v43Ev();
extern void _ZN5S48C73v44Ev();
extern void _ZN5S48C73v45Ev();
extern void _ZN5S48C73v46Ev();
extern void _ZN5S48C73v47Ev();
extern void _ZN5S48C73v48Ev();
extern void _ZN5S48C73v49Ev();
extern void _ZN5S48C73v50Ev();
extern void _ZN5S48C73v51Ev();
extern void _ZN5S48C73v52Ev();
extern void _ZN5S48C73v53Ev();
extern void _ZN5S48C73v54Ev();
extern void _ZN5S48C73v55Ev();
extern void _ZN5S48C73v56Ev();
extern void _ZN5S48C73v57Ev();
extern void _ZN5S48C73v58Ev();
extern void _ZN5S48C73v59Ev();
extern void _ZN5S48C73v60Ev();
extern void _ZN5S48C73v61Ev();
extern void _ZN5S48C73v62Ev();
extern void _ZN5S48C73v63Ev();
extern void _ZN5S48C73v64Ev();
extern void _ZN5S48C73v65Ev();
extern void _ZN5S48C73v66Ev();
extern void _ZN5S48C73v67Ev();
extern void _ZN5S48C73v68Ev();
extern void _ZN5S48C73v69Ev();
extern void _ZN5S48C73v70Ev();
extern void _ZN5S48C73v71Ev();
extern void _ZN5S48C73v72Ev();
extern void _ZN5S48C73v73Ev();
extern void _ZN5S48C73v74Ev();
extern void _ZN5S48C63v75Ev();
extern void _ZN5S48C63v76Ev();
extern void _ZN5S48C63v77Ev();
extern void _ZN5S48C63v78Ev();
extern void _ZN5S48C63v79Ev();
extern void _ZN5S48C63v80Ev();
extern void _ZN5S48C63v81Ev();
extern void _ZN5S48C63v82Ev();
extern void _ZN5S48C63v83Ev();
extern void _ZN5S48C63v84Ev();
extern void _ZN5S48C63v85Ev();
extern void _ZN5S48C63v86Ev();
extern void _ZN5S48C63v87Ev();
extern void _ZN5S48C63v88Ev();
extern void _ZN5S48C63v89Ev();
extern void _ZN5S48C63v90Ev();
extern void _ZN5S48C63v91Ev();
extern void _ZN5S48C63v92Ev();
extern void _ZN5S48C63v93Ev();
extern void _ZN5S48C63v94Ev();
extern void _ZN5S48C63v95Ev();
extern void _ZN5S48C63v96Ev();
extern void _ZN5S48C63v97Ev();
extern void _ZN5S48C63v98Ev();
extern void _ZN5S48C63v99Ev();
extern void _ZN5S48C64v100Ev();
extern void _ZN5S48C64v101Ev();
extern void _ZN5S48C64v102Ev();
extern void _ZN5S48C64v103Ev();
extern void _ZN5S48C64v104Ev();
extern void _ZN5S48C64v105Ev();
extern void _ZN5S48C64v106Ev();
extern void _ZN5S48C64v107Ev();
extern void _ZN5S48C64v108Ev();
extern void _ZN5S48C64v109Ev();
extern void _ZN5S48C64v110Ev();
extern void _ZN5S48C64v111Ev();
extern void _ZN5S48C64v112Ev();
extern void _ZN5S48C64v113Ev();
extern void _ZN5S48C64v114Ev();
extern void _ZN5S48C64v115Ev();
extern void _ZN5S48C64v116Ev();
extern void _ZN5S48C64v117Ev();
extern void _ZN5S48C64v118Ev();
extern void _ZN5S48C64v119Ev();
extern void _ZN5S48C64v120Ev();
extern void _ZN5S48C64v121Ev();
extern void _ZN5S48C64v122Ev();
extern void _ZN5S48C64v123Ev();
extern void _ZN5S48C64v124Ev();
extern void _ZN5S48C64v125Ev();
extern void _ZN5S48C64v126Ev();
extern void _ZN5S48C64v127Ev();
extern void _ZN5S48C64v128Ev();
extern void _ZN5S48C64v129Ev();
extern void _ZN5S48C64v130Ev();
extern void _ZN5S48C64v131Ev();
extern void _ZN5S48C64v132Ev();
extern void _ZN5S48C64v133Ev();
extern void _ZN5S48C64v134Ev();
extern void _ZN5S48C64v135Ev();
extern void _ZN5S48C64v136Ev();
extern void _ZN5S48C64v137Ev();
extern void _ZN5S48C64v138Ev();
extern void _ZN5S48C64v139Ev();
extern void _ZN5S48C64v140Ev();
extern void _ZN5S48C64v141Ev();
extern void _ZN5S48C64v142Ev();
extern void _ZN5S48C64v143Ev();
extern void _ZN5S48C64v144Ev();
extern void _ZN5S48C64v145Ev();
extern void _ZN5S48C64v146Ev();
extern void _ZN5S48C64v147Ev();
extern void _ZN5S48C64v148Ev();
extern void _ZN5S48C64v149Ev();
extern void _ZN5S48C64v150Ev();
extern void _ZN5S48C64v151Ev();
extern void _ZN5S48C64v152Ev();
extern void _ZN5S48C64v153Ev();
extern void _ZN5S48C64v154Ev();
extern void _ZN5S48C64v155Ev();
extern void _ZN5S48C64v156Ev();
extern void _ZN5S48C64v157Ev();
extern void _ZN5S48C64v158Ev();
extern void _ZN5S48C64v159Ev();
extern void _ZN5S48C64v160Ev();
extern void _ZN5S48C64v161Ev();
extern void _ZN5S48C64v162Ev();
extern void _ZN5S48C64v163Ev();
extern void _ZN5S48C64v164Ev();
extern void _ZN5S48C64v165Ev();
extern void _ZN5S48C64v166Ev();
extern void _ZN5S48C64v167Ev();
extern void _ZN5S48C64v168Ev();
extern void _ZN5S48C64v169Ev();
extern void _ZN5S48C64v170Ev();
extern void _ZN5S48C64v171Ev();
extern void _ZN5S48C64v172Ev();
extern void _ZN5S48C64v173Ev();
extern void _ZN5S48C64v174Ev();
extern void _ZN5S48C64v175Ev();
extern void _ZN5S48C64v176Ev();
extern void _ZN5S48C64v177Ev();
extern void _ZN5S48C64v178Ev();
extern void _ZN5S48C64v179Ev();
extern void _ZN5S48C64v180Ev();
extern void _ZN5S48C64v181Ev();
extern void _ZN5S48C64v182Ev();
extern void _ZN5S48C64v183Ev();
extern void _ZN5S48C64v184Ev();
extern void _ZN5S48C64v185Ev();
extern void _ZN5S48C64v186Ev();
extern void _ZN5S48C64v187Ev();
extern void _ZN5S48C64v188Ev();
extern void _ZN5S48C64v189Ev();
extern void _ZN5S48C64v190Ev();
extern void _ZN5S48C64v191Ev();
extern void _ZN5S48C64v192Ev();
extern void _ZN5S48C64v193Ev();
extern void _ZN5S48C64v194Ev();
extern void _ZN5S48C64v195Ev();
extern void _ZN5S48C64v196Ev();
extern void _ZN5S48C64v197Ev();
extern void _ZN5S48C64v198Ev();
extern void _ZN5S48C64v199Ev();
extern void _ZN5S48C64v200Ev();
extern void _ZN5S48C64v201Ev();
extern void _ZN5S48C64v202Ev();
extern void _ZN5S48C64v203Ev();
extern void _ZN5S48C64v204Ev();
extern void _ZN5S48C64v205Ev();
extern void _ZN5S48C64v206Ev();
extern void _ZN5S48C64v207Ev();
extern void _ZN5S48C64v208Ev();
extern void _ZN5S48C64v209Ev();
extern void _ZN5S48C64v210Ev();
extern void _ZN5S48C64v211Ev();
extern void _ZN5S48C64v212Ev();
extern void _ZN5S48C64v213Ev();
extern void _ZN5S48C64v214Ev();
extern void _ZN5S48C64v215Ev();
extern void _ZN5S48C64v216Ev();
extern void _ZN5S48C64v217Ev();
extern void _ZN5S48C54v218Ev();
extern void _ZN5S48C54v219Ev();
extern void _ZN5S48C54v220Ev();
extern void _ZN5S48C54v221Ev();
extern void _ZN5S48C54v222Ev();
extern void _ZN5S48C54v223Ev();
extern void _ZN5S48C54v224Ev();
extern void _ZN5S48C54v225Ev();
extern void _ZN5S48C54v226Ev();
extern void _ZN5S48C54v227Ev();
extern void _ZN5S48C54v228Ev();
extern void _ZN5S48C54v229Ev();
extern void _ZN5S48C54v230Ev();
extern void _ZN5S48C54v231Ev();
extern void _ZN5S48C54v232Ev();
extern void _ZN5S48C54v233Ev();
extern void _ZN5S48C54v234Ev();
extern void _ZN5S48C54v235Ev();
extern void _ZN5S48C54v236Ev();
extern void _ZN5S48C54v237Ev();
extern void _ZN5S48C54v238Ev();
extern void _ZN5S48C54v239Ev();
extern void _ZN5S48C54v240Ev();
extern void _ZN5S48C54v241Ev();
extern void _ZN5S48C54v242Ev();
extern void _ZN5S48C54v243Ev();
extern void _ZN5S48C54v244Ev();
extern void _ZN5S48C54v245Ev();
extern void _ZN5S48C54v246Ev();
extern void _ZN5S48C54v247Ev();
extern void _ZN5S48C54v248Ev();
extern void _ZN5S48C54v249Ev();
extern void _ZN5S48C54v250Ev();
extern void _ZN5S48C54v251Ev();
extern void _ZN5S48C54v252Ev();
extern void _ZN5S48C54v253Ev();
extern void _ZN5S48C54v254Ev();
extern void _ZN5S48C54v255Ev();
extern void _ZN5S48C54v256Ev();
extern void _ZN5S48C54v257Ev();
extern void _ZN5S48C54v258Ev();
extern void _ZN5S48C54v259Ev();
extern void _ZN5S48C54v260Ev();
extern void _ZN5S48C54v261Ev();
extern void _ZN5S48C54v262Ev();
extern void _ZN5S48C54v263Ev();
extern void _ZN5S48C54v264Ev();
extern void _ZN5S48C54v265Ev();
extern void _ZN5S48C54v266Ev();
extern void _ZN5S48C54v267Ev();
extern void _ZN5S48C44v268Ev();
extern void _ZN5S48C44v269Ev();
extern void _ZN5S48C44v270Ev();
extern void _ZN5S48C44v271Ev();
extern void _ZN5S48C44v272Ev();
extern void _ZN5S48C44v273Ev();
extern void _ZN5S48C44v274Ev();
extern void _ZN5S48C44v275Ev();
extern void _ZN5S48C44v276Ev();
extern void _ZN5S48C44v277Ev();
extern void _ZN5S48C44v278Ev();
extern void _ZN5S48C44v279Ev();
extern void _ZN5S48C44v280Ev();
extern void _ZN5S48C44v281Ev();
extern void _ZN5S48C44v282Ev();
extern void _ZN5S48C44v283Ev();
extern void _ZN5S48C44v284Ev();
extern void _ZN5S48C44v285Ev();
extern void _ZN5S48C44v286Ev();
extern void _ZN5S48C44v287Ev();
extern void _ZN5S48C44v288Ev();
extern void _ZN5S48C44v289Ev();
extern void _ZN5S48C44v290Ev();
extern void _ZN5S48C44v291Ev();
extern void _ZN5S48C44v292Ev();
extern void _ZN5S48C44v293Ev();
extern void _ZN5S48C44v294Ev();
extern void _ZN5S48C44v295Ev();
extern void _ZN5S48C44v296Ev();
extern void _ZN5S48C44v297Ev();
extern void _ZN5S48C44v298Ev();
extern void _ZN5S48C44v299Ev();
extern void _ZN5S48C44v300Ev();
extern void _ZN5S48C44v301Ev();
extern void _ZN5S48C44v302Ev();
extern void _ZN5S48C44v303Ev();
extern void _ZN5S48C44v304Ev();
extern void _ZN5S48C44v305Ev();
static  VTBL_ENTRY vtc_S48C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S48C4[0]),
  (VTBL_ENTRY)&_ZN5S48C4D1Ev,
  (VTBL_ENTRY)&_ZN5S48C4D0Ev,
  (VTBL_ENTRY)&_ZN5S48C73v11Ev,
  (VTBL_ENTRY)&_ZN5S48C73v12Ev,
  (VTBL_ENTRY)&_ZN5S48C73v13Ev,
  (VTBL_ENTRY)&_ZN5S48C73v14Ev,
  (VTBL_ENTRY)&_ZN5S48C73v15Ev,
  (VTBL_ENTRY)&_ZN5S48C73v16Ev,
  (VTBL_ENTRY)&_ZN5S48C73v17Ev,
  (VTBL_ENTRY)&_ZN5S48C73v18Ev,
  (VTBL_ENTRY)&_ZN5S48C73v19Ev,
  (VTBL_ENTRY)&_ZN5S48C73v20Ev,
  (VTBL_ENTRY)&_ZN5S48C73v21Ev,
  (VTBL_ENTRY)&_ZN5S48C73v22Ev,
  (VTBL_ENTRY)&_ZN5S48C73v23Ev,
  (VTBL_ENTRY)&_ZN5S48C73v24Ev,
  (VTBL_ENTRY)&_ZN5S48C73v25Ev,
  (VTBL_ENTRY)&_ZN5S48C73v26Ev,
  (VTBL_ENTRY)&_ZN5S48C73v27Ev,
  (VTBL_ENTRY)&_ZN5S48C73v28Ev,
  (VTBL_ENTRY)&_ZN5S48C73v29Ev,
  (VTBL_ENTRY)&_ZN5S48C73v30Ev,
  (VTBL_ENTRY)&_ZN5S48C73v31Ev,
  (VTBL_ENTRY)&_ZN5S48C73v32Ev,
  (VTBL_ENTRY)&_ZN5S48C73v33Ev,
  (VTBL_ENTRY)&_ZN5S48C73v34Ev,
  (VTBL_ENTRY)&_ZN5S48C73v35Ev,
  (VTBL_ENTRY)&_ZN5S48C73v36Ev,
  (VTBL_ENTRY)&_ZN5S48C73v37Ev,
  (VTBL_ENTRY)&_ZN5S48C73v38Ev,
  (VTBL_ENTRY)&_ZN5S48C73v39Ev,
  (VTBL_ENTRY)&_ZN5S48C73v40Ev,
  (VTBL_ENTRY)&_ZN5S48C73v41Ev,
  (VTBL_ENTRY)&_ZN5S48C73v42Ev,
  (VTBL_ENTRY)&_ZN5S48C73v43Ev,
  (VTBL_ENTRY)&_ZN5S48C73v44Ev,
  (VTBL_ENTRY)&_ZN5S48C73v45Ev,
  (VTBL_ENTRY)&_ZN5S48C73v46Ev,
  (VTBL_ENTRY)&_ZN5S48C73v47Ev,
  (VTBL_ENTRY)&_ZN5S48C73v48Ev,
  (VTBL_ENTRY)&_ZN5S48C73v49Ev,
  (VTBL_ENTRY)&_ZN5S48C73v50Ev,
  (VTBL_ENTRY)&_ZN5S48C73v51Ev,
  (VTBL_ENTRY)&_ZN5S48C73v52Ev,
  (VTBL_ENTRY)&_ZN5S48C73v53Ev,
  (VTBL_ENTRY)&_ZN5S48C73v54Ev,
  (VTBL_ENTRY)&_ZN5S48C73v55Ev,
  (VTBL_ENTRY)&_ZN5S48C73v56Ev,
  (VTBL_ENTRY)&_ZN5S48C73v57Ev,
  (VTBL_ENTRY)&_ZN5S48C73v58Ev,
  (VTBL_ENTRY)&_ZN5S48C73v59Ev,
  (VTBL_ENTRY)&_ZN5S48C73v60Ev,
  (VTBL_ENTRY)&_ZN5S48C73v61Ev,
  (VTBL_ENTRY)&_ZN5S48C73v62Ev,
  (VTBL_ENTRY)&_ZN5S48C73v63Ev,
  (VTBL_ENTRY)&_ZN5S48C73v64Ev,
  (VTBL_ENTRY)&_ZN5S48C73v65Ev,
  (VTBL_ENTRY)&_ZN5S48C73v66Ev,
  (VTBL_ENTRY)&_ZN5S48C73v67Ev,
  (VTBL_ENTRY)&_ZN5S48C73v68Ev,
  (VTBL_ENTRY)&_ZN5S48C73v69Ev,
  (VTBL_ENTRY)&_ZN5S48C73v70Ev,
  (VTBL_ENTRY)&_ZN5S48C73v71Ev,
  (VTBL_ENTRY)&_ZN5S48C73v72Ev,
  (VTBL_ENTRY)&_ZN5S48C73v73Ev,
  (VTBL_ENTRY)&_ZN5S48C73v74Ev,
  (VTBL_ENTRY)&_ZN5S48C63v75Ev,
  (VTBL_ENTRY)&_ZN5S48C63v76Ev,
  (VTBL_ENTRY)&_ZN5S48C63v77Ev,
  (VTBL_ENTRY)&_ZN5S48C63v78Ev,
  (VTBL_ENTRY)&_ZN5S48C63v79Ev,
  (VTBL_ENTRY)&_ZN5S48C63v80Ev,
  (VTBL_ENTRY)&_ZN5S48C63v81Ev,
  (VTBL_ENTRY)&_ZN5S48C63v82Ev,
  (VTBL_ENTRY)&_ZN5S48C63v83Ev,
  (VTBL_ENTRY)&_ZN5S48C63v84Ev,
  (VTBL_ENTRY)&_ZN5S48C63v85Ev,
  (VTBL_ENTRY)&_ZN5S48C63v86Ev,
  (VTBL_ENTRY)&_ZN5S48C63v87Ev,
  (VTBL_ENTRY)&_ZN5S48C63v88Ev,
  (VTBL_ENTRY)&_ZN5S48C63v89Ev,
  (VTBL_ENTRY)&_ZN5S48C63v90Ev,
  (VTBL_ENTRY)&_ZN5S48C63v91Ev,
  (VTBL_ENTRY)&_ZN5S48C63v92Ev,
  (VTBL_ENTRY)&_ZN5S48C63v93Ev,
  (VTBL_ENTRY)&_ZN5S48C63v94Ev,
  (VTBL_ENTRY)&_ZN5S48C63v95Ev,
  (VTBL_ENTRY)&_ZN5S48C63v96Ev,
  (VTBL_ENTRY)&_ZN5S48C63v97Ev,
  (VTBL_ENTRY)&_ZN5S48C63v98Ev,
  (VTBL_ENTRY)&_ZN5S48C63v99Ev,
  (VTBL_ENTRY)&_ZN5S48C64v100Ev,
  (VTBL_ENTRY)&_ZN5S48C64v101Ev,
  (VTBL_ENTRY)&_ZN5S48C64v102Ev,
  (VTBL_ENTRY)&_ZN5S48C64v103Ev,
  (VTBL_ENTRY)&_ZN5S48C64v104Ev,
  (VTBL_ENTRY)&_ZN5S48C64v105Ev,
  (VTBL_ENTRY)&_ZN5S48C64v106Ev,
  (VTBL_ENTRY)&_ZN5S48C64v107Ev,
  (VTBL_ENTRY)&_ZN5S48C64v108Ev,
  (VTBL_ENTRY)&_ZN5S48C64v109Ev,
  (VTBL_ENTRY)&_ZN5S48C64v110Ev,
  (VTBL_ENTRY)&_ZN5S48C64v111Ev,
  (VTBL_ENTRY)&_ZN5S48C64v112Ev,
  (VTBL_ENTRY)&_ZN5S48C64v113Ev,
  (VTBL_ENTRY)&_ZN5S48C64v114Ev,
  (VTBL_ENTRY)&_ZN5S48C64v115Ev,
  (VTBL_ENTRY)&_ZN5S48C64v116Ev,
  (VTBL_ENTRY)&_ZN5S48C64v117Ev,
  (VTBL_ENTRY)&_ZN5S48C64v118Ev,
  (VTBL_ENTRY)&_ZN5S48C64v119Ev,
  (VTBL_ENTRY)&_ZN5S48C64v120Ev,
  (VTBL_ENTRY)&_ZN5S48C64v121Ev,
  (VTBL_ENTRY)&_ZN5S48C64v122Ev,
  (VTBL_ENTRY)&_ZN5S48C64v123Ev,
  (VTBL_ENTRY)&_ZN5S48C64v124Ev,
  (VTBL_ENTRY)&_ZN5S48C64v125Ev,
  (VTBL_ENTRY)&_ZN5S48C64v126Ev,
  (VTBL_ENTRY)&_ZN5S48C64v127Ev,
  (VTBL_ENTRY)&_ZN5S48C64v128Ev,
  (VTBL_ENTRY)&_ZN5S48C64v129Ev,
  (VTBL_ENTRY)&_ZN5S48C64v130Ev,
  (VTBL_ENTRY)&_ZN5S48C64v131Ev,
  (VTBL_ENTRY)&_ZN5S48C64v132Ev,
  (VTBL_ENTRY)&_ZN5S48C64v133Ev,
  (VTBL_ENTRY)&_ZN5S48C64v134Ev,
  (VTBL_ENTRY)&_ZN5S48C64v135Ev,
  (VTBL_ENTRY)&_ZN5S48C64v136Ev,
  (VTBL_ENTRY)&_ZN5S48C64v137Ev,
  (VTBL_ENTRY)&_ZN5S48C64v138Ev,
  (VTBL_ENTRY)&_ZN5S48C64v139Ev,
  (VTBL_ENTRY)&_ZN5S48C64v140Ev,
  (VTBL_ENTRY)&_ZN5S48C64v141Ev,
  (VTBL_ENTRY)&_ZN5S48C64v142Ev,
  (VTBL_ENTRY)&_ZN5S48C64v143Ev,
  (VTBL_ENTRY)&_ZN5S48C64v144Ev,
  (VTBL_ENTRY)&_ZN5S48C64v145Ev,
  (VTBL_ENTRY)&_ZN5S48C64v146Ev,
  (VTBL_ENTRY)&_ZN5S48C64v147Ev,
  (VTBL_ENTRY)&_ZN5S48C64v148Ev,
  (VTBL_ENTRY)&_ZN5S48C64v149Ev,
  (VTBL_ENTRY)&_ZN5S48C64v150Ev,
  (VTBL_ENTRY)&_ZN5S48C64v151Ev,
  (VTBL_ENTRY)&_ZN5S48C64v152Ev,
  (VTBL_ENTRY)&_ZN5S48C64v153Ev,
  (VTBL_ENTRY)&_ZN5S48C64v154Ev,
  (VTBL_ENTRY)&_ZN5S48C64v155Ev,
  (VTBL_ENTRY)&_ZN5S48C64v156Ev,
  (VTBL_ENTRY)&_ZN5S48C64v157Ev,
  (VTBL_ENTRY)&_ZN5S48C64v158Ev,
  (VTBL_ENTRY)&_ZN5S48C64v159Ev,
  (VTBL_ENTRY)&_ZN5S48C64v160Ev,
  (VTBL_ENTRY)&_ZN5S48C64v161Ev,
  (VTBL_ENTRY)&_ZN5S48C64v162Ev,
  (VTBL_ENTRY)&_ZN5S48C64v163Ev,
  (VTBL_ENTRY)&_ZN5S48C64v164Ev,
  (VTBL_ENTRY)&_ZN5S48C64v165Ev,
  (VTBL_ENTRY)&_ZN5S48C64v166Ev,
  (VTBL_ENTRY)&_ZN5S48C64v167Ev,
  (VTBL_ENTRY)&_ZN5S48C64v168Ev,
  (VTBL_ENTRY)&_ZN5S48C64v169Ev,
  (VTBL_ENTRY)&_ZN5S48C64v170Ev,
  (VTBL_ENTRY)&_ZN5S48C64v171Ev,
  (VTBL_ENTRY)&_ZN5S48C64v172Ev,
  (VTBL_ENTRY)&_ZN5S48C64v173Ev,
  (VTBL_ENTRY)&_ZN5S48C64v174Ev,
  (VTBL_ENTRY)&_ZN5S48C64v175Ev,
  (VTBL_ENTRY)&_ZN5S48C64v176Ev,
  (VTBL_ENTRY)&_ZN5S48C64v177Ev,
  (VTBL_ENTRY)&_ZN5S48C64v178Ev,
  (VTBL_ENTRY)&_ZN5S48C64v179Ev,
  (VTBL_ENTRY)&_ZN5S48C64v180Ev,
  (VTBL_ENTRY)&_ZN5S48C64v181Ev,
  (VTBL_ENTRY)&_ZN5S48C64v182Ev,
  (VTBL_ENTRY)&_ZN5S48C64v183Ev,
  (VTBL_ENTRY)&_ZN5S48C64v184Ev,
  (VTBL_ENTRY)&_ZN5S48C64v185Ev,
  (VTBL_ENTRY)&_ZN5S48C64v186Ev,
  (VTBL_ENTRY)&_ZN5S48C64v187Ev,
  (VTBL_ENTRY)&_ZN5S48C64v188Ev,
  (VTBL_ENTRY)&_ZN5S48C64v189Ev,
  (VTBL_ENTRY)&_ZN5S48C64v190Ev,
  (VTBL_ENTRY)&_ZN5S48C64v191Ev,
  (VTBL_ENTRY)&_ZN5S48C64v192Ev,
  (VTBL_ENTRY)&_ZN5S48C64v193Ev,
  (VTBL_ENTRY)&_ZN5S48C64v194Ev,
  (VTBL_ENTRY)&_ZN5S48C64v195Ev,
  (VTBL_ENTRY)&_ZN5S48C64v196Ev,
  (VTBL_ENTRY)&_ZN5S48C64v197Ev,
  (VTBL_ENTRY)&_ZN5S48C64v198Ev,
  (VTBL_ENTRY)&_ZN5S48C64v199Ev,
  (VTBL_ENTRY)&_ZN5S48C64v200Ev,
  (VTBL_ENTRY)&_ZN5S48C64v201Ev,
  (VTBL_ENTRY)&_ZN5S48C64v202Ev,
  (VTBL_ENTRY)&_ZN5S48C64v203Ev,
  (VTBL_ENTRY)&_ZN5S48C64v204Ev,
  (VTBL_ENTRY)&_ZN5S48C64v205Ev,
  (VTBL_ENTRY)&_ZN5S48C64v206Ev,
  (VTBL_ENTRY)&_ZN5S48C64v207Ev,
  (VTBL_ENTRY)&_ZN5S48C64v208Ev,
  (VTBL_ENTRY)&_ZN5S48C64v209Ev,
  (VTBL_ENTRY)&_ZN5S48C64v210Ev,
  (VTBL_ENTRY)&_ZN5S48C64v211Ev,
  (VTBL_ENTRY)&_ZN5S48C64v212Ev,
  (VTBL_ENTRY)&_ZN5S48C64v213Ev,
  (VTBL_ENTRY)&_ZN5S48C64v214Ev,
  (VTBL_ENTRY)&_ZN5S48C64v215Ev,
  (VTBL_ENTRY)&_ZN5S48C64v216Ev,
  (VTBL_ENTRY)&_ZN5S48C64v217Ev,
  (VTBL_ENTRY)&_ZN5S48C54v218Ev,
  (VTBL_ENTRY)&_ZN5S48C54v219Ev,
  (VTBL_ENTRY)&_ZN5S48C54v220Ev,
  (VTBL_ENTRY)&_ZN5S48C54v221Ev,
  (VTBL_ENTRY)&_ZN5S48C54v222Ev,
  (VTBL_ENTRY)&_ZN5S48C54v223Ev,
  (VTBL_ENTRY)&_ZN5S48C54v224Ev,
  (VTBL_ENTRY)&_ZN5S48C54v225Ev,
  (VTBL_ENTRY)&_ZN5S48C54v226Ev,
  (VTBL_ENTRY)&_ZN5S48C54v227Ev,
  (VTBL_ENTRY)&_ZN5S48C54v228Ev,
  (VTBL_ENTRY)&_ZN5S48C54v229Ev,
  (VTBL_ENTRY)&_ZN5S48C54v230Ev,
  (VTBL_ENTRY)&_ZN5S48C54v231Ev,
  (VTBL_ENTRY)&_ZN5S48C54v232Ev,
  (VTBL_ENTRY)&_ZN5S48C54v233Ev,
  (VTBL_ENTRY)&_ZN5S48C54v234Ev,
  (VTBL_ENTRY)&_ZN5S48C54v235Ev,
  (VTBL_ENTRY)&_ZN5S48C54v236Ev,
  (VTBL_ENTRY)&_ZN5S48C54v237Ev,
  (VTBL_ENTRY)&_ZN5S48C54v238Ev,
  (VTBL_ENTRY)&_ZN5S48C54v239Ev,
  (VTBL_ENTRY)&_ZN5S48C54v240Ev,
  (VTBL_ENTRY)&_ZN5S48C54v241Ev,
  (VTBL_ENTRY)&_ZN5S48C54v242Ev,
  (VTBL_ENTRY)&_ZN5S48C54v243Ev,
  (VTBL_ENTRY)&_ZN5S48C54v244Ev,
  (VTBL_ENTRY)&_ZN5S48C54v245Ev,
  (VTBL_ENTRY)&_ZN5S48C54v246Ev,
  (VTBL_ENTRY)&_ZN5S48C54v247Ev,
  (VTBL_ENTRY)&_ZN5S48C54v248Ev,
  (VTBL_ENTRY)&_ZN5S48C54v249Ev,
  (VTBL_ENTRY)&_ZN5S48C54v250Ev,
  (VTBL_ENTRY)&_ZN5S48C54v251Ev,
  (VTBL_ENTRY)&_ZN5S48C54v252Ev,
  (VTBL_ENTRY)&_ZN5S48C54v253Ev,
  (VTBL_ENTRY)&_ZN5S48C54v254Ev,
  (VTBL_ENTRY)&_ZN5S48C54v255Ev,
  (VTBL_ENTRY)&_ZN5S48C54v256Ev,
  (VTBL_ENTRY)&_ZN5S48C54v257Ev,
  (VTBL_ENTRY)&_ZN5S48C54v258Ev,
  (VTBL_ENTRY)&_ZN5S48C54v259Ev,
  (VTBL_ENTRY)&_ZN5S48C54v260Ev,
  (VTBL_ENTRY)&_ZN5S48C54v261Ev,
  (VTBL_ENTRY)&_ZN5S48C54v262Ev,
  (VTBL_ENTRY)&_ZN5S48C54v263Ev,
  (VTBL_ENTRY)&_ZN5S48C54v264Ev,
  (VTBL_ENTRY)&_ZN5S48C54v265Ev,
  (VTBL_ENTRY)&_ZN5S48C54v266Ev,
  (VTBL_ENTRY)&_ZN5S48C54v267Ev,
  (VTBL_ENTRY)&_ZN5S48C44v268Ev,
  (VTBL_ENTRY)&_ZN5S48C44v269Ev,
  (VTBL_ENTRY)&_ZN5S48C44v270Ev,
  (VTBL_ENTRY)&_ZN5S48C44v271Ev,
  (VTBL_ENTRY)&_ZN5S48C44v272Ev,
  (VTBL_ENTRY)&_ZN5S48C44v273Ev,
  (VTBL_ENTRY)&_ZN5S48C44v274Ev,
  (VTBL_ENTRY)&_ZN5S48C44v275Ev,
  (VTBL_ENTRY)&_ZN5S48C44v276Ev,
  (VTBL_ENTRY)&_ZN5S48C44v277Ev,
  (VTBL_ENTRY)&_ZN5S48C44v278Ev,
  (VTBL_ENTRY)&_ZN5S48C44v279Ev,
  (VTBL_ENTRY)&_ZN5S48C44v280Ev,
  (VTBL_ENTRY)&_ZN5S48C44v281Ev,
  (VTBL_ENTRY)&_ZN5S48C44v282Ev,
  (VTBL_ENTRY)&_ZN5S48C44v283Ev,
  (VTBL_ENTRY)&_ZN5S48C44v284Ev,
  (VTBL_ENTRY)&_ZN5S48C44v285Ev,
  (VTBL_ENTRY)&_ZN5S48C44v286Ev,
  (VTBL_ENTRY)&_ZN5S48C44v287Ev,
  (VTBL_ENTRY)&_ZN5S48C44v288Ev,
  (VTBL_ENTRY)&_ZN5S48C44v289Ev,
  (VTBL_ENTRY)&_ZN5S48C44v290Ev,
  (VTBL_ENTRY)&_ZN5S48C44v291Ev,
  (VTBL_ENTRY)&_ZN5S48C44v292Ev,
  (VTBL_ENTRY)&_ZN5S48C44v293Ev,
  (VTBL_ENTRY)&_ZN5S48C44v294Ev,
  (VTBL_ENTRY)&_ZN5S48C44v295Ev,
  (VTBL_ENTRY)&_ZN5S48C44v296Ev,
  (VTBL_ENTRY)&_ZN5S48C44v297Ev,
  (VTBL_ENTRY)&_ZN5S48C44v298Ev,
  (VTBL_ENTRY)&_ZN5S48C44v299Ev,
  (VTBL_ENTRY)&_ZN5S48C44v300Ev,
  (VTBL_ENTRY)&_ZN5S48C44v301Ev,
  (VTBL_ENTRY)&_ZN5S48C44v302Ev,
  (VTBL_ENTRY)&_ZN5S48C44v303Ev,
  (VTBL_ENTRY)&_ZN5S48C44v304Ev,
  (VTBL_ENTRY)&_ZN5S48C44v305Ev,
};
extern VTBL_ENTRY _ZTI5S48C4[];
extern  VTBL_ENTRY _ZTV5S48C4[];
Class_Descriptor cd_S48C4 = {  "S48C4", // class name
  bases_S48C4, 3,
  &(vtc_S48C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1776,1308), // object size
  NSPAIRA(_ZTI5S48C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S48C4),299, //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  S48C3  : S48C4 {
  virtual  ~S48C3(); // _ZN5S48C3D1Ev
  virtual void  v306(); // _ZN5S48C34v306Ev
  virtual void  v307(); // _ZN5S48C34v307Ev
  virtual void  v308(); // _ZN5S48C34v308Ev
  S48C3(); // tgen
};
//SIG(-1 S48C3) C1{ BC2{ BC3{ BC4{ BC5{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC6{ m Fi[2]} Fp[2]} vd v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 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 FC7{ BC8{ BC9{ m Fp Fi[2]}}} FC7 FC10{ m Fi} Fi Fc[4] Fp[2] FC11{ BC12{ BC9}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC6 FC6 FC6 FC13{ BC14{ BC9}} FC13 Fi Fp[2] FC15{ m Fi[3]} FC16{ m Fi[3]} FC15 FC15 Fp FC6 FC13 FC15 FC16 Fi FC15 FC15 Fp Fi Fc FC16 FC16 Fp Fi Fp FC17{ BC18{ BC9}} FC19{ BC20{ BC9}} FC21{ BC22{ BC9}}} vd v211 v212 v213 v214 v215 v216 v217 v218 v219 v220 v221 v222 v223 v224 v225 v226 v227 v228 v229 v230 v231 v232 v233 v234 v235 v236 v237 v238 v239 v240 v241 v242 v243 v244 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 v258 v259 v260 Fp[2] Fi Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fc Fi[2] Fp FC15 FC15 Fp[5] FC15 Fp FC23{ BC24{ BC9}} Fp[2] FC15 Fp Fi[2] Fp Fi FC15 FC15 FC15 Fp[2] Fi FC15 Fi[4] Fp[2] FC25{ BC26{ BC9}} Fi FC16} vd v261 v262 v263 v264 v265 v266 v267 v268 v269 v270 v271 v272 v273 v274 v275 v276 v277 v278 v279 v280 v281 v282 v283 v284 v285 v286 v287 v288 v289 v290 v291 v292 v293 v294 v295 v296 v297 v298 Fp[8] Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2] Fp Fc[6] Fp[2] Fi[4] FC16 Fi FC16 Fp[5] FC15 Fi[12] FC27{ Fi Fc FC15 FC15 Fp FC15 Fc} FC28{ BC21}[2] Fi FC28 FC28 FC28 FC28 Fi FC15 Fp[4] FC15 Fp FC28 Fp FC29{ BC30{ BC9}} FC31{ BC32{ BC9}} FC31 FC31 Fp FC33{ BC34{ m Fp[2]}} Fp Fi FC35{ BC36{ BC9}} Fi FC28[4] FC35 Fp FC37{ BC38{ BC9}} Fi[3] FC37 FC37 FC13 FC39{ BC40{ BC9}} Fi FC41{ m Fp FC6}} vd v1 v2 v3}


 S48C3 ::~S48C3(){ note_dtor("S48C3", this);}
void  S48C3 ::v306(){vfunc_called(this, "_ZN5S48C34v306Ev");}
void  S48C3 ::v307(){vfunc_called(this, "_ZN5S48C34v307Ev");}
void  S48C3 ::v308(){vfunc_called(this, "_ZN5S48C34v308Ev");}
S48C3 ::S48C3(){ note_ctor("S48C3", this);} // tgen

static void Test_S48C3()
{
  extern Class_Descriptor cd_S48C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(223,328)];
    init_test(&cd_S48C3, buf);
    S48C3 *dp, &lv = *(dp=new (buf) S48C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1776,1308), "sizeof(S48C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S48C3)");
    check_base_class_offset(lv, (S48C7*)(S48C6*)(S48C5*)(S48C4*), 0, "S48C3");
    check_base_class_offset(lv, (S48C6*)(S48C5*)(S48C4*), 0, "S48C3");
    check_base_class_offset(lv, (S48C5*)(S48C4*), 0, "S48C3");
    check_base_class_offset(lv, (S48C4*), 0, "S48C3");
    test_class_info(&lv, &cd_S48C3);
    dp->~S48C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS48C3(Test_S48C3, "S48C3", ABISELECT(1776,1308));

#else // __cplusplus

extern void _ZN5S48C3C1Ev();
extern void _ZN5S48C3D1Ev();
Name_Map name_map_S48C3[] = {
  NSPAIR(_ZN5S48C3C1Ev),
  NSPAIR(_ZN5S48C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S48C7;
extern VTBL_ENTRY _ZTI5S48C7[];
extern  VTBL_ENTRY _ZTV5S48C7[];
extern Class_Descriptor cd_S48C6;
extern VTBL_ENTRY _ZTI5S48C6[];
extern  VTBL_ENTRY _ZTV5S48C6[];
extern Class_Descriptor cd_S48C5;
extern VTBL_ENTRY _ZTI5S48C5[];
extern  VTBL_ENTRY _ZTV5S48C5[];
extern Class_Descriptor cd_S48C4;
extern VTBL_ENTRY _ZTI5S48C4[];
extern  VTBL_ENTRY _ZTV5S48C4[];
static Base_Class bases_S48C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S48C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S48C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S48C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S48C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI5S48C3[];
extern void _ZN5S48C3D1Ev();
extern void _ZN5S48C3D0Ev();
extern void _ZN5S48C73v11Ev();
extern void _ZN5S48C73v12Ev();
extern void _ZN5S48C73v13Ev();
extern void _ZN5S48C73v14Ev();
extern void _ZN5S48C73v15Ev();
extern void _ZN5S48C73v16Ev();
extern void _ZN5S48C73v17Ev();
extern void _ZN5S48C73v18Ev();
extern void _ZN5S48C73v19Ev();
extern void _ZN5S48C73v20Ev();
extern void _ZN5S48C73v21Ev();
extern void _ZN5S48C73v22Ev();
extern void _ZN5S48C73v23Ev();
extern void _ZN5S48C73v24Ev();
extern void _ZN5S48C73v25Ev();
extern void _ZN5S48C73v26Ev();
extern void _ZN5S48C73v27Ev();
extern void _ZN5S48C73v28Ev();
extern void _ZN5S48C73v29Ev();
extern void _ZN5S48C73v30Ev();
extern void _ZN5S48C73v31Ev();
extern void _ZN5S48C73v32Ev();
extern void _ZN5S48C73v33Ev();
extern void _ZN5S48C73v34Ev();
extern void _ZN5S48C73v35Ev();
extern void _ZN5S48C73v36Ev();
extern void _ZN5S48C73v37Ev();
extern void _ZN5S48C73v38Ev();
extern void _ZN5S48C73v39Ev();
extern void _ZN5S48C73v40Ev();
extern void _ZN5S48C73v41Ev();
extern void _ZN5S48C73v42Ev();
extern void _ZN5S48C73v43Ev();
extern void _ZN5S48C73v44Ev();
extern void _ZN5S48C73v45Ev();
extern void _ZN5S48C73v46Ev();
extern void _ZN5S48C73v47Ev();
extern void _ZN5S48C73v48Ev();
extern void _ZN5S48C73v49Ev();
extern void _ZN5S48C73v50Ev();
extern void _ZN5S48C73v51Ev();
extern void _ZN5S48C73v52Ev();
extern void _ZN5S48C73v53Ev();
extern void _ZN5S48C73v54Ev();
extern void _ZN5S48C73v55Ev();
extern void _ZN5S48C73v56Ev();
extern void _ZN5S48C73v57Ev();
extern void _ZN5S48C73v58Ev();
extern void _ZN5S48C73v59Ev();
extern void _ZN5S48C73v60Ev();
extern void _ZN5S48C73v61Ev();
extern void _ZN5S48C73v62Ev();
extern void _ZN5S48C73v63Ev();
extern void _ZN5S48C73v64Ev();
extern void _ZN5S48C73v65Ev();
extern void _ZN5S48C73v66Ev();
extern void _ZN5S48C73v67Ev();
extern void _ZN5S48C73v68Ev();
extern void _ZN5S48C73v69Ev();
extern void _ZN5S48C73v70Ev();
extern void _ZN5S48C73v71Ev();
extern void _ZN5S48C73v72Ev();
extern void _ZN5S48C73v73Ev();
extern void _ZN5S48C73v74Ev();
extern void _ZN5S48C63v75Ev();
extern void _ZN5S48C63v76Ev();
extern void _ZN5S48C63v77Ev();
extern void _ZN5S48C63v78Ev();
extern void _ZN5S48C63v79Ev();
extern void _ZN5S48C63v80Ev();
extern void _ZN5S48C63v81Ev();
extern void _ZN5S48C63v82Ev();
extern void _ZN5S48C63v83Ev();
extern void _ZN5S48C63v84Ev();
extern void _ZN5S48C63v85Ev();
extern void _ZN5S48C63v86Ev();
extern void _ZN5S48C63v87Ev();
extern void _ZN5S48C63v88Ev();
extern void _ZN5S48C63v89Ev();
extern void _ZN5S48C63v90Ev();
extern void _ZN5S48C63v91Ev();
extern void _ZN5S48C63v92Ev();
extern void _ZN5S48C63v93Ev();
extern void _ZN5S48C63v94Ev();
extern void _ZN5S48C63v95Ev();
extern void _ZN5S48C63v96Ev();
extern void _ZN5S48C63v97Ev();
extern void _ZN5S48C63v98Ev();
extern void _ZN5S48C63v99Ev();
extern void _ZN5S48C64v100Ev();
extern void _ZN5S48C64v101Ev();
extern void _ZN5S48C64v102Ev();
extern void _ZN5S48C64v103Ev();
extern void _ZN5S48C64v104Ev();
extern void _ZN5S48C64v105Ev();
extern void _ZN5S48C64v106Ev();
extern void _ZN5S48C64v107Ev();
extern void _ZN5S48C64v108Ev();
extern void _ZN5S48C64v109Ev();
extern void _ZN5S48C64v110Ev();
extern void _ZN5S48C64v111Ev();
extern void _ZN5S48C64v112Ev();
extern void _ZN5S48C64v113Ev();
extern void _ZN5S48C64v114Ev();
extern void _ZN5S48C64v115Ev();
extern void _ZN5S48C64v116Ev();
extern void _ZN5S48C64v117Ev();
extern void _ZN5S48C64v118Ev();
extern void _ZN5S48C64v119Ev();
extern void _ZN5S48C64v120Ev();
extern void _ZN5S48C64v121Ev();
extern void _ZN5S48C64v122Ev();
extern void _ZN5S48C64v123Ev();
extern void _ZN5S48C64v124Ev();
extern void _ZN5S48C64v125Ev();
extern void _ZN5S48C64v126Ev();
extern void _ZN5S48C64v127Ev();
extern void _ZN5S48C64v128Ev();
extern void _ZN5S48C64v129Ev();
extern void _ZN5S48C64v130Ev();
extern void _ZN5S48C64v131Ev();
extern void _ZN5S48C64v132Ev();
extern void _ZN5S48C64v133Ev();
extern void _ZN5S48C64v134Ev();
extern void _ZN5S48C64v135Ev();
extern void _ZN5S48C64v136Ev();
extern void _ZN5S48C64v137Ev();
extern void _ZN5S48C64v138Ev();
extern void _ZN5S48C64v139Ev();
extern void _ZN5S48C64v140Ev();
extern void _ZN5S48C64v141Ev();
extern void _ZN5S48C64v142Ev();
extern void _ZN5S48C64v143Ev();
extern void _ZN5S48C64v144Ev();
extern void _ZN5S48C64v145Ev();
extern void _ZN5S48C64v146Ev();
extern void _ZN5S48C64v147Ev();
extern void _ZN5S48C64v148Ev();
extern void _ZN5S48C64v149Ev();
extern void _ZN5S48C64v150Ev();
extern void _ZN5S48C64v151Ev();
extern void _ZN5S48C64v152Ev();
extern void _ZN5S48C64v153Ev();
extern void _ZN5S48C64v154Ev();
extern void _ZN5S48C64v155Ev();
extern void _ZN5S48C64v156Ev();
extern void _ZN5S48C64v157Ev();
extern void _ZN5S48C64v158Ev();
extern void _ZN5S48C64v159Ev();
extern void _ZN5S48C64v160Ev();
extern void _ZN5S48C64v161Ev();
extern void _ZN5S48C64v162Ev();
extern void _ZN5S48C64v163Ev();
extern void _ZN5S48C64v164Ev();
extern void _ZN5S48C64v165Ev();
extern void _ZN5S48C64v166Ev();
extern void _ZN5S48C64v167Ev();
extern void _ZN5S48C64v168Ev();
extern void _ZN5S48C64v169Ev();
extern void _ZN5S48C64v170Ev();
extern void _ZN5S48C64v171Ev();
extern void _ZN5S48C64v172Ev();
extern void _ZN5S48C64v173Ev();
extern void _ZN5S48C64v174Ev();
extern void _ZN5S48C64v175Ev();
extern void _ZN5S48C64v176Ev();
extern void _ZN5S48C64v177Ev();
extern void _ZN5S48C64v178Ev();
extern void _ZN5S48C64v179Ev();
extern void _ZN5S48C64v180Ev();
extern void _ZN5S48C64v181Ev();
extern void _ZN5S48C64v182Ev();
extern void _ZN5S48C64v183Ev();
extern void _ZN5S48C64v184Ev();
extern void _ZN5S48C64v185Ev();
extern void _ZN5S48C64v186Ev();
extern void _ZN5S48C64v187Ev();
extern void _ZN5S48C64v188Ev();
extern void _ZN5S48C64v189Ev();
extern void _ZN5S48C64v190Ev();
extern void _ZN5S48C64v191Ev();
extern void _ZN5S48C64v192Ev();
extern void _ZN5S48C64v193Ev();
extern void _ZN5S48C64v194Ev();
extern void _ZN5S48C64v195Ev();
extern void _ZN5S48C64v196Ev();
extern void _ZN5S48C64v197Ev();
extern void _ZN5S48C64v198Ev();
extern void _ZN5S48C64v199Ev();
extern void _ZN5S48C64v200Ev();
extern void _ZN5S48C64v201Ev();
extern void _ZN5S48C64v202Ev();
extern void _ZN5S48C64v203Ev();
extern void _ZN5S48C64v204Ev();
extern void _ZN5S48C64v205Ev();
extern void _ZN5S48C64v206Ev();
extern void _ZN5S48C64v207Ev();
extern void _ZN5S48C64v208Ev();
extern void _ZN5S48C64v209Ev();
extern void _ZN5S48C64v210Ev();
extern void _ZN5S48C64v211Ev();
extern void _ZN5S48C64v212Ev();
extern void _ZN5S48C64v213Ev();
extern void _ZN5S48C64v214Ev();
extern void _ZN5S48C64v215Ev();
extern void _ZN5S48C64v216Ev();
extern void _ZN5S48C64v217Ev();
extern void _ZN5S48C54v218Ev();
extern void _ZN5S48C54v219Ev();
extern void _ZN5S48C54v220Ev();
extern void _ZN5S48C54v221Ev();
extern void _ZN5S48C54v222Ev();
extern void _ZN5S48C54v223Ev();
extern void _ZN5S48C54v224Ev();
extern void _ZN5S48C54v225Ev();
extern void _ZN5S48C54v226Ev();
extern void _ZN5S48C54v227Ev();
extern void _ZN5S48C54v228Ev();
extern void _ZN5S48C54v229Ev();
extern void _ZN5S48C54v230Ev();
extern void _ZN5S48C54v231Ev();
extern void _ZN5S48C54v232Ev();
extern void _ZN5S48C54v233Ev();
extern void _ZN5S48C54v234Ev();
extern void _ZN5S48C54v235Ev();
extern void _ZN5S48C54v236Ev();
extern void _ZN5S48C54v237Ev();
extern void _ZN5S48C54v238Ev();
extern void _ZN5S48C54v239Ev();
extern void _ZN5S48C54v240Ev();
extern void _ZN5S48C54v241Ev();
extern void _ZN5S48C54v242Ev();
extern void _ZN5S48C54v243Ev();
extern void _ZN5S48C54v244Ev();
extern void _ZN5S48C54v245Ev();
extern void _ZN5S48C54v246Ev();
extern void _ZN5S48C54v247Ev();
extern void _ZN5S48C54v248Ev();
extern void _ZN5S48C54v249Ev();
extern void _ZN5S48C54v250Ev();
extern void _ZN5S48C54v251Ev();
extern void _ZN5S48C54v252Ev();
extern void _ZN5S48C54v253Ev();
extern void _ZN5S48C54v254Ev();
extern void _ZN5S48C54v255Ev();
extern void _ZN5S48C54v256Ev();
extern void _ZN5S48C54v257Ev();
extern void _ZN5S48C54v258Ev();
extern void _ZN5S48C54v259Ev();
extern void _ZN5S48C54v260Ev();
extern void _ZN5S48C54v261Ev();
extern void _ZN5S48C54v262Ev();
extern void _ZN5S48C54v263Ev();
extern void _ZN5S48C54v264Ev();
extern void _ZN5S48C54v265Ev();
extern void _ZN5S48C54v266Ev();
extern void _ZN5S48C54v267Ev();
extern void _ZN5S48C44v268Ev();
extern void _ZN5S48C44v269Ev();
extern void _ZN5S48C44v270Ev();
extern void _ZN5S48C44v271Ev();
extern void _ZN5S48C44v272Ev();
extern void _ZN5S48C44v273Ev();
extern void _ZN5S48C44v274Ev();
extern void _ZN5S48C44v275Ev();
extern void _ZN5S48C44v276Ev();
extern void _ZN5S48C44v277Ev();
extern void _ZN5S48C44v278Ev();
extern void _ZN5S48C44v279Ev();
extern void _ZN5S48C44v280Ev();
extern void _ZN5S48C44v281Ev();
extern void _ZN5S48C44v282Ev();
extern void _ZN5S48C44v283Ev();
extern void _ZN5S48C44v284Ev();
extern void _ZN5S48C44v285Ev();
extern void _ZN5S48C44v286Ev();
extern void _ZN5S48C44v287Ev();
extern void _ZN5S48C44v288Ev();
extern void _ZN5S48C44v289Ev();
extern void _ZN5S48C44v290Ev();
extern void _ZN5S48C44v291Ev();
extern void _ZN5S48C44v292Ev();
extern void _ZN5S48C44v293Ev();
extern void _ZN5S48C44v294Ev();
extern void _ZN5S48C44v295Ev();
extern void _ZN5S48C44v296Ev();
extern void _ZN5S48C44v297Ev();
extern void _ZN5S48C44v298Ev();
extern void _ZN5S48C44v299Ev();
extern void _ZN5S48C44v300Ev();
extern void _ZN5S48C44v301Ev();
extern void _ZN5S48C44v302Ev();
extern void _ZN5S48C44v303Ev();
extern void _ZN5S48C44v304Ev();
extern void _ZN5S48C44v305Ev();
extern void _ZN5S48C34v306Ev();
extern void _ZN5S48C34v307Ev();
extern void _ZN5S48C34v308Ev();
static  VTBL_ENTRY vtc_S48C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S48C3[0]),
  (VTBL_ENTRY)&_ZN5S48C3D1Ev,
  (VTBL_ENTRY)&_ZN5S48C3D0Ev,
  (VTBL_ENTRY)&_ZN5S48C73v11Ev,
  (VTBL_ENTRY)&_ZN5S48C73v12Ev,
  (VTBL_ENTRY)&_ZN5S48C73v13Ev,
  (VTBL_ENTRY)&_ZN5S48C73v14Ev,
  (VTBL_ENTRY)&_ZN5S48C73v15Ev,
  (VTBL_ENTRY)&_ZN5S48C73v16Ev,
  (VTBL_ENTRY)&_ZN5S48C73v17Ev,
  (VTBL_ENTRY)&_ZN5S48C73v18Ev,
  (VTBL_ENTRY)&_ZN5S48C73v19Ev,
  (VTBL_ENTRY)&_ZN5S48C73v20Ev,
  (VTBL_ENTRY)&_ZN5S48C73v21Ev,
  (VTBL_ENTRY)&_ZN5S48C73v22Ev,
  (VTBL_ENTRY)&_ZN5S48C73v23Ev,
  (VTBL_ENTRY)&_ZN5S48C73v24Ev,
  (VTBL_ENTRY)&_ZN5S48C73v25Ev,
  (VTBL_ENTRY)&_ZN5S48C73v26Ev,
  (VTBL_ENTRY)&_ZN5S48C73v27Ev,
  (VTBL_ENTRY)&_ZN5S48C73v28Ev,
  (VTBL_ENTRY)&_ZN5S48C73v29Ev,
  (VTBL_ENTRY)&_ZN5S48C73v30Ev,
  (VTBL_ENTRY)&_ZN5S48C73v31Ev,
  (VTBL_ENTRY)&_ZN5S48C73v32Ev,
  (VTBL_ENTRY)&_ZN5S48C73v33Ev,
  (VTBL_ENTRY)&_ZN5S48C73v34Ev,
  (VTBL_ENTRY)&_ZN5S48C73v35Ev,
  (VTBL_ENTRY)&_ZN5S48C73v36Ev,
  (VTBL_ENTRY)&_ZN5S48C73v37Ev,
  (VTBL_ENTRY)&_ZN5S48C73v38Ev,
  (VTBL_ENTRY)&_ZN5S48C73v39Ev,
  (VTBL_ENTRY)&_ZN5S48C73v40Ev,
  (VTBL_ENTRY)&_ZN5S48C73v41Ev,
  (VTBL_ENTRY)&_ZN5S48C73v42Ev,
  (VTBL_ENTRY)&_ZN5S48C73v43Ev,
  (VTBL_ENTRY)&_ZN5S48C73v44Ev,
  (VTBL_ENTRY)&_ZN5S48C73v45Ev,
  (VTBL_ENTRY)&_ZN5S48C73v46Ev,
  (VTBL_ENTRY)&_ZN5S48C73v47Ev,
  (VTBL_ENTRY)&_ZN5S48C73v48Ev,
  (VTBL_ENTRY)&_ZN5S48C73v49Ev,
  (VTBL_ENTRY)&_ZN5S48C73v50Ev,
  (VTBL_ENTRY)&_ZN5S48C73v51Ev,
  (VTBL_ENTRY)&_ZN5S48C73v52Ev,
  (VTBL_ENTRY)&_ZN5S48C73v53Ev,
  (VTBL_ENTRY)&_ZN5S48C73v54Ev,
  (VTBL_ENTRY)&_ZN5S48C73v55Ev,
  (VTBL_ENTRY)&_ZN5S48C73v56Ev,
  (VTBL_ENTRY)&_ZN5S48C73v57Ev,
  (VTBL_ENTRY)&_ZN5S48C73v58Ev,
  (VTBL_ENTRY)&_ZN5S48C73v59Ev,
  (VTBL_ENTRY)&_ZN5S48C73v60Ev,
  (VTBL_ENTRY)&_ZN5S48C73v61Ev,
  (VTBL_ENTRY)&_ZN5S48C73v62Ev,
  (VTBL_ENTRY)&_ZN5S48C73v63Ev,
  (VTBL_ENTRY)&_ZN5S48C73v64Ev,
  (VTBL_ENTRY)&_ZN5S48C73v65Ev,
  (VTBL_ENTRY)&_ZN5S48C73v66Ev,
  (VTBL_ENTRY)&_ZN5S48C73v67Ev,
  (VTBL_ENTRY)&_ZN5S48C73v68Ev,
  (VTBL_ENTRY)&_ZN5S48C73v69Ev,
  (VTBL_ENTRY)&_ZN5S48C73v70Ev,
  (VTBL_ENTRY)&_ZN5S48C73v71Ev,
  (VTBL_ENTRY)&_ZN5S48C73v72Ev,
  (VTBL_ENTRY)&_ZN5S48C73v73Ev,
  (VTBL_ENTRY)&_ZN5S48C73v74Ev,
  (VTBL_ENTRY)&_ZN5S48C63v75Ev,
  (VTBL_ENTRY)&_ZN5S48C63v76Ev,
  (VTBL_ENTRY)&_ZN5S48C63v77Ev,
  (VTBL_ENTRY)&_ZN5S48C63v78Ev,
  (VTBL_ENTRY)&_ZN5S48C63v79Ev,
  (VTBL_ENTRY)&_ZN5S48C63v80Ev,
  (VTBL_ENTRY)&_ZN5S48C63v81Ev,
  (VTBL_ENTRY)&_ZN5S48C63v82Ev,
  (VTBL_ENTRY)&_ZN5S48C63v83Ev,
  (VTBL_ENTRY)&_ZN5S48C63v84Ev,
  (VTBL_ENTRY)&_ZN5S48C63v85Ev,
  (VTBL_ENTRY)&_ZN5S48C63v86Ev,
  (VTBL_ENTRY)&_ZN5S48C63v87Ev,
  (VTBL_ENTRY)&_ZN5S48C63v88Ev,
  (VTBL_ENTRY)&_ZN5S48C63v89Ev,
  (VTBL_ENTRY)&_ZN5S48C63v90Ev,
  (VTBL_ENTRY)&_ZN5S48C63v91Ev,
  (VTBL_ENTRY)&_ZN5S48C63v92Ev,
  (VTBL_ENTRY)&_ZN5S48C63v93Ev,
  (VTBL_ENTRY)&_ZN5S48C63v94Ev,
  (VTBL_ENTRY)&_ZN5S48C63v95Ev,
  (VTBL_ENTRY)&_ZN5S48C63v96Ev,
  (VTBL_ENTRY)&_ZN5S48C63v97Ev,
  (VTBL_ENTRY)&_ZN5S48C63v98Ev,
  (VTBL_ENTRY)&_ZN5S48C63v99Ev,
  (VTBL_ENTRY)&_ZN5S48C64v100Ev,
  (VTBL_ENTRY)&_ZN5S48C64v101Ev,
  (VTBL_ENTRY)&_ZN5S48C64v102Ev,
  (VTBL_ENTRY)&_ZN5S48C64v103Ev,
  (VTBL_ENTRY)&_ZN5S48C64v104Ev,
  (VTBL_ENTRY)&_ZN5S48C64v105Ev,
  (VTBL_ENTRY)&_ZN5S48C64v106Ev,
  (VTBL_ENTRY)&_ZN5S48C64v107Ev,
  (VTBL_ENTRY)&_ZN5S48C64v108Ev,
  (VTBL_ENTRY)&_ZN5S48C64v109Ev,
  (VTBL_ENTRY)&_ZN5S48C64v110Ev,
  (VTBL_ENTRY)&_ZN5S48C64v111Ev,
  (VTBL_ENTRY)&_ZN5S48C64v112Ev,
  (VTBL_ENTRY)&_ZN5S48C64v113Ev,
  (VTBL_ENTRY)&_ZN5S48C64v114Ev,
  (VTBL_ENTRY)&_ZN5S48C64v115Ev,
  (VTBL_ENTRY)&_ZN5S48C64v116Ev,
  (VTBL_ENTRY)&_ZN5S48C64v117Ev,
  (VTBL_ENTRY)&_ZN5S48C64v118Ev,
  (VTBL_ENTRY)&_ZN5S48C64v119Ev,
  (VTBL_ENTRY)&_ZN5S48C64v120Ev,
  (VTBL_ENTRY)&_ZN5S48C64v121Ev,
  (VTBL_ENTRY)&_ZN5S48C64v122Ev,
  (VTBL_ENTRY)&_ZN5S48C64v123Ev,
  (VTBL_ENTRY)&_ZN5S48C64v124Ev,
  (VTBL_ENTRY)&_ZN5S48C64v125Ev,
  (VTBL_ENTRY)&_ZN5S48C64v126Ev,
  (VTBL_ENTRY)&_ZN5S48C64v127Ev,
  (VTBL_ENTRY)&_ZN5S48C64v128Ev,
  (VTBL_ENTRY)&_ZN5S48C64v129Ev,
  (VTBL_ENTRY)&_ZN5S48C64v130Ev,
  (VTBL_ENTRY)&_ZN5S48C64v131Ev,
  (VTBL_ENTRY)&_ZN5S48C64v132Ev,
  (VTBL_ENTRY)&_ZN5S48C64v133Ev,
  (VTBL_ENTRY)&_ZN5S48C64v134Ev,
  (VTBL_ENTRY)&_ZN5S48C64v135Ev,
  (VTBL_ENTRY)&_ZN5S48C64v136Ev,
  (VTBL_ENTRY)&_ZN5S48C64v137Ev,
  (VTBL_ENTRY)&_ZN5S48C64v138Ev,
  (VTBL_ENTRY)&_ZN5S48C64v139Ev,
  (VTBL_ENTRY)&_ZN5S48C64v140Ev,
  (VTBL_ENTRY)&_ZN5S48C64v141Ev,
  (VTBL_ENTRY)&_ZN5S48C64v142Ev,
  (VTBL_ENTRY)&_ZN5S48C64v143Ev,
  (VTBL_ENTRY)&_ZN5S48C64v144Ev,
  (VTBL_ENTRY)&_ZN5S48C64v145Ev,
  (VTBL_ENTRY)&_ZN5S48C64v146Ev,
  (VTBL_ENTRY)&_ZN5S48C64v147Ev,
  (VTBL_ENTRY)&_ZN5S48C64v148Ev,
  (VTBL_ENTRY)&_ZN5S48C64v149Ev,
  (VTBL_ENTRY)&_ZN5S48C64v150Ev,
  (VTBL_ENTRY)&_ZN5S48C64v151Ev,
  (VTBL_ENTRY)&_ZN5S48C64v152Ev,
  (VTBL_ENTRY)&_ZN5S48C64v153Ev,
  (VTBL_ENTRY)&_ZN5S48C64v154Ev,
  (VTBL_ENTRY)&_ZN5S48C64v155Ev,
  (VTBL_ENTRY)&_ZN5S48C64v156Ev,
  (VTBL_ENTRY)&_ZN5S48C64v157Ev,
  (VTBL_ENTRY)&_ZN5S48C64v158Ev,
  (VTBL_ENTRY)&_ZN5S48C64v159Ev,
  (VTBL_ENTRY)&_ZN5S48C64v160Ev,
  (VTBL_ENTRY)&_ZN5S48C64v161Ev,
  (VTBL_ENTRY)&_ZN5S48C64v162Ev,
  (VTBL_ENTRY)&_ZN5S48C64v163Ev,
  (VTBL_ENTRY)&_ZN5S48C64v164Ev,
  (VTBL_ENTRY)&_ZN5S48C64v165Ev,
  (VTBL_ENTRY)&_ZN5S48C64v166Ev,
  (VTBL_ENTRY)&_ZN5S48C64v167Ev,
  (VTBL_ENTRY)&_ZN5S48C64v168Ev,
  (VTBL_ENTRY)&_ZN5S48C64v169Ev,
  (VTBL_ENTRY)&_ZN5S48C64v170Ev,
  (VTBL_ENTRY)&_ZN5S48C64v171Ev,
  (VTBL_ENTRY)&_ZN5S48C64v172Ev,
  (VTBL_ENTRY)&_ZN5S48C64v173Ev,
  (VTBL_ENTRY)&_ZN5S48C64v174Ev,
  (VTBL_ENTRY)&_ZN5S48C64v175Ev,
  (VTBL_ENTRY)&_ZN5S48C64v176Ev,
  (VTBL_ENTRY)&_ZN5S48C64v177Ev,
  (VTBL_ENTRY)&_ZN5S48C64v178Ev,
  (VTBL_ENTRY)&_ZN5S48C64v179Ev,
  (VTBL_ENTRY)&_ZN5S48C64v180Ev,
  (VTBL_ENTRY)&_ZN5S48C64v181Ev,
  (VTBL_ENTRY)&_ZN5S48C64v182Ev,
  (VTBL_ENTRY)&_ZN5S48C64v183Ev,
  (VTBL_ENTRY)&_ZN5S48C64v184Ev,
  (VTBL_ENTRY)&_ZN5S48C64v185Ev,
  (VTBL_ENTRY)&_ZN5S48C64v186Ev,
  (VTBL_ENTRY)&_ZN5S48C64v187Ev,
  (VTBL_ENTRY)&_ZN5S48C64v188Ev,
  (VTBL_ENTRY)&_ZN5S48C64v189Ev,
  (VTBL_ENTRY)&_ZN5S48C64v190Ev,
  (VTBL_ENTRY)&_ZN5S48C64v191Ev,
  (VTBL_ENTRY)&_ZN5S48C64v192Ev,
  (VTBL_ENTRY)&_ZN5S48C64v193Ev,
  (VTBL_ENTRY)&_ZN5S48C64v194Ev,
  (VTBL_ENTRY)&_ZN5S48C64v195Ev,
  (VTBL_ENTRY)&_ZN5S48C64v196Ev,
  (VTBL_ENTRY)&_ZN5S48C64v197Ev,
  (VTBL_ENTRY)&_ZN5S48C64v198Ev,
  (VTBL_ENTRY)&_ZN5S48C64v199Ev,
  (VTBL_ENTRY)&_ZN5S48C64v200Ev,
  (VTBL_ENTRY)&_ZN5S48C64v201Ev,
  (VTBL_ENTRY)&_ZN5S48C64v202Ev,
  (VTBL_ENTRY)&_ZN5S48C64v203Ev,
  (VTBL_ENTRY)&_ZN5S48C64v204Ev,
  (VTBL_ENTRY)&_ZN5S48C64v205Ev,
  (VTBL_ENTRY)&_ZN5S48C64v206Ev,
  (VTBL_ENTRY)&_ZN5S48C64v207Ev,
  (VTBL_ENTRY)&_ZN5S48C64v208Ev,
  (VTBL_ENTRY)&_ZN5S48C64v209Ev,
  (VTBL_ENTRY)&_ZN5S48C64v210Ev,
  (VTBL_ENTRY)&_ZN5S48C64v211Ev,
  (VTBL_ENTRY)&_ZN5S48C64v212Ev,
  (VTBL_ENTRY)&_ZN5S48C64v213Ev,
  (VTBL_ENTRY)&_ZN5S48C64v214Ev,
  (VTBL_ENTRY)&_ZN5S48C64v215Ev,
  (VTBL_ENTRY)&_ZN5S48C64v216Ev,
  (VTBL_ENTRY)&_ZN5S48C64v217Ev,
  (VTBL_ENTRY)&_ZN5S48C54v218Ev,
  (VTBL_ENTRY)&_ZN5S48C54v219Ev,
  (VTBL_ENTRY)&_ZN5S48C54v220Ev,
  (VTBL_ENTRY)&_ZN5S48C54v221Ev,
  (VTBL_ENTRY)&_ZN5S48C54v222Ev,
  (VTBL_ENTRY)&_ZN5S48C54v223Ev,
  (VTBL_ENTRY)&_ZN5S48C54v224Ev,
  (VTBL_ENTRY)&_ZN5S48C54v225Ev,
  (VTBL_ENTRY)&_ZN5S48C54v226Ev,
  (VTBL_ENTRY)&_ZN5S48C54v227Ev,
  (VTBL_ENTRY)&_ZN5S48C54v228Ev,
  (VTBL_ENTRY)&_ZN5S48C54v229Ev,
  (VTBL_ENTRY)&_ZN5S48C54v230Ev,
  (VTBL_ENTRY)&_ZN5S48C54v231Ev,
  (VTBL_ENTRY)&_ZN5S48C54v232Ev,
  (VTBL_ENTRY)&_ZN5S48C54v233Ev,
  (VTBL_ENTRY)&_ZN5S48C54v234Ev,
  (VTBL_ENTRY)&_ZN5S48C54v235Ev,
  (VTBL_ENTRY)&_ZN5S48C54v236Ev,
  (VTBL_ENTRY)&_ZN5S48C54v237Ev,
  (VTBL_ENTRY)&_ZN5S48C54v238Ev,
  (VTBL_ENTRY)&_ZN5S48C54v239Ev,
  (VTBL_ENTRY)&_ZN5S48C54v240Ev,
  (VTBL_ENTRY)&_ZN5S48C54v241Ev,
  (VTBL_ENTRY)&_ZN5S48C54v242Ev,
  (VTBL_ENTRY)&_ZN5S48C54v243Ev,
  (VTBL_ENTRY)&_ZN5S48C54v244Ev,
  (VTBL_ENTRY)&_ZN5S48C54v245Ev,
  (VTBL_ENTRY)&_ZN5S48C54v246Ev,
  (VTBL_ENTRY)&_ZN5S48C54v247Ev,
  (VTBL_ENTRY)&_ZN5S48C54v248Ev,
  (VTBL_ENTRY)&_ZN5S48C54v249Ev,
  (VTBL_ENTRY)&_ZN5S48C54v250Ev,
  (VTBL_ENTRY)&_ZN5S48C54v251Ev,
  (VTBL_ENTRY)&_ZN5S48C54v252Ev,
  (VTBL_ENTRY)&_ZN5S48C54v253Ev,
  (VTBL_ENTRY)&_ZN5S48C54v254Ev,
  (VTBL_ENTRY)&_ZN5S48C54v255Ev,
  (VTBL_ENTRY)&_ZN5S48C54v256Ev,
  (VTBL_ENTRY)&_ZN5S48C54v257Ev,
  (VTBL_ENTRY)&_ZN5S48C54v258Ev,
  (VTBL_ENTRY)&_ZN5S48C54v259Ev,
  (VTBL_ENTRY)&_ZN5S48C54v260Ev,
  (VTBL_ENTRY)&_ZN5S48C54v261Ev,
  (VTBL_ENTRY)&_ZN5S48C54v262Ev,
  (VTBL_ENTRY)&_ZN5S48C54v263Ev,
  (VTBL_ENTRY)&_ZN5S48C54v264Ev,
  (VTBL_ENTRY)&_ZN5S48C54v265Ev,
  (VTBL_ENTRY)&_ZN5S48C54v266Ev,
  (VTBL_ENTRY)&_ZN5S48C54v267Ev,
  (VTBL_ENTRY)&_ZN5S48C44v268Ev,
  (VTBL_ENTRY)&_ZN5S48C44v269Ev,
  (VTBL_ENTRY)&_ZN5S48C44v270Ev,
  (VTBL_ENTRY)&_ZN5S48C44v271Ev,
  (VTBL_ENTRY)&_ZN5S48C44v272Ev,
  (VTBL_ENTRY)&_ZN5S48C44v273Ev,
  (VTBL_ENTRY)&_ZN5S48C44v274Ev,
  (VTBL_ENTRY)&_ZN5S48C44v275Ev,
  (VTBL_ENTRY)&_ZN5S48C44v276Ev,
  (VTBL_ENTRY)&_ZN5S48C44v277Ev,
  (VTBL_ENTRY)&_ZN5S48C44v278Ev,
  (VTBL_ENTRY)&_ZN5S48C44v279Ev,
  (VTBL_ENTRY)&_ZN5S48C44v280Ev,
  (VTBL_ENTRY)&_ZN5S48C44v281Ev,
  (VTBL_ENTRY)&_ZN5S48C44v282Ev,
  (VTBL_ENTRY)&_ZN5S48C44v283Ev,
  (VTBL_ENTRY)&_ZN5S48C44v284Ev,
  (VTBL_ENTRY)&_ZN5S48C44v285Ev,
  (VTBL_ENTRY)&_ZN5S48C44v286Ev,
  (VTBL_ENTRY)&_ZN5S48C44v287Ev,
  (VTBL_ENTRY)&_ZN5S48C44v288Ev,
  (VTBL_ENTRY)&_ZN5S48C44v289Ev,
  (VTBL_ENTRY)&_ZN5S48C44v290Ev,
  (VTBL_ENTRY)&_ZN5S48C44v291Ev,
  (VTBL_ENTRY)&_ZN5S48C44v292Ev,
  (VTBL_ENTRY)&_ZN5S48C44v293Ev,
  (VTBL_ENTRY)&_ZN5S48C44v294Ev,
  (VTBL_ENTRY)&_ZN5S48C44v295Ev,
  (VTBL_ENTRY)&_ZN5S48C44v296Ev,
  (VTBL_ENTRY)&_ZN5S48C44v297Ev,
  (VTBL_ENTRY)&_ZN5S48C44v298Ev,
  (VTBL_ENTRY)&_ZN5S48C44v299Ev,
  (VTBL_ENTRY)&_ZN5S48C44v300Ev,
  (VTBL_ENTRY)&_ZN5S48C44v301Ev,
  (VTBL_ENTRY)&_ZN5S48C44v302Ev,
  (VTBL_ENTRY)&_ZN5S48C44v303Ev,
  (VTBL_ENTRY)&_ZN5S48C44v304Ev,
  (VTBL_ENTRY)&_ZN5S48C44v305Ev,
  (VTBL_ENTRY)&_ZN5S48C34v306Ev,
  (VTBL_ENTRY)&_ZN5S48C34v307Ev,
  (VTBL_ENTRY)&_ZN5S48C34v308Ev,
};
extern VTBL_ENTRY _ZTI5S48C3[];
extern  VTBL_ENTRY _ZTV5S48C3[];
Class_Descriptor cd_S48C3 = {  "S48C3", // class name
  bases_S48C3, 4,
  &(vtc_S48C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1776,1308), // object size
  NSPAIRA(_ZTI5S48C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S48C3),302, //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  S48C55  : S28C12_nt {
};
//SIG(-1 S48C55) C1{ BC2{ m Fp Fi[2]}}



static void Test_S48C55()
{
  extern Class_Descriptor cd_S48C55;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S48C55, buf);
    S48C55 &lv = *(new (buf) S48C55());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S48C55)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S48C55)");
    check_base_class_offset(lv, (S28C12_nt*), 0, "S48C55");
    test_class_info(&lv, &cd_S48C55);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS48C55(Test_S48C55, "S48C55", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S48C54()
{
  extern Class_Descriptor cd_S48C54;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S48C54, buf);
    S48C54 &lv = *(new (buf) S48C54());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S48C54)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S48C54)");
    check_base_class_offset(lv, (S28C12_nt*)(S48C55*), 0, "S48C54");
    check_base_class_offset(lv, (S48C55*), 0, "S48C54");
    test_class_info(&lv, &cd_S48C54);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS48C54(Test_S48C54, "S48C54", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S28C12_nt;
extern Class_Descriptor cd_S48C55;
static Base_Class bases_S48C54[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S48C55,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S48C54 = {  "S48C54", // class name
  bases_S48C54, 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  S48C2  : S48C3 {
  unsigned int s48c2f0:1;
  unsigned int s48c2f1:1;
  unsigned int s48c2f2:1;
  unsigned int s48c2f3:1;
  unsigned int s48c2f4:1;
  unsigned int s48c2f5:1;
  unsigned int s48c2f6:1;
  unsigned int s48c2f7:1;
  unsigned int s48c2f8:1;
  unsigned int s48c2f9:1;
  unsigned int s48c2f10:1;
  unsigned int s48c2f11:1;
  unsigned int s48c2f12:1;
  unsigned int s48c2f13:1;
  unsigned int s48c2f14:1;
  unsigned int s48c2f15:1;
  unsigned int s48c2f16:1;
  unsigned int s48c2f17:1;
  unsigned int s48c2f18:1;
  unsigned int s48c2f19:1;
  unsigned int s48c2f20:1;
  unsigned int s48c2f21:1;
  unsigned int s48c2f22:1;
  unsigned int s48c2f23:1;
  unsigned int s48c2f24:1;
  unsigned int s48c2f25:1;
  unsigned int s48c2f26:1;
  unsigned int s48c2f27:1;
  unsigned int s48c2f28:1;
  unsigned int s48c2f29:1;
  unsigned int s48c2f30:1;
  unsigned int s48c2f31:1;
  unsigned int s48c2f32:1;
  unsigned int s48c2f33:1;
  unsigned int s48c2f34:1;
  unsigned int s48c2f35:1;
  unsigned int s48c2f36:1;
  unsigned int s48c2f37:1;
  unsigned int s48c2f38:1;
  unsigned int s48c2f39:1;
  unsigned int s48c2f40:1;
  unsigned int s48c2f41:1;
  unsigned int s48c2f42:1;
  unsigned int s48c2f43:1;
  char s48c2f44;
  char s48c2f45[5];
  ::S28C18_nt s48c2f46;
  void *s48c2f47[2];
  int s48c2f48[2];
  ::S28C31_nt s48c2f49;
  void *s48c2f50[3];
  ::S28C51 s48c2f51;
  void *s48c2f52;
  ::S28C18_nt s48c2f53;
  ::S48C18 s48c2f54;
  ::S28C51 s48c2f55;
  int s48c2f56;
  void *s48c2f57[3];
  ::S28C18_nt s48c2f58;
  ::S48C18 s48c2f59;
  ::S28C18_nt s48c2f60;
  ::S48C18 s48c2f61;
  int s48c2f62;
  ::S28C18_nt s48c2f63;
  int s48c2f64[2];
  unsigned int s48c2f65:1;
  unsigned int s48c2f66:1;
  unsigned int s48c2f67:1;
  unsigned int s48c2f68:1;
  int s48c2f69[2];
  ::S48C18 s48c2f70;
  int s48c2f71;
  void *s48c2f72;
  int s48c2f73[5];
  ::S28C31_nt s48c2f74;
  int s48c2f75;
  void *s48c2f76[4];
  ::S28C31_nt s48c2f77;
  ::S48C47 s48c2f78;
  void *s48c2f79[2];
  ::S28C44 s48c2f80;
  int s48c2f81[5];
  void *s48c2f82;
  ::S48C54 s48c2f83;
  int s48c2f84;
  virtual  ~S48C2(); // _ZN5S48C2D1Ev
  virtual void  v309(); // _ZN5S48C24v309Ev
  virtual void  v310(); // _ZN5S48C24v310Ev
  virtual void  v311(); // _ZN5S48C24v311Ev
  virtual void  v312(); // _ZN5S48C24v312Ev
  virtual void  v313(); // _ZN5S48C24v313Ev
  virtual void  v314(); // _ZN5S48C24v314Ev
  virtual void  v315(); // _ZN5S48C24v315Ev
  virtual void  v316(); // _ZN5S48C24v316Ev
  virtual void  v317(); // _ZN5S48C24v317Ev
  virtual void  v318(); // _ZN5S48C24v318Ev
  virtual void  v319(); // _ZN5S48C24v319Ev
  virtual void  v320(); // _ZN5S48C24v320Ev
  virtual void  v321(); // _ZN5S48C24v321Ev
  virtual void  v322(); // _ZN5S48C24v322Ev
  virtual void  v323(); // _ZN5S48C24v323Ev
  virtual void  v324(); // _ZN5S48C24v324Ev
  virtual void  v325(); // _ZN5S48C24v325Ev
  virtual void  v326(); // _ZN5S48C24v326Ev
  virtual void  v327(); // _ZN5S48C24v327Ev
  S48C2(); // tgen
};
//SIG(-1 S48C2) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ vd 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 Fi FL Fp[4] Fi[2] Fp FC7{ m Fi[2]} Fp[2]} vd v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 v208 v209 v210 v211 v212 v213 v214 v215 v216 v217 v218 v219 v220 v221 v222 v223 v224 v225 v226 FC8{ BC9{ BC10{ m Fp Fi[2]}}} FC8 FC11{ m Fi} Fi Fc[4] Fp[2] FC12{ BC13{ BC10}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC7 FC7 FC7 FC14{ BC15{ BC10}} FC14 Fi Fp[2] FC16{ m Fi[3]} FC17{ m Fi[3]} FC16 FC16 Fp FC7 FC14 FC16 FC17 Fi FC16 FC16 Fp Fi Fc FC17 FC17 Fp Fi Fp FC18{ BC19{ BC10}} FC20{ BC21{ BC10}} FC22{ BC23{ BC10}}} vd v227 v228 v229 v230 v231 v232 v233 v234 v235 v236 v237 v238 v239 v240 v241 v242 v243 v244 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 v258 v259 v260 v261 v262 v263 v264 v265 v266 v267 v268 v269 v270 v271 v272 v273 v274 v275 v276 Fp[2] Fi Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fc Fi[2] Fp FC16 FC16 Fp[5] FC16 Fp FC24{ BC25{ BC10}} Fp[2] FC16 Fp Fi[2] Fp Fi FC16 FC16 FC16 Fp[2] Fi FC16 Fi[4] Fp[2] FC26{ BC27{ BC10}} Fi FC17} vd v277 v278 v279 v280 v281 v282 v283 v284 v285 v286 v287 v288 v289 v290 v291 v292 v293 v294 v295 v296 v297 v298 v299 v300 v301 v302 v303 v304 v305 v306 v307 v308 v309 v310 v311 v312 v313 v314 Fp[8] Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2] Fp Fc[6] Fp[2] Fi[4] FC17 Fi FC17 Fp[5] FC16 Fi[12] FC28{ Fi Fc FC16 FC16 Fp FC16 Fc} FC29{ BC22}[2] Fi FC29 FC29 FC29 FC29 Fi FC16 Fp[4] FC16 Fp FC29 Fp FC30{ BC31{ BC10}} FC32{ BC33{ BC10}} FC32 FC32 Fp FC34{ BC35{ m Fp[2]}} Fp Fi FC36{ BC37{ BC10}} Fi FC29[4] FC36 Fp FC38{ BC39{ BC10}} Fi[3] FC38 FC38 FC14 FC40{ BC41{ BC10}} Fi FC42{ m Fp FC7}} vd v315 v316 v317} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fc[6] FC16 Fp[2] Fi[2] FC29 Fp[3] FC43{ m Fi:1 Fi:1 Fi:1 Fi:1 Fi[6] FC44{ m} Fc Fi[2] FC16 Fi[3] Fi:1 Fi[4] FC16 FC16 FC16 Fi} Fp FC16 FC17 FC43 Fi Fp[3] FC16 FC17 FC16 FC17 Fi FC16 Fi[2] Fi:1 Fi:1 Fi:1 Fi:1 Fi[2] FC17 Fi Fp Fi[5] FC29 Fi Fp[4] FC29 FC40 Fp[2] FC14 Fi[5] Fp FC45{ BC46{ BC10}} Fi}


 S48C2 ::~S48C2(){ note_dtor("S48C2", this);}
void  S48C2 ::v309(){vfunc_called(this, "_ZN5S48C24v309Ev");}
void  S48C2 ::v310(){vfunc_called(this, "_ZN5S48C24v310Ev");}
void  S48C2 ::v311(){vfunc_called(this, "_ZN5S48C24v311Ev");}
void  S48C2 ::v312(){vfunc_called(this, "_ZN5S48C24v312Ev");}
void  S48C2 ::v313(){vfunc_called(this, "_ZN5S48C24v313Ev");}
void  S48C2 ::v314(){vfunc_called(this, "_ZN5S48C24v314Ev");}
void  S48C2 ::v315(){vfunc_called(this, "_ZN5S48C24v315Ev");}
void  S48C2 ::v316(){vfunc_called(this, "_ZN5S48C24v316Ev");}
void  S48C2 ::v317(){vfunc_called(this, "_ZN5S48C24v317Ev");}
void  S48C2 ::v318(){vfunc_called(this, "_ZN5S48C24v318Ev");}
void  S48C2 ::v319(){vfunc_called(this, "_ZN5S48C24v319Ev");}
void  S48C2 ::v320(){vfunc_called(this, "_ZN5S48C24v320Ev");}
void  S48C2 ::v321(){vfunc_called(this, "_ZN5S48C24v321Ev");}
void  S48C2 ::v322(){vfunc_called(this, "_ZN5S48C24v322Ev");}
void  S48C2 ::v323(){vfunc_called(this, "_ZN5S48C24v323Ev");}
void  S48C2 ::v324(){vfunc_called(this, "_ZN5S48C24v324Ev");}
void  S48C2 ::v325(){vfunc_called(this, "_ZN5S48C24v325Ev");}
void  S48C2 ::v326(){vfunc_called(this, "_ZN5S48C24v326Ev");}
void  S48C2 ::v327(){vfunc_called(this, "_ZN5S48C24v327Ev");}
S48C2 ::S48C2(){ note_ctor("S48C2", this);} // tgen

static void Test_S48C2()
{
  extern Class_Descriptor cd_S48C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(312,477)];
    init_test(&cd_S48C2, buf);
    S48C2 *dp, &lv = *(dp=new (buf) S48C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2488,1904), "sizeof(S48C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S48C2)");
    check_base_class_offset(lv, (S48C7*)(S48C6*)(S48C5*)(S48C4*)(S48C3*), 0, "S48C2");
    check_base_class_offset(lv, (S48C6*)(S48C5*)(S48C4*)(S48C3*), 0, "S48C2");
    check_base_class_offset(lv, (S48C5*)(S48C4*)(S48C3*), 0, "S48C2");
    check_base_class_offset(lv, (S48C4*)(S48C3*), 0, "S48C2");
    check_base_class_offset(lv, (S48C3*), 0, "S48C2");
    set_bf_and_test(lv, s48c2f0, ABISELECT(1776,1308), 0, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f1, ABISELECT(1776,1308), 1, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f2, ABISELECT(1776,1308), 2, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f3, ABISELECT(1776,1308), 3, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f4, ABISELECT(1776,1308), 4, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f5, ABISELECT(1776,1308), 5, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f6, ABISELECT(1776,1308), 6, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f7, ABISELECT(1776,1308), 7, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f8, ABISELECT(1777,1309), 0, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f9, ABISELECT(1777,1309), 1, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f10, ABISELECT(1777,1309), 2, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f11, ABISELECT(1777,1309), 3, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f12, ABISELECT(1777,1309), 4, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f13, ABISELECT(1777,1309), 5, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f14, ABISELECT(1777,1309), 6, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f15, ABISELECT(1777,1309), 7, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f16, ABISELECT(1778,1310), 0, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f17, ABISELECT(1778,1310), 1, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f18, ABISELECT(1778,1310), 2, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f19, ABISELECT(1778,1310), 3, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f20, ABISELECT(1778,1310), 4, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f21, ABISELECT(1778,1310), 5, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f22, ABISELECT(1778,1310), 6, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f23, ABISELECT(1778,1310), 7, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f24, ABISELECT(1779,1311), 0, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f25, ABISELECT(1779,1311), 1, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f26, ABISELECT(1779,1311), 2, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f27, ABISELECT(1779,1311), 3, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f28, ABISELECT(1779,1311), 4, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f29, ABISELECT(1779,1311), 5, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f30, ABISELECT(1779,1311), 6, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f31, ABISELECT(1779,1311), 7, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f32, ABISELECT(1780,1312), 0, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f33, ABISELECT(1780,1312), 1, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f34, ABISELECT(1780,1312), 2, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f35, ABISELECT(1780,1312), 3, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f36, ABISELECT(1780,1312), 4, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f37, ABISELECT(1780,1312), 5, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f38, ABISELECT(1780,1312), 6, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f39, ABISELECT(1780,1312), 7, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f40, ABISELECT(1781,1313), 0, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f41, ABISELECT(1781,1313), 1, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f42, ABISELECT(1781,1313), 2, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f43, ABISELECT(1781,1313), 3, 1, 1, "S48C2");
    check_field_offset(lv, s48c2f44, ABISELECT(1782,1314), "S48C2.s48c2f44");
    check_field_offset(lv, s48c2f45, ABISELECT(1783,1315), "S48C2.s48c2f45");
    check_field_offset(lv, s48c2f46, ABISELECT(1788,1320), "S48C2.s48c2f46");
    check_field_offset(lv, s48c2f47, ABISELECT(1800,1332), "S48C2.s48c2f47");
    check_field_offset(lv, s48c2f48, ABISELECT(1816,1340), "S48C2.s48c2f48");
    check_field_offset(lv, s48c2f49, ABISELECT(1824,1348), "S48C2.s48c2f49");
    check_field_offset(lv, s48c2f50, ABISELECT(1840,1360), "S48C2.s48c2f50");
    check_field_offset(lv, s48c2f51, ABISELECT(1864,1372), "S48C2.s48c2f51");
    check_field_offset(lv, s48c2f52, ABISELECT(1992,1496), "S48C2.s48c2f52");
    check_field_offset(lv, s48c2f53, ABISELECT(2000,1500), "S48C2.s48c2f53");
    check_field_offset(lv, s48c2f54, ABISELECT(2012,1512), "S48C2.s48c2f54");
    check_field_offset(lv, s48c2f55, ABISELECT(2024,1524), "S48C2.s48c2f55");
    check_field_offset(lv, s48c2f56, ABISELECT(2148,1648), "S48C2.s48c2f56");
    check_field_offset(lv, s48c2f57, ABISELECT(2152,1652), "S48C2.s48c2f57");
    check_field_offset(lv, s48c2f58, ABISELECT(2176,1664), "S48C2.s48c2f58");
    check_field_offset(lv, s48c2f59, ABISELECT(2188,1676), "S48C2.s48c2f59");
    check_field_offset(lv, s48c2f60, ABISELECT(2200,1688), "S48C2.s48c2f60");
    check_field_offset(lv, s48c2f61, ABISELECT(2212,1700), "S48C2.s48c2f61");
    check_field_offset(lv, s48c2f62, ABISELECT(2224,1712), "S48C2.s48c2f62");
    check_field_offset(lv, s48c2f63, ABISELECT(2228,1716), "S48C2.s48c2f63");
    check_field_offset(lv, s48c2f64, ABISELECT(2240,1728), "S48C2.s48c2f64");
    set_bf_and_test(lv, s48c2f65, ABISELECT(2248,1736), 0, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f66, ABISELECT(2248,1736), 1, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f67, ABISELECT(2248,1736), 2, 1, 1, "S48C2");
    set_bf_and_test(lv, s48c2f68, ABISELECT(2248,1736), 3, 1, 1, "S48C2");
    check_field_offset(lv, s48c2f69, ABISELECT(2252,1740), "S48C2.s48c2f69");
    check_field_offset(lv, s48c2f70, ABISELECT(2260,1748), "S48C2.s48c2f70");
    check_field_offset(lv, s48c2f71, ABISELECT(2272,1760), "S48C2.s48c2f71");
    check_field_offset(lv, s48c2f72, ABISELECT(2280,1764), "S48C2.s48c2f72");
    check_field_offset(lv, s48c2f73, ABISELECT(2288,1768), "S48C2.s48c2f73");
    check_field_offset(lv, s48c2f74, ABISELECT(2312,1788), "S48C2.s48c2f74");
    check_field_offset(lv, s48c2f75, ABISELECT(2328,1800), "S48C2.s48c2f75");
    check_field_offset(lv, s48c2f76, ABISELECT(2336,1804), "S48C2.s48c2f76");
    check_field_offset(lv, s48c2f77, ABISELECT(2368,1820), "S48C2.s48c2f77");
    check_field_offset(lv, s48c2f78, ABISELECT(2384,1832), "S48C2.s48c2f78");
    check_field_offset(lv, s48c2f79, ABISELECT(2400,1844), "S48C2.s48c2f79");
    check_field_offset(lv, s48c2f80, ABISELECT(2416,1852), "S48C2.s48c2f80");
    check_field_offset(lv, s48c2f81, ABISELECT(2432,1864), "S48C2.s48c2f81");
    check_field_offset(lv, s48c2f82, ABISELECT(2456,1884), "S48C2.s48c2f82");
    check_field_offset(lv, s48c2f83, ABISELECT(2464,1888), "S48C2.s48c2f83");
    check_field_offset(lv, s48c2f84, ABISELECT(2480,1900), "S48C2.s48c2f84");
    test_class_info(&lv, &cd_S48C2);
    dp->~S48C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS48C2(Test_S48C2, "S48C2", ABISELECT(2488,1904));

#else // __cplusplus

extern void _ZN5S48C2C1Ev();
extern void _ZN5S48C2D1Ev();
Name_Map name_map_S48C2[] = {
  NSPAIR(_ZN5S48C2C1Ev),
  NSPAIR(_ZN5S48C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S48C7;
extern VTBL_ENTRY _ZTI5S48C7[];
extern  VTBL_ENTRY _ZTV5S48C7[];
extern Class_Descriptor cd_S48C6;
extern VTBL_ENTRY _ZTI5S48C6[];
extern  VTBL_ENTRY _ZTV5S48C6[];
extern Class_Descriptor cd_S48C5;
extern VTBL_ENTRY _ZTI5S48C5[];
extern  VTBL_ENTRY _ZTV5S48C5[];
extern Class_Descriptor cd_S48C4;
extern VTBL_ENTRY _ZTI5S48C4[];
extern  VTBL_ENTRY _ZTV5S48C4[];
extern Class_Descriptor cd_S48C3;
extern VTBL_ENTRY _ZTI5S48C3[];
extern  VTBL_ENTRY _ZTV5S48C3[];
static Base_Class bases_S48C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S48C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S48C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S48C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S48C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S48C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI5S48C2[];
extern void _ZN5S48C2D1Ev();
extern void _ZN5S48C2D0Ev();
extern void _ZN5S48C73v11Ev();
extern void _ZN5S48C73v12Ev();
extern void _ZN5S48C73v13Ev();
extern void _ZN5S48C73v14Ev();
extern void _ZN5S48C73v15Ev();
extern void _ZN5S48C73v16Ev();
extern void _ZN5S48C73v17Ev();
extern void _ZN5S48C73v18Ev();
extern void _ZN5S48C73v19Ev();
extern void _ZN5S48C73v20Ev();
extern void _ZN5S48C73v21Ev();
extern void _ZN5S48C73v22Ev();
extern void _ZN5S48C73v23Ev();
extern void _ZN5S48C73v24Ev();
extern void _ZN5S48C73v25Ev();
extern void _ZN5S48C73v26Ev();
extern void _ZN5S48C73v27Ev();
extern void _ZN5S48C73v28Ev();
extern void _ZN5S48C73v29Ev();
extern void _ZN5S48C73v30Ev();
extern void _ZN5S48C73v31Ev();
extern void _ZN5S48C73v32Ev();
extern void _ZN5S48C73v33Ev();
extern void _ZN5S48C73v34Ev();
extern void _ZN5S48C73v35Ev();
extern void _ZN5S48C73v36Ev();
extern void _ZN5S48C73v37Ev();
extern void _ZN5S48C73v38Ev();
extern void _ZN5S48C73v39Ev();
extern void _ZN5S48C73v40Ev();
extern void _ZN5S48C73v41Ev();
extern void _ZN5S48C73v42Ev();
extern void _ZN5S48C73v43Ev();
extern void _ZN5S48C73v44Ev();
extern void _ZN5S48C73v45Ev();
extern void _ZN5S48C73v46Ev();
extern void _ZN5S48C73v47Ev();
extern void _ZN5S48C73v48Ev();
extern void _ZN5S48C73v49Ev();
extern void _ZN5S48C73v50Ev();
extern void _ZN5S48C73v51Ev();
extern void _ZN5S48C73v52Ev();
extern void _ZN5S48C73v53Ev();
extern void _ZN5S48C73v54Ev();
extern void _ZN5S48C73v55Ev();
extern void _ZN5S48C73v56Ev();
extern void _ZN5S48C73v57Ev();
extern void _ZN5S48C73v58Ev();
extern void _ZN5S48C73v59Ev();
extern void _ZN5S48C73v60Ev();
extern void _ZN5S48C73v61Ev();
extern void _ZN5S48C73v62Ev();
extern void _ZN5S48C73v63Ev();
extern void _ZN5S48C73v64Ev();
extern void _ZN5S48C73v65Ev();
extern void _ZN5S48C73v66Ev();
extern void _ZN5S48C73v67Ev();
extern void _ZN5S48C73v68Ev();
extern void _ZN5S48C73v69Ev();
extern void _ZN5S48C73v70Ev();
extern void _ZN5S48C73v71Ev();
extern void _ZN5S48C73v72Ev();
extern void _ZN5S48C73v73Ev();
extern void _ZN5S48C73v74Ev();
extern void _ZN5S48C63v75Ev();
extern void _ZN5S48C63v76Ev();
extern void _ZN5S48C63v77Ev();
extern void _ZN5S48C63v78Ev();
extern void _ZN5S48C63v79Ev();
extern void _ZN5S48C63v80Ev();
extern void _ZN5S48C63v81Ev();
extern void _ZN5S48C63v82Ev();
extern void _ZN5S48C63v83Ev();
extern void _ZN5S48C63v84Ev();
extern void _ZN5S48C63v85Ev();
extern void _ZN5S48C63v86Ev();
extern void _ZN5S48C63v87Ev();
extern void _ZN5S48C63v88Ev();
extern void _ZN5S48C63v89Ev();
extern void _ZN5S48C63v90Ev();
extern void _ZN5S48C63v91Ev();
extern void _ZN5S48C63v92Ev();
extern void _ZN5S48C63v93Ev();
extern void _ZN5S48C63v94Ev();
extern void _ZN5S48C63v95Ev();
extern void _ZN5S48C63v96Ev();
extern void _ZN5S48C63v97Ev();
extern void _ZN5S48C63v98Ev();
extern void _ZN5S48C63v99Ev();
extern void _ZN5S48C64v100Ev();
extern void _ZN5S48C64v101Ev();
extern void _ZN5S48C64v102Ev();
extern void _ZN5S48C64v103Ev();
extern void _ZN5S48C64v104Ev();
extern void _ZN5S48C64v105Ev();
extern void _ZN5S48C64v106Ev();
extern void _ZN5S48C64v107Ev();
extern void _ZN5S48C64v108Ev();
extern void _ZN5S48C64v109Ev();
extern void _ZN5S48C64v110Ev();
extern void _ZN5S48C64v111Ev();
extern void _ZN5S48C64v112Ev();
extern void _ZN5S48C64v113Ev();
extern void _ZN5S48C64v114Ev();
extern void _ZN5S48C64v115Ev();
extern void _ZN5S48C64v116Ev();
extern void _ZN5S48C64v117Ev();
extern void _ZN5S48C64v118Ev();
extern void _ZN5S48C64v119Ev();
extern void _ZN5S48C64v120Ev();
extern void _ZN5S48C64v121Ev();
extern void _ZN5S48C64v122Ev();
extern void _ZN5S48C64v123Ev();
extern void _ZN5S48C64v124Ev();
extern void _ZN5S48C64v125Ev();
extern void _ZN5S48C64v126Ev();
extern void _ZN5S48C64v127Ev();
extern void _ZN5S48C64v128Ev();
extern void _ZN5S48C64v129Ev();
extern void _ZN5S48C64v130Ev();
extern void _ZN5S48C64v131Ev();
extern void _ZN5S48C64v132Ev();
extern void _ZN5S48C64v133Ev();
extern void _ZN5S48C64v134Ev();
extern void _ZN5S48C64v135Ev();
extern void _ZN5S48C64v136Ev();
extern void _ZN5S48C64v137Ev();
extern void _ZN5S48C64v138Ev();
extern void _ZN5S48C64v139Ev();
extern void _ZN5S48C64v140Ev();
extern void _ZN5S48C64v141Ev();
extern void _ZN5S48C64v142Ev();
extern void _ZN5S48C64v143Ev();
extern void _ZN5S48C64v144Ev();
extern void _ZN5S48C64v145Ev();
extern void _ZN5S48C64v146Ev();
extern void _ZN5S48C64v147Ev();
extern void _ZN5S48C64v148Ev();
extern void _ZN5S48C64v149Ev();
extern void _ZN5S48C64v150Ev();
extern void _ZN5S48C64v151Ev();
extern void _ZN5S48C64v152Ev();
extern void _ZN5S48C64v153Ev();
extern void _ZN5S48C64v154Ev();
extern void _ZN5S48C64v155Ev();
extern void _ZN5S48C64v156Ev();
extern void _ZN5S48C64v157Ev();
extern void _ZN5S48C64v158Ev();
extern void _ZN5S48C64v159Ev();
extern void _ZN5S48C64v160Ev();
extern void _ZN5S48C64v161Ev();
extern void _ZN5S48C64v162Ev();
extern void _ZN5S48C64v163Ev();
extern void _ZN5S48C64v164Ev();
extern void _ZN5S48C64v165Ev();
extern void _ZN5S48C64v166Ev();
extern void _ZN5S48C64v167Ev();
extern void _ZN5S48C64v168Ev();
extern void _ZN5S48C64v169Ev();
extern void _ZN5S48C64v170Ev();
extern void _ZN5S48C64v171Ev();
extern void _ZN5S48C64v172Ev();
extern void _ZN5S48C64v173Ev();
extern void _ZN5S48C64v174Ev();
extern void _ZN5S48C64v175Ev();
extern void _ZN5S48C64v176Ev();
extern void _ZN5S48C64v177Ev();
extern void _ZN5S48C64v178Ev();
extern void _ZN5S48C64v179Ev();
extern void _ZN5S48C64v180Ev();
extern void _ZN5S48C64v181Ev();
extern void _ZN5S48C64v182Ev();
extern void _ZN5S48C64v183Ev();
extern void _ZN5S48C64v184Ev();
extern void _ZN5S48C64v185Ev();
extern void _ZN5S48C64v186Ev();
extern void _ZN5S48C64v187Ev();
extern void _ZN5S48C64v188Ev();
extern void _ZN5S48C64v189Ev();
extern void _ZN5S48C64v190Ev();
extern void _ZN5S48C64v191Ev();
extern void _ZN5S48C64v192Ev();
extern void _ZN5S48C64v193Ev();
extern void _ZN5S48C64v194Ev();
extern void _ZN5S48C64v195Ev();
extern void _ZN5S48C64v196Ev();
extern void _ZN5S48C64v197Ev();
extern void _ZN5S48C64v198Ev();
extern void _ZN5S48C64v199Ev();
extern void _ZN5S48C64v200Ev();
extern void _ZN5S48C64v201Ev();
extern void _ZN5S48C64v202Ev();
extern void _ZN5S48C64v203Ev();
extern void _ZN5S48C64v204Ev();
extern void _ZN5S48C64v205Ev();
extern void _ZN5S48C64v206Ev();
extern void _ZN5S48C64v207Ev();
extern void _ZN5S48C64v208Ev();
extern void _ZN5S48C64v209Ev();
extern void _ZN5S48C64v210Ev();
extern void _ZN5S48C64v211Ev();
extern void _ZN5S48C64v212Ev();
extern void _ZN5S48C64v213Ev();
extern void _ZN5S48C64v214Ev();
extern void _ZN5S48C64v215Ev();
extern void _ZN5S48C64v216Ev();
extern void _ZN5S48C64v217Ev();
extern void _ZN5S48C54v218Ev();
extern void _ZN5S48C54v219Ev();
extern void _ZN5S48C54v220Ev();
extern void _ZN5S48C54v221Ev();
extern void _ZN5S48C54v222Ev();
extern void _ZN5S48C54v223Ev();
extern void _ZN5S48C54v224Ev();
extern void _ZN5S48C54v225Ev();
extern void _ZN5S48C54v226Ev();
extern void _ZN5S48C54v227Ev();
extern void _ZN5S48C54v228Ev();
extern void _ZN5S48C54v229Ev();
extern void _ZN5S48C54v230Ev();
extern void _ZN5S48C54v231Ev();
extern void _ZN5S48C54v232Ev();
extern void _ZN5S48C54v233Ev();
extern void _ZN5S48C54v234Ev();
extern void _ZN5S48C54v235Ev();
extern void _ZN5S48C54v236Ev();
extern void _ZN5S48C54v237Ev();
extern void _ZN5S48C54v238Ev();
extern void _ZN5S48C54v239Ev();
extern void _ZN5S48C54v240Ev();
extern void _ZN5S48C54v241Ev();
extern void _ZN5S48C54v242Ev();
extern void _ZN5S48C54v243Ev();
extern void _ZN5S48C54v244Ev();
extern void _ZN5S48C54v245Ev();
extern void _ZN5S48C54v246Ev();
extern void _ZN5S48C54v247Ev();
extern void _ZN5S48C54v248Ev();
extern void _ZN5S48C54v249Ev();
extern void _ZN5S48C54v250Ev();
extern void _ZN5S48C54v251Ev();
extern void _ZN5S48C54v252Ev();
extern void _ZN5S48C54v253Ev();
extern void _ZN5S48C54v254Ev();
extern void _ZN5S48C54v255Ev();
extern void _ZN5S48C54v256Ev();
extern void _ZN5S48C54v257Ev();
extern void _ZN5S48C54v258Ev();
extern void _ZN5S48C54v259Ev();
extern void _ZN5S48C54v260Ev();
extern void _ZN5S48C54v261Ev();
extern void _ZN5S48C54v262Ev();
extern void _ZN5S48C54v263Ev();
extern void _ZN5S48C54v264Ev();
extern void _ZN5S48C54v265Ev();
extern void _ZN5S48C54v266Ev();
extern void _ZN5S48C54v267Ev();
extern void _ZN5S48C44v268Ev();
extern void _ZN5S48C44v269Ev();
extern void _ZN5S48C44v270Ev();
extern void _ZN5S48C44v271Ev();
extern void _ZN5S48C44v272Ev();
extern void _ZN5S48C44v273Ev();
extern void _ZN5S48C44v274Ev();
extern void _ZN5S48C44v275Ev();
extern void _ZN5S48C44v276Ev();
extern void _ZN5S48C44v277Ev();
extern void _ZN5S48C44v278Ev();
extern void _ZN5S48C44v279Ev();
extern void _ZN5S48C44v280Ev();
extern void _ZN5S48C44v281Ev();
extern void _ZN5S48C44v282Ev();
extern void _ZN5S48C44v283Ev();
extern void _ZN5S48C44v284Ev();
extern void _ZN5S48C44v285Ev();
extern void _ZN5S48C44v286Ev();
extern void _ZN5S48C44v287Ev();
extern void _ZN5S48C44v288Ev();
extern void _ZN5S48C44v289Ev();
extern void _ZN5S48C44v290Ev();
extern void _ZN5S48C44v291Ev();
extern void _ZN5S48C44v292Ev();
extern void _ZN5S48C44v293Ev();
extern void _ZN5S48C44v294Ev();
extern void _ZN5S48C44v295Ev();
extern void _ZN5S48C44v296Ev();
extern void _ZN5S48C44v297Ev();
extern void _ZN5S48C44v298Ev();
extern void _ZN5S48C44v299Ev();
extern void _ZN5S48C44v300Ev();
extern void _ZN5S48C44v301Ev();
extern void _ZN5S48C44v302Ev();
extern void _ZN5S48C44v303Ev();
extern void _ZN5S48C44v304Ev();
extern void _ZN5S48C44v305Ev();
extern void _ZN5S48C34v306Ev();
extern void _ZN5S48C34v307Ev();
extern void _ZN5S48C34v308Ev();
extern void _ZN5S48C24v309Ev();
extern void _ZN5S48C24v310Ev();
extern void _ZN5S48C24v311Ev();
extern void _ZN5S48C24v312Ev();
extern void _ZN5S48C24v313Ev();
extern void _ZN5S48C24v314Ev();
extern void _ZN5S48C24v315Ev();
extern void _ZN5S48C24v316Ev();
extern void _ZN5S48C24v317Ev();
extern void _ZN5S48C24v318Ev();
extern void _ZN5S48C24v319Ev();
extern void _ZN5S48C24v320Ev();
extern void _ZN5S48C24v321Ev();
extern void _ZN5S48C24v322Ev();
extern void _ZN5S48C24v323Ev();
extern void _ZN5S48C24v324Ev();
extern void _ZN5S48C24v325Ev();
extern void _ZN5S48C24v326Ev();
extern void _ZN5S48C24v327Ev();
static  VTBL_ENTRY vtc_S48C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S48C2[0]),
  (VTBL_ENTRY)&_ZN5S48C2D1Ev,
  (VTBL_ENTRY)&_ZN5S48C2D0Ev,
  (VTBL_ENTRY)&_ZN5S48C73v11Ev,
  (VTBL_ENTRY)&_ZN5S48C73v12Ev,
  (VTBL_ENTRY)&_ZN5S48C73v13Ev,
  (VTBL_ENTRY)&_ZN5S48C73v14Ev,
  (VTBL_ENTRY)&_ZN5S48C73v15Ev,
  (VTBL_ENTRY)&_ZN5S48C73v16Ev,
  (VTBL_ENTRY)&_ZN5S48C73v17Ev,
  (VTBL_ENTRY)&_ZN5S48C73v18Ev,
  (VTBL_ENTRY)&_ZN5S48C73v19Ev,
  (VTBL_ENTRY)&_ZN5S48C73v20Ev,
  (VTBL_ENTRY)&_ZN5S48C73v21Ev,
  (VTBL_ENTRY)&_ZN5S48C73v22Ev,
  (VTBL_ENTRY)&_ZN5S48C73v23Ev,
  (VTBL_ENTRY)&_ZN5S48C73v24Ev,
  (VTBL_ENTRY)&_ZN5S48C73v25Ev,
  (VTBL_ENTRY)&_ZN5S48C73v26Ev,
  (VTBL_ENTRY)&_ZN5S48C73v27Ev,
  (VTBL_ENTRY)&_ZN5S48C73v28Ev,
  (VTBL_ENTRY)&_ZN5S48C73v29Ev,
  (VTBL_ENTRY)&_ZN5S48C73v30Ev,
  (VTBL_ENTRY)&_ZN5S48C73v31Ev,
  (VTBL_ENTRY)&_ZN5S48C73v32Ev,
  (VTBL_ENTRY)&_ZN5S48C73v33Ev,
  (VTBL_ENTRY)&_ZN5S48C73v34Ev,
  (VTBL_ENTRY)&_ZN5S48C73v35Ev,
  (VTBL_ENTRY)&_ZN5S48C73v36Ev,
  (VTBL_ENTRY)&_ZN5S48C73v37Ev,
  (VTBL_ENTRY)&_ZN5S48C73v38Ev,
  (VTBL_ENTRY)&_ZN5S48C73v39Ev,
  (VTBL_ENTRY)&_ZN5S48C73v40Ev,
  (VTBL_ENTRY)&_ZN5S48C73v41Ev,
  (VTBL_ENTRY)&_ZN5S48C73v42Ev,
  (VTBL_ENTRY)&_ZN5S48C73v43Ev,
  (VTBL_ENTRY)&_ZN5S48C73v44Ev,
  (VTBL_ENTRY)&_ZN5S48C73v45Ev,
  (VTBL_ENTRY)&_ZN5S48C73v46Ev,
  (VTBL_ENTRY)&_ZN5S48C73v47Ev,
  (VTBL_ENTRY)&_ZN5S48C73v48Ev,
  (VTBL_ENTRY)&_ZN5S48C73v49Ev,
  (VTBL_ENTRY)&_ZN5S48C73v50Ev,
  (VTBL_ENTRY)&_ZN5S48C73v51Ev,
  (VTBL_ENTRY)&_ZN5S48C73v52Ev,
  (VTBL_ENTRY)&_ZN5S48C73v53Ev,
  (VTBL_ENTRY)&_ZN5S48C73v54Ev,
  (VTBL_ENTRY)&_ZN5S48C73v55Ev,
  (VTBL_ENTRY)&_ZN5S48C73v56Ev,
  (VTBL_ENTRY)&_ZN5S48C73v57Ev,
  (VTBL_ENTRY)&_ZN5S48C73v58Ev,
  (VTBL_ENTRY)&_ZN5S48C73v59Ev,
  (VTBL_ENTRY)&_ZN5S48C73v60Ev,
  (VTBL_ENTRY)&_ZN5S48C73v61Ev,
  (VTBL_ENTRY)&_ZN5S48C73v62Ev,
  (VTBL_ENTRY)&_ZN5S48C73v63Ev,
  (VTBL_ENTRY)&_ZN5S48C73v64Ev,
  (VTBL_ENTRY)&_ZN5S48C73v65Ev,
  (VTBL_ENTRY)&_ZN5S48C73v66Ev,
  (VTBL_ENTRY)&_ZN5S48C73v67Ev,
  (VTBL_ENTRY)&_ZN5S48C73v68Ev,
  (VTBL_ENTRY)&_ZN5S48C73v69Ev,
  (VTBL_ENTRY)&_ZN5S48C73v70Ev,
  (VTBL_ENTRY)&_ZN5S48C73v71Ev,
  (VTBL_ENTRY)&_ZN5S48C73v72Ev,
  (VTBL_ENTRY)&_ZN5S48C73v73Ev,
  (VTBL_ENTRY)&_ZN5S48C73v74Ev,
  (VTBL_ENTRY)&_ZN5S48C63v75Ev,
  (VTBL_ENTRY)&_ZN5S48C63v76Ev,
  (VTBL_ENTRY)&_ZN5S48C63v77Ev,
  (VTBL_ENTRY)&_ZN5S48C63v78Ev,
  (VTBL_ENTRY)&_ZN5S48C63v79Ev,
  (VTBL_ENTRY)&_ZN5S48C63v80Ev,
  (VTBL_ENTRY)&_ZN5S48C63v81Ev,
  (VTBL_ENTRY)&_ZN5S48C63v82Ev,
  (VTBL_ENTRY)&_ZN5S48C63v83Ev,
  (VTBL_ENTRY)&_ZN5S48C63v84Ev,
  (VTBL_ENTRY)&_ZN5S48C63v85Ev,
  (VTBL_ENTRY)&_ZN5S48C63v86Ev,
  (VTBL_ENTRY)&_ZN5S48C63v87Ev,
  (VTBL_ENTRY)&_ZN5S48C63v88Ev,
  (VTBL_ENTRY)&_ZN5S48C63v89Ev,
  (VTBL_ENTRY)&_ZN5S48C63v90Ev,
  (VTBL_ENTRY)&_ZN5S48C63v91Ev,
  (VTBL_ENTRY)&_ZN5S48C63v92Ev,
  (VTBL_ENTRY)&_ZN5S48C63v93Ev,
  (VTBL_ENTRY)&_ZN5S48C63v94Ev,
  (VTBL_ENTRY)&_ZN5S48C63v95Ev,
  (VTBL_ENTRY)&_ZN5S48C63v96Ev,
  (VTBL_ENTRY)&_ZN5S48C63v97Ev,
  (VTBL_ENTRY)&_ZN5S48C63v98Ev,
  (VTBL_ENTRY)&_ZN5S48C63v99Ev,
  (VTBL_ENTRY)&_ZN5S48C64v100Ev,
  (VTBL_ENTRY)&_ZN5S48C64v101Ev,
  (VTBL_ENTRY)&_ZN5S48C64v102Ev,
  (VTBL_ENTRY)&_ZN5S48C64v103Ev,
  (VTBL_ENTRY)&_ZN5S48C64v104Ev,
  (VTBL_ENTRY)&_ZN5S48C64v105Ev,
  (VTBL_ENTRY)&_ZN5S48C64v106Ev,
  (VTBL_ENTRY)&_ZN5S48C64v107Ev,
  (VTBL_ENTRY)&_ZN5S48C64v108Ev,
  (VTBL_ENTRY)&_ZN5S48C64v109Ev,
  (VTBL_ENTRY)&_ZN5S48C64v110Ev,
  (VTBL_ENTRY)&_ZN5S48C64v111Ev,
  (VTBL_ENTRY)&_ZN5S48C64v112Ev,
  (VTBL_ENTRY)&_ZN5S48C64v113Ev,
  (VTBL_ENTRY)&_ZN5S48C64v114Ev,
  (VTBL_ENTRY)&_ZN5S48C64v115Ev,
  (VTBL_ENTRY)&_ZN5S48C64v116Ev,
  (VTBL_ENTRY)&_ZN5S48C64v117Ev,
  (VTBL_ENTRY)&_ZN5S48C64v118Ev,
  (VTBL_ENTRY)&_ZN5S48C64v119Ev,
  (VTBL_ENTRY)&_ZN5S48C64v120Ev,
  (VTBL_ENTRY)&_ZN5S48C64v121Ev,
  (VTBL_ENTRY)&_ZN5S48C64v122Ev,
  (VTBL_ENTRY)&_ZN5S48C64v123Ev,
  (VTBL_ENTRY)&_ZN5S48C64v124Ev,
  (VTBL_ENTRY)&_ZN5S48C64v125Ev,
  (VTBL_ENTRY)&_ZN5S48C64v126Ev,
  (VTBL_ENTRY)&_ZN5S48C64v127Ev,
  (VTBL_ENTRY)&_ZN5S48C64v128Ev,
  (VTBL_ENTRY)&_ZN5S48C64v129Ev,
  (VTBL_ENTRY)&_ZN5S48C64v130Ev,
  (VTBL_ENTRY)&_ZN5S48C64v131Ev,
  (VTBL_ENTRY)&_ZN5S48C64v132Ev,
  (VTBL_ENTRY)&_ZN5S48C64v133Ev,
  (VTBL_ENTRY)&_ZN5S48C64v134Ev,
  (VTBL_ENTRY)&_ZN5S48C64v135Ev,
  (VTBL_ENTRY)&_ZN5S48C64v136Ev,
  (VTBL_ENTRY)&_ZN5S48C64v137Ev,
  (VTBL_ENTRY)&_ZN5S48C64v138Ev,
  (VTBL_ENTRY)&_ZN5S48C64v139Ev,
  (VTBL_ENTRY)&_ZN5S48C64v140Ev,
  (VTBL_ENTRY)&_ZN5S48C64v141Ev,
  (VTBL_ENTRY)&_ZN5S48C64v142Ev,
  (VTBL_ENTRY)&_ZN5S48C64v143Ev,
  (VTBL_ENTRY)&_ZN5S48C64v144Ev,
  (VTBL_ENTRY)&_ZN5S48C64v145Ev,
  (VTBL_ENTRY)&_ZN5S48C64v146Ev,
  (VTBL_ENTRY)&_ZN5S48C64v147Ev,
  (VTBL_ENTRY)&_ZN5S48C64v148Ev,
  (VTBL_ENTRY)&_ZN5S48C64v149Ev,
  (VTBL_ENTRY)&_ZN5S48C64v150Ev,
  (VTBL_ENTRY)&_ZN5S48C64v151Ev,
  (VTBL_ENTRY)&_ZN5S48C64v152Ev,
  (VTBL_ENTRY)&_ZN5S48C64v153Ev,
  (VTBL_ENTRY)&_ZN5S48C64v154Ev,
  (VTBL_ENTRY)&_ZN5S48C64v155Ev,
  (VTBL_ENTRY)&_ZN5S48C64v156Ev,
  (VTBL_ENTRY)&_ZN5S48C64v157Ev,
  (VTBL_ENTRY)&_ZN5S48C64v158Ev,
  (VTBL_ENTRY)&_ZN5S48C64v159Ev,
  (VTBL_ENTRY)&_ZN5S48C64v160Ev,
  (VTBL_ENTRY)&_ZN5S48C64v161Ev,
  (VTBL_ENTRY)&_ZN5S48C64v162Ev,
  (VTBL_ENTRY)&_ZN5S48C64v163Ev,
  (VTBL_ENTRY)&_ZN5S48C64v164Ev,
  (VTBL_ENTRY)&_ZN5S48C64v165Ev,
  (VTBL_ENTRY)&_ZN5S48C64v166Ev,
  (VTBL_ENTRY)&_ZN5S48C64v167Ev,
  (VTBL_ENTRY)&_ZN5S48C64v168Ev,
  (VTBL_ENTRY)&_ZN5S48C64v169Ev,
  (VTBL_ENTRY)&_ZN5S48C64v170Ev,
  (VTBL_ENTRY)&_ZN5S48C64v171Ev,
  (VTBL_ENTRY)&_ZN5S48C64v172Ev,
  (VTBL_ENTRY)&_ZN5S48C64v173Ev,
  (VTBL_ENTRY)&_ZN5S48C64v174Ev,
  (VTBL_ENTRY)&_ZN5S48C64v175Ev,
  (VTBL_ENTRY)&_ZN5S48C64v176Ev,
  (VTBL_ENTRY)&_ZN5S48C64v177Ev,
  (VTBL_ENTRY)&_ZN5S48C64v178Ev,
  (VTBL_ENTRY)&_ZN5S48C64v179Ev,
  (VTBL_ENTRY)&_ZN5S48C64v180Ev,
  (VTBL_ENTRY)&_ZN5S48C64v181Ev,
  (VTBL_ENTRY)&_ZN5S48C64v182Ev,
  (VTBL_ENTRY)&_ZN5S48C64v183Ev,
  (VTBL_ENTRY)&_ZN5S48C64v184Ev,
  (VTBL_ENTRY)&_ZN5S48C64v185Ev,
  (VTBL_ENTRY)&_ZN5S48C64v186Ev,
  (VTBL_ENTRY)&_ZN5S48C64v187Ev,
  (VTBL_ENTRY)&_ZN5S48C64v188Ev,
  (VTBL_ENTRY)&_ZN5S48C64v189Ev,
  (VTBL_ENTRY)&_ZN5S48C64v190Ev,
  (VTBL_ENTRY)&_ZN5S48C64v191Ev,
  (VTBL_ENTRY)&_ZN5S48C64v192Ev,
  (VTBL_ENTRY)&_ZN5S48C64v193Ev,
  (VTBL_ENTRY)&_ZN5S48C64v194Ev,
  (VTBL_ENTRY)&_ZN5S48C64v195Ev,
  (VTBL_ENTRY)&_ZN5S48C64v196Ev,
  (VTBL_ENTRY)&_ZN5S48C64v197Ev,
  (VTBL_ENTRY)&_ZN5S48C64v198Ev,
  (VTBL_ENTRY)&_ZN5S48C64v199Ev,
  (VTBL_ENTRY)&_ZN5S48C64v200Ev,
  (VTBL_ENTRY)&_ZN5S48C64v201Ev,
  (VTBL_ENTRY)&_ZN5S48C64v202Ev,
  (VTBL_ENTRY)&_ZN5S48C64v203Ev,
  (VTBL_ENTRY)&_ZN5S48C64v204Ev,
  (VTBL_ENTRY)&_ZN5S48C64v205Ev,
  (VTBL_ENTRY)&_ZN5S48C64v206Ev,
  (VTBL_ENTRY)&_ZN5S48C64v207Ev,
  (VTBL_ENTRY)&_ZN5S48C64v208Ev,
  (VTBL_ENTRY)&_ZN5S48C64v209Ev,
  (VTBL_ENTRY)&_ZN5S48C64v210Ev,
  (VTBL_ENTRY)&_ZN5S48C64v211Ev,
  (VTBL_ENTRY)&_ZN5S48C64v212Ev,
  (VTBL_ENTRY)&_ZN5S48C64v213Ev,
  (VTBL_ENTRY)&_ZN5S48C64v214Ev,
  (VTBL_ENTRY)&_ZN5S48C64v215Ev,
  (VTBL_ENTRY)&_ZN5S48C64v216Ev,
  (VTBL_ENTRY)&_ZN5S48C64v217Ev,
  (VTBL_ENTRY)&_ZN5S48C54v218Ev,
  (VTBL_ENTRY)&_ZN5S48C54v219Ev,
  (VTBL_ENTRY)&_ZN5S48C54v220Ev,
  (VTBL_ENTRY)&_ZN5S48C54v221Ev,
  (VTBL_ENTRY)&_ZN5S48C54v222Ev,
  (VTBL_ENTRY)&_ZN5S48C54v223Ev,
  (VTBL_ENTRY)&_ZN5S48C54v224Ev,
  (VTBL_ENTRY)&_ZN5S48C54v225Ev,
  (VTBL_ENTRY)&_ZN5S48C54v226Ev,
  (VTBL_ENTRY)&_ZN5S48C54v227Ev,
  (VTBL_ENTRY)&_ZN5S48C54v228Ev,
  (VTBL_ENTRY)&_ZN5S48C54v229Ev,
  (VTBL_ENTRY)&_ZN5S48C54v230Ev,
  (VTBL_ENTRY)&_ZN5S48C54v231Ev,
  (VTBL_ENTRY)&_ZN5S48C54v232Ev,
  (VTBL_ENTRY)&_ZN5S48C54v233Ev,
  (VTBL_ENTRY)&_ZN5S48C54v234Ev,
  (VTBL_ENTRY)&_ZN5S48C54v235Ev,
  (VTBL_ENTRY)&_ZN5S48C54v236Ev,
  (VTBL_ENTRY)&_ZN5S48C54v237Ev,
  (VTBL_ENTRY)&_ZN5S48C54v238Ev,
  (VTBL_ENTRY)&_ZN5S48C54v239Ev,
  (VTBL_ENTRY)&_ZN5S48C54v240Ev,
  (VTBL_ENTRY)&_ZN5S48C54v241Ev,
  (VTBL_ENTRY)&_ZN5S48C54v242Ev,
  (VTBL_ENTRY)&_ZN5S48C54v243Ev,
  (VTBL_ENTRY)&_ZN5S48C54v244Ev,
  (VTBL_ENTRY)&_ZN5S48C54v245Ev,
  (VTBL_ENTRY)&_ZN5S48C54v246Ev,
  (VTBL_ENTRY)&_ZN5S48C54v247Ev,
  (VTBL_ENTRY)&_ZN5S48C54v248Ev,
  (VTBL_ENTRY)&_ZN5S48C54v249Ev,
  (VTBL_ENTRY)&_ZN5S48C54v250Ev,
  (VTBL_ENTRY)&_ZN5S48C54v251Ev,
  (VTBL_ENTRY)&_ZN5S48C54v252Ev,
  (VTBL_ENTRY)&_ZN5S48C54v253Ev,
  (VTBL_ENTRY)&_ZN5S48C54v254Ev,
  (VTBL_ENTRY)&_ZN5S48C54v255Ev,
  (VTBL_ENTRY)&_ZN5S48C54v256Ev,
  (VTBL_ENTRY)&_ZN5S48C54v257Ev,
  (VTBL_ENTRY)&_ZN5S48C54v258Ev,
  (VTBL_ENTRY)&_ZN5S48C54v259Ev,
  (VTBL_ENTRY)&_ZN5S48C54v260Ev,
  (VTBL_ENTRY)&_ZN5S48C54v261Ev,
  (VTBL_ENTRY)&_ZN5S48C54v262Ev,
  (VTBL_ENTRY)&_ZN5S48C54v263Ev,
  (VTBL_ENTRY)&_ZN5S48C54v264Ev,
  (VTBL_ENTRY)&_ZN5S48C54v265Ev,
  (VTBL_ENTRY)&_ZN5S48C54v266Ev,
  (VTBL_ENTRY)&_ZN5S48C54v267Ev,
  (VTBL_ENTRY)&_ZN5S48C44v268Ev,
  (VTBL_ENTRY)&_ZN5S48C44v269Ev,
  (VTBL_ENTRY)&_ZN5S48C44v270Ev,
  (VTBL_ENTRY)&_ZN5S48C44v271Ev,
  (VTBL_ENTRY)&_ZN5S48C44v272Ev,
  (VTBL_ENTRY)&_ZN5S48C44v273Ev,
  (VTBL_ENTRY)&_ZN5S48C44v274Ev,
  (VTBL_ENTRY)&_ZN5S48C44v275Ev,
  (VTBL_ENTRY)&_ZN5S48C44v276Ev,
  (VTBL_ENTRY)&_ZN5S48C44v277Ev,
  (VTBL_ENTRY)&_ZN5S48C44v278Ev,
  (VTBL_ENTRY)&_ZN5S48C44v279Ev,
  (VTBL_ENTRY)&_ZN5S48C44v280Ev,
  (VTBL_ENTRY)&_ZN5S48C44v281Ev,
  (VTBL_ENTRY)&_ZN5S48C44v282Ev,
  (VTBL_ENTRY)&_ZN5S48C44v283Ev,
  (VTBL_ENTRY)&_ZN5S48C44v284Ev,
  (VTBL_ENTRY)&_ZN5S48C44v285Ev,
  (VTBL_ENTRY)&_ZN5S48C44v286Ev,
  (VTBL_ENTRY)&_ZN5S48C44v287Ev,
  (VTBL_ENTRY)&_ZN5S48C44v288Ev,
  (VTBL_ENTRY)&_ZN5S48C44v289Ev,
  (VTBL_ENTRY)&_ZN5S48C44v290Ev,
  (VTBL_ENTRY)&_ZN5S48C44v291Ev,
  (VTBL_ENTRY)&_ZN5S48C44v292Ev,
  (VTBL_ENTRY)&_ZN5S48C44v293Ev,
  (VTBL_ENTRY)&_ZN5S48C44v294Ev,
  (VTBL_ENTRY)&_ZN5S48C44v295Ev,
  (VTBL_ENTRY)&_ZN5S48C44v296Ev,
  (VTBL_ENTRY)&_ZN5S48C44v297Ev,
  (VTBL_ENTRY)&_ZN5S48C44v298Ev,
  (VTBL_ENTRY)&_ZN5S48C44v299Ev,
  (VTBL_ENTRY)&_ZN5S48C44v300Ev,
  (VTBL_ENTRY)&_ZN5S48C44v301Ev,
  (VTBL_ENTRY)&_ZN5S48C44v302Ev,
  (VTBL_ENTRY)&_ZN5S48C44v303Ev,
  (VTBL_ENTRY)&_ZN5S48C44v304Ev,
  (VTBL_ENTRY)&_ZN5S48C44v305Ev,
  (VTBL_ENTRY)&_ZN5S48C34v306Ev,
  (VTBL_ENTRY)&_ZN5S48C34v307Ev,
  (VTBL_ENTRY)&_ZN5S48C34v308Ev,
  (VTBL_ENTRY)&_ZN5S48C24v309Ev,
  (VTBL_ENTRY)&_ZN5S48C24v310Ev,
  (VTBL_ENTRY)&_ZN5S48C24v311Ev,
  (VTBL_ENTRY)&_ZN5S48C24v312Ev,
  (VTBL_ENTRY)&_ZN5S48C24v313Ev,
  (VTBL_ENTRY)&_ZN5S48C24v314Ev,
  (VTBL_ENTRY)&_ZN5S48C24v315Ev,
  (VTBL_ENTRY)&_ZN5S48C24v316Ev,
  (VTBL_ENTRY)&_ZN5S48C24v317Ev,
  (VTBL_ENTRY)&_ZN5S48C24v318Ev,
  (VTBL_ENTRY)&_ZN5S48C24v319Ev,
  (VTBL_ENTRY)&_ZN5S48C24v320Ev,
  (VTBL_ENTRY)&_ZN5S48C24v321Ev,
  (VTBL_ENTRY)&_ZN5S48C24v322Ev,
  (VTBL_ENTRY)&_ZN5S48C24v323Ev,
  (VTBL_ENTRY)&_ZN5S48C24v324Ev,
  (VTBL_ENTRY)&_ZN5S48C24v325Ev,
  (VTBL_ENTRY)&_ZN5S48C24v326Ev,
  (VTBL_ENTRY)&_ZN5S48C24v327Ev,
};
extern VTBL_ENTRY _ZTI5S48C2[];
extern  VTBL_ENTRY _ZTV5S48C2[];
Class_Descriptor cd_S48C2 = {  "S48C2", // class name
  bases_S48C2, 5,
  &(vtc_S48C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(2488,1904), // object size
  NSPAIRA(_ZTI5S48C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S48C2),321, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S48C1  : S48C2 {
  unsigned int s48c1f0:1;
  unsigned int s48c1f1:1;
  ::S48C54 s48c1f2;
  ::S48C54 s48c1f3;
  virtual  ~S48C1(); // _ZN5S48C1D1Ev
  virtual void  v1(); // _ZN5S48C12v1Ev
  virtual void  v2(); // _ZN5S48C12v2Ev
  virtual void  v3(); // _ZN5S48C12v3Ev
  virtual void  v4(); // _ZN5S48C12v4Ev
  virtual void  v5(); // _ZN5S48C12v5Ev
  virtual void  v6(); // _ZN5S48C12v6Ev
  virtual void  v7(); // _ZN5S48C12v7Ev
  virtual void  v8(); // _ZN5S48C12v8Ev
  virtual void  v9(); // _ZN5S48C12v9Ev
  virtual void  v10(); // _ZN5S48C13v10Ev
  S48C1(); // tgen
};
//SIG(1 S48C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ BC7{ vd v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 Fi FL Fp[4] Fi[2] Fp FC8{ m Fi[2]} Fp[2]} vd v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 v208 v209 v210 v211 v212 v213 v214 v215 v216 v217 FC9{ BC10{ BC11{ m Fp Fi[2]}}} FC9 FC12{ m Fi} Fi Fc[4] Fp[2] FC13{ BC14{ BC11}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC8 FC8 FC8 FC15{ BC16{ BC11}} FC15 Fi Fp[2] FC17{ m Fi[3]} FC18{ m Fi[3]} FC17 FC17 Fp FC8 FC15 FC17 FC18 Fi FC17 FC17 Fp Fi Fc FC18 FC18 Fp Fi Fp FC19{ BC20{ BC11}} FC21{ BC22{ BC11}} FC23{ BC24{ BC11}}} vd v218 v219 v220 v221 v222 v223 v224 v225 v226 v227 v228 v229 v230 v231 v232 v233 v234 v235 v236 v237 v238 v239 v240 v241 v242 v243 v244 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 v258 v259 v260 v261 v262 v263 v264 v265 v266 v267 Fp[2] Fi Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fc Fi[2] Fp FC17 FC17 Fp[5] FC17 Fp FC25{ BC26{ BC11}} Fp[2] FC17 Fp Fi[2] Fp Fi FC17 FC17 FC17 Fp[2] Fi FC17 Fi[4] Fp[2] FC27{ BC28{ BC11}} Fi FC18} vd v268 v269 v270 v271 v272 v273 v274 v275 v276 v277 v278 v279 v280 v281 v282 v283 v284 v285 v286 v287 v288 v289 v290 v291 v292 v293 v294 v295 v296 v297 v298 v299 v300 v301 v302 v303 v304 v305 Fp[8] Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2] Fp Fc[6] Fp[2] Fi[4] FC18 Fi FC18 Fp[5] FC17 Fi[12] FC29{ Fi Fc FC17 FC17 Fp FC17 Fc} FC30{ BC23}[2] Fi FC30 FC30 FC30 FC30 Fi FC17 Fp[4] FC17 Fp FC30 Fp FC31{ BC32{ BC11}} FC33{ BC34{ BC11}} FC33 FC33 Fp FC35{ BC36{ m Fp[2]}} Fp Fi FC37{ BC38{ BC11}} Fi FC30[4] FC37 Fp FC39{ BC40{ BC11}} Fi[3] FC39 FC39 FC15 FC41{ BC42{ BC11}} Fi FC43{ m Fp FC8}} vd v306 v307 v308} vd v309 v310 v311 v312 v313 v314 v315 v316 v317 v318 v319 v320 v321 v322 v323 v324 v325 v326 v327 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fc[6] FC17 Fp[2] Fi[2] FC30 Fp[3] FC44{ m Fi:1 Fi:1 Fi:1 Fi:1 Fi[6] FC45{ m} Fc Fi[2] FC17 Fi[3] Fi:1 Fi[4] FC17 FC17 FC17 Fi} Fp FC17 FC18 FC44 Fi Fp[3] FC17 FC18 FC17 FC18 Fi FC17 Fi[2] Fi:1 Fi:1 Fi:1 Fi:1 Fi[2] FC18 Fi Fp Fi[5] FC30 Fi Fp[4] FC30 FC41 Fp[2] FC15 Fi[5] Fp FC46{ BC47{ BC11}} Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fi:1 Fi:1 FC46 FC46}


 S48C1 ::~S48C1(){ note_dtor("S48C1", this);}
void  S48C1 ::v1(){vfunc_called(this, "_ZN5S48C12v1Ev");}
void  S48C1 ::v2(){vfunc_called(this, "_ZN5S48C12v2Ev");}
void  S48C1 ::v3(){vfunc_called(this, "_ZN5S48C12v3Ev");}
void  S48C1 ::v4(){vfunc_called(this, "_ZN5S48C12v4Ev");}
void  S48C1 ::v5(){vfunc_called(this, "_ZN5S48C12v5Ev");}
void  S48C1 ::v6(){vfunc_called(this, "_ZN5S48C12v6Ev");}
void  S48C1 ::v7(){vfunc_called(this, "_ZN5S48C12v7Ev");}
void  S48C1 ::v8(){vfunc_called(this, "_ZN5S48C12v8Ev");}
void  S48C1 ::v9(){vfunc_called(this, "_ZN5S48C12v9Ev");}
void  S48C1 ::v10(){vfunc_called(this, "_ZN5S48C13v10Ev");}
S48C1 ::S48C1(){ note_ctor("S48C1", this);} // tgen

static void Test_S48C1()
{
  extern Class_Descriptor cd_S48C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(316,484)];
    init_test(&cd_S48C1, buf);
    S48C1 *dp, &lv = *(dp=new (buf) S48C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2520,1932), "sizeof(S48C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S48C1)");
    check_base_class_offset(lv, (S48C7*)(S48C6*)(S48C5*)(S48C4*)(S48C3*)(S48C2*), 0, "S48C1");
    check_base_class_offset(lv, (S48C6*)(S48C5*)(S48C4*)(S48C3*)(S48C2*), 0, "S48C1");
    check_base_class_offset(lv, (S48C5*)(S48C4*)(S48C3*)(S48C2*), 0, "S48C1");
    check_base_class_offset(lv, (S48C4*)(S48C3*)(S48C2*), 0, "S48C1");
    check_base_class_offset(lv, (S48C3*)(S48C2*), 0, "S48C1");
    check_base_class_offset(lv, (S48C2*), 0, "S48C1");
    set_bf_and_test(lv, s48c1f0, ABISELECT(2484,1904), 0, 1, 1, "S48C1");
    set_bf_and_test(lv, s48c1f1, ABISELECT(2484,1904), 1, 1, 1, "S48C1");
    check_field_offset(lv, s48c1f2, ABISELECT(2488,1908), "S48C1.s48c1f2");
    check_field_offset(lv, s48c1f3, ABISELECT(2504,1920), "S48C1.s48c1f3");
    test_class_info(&lv, &cd_S48C1);
    dp->~S48C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS48C1(Test_S48C1, "S48C1", ABISELECT(2520,1932));

#else // __cplusplus

extern void _ZN5S48C1C1Ev();
extern void _ZN5S48C1D1Ev();
Name_Map name_map_S48C1[] = {
  NSPAIR(_ZN5S48C1C1Ev),
  NSPAIR(_ZN5S48C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S48C7;
extern VTBL_ENTRY _ZTI5S48C7[];
extern  VTBL_ENTRY _ZTV5S48C7[];
extern Class_Descriptor cd_S48C6;
extern VTBL_ENTRY _ZTI5S48C6[];
extern  VTBL_ENTRY _ZTV5S48C6[];
extern Class_Descriptor cd_S48C5;
extern VTBL_ENTRY _ZTI5S48C5[];
extern  VTBL_ENTRY _ZTV5S48C5[];
extern Class_Descriptor cd_S48C4;
extern VTBL_ENTRY _ZTI5S48C4[];
extern  VTBL_ENTRY _ZTV5S48C4[];
extern Class_Descriptor cd_S48C3;
extern VTBL_ENTRY _ZTI5S48C3[];
extern  VTBL_ENTRY _ZTV5S48C3[];
extern Class_Descriptor cd_S48C2;
extern VTBL_ENTRY _ZTI5S48C2[];
extern  VTBL_ENTRY _ZTV5S48C2[];
static Base_Class bases_S48C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S48C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S48C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S48C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S48C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S48C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S48C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI5S48C1[];
extern void _ZN5S48C1D1Ev();
extern void _ZN5S48C1D0Ev();
extern void _ZN5S48C73v11Ev();
extern void _ZN5S48C73v12Ev();
extern void _ZN5S48C73v13Ev();
extern void _ZN5S48C73v14Ev();
extern void _ZN5S48C73v15Ev();
extern void _ZN5S48C73v16Ev();
extern void _ZN5S48C73v17Ev();
extern void _ZN5S48C73v18Ev();
extern void _ZN5S48C73v19Ev();
extern void _ZN5S48C73v20Ev();
extern void _ZN5S48C73v21Ev();
extern void _ZN5S48C73v22Ev();
extern void _ZN5S48C73v23Ev();
extern void _ZN5S48C73v24Ev();
extern void _ZN5S48C73v25Ev();
extern void _ZN5S48C73v26Ev();
extern void _ZN5S48C73v27Ev();
extern void _ZN5S48C73v28Ev();
extern void _ZN5S48C73v29Ev();
extern void _ZN5S48C73v30Ev();
extern void _ZN5S48C73v31Ev();
extern void _ZN5S48C73v32Ev();
extern void _ZN5S48C73v33Ev();
extern void _ZN5S48C73v34Ev();
extern void _ZN5S48C73v35Ev();
extern void _ZN5S48C73v36Ev();
extern void _ZN5S48C73v37Ev();
extern void _ZN5S48C73v38Ev();
extern void _ZN5S48C73v39Ev();
extern void _ZN5S48C73v40Ev();
extern void _ZN5S48C73v41Ev();
extern void _ZN5S48C73v42Ev();
extern void _ZN5S48C73v43Ev();
extern void _ZN5S48C73v44Ev();
extern void _ZN5S48C73v45Ev();
extern void _ZN5S48C73v46Ev();
extern void _ZN5S48C73v47Ev();
extern void _ZN5S48C73v48Ev();
extern void _ZN5S48C73v49Ev();
extern void _ZN5S48C73v50Ev();
extern void _ZN5S48C73v51Ev();
extern void _ZN5S48C73v52Ev();
extern void _ZN5S48C73v53Ev();
extern void _ZN5S48C73v54Ev();
extern void _ZN5S48C73v55Ev();
extern void _ZN5S48C73v56Ev();
extern void _ZN5S48C73v57Ev();
extern void _ZN5S48C73v58Ev();
extern void _ZN5S48C73v59Ev();
extern void _ZN5S48C73v60Ev();
extern void _ZN5S48C73v61Ev();
extern void _ZN5S48C73v62Ev();
extern void _ZN5S48C73v63Ev();
extern void _ZN5S48C73v64Ev();
extern void _ZN5S48C73v65Ev();
extern void _ZN5S48C73v66Ev();
extern void _ZN5S48C73v67Ev();
extern void _ZN5S48C73v68Ev();
extern void _ZN5S48C73v69Ev();
extern void _ZN5S48C73v70Ev();
extern void _ZN5S48C73v71Ev();
extern void _ZN5S48C73v72Ev();
extern void _ZN5S48C73v73Ev();
extern void _ZN5S48C73v74Ev();
extern void _ZN5S48C63v75Ev();
extern void _ZN5S48C63v76Ev();
extern void _ZN5S48C63v77Ev();
extern void _ZN5S48C63v78Ev();
extern void _ZN5S48C63v79Ev();
extern void _ZN5S48C63v80Ev();
extern void _ZN5S48C63v81Ev();
extern void _ZN5S48C63v82Ev();
extern void _ZN5S48C63v83Ev();
extern void _ZN5S48C63v84Ev();
extern void _ZN5S48C63v85Ev();
extern void _ZN5S48C63v86Ev();
extern void _ZN5S48C63v87Ev();
extern void _ZN5S48C63v88Ev();
extern void _ZN5S48C63v89Ev();
extern void _ZN5S48C63v90Ev();
extern void _ZN5S48C63v91Ev();
extern void _ZN5S48C63v92Ev();
extern void _ZN5S48C63v93Ev();
extern void _ZN5S48C63v94Ev();
extern void _ZN5S48C63v95Ev();
extern void _ZN5S48C63v96Ev();
extern void _ZN5S48C63v97Ev();
extern void _ZN5S48C63v98Ev();
extern void _ZN5S48C63v99Ev();
extern void _ZN5S48C64v100Ev();
extern void _ZN5S48C64v101Ev();
extern void _ZN5S48C64v102Ev();
extern void _ZN5S48C64v103Ev();
extern void _ZN5S48C64v104Ev();
extern void _ZN5S48C64v105Ev();
extern void _ZN5S48C64v106Ev();
extern void _ZN5S48C64v107Ev();
extern void _ZN5S48C64v108Ev();
extern void _ZN5S48C64v109Ev();
extern void _ZN5S48C64v110Ev();
extern void _ZN5S48C64v111Ev();
extern void _ZN5S48C64v112Ev();
extern void _ZN5S48C64v113Ev();
extern void _ZN5S48C64v114Ev();
extern void _ZN5S48C64v115Ev();
extern void _ZN5S48C64v116Ev();
extern void _ZN5S48C64v117Ev();
extern void _ZN5S48C64v118Ev();
extern void _ZN5S48C64v119Ev();
extern void _ZN5S48C64v120Ev();
extern void _ZN5S48C64v121Ev();
extern void _ZN5S48C64v122Ev();
extern void _ZN5S48C64v123Ev();
extern void _ZN5S48C64v124Ev();
extern void _ZN5S48C64v125Ev();
extern void _ZN5S48C64v126Ev();
extern void _ZN5S48C64v127Ev();
extern void _ZN5S48C64v128Ev();
extern void _ZN5S48C64v129Ev();
extern void _ZN5S48C64v130Ev();
extern void _ZN5S48C64v131Ev();
extern void _ZN5S48C64v132Ev();
extern void _ZN5S48C64v133Ev();
extern void _ZN5S48C64v134Ev();
extern void _ZN5S48C64v135Ev();
extern void _ZN5S48C64v136Ev();
extern void _ZN5S48C64v137Ev();
extern void _ZN5S48C64v138Ev();
extern void _ZN5S48C64v139Ev();
extern void _ZN5S48C64v140Ev();
extern void _ZN5S48C64v141Ev();
extern void _ZN5S48C64v142Ev();
extern void _ZN5S48C64v143Ev();
extern void _ZN5S48C64v144Ev();
extern void _ZN5S48C64v145Ev();
extern void _ZN5S48C64v146Ev();
extern void _ZN5S48C64v147Ev();
extern void _ZN5S48C64v148Ev();
extern void _ZN5S48C64v149Ev();
extern void _ZN5S48C64v150Ev();
extern void _ZN5S48C64v151Ev();
extern void _ZN5S48C64v152Ev();
extern void _ZN5S48C64v153Ev();
extern void _ZN5S48C64v154Ev();
extern void _ZN5S48C64v155Ev();
extern void _ZN5S48C64v156Ev();
extern void _ZN5S48C64v157Ev();
extern void _ZN5S48C64v158Ev();
extern void _ZN5S48C64v159Ev();
extern void _ZN5S48C64v160Ev();
extern void _ZN5S48C64v161Ev();
extern void _ZN5S48C64v162Ev();
extern void _ZN5S48C64v163Ev();
extern void _ZN5S48C64v164Ev();
extern void _ZN5S48C64v165Ev();
extern void _ZN5S48C64v166Ev();
extern void _ZN5S48C64v167Ev();
extern void _ZN5S48C64v168Ev();
extern void _ZN5S48C64v169Ev();
extern void _ZN5S48C64v170Ev();
extern void _ZN5S48C64v171Ev();
extern void _ZN5S48C64v172Ev();
extern void _ZN5S48C64v173Ev();
extern void _ZN5S48C64v174Ev();
extern void _ZN5S48C64v175Ev();
extern void _ZN5S48C64v176Ev();
extern void _ZN5S48C64v177Ev();
extern void _ZN5S48C64v178Ev();
extern void _ZN5S48C64v179Ev();
extern void _ZN5S48C64v180Ev();
extern void _ZN5S48C64v181Ev();
extern void _ZN5S48C64v182Ev();
extern void _ZN5S48C64v183Ev();
extern void _ZN5S48C64v184Ev();
extern void _ZN5S48C64v185Ev();
extern void _ZN5S48C64v186Ev();
extern void _ZN5S48C64v187Ev();
extern void _ZN5S48C64v188Ev();
extern void _ZN5S48C64v189Ev();
extern void _ZN5S48C64v190Ev();
extern void _ZN5S48C64v191Ev();
extern void _ZN5S48C64v192Ev();
extern void _ZN5S48C64v193Ev();
extern void _ZN5S48C64v194Ev();
extern void _ZN5S48C64v195Ev();
extern void _ZN5S48C64v196Ev();
extern void _ZN5S48C64v197Ev();
extern void _ZN5S48C64v198Ev();
extern void _ZN5S48C64v199Ev();
extern void _ZN5S48C64v200Ev();
extern void _ZN5S48C64v201Ev();
extern void _ZN5S48C64v202Ev();
extern void _ZN5S48C64v203Ev();
extern void _ZN5S48C64v204Ev();
extern void _ZN5S48C64v205Ev();
extern void _ZN5S48C64v206Ev();
extern void _ZN5S48C64v207Ev();
extern void _ZN5S48C64v208Ev();
extern void _ZN5S48C64v209Ev();
extern void _ZN5S48C64v210Ev();
extern void _ZN5S48C64v211Ev();
extern void _ZN5S48C64v212Ev();
extern void _ZN5S48C64v213Ev();
extern void _ZN5S48C64v214Ev();
extern void _ZN5S48C64v215Ev();
extern void _ZN5S48C64v216Ev();
extern void _ZN5S48C64v217Ev();
extern void _ZN5S48C54v218Ev();
extern void _ZN5S48C54v219Ev();
extern void _ZN5S48C54v220Ev();
extern void _ZN5S48C54v221Ev();
extern void _ZN5S48C54v222Ev();
extern void _ZN5S48C54v223Ev();
extern void _ZN5S48C54v224Ev();
extern void _ZN5S48C54v225Ev();
extern void _ZN5S48C54v226Ev();
extern void _ZN5S48C54v227Ev();
extern void _ZN5S48C54v228Ev();
extern void _ZN5S48C54v229Ev();
extern void _ZN5S48C54v230Ev();
extern void _ZN5S48C54v231Ev();
extern void _ZN5S48C54v232Ev();
extern void _ZN5S48C54v233Ev();
extern void _ZN5S48C54v234Ev();
extern void _ZN5S48C54v235Ev();
extern void _ZN5S48C54v236Ev();
extern void _ZN5S48C54v237Ev();
extern void _ZN5S48C54v238Ev();
extern void _ZN5S48C54v239Ev();
extern void _ZN5S48C54v240Ev();
extern void _ZN5S48C54v241Ev();
extern void _ZN5S48C54v242Ev();
extern void _ZN5S48C54v243Ev();
extern void _ZN5S48C54v244Ev();
extern void _ZN5S48C54v245Ev();
extern void _ZN5S48C54v246Ev();
extern void _ZN5S48C54v247Ev();
extern void _ZN5S48C54v248Ev();
extern void _ZN5S48C54v249Ev();
extern void _ZN5S48C54v250Ev();
extern void _ZN5S48C54v251Ev();
extern void _ZN5S48C54v252Ev();
extern void _ZN5S48C54v253Ev();
extern void _ZN5S48C54v254Ev();
extern void _ZN5S48C54v255Ev();
extern void _ZN5S48C54v256Ev();
extern void _ZN5S48C54v257Ev();
extern void _ZN5S48C54v258Ev();
extern void _ZN5S48C54v259Ev();
extern void _ZN5S48C54v260Ev();
extern void _ZN5S48C54v261Ev();
extern void _ZN5S48C54v262Ev();
extern void _ZN5S48C54v263Ev();
extern void _ZN5S48C54v264Ev();
extern void _ZN5S48C54v265Ev();
extern void _ZN5S48C54v266Ev();
extern void _ZN5S48C54v267Ev();
extern void _ZN5S48C44v268Ev();
extern void _ZN5S48C44v269Ev();
extern void _ZN5S48C44v270Ev();
extern void _ZN5S48C44v271Ev();
extern void _ZN5S48C44v272Ev();
extern void _ZN5S48C44v273Ev();
extern void _ZN5S48C44v274Ev();
extern void _ZN5S48C44v275Ev();
extern void _ZN5S48C44v276Ev();
extern void _ZN5S48C44v277Ev();
extern void _ZN5S48C44v278Ev();
extern void _ZN5S48C44v279Ev();
extern void _ZN5S48C44v280Ev();
extern void _ZN5S48C44v281Ev();
extern void _ZN5S48C44v282Ev();
extern void _ZN5S48C44v283Ev();
extern void _ZN5S48C44v284Ev();
extern void _ZN5S48C44v285Ev();
extern void _ZN5S48C44v286Ev();
extern void _ZN5S48C44v287Ev();
extern void _ZN5S48C44v288Ev();
extern void _ZN5S48C44v289Ev();
extern void _ZN5S48C44v290Ev();
extern void _ZN5S48C44v291Ev();
extern void _ZN5S48C44v292Ev();
extern void _ZN5S48C44v293Ev();
extern void _ZN5S48C44v294Ev();
extern void _ZN5S48C44v295Ev();
extern void _ZN5S48C44v296Ev();
extern void _ZN5S48C44v297Ev();
extern void _ZN5S48C44v298Ev();
extern void _ZN5S48C44v299Ev();
extern void _ZN5S48C44v300Ev();
extern void _ZN5S48C44v301Ev();
extern void _ZN5S48C44v302Ev();
extern void _ZN5S48C44v303Ev();
extern void _ZN5S48C44v304Ev();
extern void _ZN5S48C44v305Ev();
extern void _ZN5S48C34v306Ev();
extern void _ZN5S48C34v307Ev();
extern void _ZN5S48C34v308Ev();
extern void _ZN5S48C24v309Ev();
extern void _ZN5S48C24v310Ev();
extern void _ZN5S48C24v311Ev();
extern void _ZN5S48C24v312Ev();
extern void _ZN5S48C24v313Ev();
extern void _ZN5S48C24v314Ev();
extern void _ZN5S48C24v315Ev();
extern void _ZN5S48C24v316Ev();
extern void _ZN5S48C24v317Ev();
extern void _ZN5S48C24v318Ev();
extern void _ZN5S48C24v319Ev();
extern void _ZN5S48C24v320Ev();
extern void _ZN5S48C24v321Ev();
extern void _ZN5S48C24v322Ev();
extern void _ZN5S48C24v323Ev();
extern void _ZN5S48C24v324Ev();
extern void _ZN5S48C24v325Ev();
extern void _ZN5S48C24v326Ev();
extern void _ZN5S48C24v327Ev();
extern void _ZN5S48C12v1Ev();
extern void _ZN5S48C12v2Ev();
extern void _ZN5S48C12v3Ev();
extern void _ZN5S48C12v4Ev();
extern void _ZN5S48C12v5Ev();
extern void _ZN5S48C12v6Ev();
extern void _ZN5S48C12v7Ev();
extern void _ZN5S48C12v8Ev();
extern void _ZN5S48C12v9Ev();
extern void _ZN5S48C13v10Ev();
static  VTBL_ENTRY vtc_S48C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S48C1[0]),
  (VTBL_ENTRY)&_ZN5S48C1D1Ev,
  (VTBL_ENTRY)&_ZN5S48C1D0Ev,
  (VTBL_ENTRY)&_ZN5S48C73v11Ev,
  (VTBL_ENTRY)&_ZN5S48C73v12Ev,
  (VTBL_ENTRY)&_ZN5S48C73v13Ev,
  (VTBL_ENTRY)&_ZN5S48C73v14Ev,
  (VTBL_ENTRY)&_ZN5S48C73v15Ev,
  (VTBL_ENTRY)&_ZN5S48C73v16Ev,
  (VTBL_ENTRY)&_ZN5S48C73v17Ev,
  (VTBL_ENTRY)&_ZN5S48C73v18Ev,
  (VTBL_ENTRY)&_ZN5S48C73v19Ev,
  (VTBL_ENTRY)&_ZN5S48C73v20Ev,
  (VTBL_ENTRY)&_ZN5S48C73v21Ev,
  (VTBL_ENTRY)&_ZN5S48C73v22Ev,
  (VTBL_ENTRY)&_ZN5S48C73v23Ev,
  (VTBL_ENTRY)&_ZN5S48C73v24Ev,
  (VTBL_ENTRY)&_ZN5S48C73v25Ev,
  (VTBL_ENTRY)&_ZN5S48C73v26Ev,
  (VTBL_ENTRY)&_ZN5S48C73v27Ev,
  (VTBL_ENTRY)&_ZN5S48C73v28Ev,
  (VTBL_ENTRY)&_ZN5S48C73v29Ev,
  (VTBL_ENTRY)&_ZN5S48C73v30Ev,
  (VTBL_ENTRY)&_ZN5S48C73v31Ev,
  (VTBL_ENTRY)&_ZN5S48C73v32Ev,
  (VTBL_ENTRY)&_ZN5S48C73v33Ev,
  (VTBL_ENTRY)&_ZN5S48C73v34Ev,
  (VTBL_ENTRY)&_ZN5S48C73v35Ev,
  (VTBL_ENTRY)&_ZN5S48C73v36Ev,
  (VTBL_ENTRY)&_ZN5S48C73v37Ev,
  (VTBL_ENTRY)&_ZN5S48C73v38Ev,
  (VTBL_ENTRY)&_ZN5S48C73v39Ev,
  (VTBL_ENTRY)&_ZN5S48C73v40Ev,
  (VTBL_ENTRY)&_ZN5S48C73v41Ev,
  (VTBL_ENTRY)&_ZN5S48C73v42Ev,
  (VTBL_ENTRY)&_ZN5S48C73v43Ev,
  (VTBL_ENTRY)&_ZN5S48C73v44Ev,
  (VTBL_ENTRY)&_ZN5S48C73v45Ev,
  (VTBL_ENTRY)&_ZN5S48C73v46Ev,
  (VTBL_ENTRY)&_ZN5S48C73v47Ev,
  (VTBL_ENTRY)&_ZN5S48C73v48Ev,
  (VTBL_ENTRY)&_ZN5S48C73v49Ev,
  (VTBL_ENTRY)&_ZN5S48C73v50Ev,
  (VTBL_ENTRY)&_ZN5S48C73v51Ev,
  (VTBL_ENTRY)&_ZN5S48C73v52Ev,
  (VTBL_ENTRY)&_ZN5S48C73v53Ev,
  (VTBL_ENTRY)&_ZN5S48C73v54Ev,
  (VTBL_ENTRY)&_ZN5S48C73v55Ev,
  (VTBL_ENTRY)&_ZN5S48C73v56Ev,
  (VTBL_ENTRY)&_ZN5S48C73v57Ev,
  (VTBL_ENTRY)&_ZN5S48C73v58Ev,
  (VTBL_ENTRY)&_ZN5S48C73v59Ev,
  (VTBL_ENTRY)&_ZN5S48C73v60Ev,
  (VTBL_ENTRY)&_ZN5S48C73v61Ev,
  (VTBL_ENTRY)&_ZN5S48C73v62Ev,
  (VTBL_ENTRY)&_ZN5S48C73v63Ev,
  (VTBL_ENTRY)&_ZN5S48C73v64Ev,
  (VTBL_ENTRY)&_ZN5S48C73v65Ev,
  (VTBL_ENTRY)&_ZN5S48C73v66Ev,
  (VTBL_ENTRY)&_ZN5S48C73v67Ev,
  (VTBL_ENTRY)&_ZN5S48C73v68Ev,
  (VTBL_ENTRY)&_ZN5S48C73v69Ev,
  (VTBL_ENTRY)&_ZN5S48C73v70Ev,
  (VTBL_ENTRY)&_ZN5S48C73v71Ev,
  (VTBL_ENTRY)&_ZN5S48C73v72Ev,
  (VTBL_ENTRY)&_ZN5S48C73v73Ev,
  (VTBL_ENTRY)&_ZN5S48C73v74Ev,
  (VTBL_ENTRY)&_ZN5S48C63v75Ev,
  (VTBL_ENTRY)&_ZN5S48C63v76Ev,
  (VTBL_ENTRY)&_ZN5S48C63v77Ev,
  (VTBL_ENTRY)&_ZN5S48C63v78Ev,
  (VTBL_ENTRY)&_ZN5S48C63v79Ev,
  (VTBL_ENTRY)&_ZN5S48C63v80Ev,
  (VTBL_ENTRY)&_ZN5S48C63v81Ev,
  (VTBL_ENTRY)&_ZN5S48C63v82Ev,
  (VTBL_ENTRY)&_ZN5S48C63v83Ev,
  (VTBL_ENTRY)&_ZN5S48C63v84Ev,
  (VTBL_ENTRY)&_ZN5S48C63v85Ev,
  (VTBL_ENTRY)&_ZN5S48C63v86Ev,
  (VTBL_ENTRY)&_ZN5S48C63v87Ev,
  (VTBL_ENTRY)&_ZN5S48C63v88Ev,
  (VTBL_ENTRY)&_ZN5S48C63v89Ev,
  (VTBL_ENTRY)&_ZN5S48C63v90Ev,
  (VTBL_ENTRY)&_ZN5S48C63v91Ev,
  (VTBL_ENTRY)&_ZN5S48C63v92Ev,
  (VTBL_ENTRY)&_ZN5S48C63v93Ev,
  (VTBL_ENTRY)&_ZN5S48C63v94Ev,
  (VTBL_ENTRY)&_ZN5S48C63v95Ev,
  (VTBL_ENTRY)&_ZN5S48C63v96Ev,
  (VTBL_ENTRY)&_ZN5S48C63v97Ev,
  (VTBL_ENTRY)&_ZN5S48C63v98Ev,
  (VTBL_ENTRY)&_ZN5S48C63v99Ev,
  (VTBL_ENTRY)&_ZN5S48C64v100Ev,
  (VTBL_ENTRY)&_ZN5S48C64v101Ev,
  (VTBL_ENTRY)&_ZN5S48C64v102Ev,
  (VTBL_ENTRY)&_ZN5S48C64v103Ev,
  (VTBL_ENTRY)&_ZN5S48C64v104Ev,
  (VTBL_ENTRY)&_ZN5S48C64v105Ev,
  (VTBL_ENTRY)&_ZN5S48C64v106Ev,
  (VTBL_ENTRY)&_ZN5S48C64v107Ev,
  (VTBL_ENTRY)&_ZN5S48C64v108Ev,
  (VTBL_ENTRY)&_ZN5S48C64v109Ev,
  (VTBL_ENTRY)&_ZN5S48C64v110Ev,
  (VTBL_ENTRY)&_ZN5S48C64v111Ev,
  (VTBL_ENTRY)&_ZN5S48C64v112Ev,
  (VTBL_ENTRY)&_ZN5S48C64v113Ev,
  (VTBL_ENTRY)&_ZN5S48C64v114Ev,
  (VTBL_ENTRY)&_ZN5S48C64v115Ev,
  (VTBL_ENTRY)&_ZN5S48C64v116Ev,
  (VTBL_ENTRY)&_ZN5S48C64v117Ev,
  (VTBL_ENTRY)&_ZN5S48C64v118Ev,
  (VTBL_ENTRY)&_ZN5S48C64v119Ev,
  (VTBL_ENTRY)&_ZN5S48C64v120Ev,
  (VTBL_ENTRY)&_ZN5S48C64v121Ev,
  (VTBL_ENTRY)&_ZN5S48C64v122Ev,
  (VTBL_ENTRY)&_ZN5S48C64v123Ev,
  (VTBL_ENTRY)&_ZN5S48C64v124Ev,
  (VTBL_ENTRY)&_ZN5S48C64v125Ev,
  (VTBL_ENTRY)&_ZN5S48C64v126Ev,
  (VTBL_ENTRY)&_ZN5S48C64v127Ev,
  (VTBL_ENTRY)&_ZN5S48C64v128Ev,
  (VTBL_ENTRY)&_ZN5S48C64v129Ev,
  (VTBL_ENTRY)&_ZN5S48C64v130Ev,
  (VTBL_ENTRY)&_ZN5S48C64v131Ev,
  (VTBL_ENTRY)&_ZN5S48C64v132Ev,
  (VTBL_ENTRY)&_ZN5S48C64v133Ev,
  (VTBL_ENTRY)&_ZN5S48C64v134Ev,
  (VTBL_ENTRY)&_ZN5S48C64v135Ev,
  (VTBL_ENTRY)&_ZN5S48C64v136Ev,
  (VTBL_ENTRY)&_ZN5S48C64v137Ev,
  (VTBL_ENTRY)&_ZN5S48C64v138Ev,
  (VTBL_ENTRY)&_ZN5S48C64v139Ev,
  (VTBL_ENTRY)&_ZN5S48C64v140Ev,
  (VTBL_ENTRY)&_ZN5S48C64v141Ev,
  (VTBL_ENTRY)&_ZN5S48C64v142Ev,
  (VTBL_ENTRY)&_ZN5S48C64v143Ev,
  (VTBL_ENTRY)&_ZN5S48C64v144Ev,
  (VTBL_ENTRY)&_ZN5S48C64v145Ev,
  (VTBL_ENTRY)&_ZN5S48C64v146Ev,
  (VTBL_ENTRY)&_ZN5S48C64v147Ev,
  (VTBL_ENTRY)&_ZN5S48C64v148Ev,
  (VTBL_ENTRY)&_ZN5S48C64v149Ev,
  (VTBL_ENTRY)&_ZN5S48C64v150Ev,
  (VTBL_ENTRY)&_ZN5S48C64v151Ev,
  (VTBL_ENTRY)&_ZN5S48C64v152Ev,
  (VTBL_ENTRY)&_ZN5S48C64v153Ev,
  (VTBL_ENTRY)&_ZN5S48C64v154Ev,
  (VTBL_ENTRY)&_ZN5S48C64v155Ev,
  (VTBL_ENTRY)&_ZN5S48C64v156Ev,
  (VTBL_ENTRY)&_ZN5S48C64v157Ev,
  (VTBL_ENTRY)&_ZN5S48C64v158Ev,
  (VTBL_ENTRY)&_ZN5S48C64v159Ev,
  (VTBL_ENTRY)&_ZN5S48C64v160Ev,
  (VTBL_ENTRY)&_ZN5S48C64v161Ev,
  (VTBL_ENTRY)&_ZN5S48C64v162Ev,
  (VTBL_ENTRY)&_ZN5S48C64v163Ev,
  (VTBL_ENTRY)&_ZN5S48C64v164Ev,
  (VTBL_ENTRY)&_ZN5S48C64v165Ev,
  (VTBL_ENTRY)&_ZN5S48C64v166Ev,
  (VTBL_ENTRY)&_ZN5S48C64v167Ev,
  (VTBL_ENTRY)&_ZN5S48C64v168Ev,
  (VTBL_ENTRY)&_ZN5S48C64v169Ev,
  (VTBL_ENTRY)&_ZN5S48C64v170Ev,
  (VTBL_ENTRY)&_ZN5S48C64v171Ev,
  (VTBL_ENTRY)&_ZN5S48C64v172Ev,
  (VTBL_ENTRY)&_ZN5S48C64v173Ev,
  (VTBL_ENTRY)&_ZN5S48C64v174Ev,
  (VTBL_ENTRY)&_ZN5S48C64v175Ev,
  (VTBL_ENTRY)&_ZN5S48C64v176Ev,
  (VTBL_ENTRY)&_ZN5S48C64v177Ev,
  (VTBL_ENTRY)&_ZN5S48C64v178Ev,
  (VTBL_ENTRY)&_ZN5S48C64v179Ev,
  (VTBL_ENTRY)&_ZN5S48C64v180Ev,
  (VTBL_ENTRY)&_ZN5S48C64v181Ev,
  (VTBL_ENTRY)&_ZN5S48C64v182Ev,
  (VTBL_ENTRY)&_ZN5S48C64v183Ev,
  (VTBL_ENTRY)&_ZN5S48C64v184Ev,
  (VTBL_ENTRY)&_ZN5S48C64v185Ev,
  (VTBL_ENTRY)&_ZN5S48C64v186Ev,
  (VTBL_ENTRY)&_ZN5S48C64v187Ev,
  (VTBL_ENTRY)&_ZN5S48C64v188Ev,
  (VTBL_ENTRY)&_ZN5S48C64v189Ev,
  (VTBL_ENTRY)&_ZN5S48C64v190Ev,
  (VTBL_ENTRY)&_ZN5S48C64v191Ev,
  (VTBL_ENTRY)&_ZN5S48C64v192Ev,
  (VTBL_ENTRY)&_ZN5S48C64v193Ev,
  (VTBL_ENTRY)&_ZN5S48C64v194Ev,
  (VTBL_ENTRY)&_ZN5S48C64v195Ev,
  (VTBL_ENTRY)&_ZN5S48C64v196Ev,
  (VTBL_ENTRY)&_ZN5S48C64v197Ev,
  (VTBL_ENTRY)&_ZN5S48C64v198Ev,
  (VTBL_ENTRY)&_ZN5S48C64v199Ev,
  (VTBL_ENTRY)&_ZN5S48C64v200Ev,
  (VTBL_ENTRY)&_ZN5S48C64v201Ev,
  (VTBL_ENTRY)&_ZN5S48C64v202Ev,
  (VTBL_ENTRY)&_ZN5S48C64v203Ev,
  (VTBL_ENTRY)&_ZN5S48C64v204Ev,
  (VTBL_ENTRY)&_ZN5S48C64v205Ev,
  (VTBL_ENTRY)&_ZN5S48C64v206Ev,
  (VTBL_ENTRY)&_ZN5S48C64v207Ev,
  (VTBL_ENTRY)&_ZN5S48C64v208Ev,
  (VTBL_ENTRY)&_ZN5S48C64v209Ev,
  (VTBL_ENTRY)&_ZN5S48C64v210Ev,
  (VTBL_ENTRY)&_ZN5S48C64v211Ev,
  (VTBL_ENTRY)&_ZN5S48C64v212Ev,
  (VTBL_ENTRY)&_ZN5S48C64v213Ev,
  (VTBL_ENTRY)&_ZN5S48C64v214Ev,
  (VTBL_ENTRY)&_ZN5S48C64v215Ev,
  (VTBL_ENTRY)&_ZN5S48C64v216Ev,
  (VTBL_ENTRY)&_ZN5S48C64v217Ev,
  (VTBL_ENTRY)&_ZN5S48C54v218Ev,
  (VTBL_ENTRY)&_ZN5S48C54v219Ev,
  (VTBL_ENTRY)&_ZN5S48C54v220Ev,
  (VTBL_ENTRY)&_ZN5S48C54v221Ev,
  (VTBL_ENTRY)&_ZN5S48C54v222Ev,
  (VTBL_ENTRY)&_ZN5S48C54v223Ev,
  (VTBL_ENTRY)&_ZN5S48C54v224Ev,
  (VTBL_ENTRY)&_ZN5S48C54v225Ev,
  (VTBL_ENTRY)&_ZN5S48C54v226Ev,
  (VTBL_ENTRY)&_ZN5S48C54v227Ev,
  (VTBL_ENTRY)&_ZN5S48C54v228Ev,
  (VTBL_ENTRY)&_ZN5S48C54v229Ev,
  (VTBL_ENTRY)&_ZN5S48C54v230Ev,
  (VTBL_ENTRY)&_ZN5S48C54v231Ev,
  (VTBL_ENTRY)&_ZN5S48C54v232Ev,
  (VTBL_ENTRY)&_ZN5S48C54v233Ev,
  (VTBL_ENTRY)&_ZN5S48C54v234Ev,
  (VTBL_ENTRY)&_ZN5S48C54v235Ev,
  (VTBL_ENTRY)&_ZN5S48C54v236Ev,
  (VTBL_ENTRY)&_ZN5S48C54v237Ev,
  (VTBL_ENTRY)&_ZN5S48C54v238Ev,
  (VTBL_ENTRY)&_ZN5S48C54v239Ev,
  (VTBL_ENTRY)&_ZN5S48C54v240Ev,
  (VTBL_ENTRY)&_ZN5S48C54v241Ev,
  (VTBL_ENTRY)&_ZN5S48C54v242Ev,
  (VTBL_ENTRY)&_ZN5S48C54v243Ev,
  (VTBL_ENTRY)&_ZN5S48C54v244Ev,
  (VTBL_ENTRY)&_ZN5S48C54v245Ev,
  (VTBL_ENTRY)&_ZN5S48C54v246Ev,
  (VTBL_ENTRY)&_ZN5S48C54v247Ev,
  (VTBL_ENTRY)&_ZN5S48C54v248Ev,
  (VTBL_ENTRY)&_ZN5S48C54v249Ev,
  (VTBL_ENTRY)&_ZN5S48C54v250Ev,
  (VTBL_ENTRY)&_ZN5S48C54v251Ev,
  (VTBL_ENTRY)&_ZN5S48C54v252Ev,
  (VTBL_ENTRY)&_ZN5S48C54v253Ev,
  (VTBL_ENTRY)&_ZN5S48C54v254Ev,
  (VTBL_ENTRY)&_ZN5S48C54v255Ev,
  (VTBL_ENTRY)&_ZN5S48C54v256Ev,
  (VTBL_ENTRY)&_ZN5S48C54v257Ev,
  (VTBL_ENTRY)&_ZN5S48C54v258Ev,
  (VTBL_ENTRY)&_ZN5S48C54v259Ev,
  (VTBL_ENTRY)&_ZN5S48C54v260Ev,
  (VTBL_ENTRY)&_ZN5S48C54v261Ev,
  (VTBL_ENTRY)&_ZN5S48C54v262Ev,
  (VTBL_ENTRY)&_ZN5S48C54v263Ev,
  (VTBL_ENTRY)&_ZN5S48C54v264Ev,
  (VTBL_ENTRY)&_ZN5S48C54v265Ev,
  (VTBL_ENTRY)&_ZN5S48C54v266Ev,
  (VTBL_ENTRY)&_ZN5S48C54v267Ev,
  (VTBL_ENTRY)&_ZN5S48C44v268Ev,
  (VTBL_ENTRY)&_ZN5S48C44v269Ev,
  (VTBL_ENTRY)&_ZN5S48C44v270Ev,
  (VTBL_ENTRY)&_ZN5S48C44v271Ev,
  (VTBL_ENTRY)&_ZN5S48C44v272Ev,
  (VTBL_ENTRY)&_ZN5S48C44v273Ev,
  (VTBL_ENTRY)&_ZN5S48C44v274Ev,
  (VTBL_ENTRY)&_ZN5S48C44v275Ev,
  (VTBL_ENTRY)&_ZN5S48C44v276Ev,
  (VTBL_ENTRY)&_ZN5S48C44v277Ev,
  (VTBL_ENTRY)&_ZN5S48C44v278Ev,
  (VTBL_ENTRY)&_ZN5S48C44v279Ev,
  (VTBL_ENTRY)&_ZN5S48C44v280Ev,
  (VTBL_ENTRY)&_ZN5S48C44v281Ev,
  (VTBL_ENTRY)&_ZN5S48C44v282Ev,
  (VTBL_ENTRY)&_ZN5S48C44v283Ev,
  (VTBL_ENTRY)&_ZN5S48C44v284Ev,
  (VTBL_ENTRY)&_ZN5S48C44v285Ev,
  (VTBL_ENTRY)&_ZN5S48C44v286Ev,
  (VTBL_ENTRY)&_ZN5S48C44v287Ev,
  (VTBL_ENTRY)&_ZN5S48C44v288Ev,
  (VTBL_ENTRY)&_ZN5S48C44v289Ev,
  (VTBL_ENTRY)&_ZN5S48C44v290Ev,
  (VTBL_ENTRY)&_ZN5S48C44v291Ev,
  (VTBL_ENTRY)&_ZN5S48C44v292Ev,
  (VTBL_ENTRY)&_ZN5S48C44v293Ev,
  (VTBL_ENTRY)&_ZN5S48C44v294Ev,
  (VTBL_ENTRY)&_ZN5S48C44v295Ev,
  (VTBL_ENTRY)&_ZN5S48C44v296Ev,
  (VTBL_ENTRY)&_ZN5S48C44v297Ev,
  (VTBL_ENTRY)&_ZN5S48C44v298Ev,
  (VTBL_ENTRY)&_ZN5S48C44v299Ev,
  (VTBL_ENTRY)&_ZN5S48C44v300Ev,
  (VTBL_ENTRY)&_ZN5S48C44v301Ev,
  (VTBL_ENTRY)&_ZN5S48C44v302Ev,
  (VTBL_ENTRY)&_ZN5S48C44v303Ev,
  (VTBL_ENTRY)&_ZN5S48C44v304Ev,
  (VTBL_ENTRY)&_ZN5S48C44v305Ev,
  (VTBL_ENTRY)&_ZN5S48C34v306Ev,
  (VTBL_ENTRY)&_ZN5S48C34v307Ev,
  (VTBL_ENTRY)&_ZN5S48C34v308Ev,
  (VTBL_ENTRY)&_ZN5S48C24v309Ev,
  (VTBL_ENTRY)&_ZN5S48C24v310Ev,
  (VTBL_ENTRY)&_ZN5S48C24v311Ev,
  (VTBL_ENTRY)&_ZN5S48C24v312Ev,
  (VTBL_ENTRY)&_ZN5S48C24v313Ev,
  (VTBL_ENTRY)&_ZN5S48C24v314Ev,
  (VTBL_ENTRY)&_ZN5S48C24v315Ev,
  (VTBL_ENTRY)&_ZN5S48C24v316Ev,
  (VTBL_ENTRY)&_ZN5S48C24v317Ev,
  (VTBL_ENTRY)&_ZN5S48C24v318Ev,
  (VTBL_ENTRY)&_ZN5S48C24v319Ev,
  (VTBL_ENTRY)&_ZN5S48C24v320Ev,
  (VTBL_ENTRY)&_ZN5S48C24v321Ev,
  (VTBL_ENTRY)&_ZN5S48C24v322Ev,
  (VTBL_ENTRY)&_ZN5S48C24v323Ev,
  (VTBL_ENTRY)&_ZN5S48C24v324Ev,
  (VTBL_ENTRY)&_ZN5S48C24v325Ev,
  (VTBL_ENTRY)&_ZN5S48C24v326Ev,
  (VTBL_ENTRY)&_ZN5S48C24v327Ev,
  (VTBL_ENTRY)&_ZN5S48C12v1Ev,
  (VTBL_ENTRY)&_ZN5S48C12v2Ev,
  (VTBL_ENTRY)&_ZN5S48C12v3Ev,
  (VTBL_ENTRY)&_ZN5S48C12v4Ev,
  (VTBL_ENTRY)&_ZN5S48C12v5Ev,
  (VTBL_ENTRY)&_ZN5S48C12v6Ev,
  (VTBL_ENTRY)&_ZN5S48C12v7Ev,
  (VTBL_ENTRY)&_ZN5S48C12v8Ev,
  (VTBL_ENTRY)&_ZN5S48C12v9Ev,
  (VTBL_ENTRY)&_ZN5S48C13v10Ev,
};
extern VTBL_ENTRY _ZTI5S48C1[];
extern  VTBL_ENTRY _ZTV5S48C1[];
Class_Descriptor cd_S48C1 = {  "S48C1", // class name
  bases_S48C1, 6,
  &(vtc_S48C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(2520,1932), // object size
  NSPAIRA(_ZTI5S48C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S48C1),331, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S512C5  {
  int s512c5f0;
  __tsi64 s512c5f1;
  void *s512c5f2[4];
  int s512c5f3[2];
  void *s512c5f4;
  ::S28C9_nt s512c5f5;
  void *s512c5f6[2];
  virtual  ~S512C5(); // _ZN6S512C5D1Ev
  virtual void  v25(); // _ZN6S512C53v25Ev
  virtual void  v26(); // _ZN6S512C53v26Ev
  virtual void  v27(); // _ZN6S512C53v27Ev
  virtual void  v28(); // _ZN6S512C53v28Ev
  virtual void  v29(); // _ZN6S512C53v29Ev
  virtual void  v30(); // _ZN6S512C53v30Ev
  virtual void  v31(); // _ZN6S512C53v31Ev
  virtual void  v32(); // _ZN6S512C53v32Ev
  virtual void  v33(); // _ZN6S512C53v33Ev
  virtual void  v34(); // _ZN6S512C53v34Ev
  virtual void  v35(); // _ZN6S512C53v35Ev
  virtual void  v36(); // _ZN6S512C53v36Ev
  virtual void  v37(); // _ZN6S512C53v37Ev
  virtual void  v38(); // _ZN6S512C53v38Ev
  virtual void  v39(); // _ZN6S512C53v39Ev
  virtual void  v40(); // _ZN6S512C53v40Ev
  virtual void  v41(); // _ZN6S512C53v41Ev
  virtual void  v42(); // _ZN6S512C53v42Ev
  virtual void  v43(); // _ZN6S512C53v43Ev
  virtual void  v44(); // _ZN6S512C53v44Ev
  virtual void  v45(); // _ZN6S512C53v45Ev
  virtual void  v46(); // _ZN6S512C53v46Ev
  virtual void  v47(); // _ZN6S512C53v47Ev
  virtual void  v48(); // _ZN6S512C53v48Ev
  virtual void  v49(); // _ZN6S512C53v49Ev
  virtual void  v50(); // _ZN6S512C53v50Ev
  virtual void  v51(); // _ZN6S512C53v51Ev
  virtual void  v52(); // _ZN6S512C53v52Ev
  virtual void  v53(); // _ZN6S512C53v53Ev
  virtual void  v54(); // _ZN6S512C53v54Ev
  virtual void  v55(); // _ZN6S512C53v55Ev
  virtual void  v56(); // _ZN6S512C53v56Ev
  virtual void  v57(); // _ZN6S512C53v57Ev
  virtual void  v58(); // _ZN6S512C53v58Ev
  virtual void  v59(); // _ZN6S512C53v59Ev
  virtual void  v60(); // _ZN6S512C53v60Ev
  virtual void  v61(); // _ZN6S512C53v61Ev
  virtual void  v62(); // _ZN6S512C53v62Ev
  virtual void  v63(); // _ZN6S512C53v63Ev
  virtual void  v64(); // _ZN6S512C53v64Ev
  virtual void  v65(); // _ZN6S512C53v65Ev
  virtual void  v66(); // _ZN6S512C53v66Ev
  virtual void  v67(); // _ZN6S512C53v67Ev
  virtual void  v68(); // _ZN6S512C53v68Ev
  virtual void  v69(); // _ZN6S512C53v69Ev
  virtual void  v70(); // _ZN6S512C53v70Ev
  virtual void  v71(); // _ZN6S512C53v71Ev
  virtual void  v72(); // _ZN6S512C53v72Ev
  virtual void  v73(); // _ZN6S512C53v73Ev
  virtual void  v74(); // _ZN6S512C53v74Ev
  virtual void  v75(); // _ZN6S512C53v75Ev
  virtual void  v76(); // _ZN6S512C53v76Ev
  virtual void  v77(); // _ZN6S512C53v77Ev
  virtual void  v78(); // _ZN6S512C53v78Ev
  virtual void  v79(); // _ZN6S512C53v79Ev
  virtual void  v80(); // _ZN6S512C53v80Ev
  virtual void  v81(); // _ZN6S512C53v81Ev
  virtual void  v82(); // _ZN6S512C53v82Ev
  virtual void  v83(); // _ZN6S512C53v83Ev
  virtual void  v84(); // _ZN6S512C53v84Ev
  virtual void  v85(); // _ZN6S512C53v85Ev
  virtual void  v86(); // _ZN6S512C53v86Ev
  virtual void  v87(); // _ZN6S512C53v87Ev
  virtual void  v88(); // _ZN6S512C53v88Ev
  S512C5(); // tgen
};
//SIG(-1 S512C5) 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]}


 S512C5 ::~S512C5(){ note_dtor("S512C5", this);}
void  S512C5 ::v25(){vfunc_called(this, "_ZN6S512C53v25Ev");}
void  S512C5 ::v26(){vfunc_called(this, "_ZN6S512C53v26Ev");}
void  S512C5 ::v27(){vfunc_called(this, "_ZN6S512C53v27Ev");}
void  S512C5 ::v28(){vfunc_called(this, "_ZN6S512C53v28Ev");}
void  S512C5 ::v29(){vfunc_called(this, "_ZN6S512C53v29Ev");}
void  S512C5 ::v30(){vfunc_called(this, "_ZN6S512C53v30Ev");}
void  S512C5 ::v31(){vfunc_called(this, "_ZN6S512C53v31Ev");}
void  S512C5 ::v32(){vfunc_called(this, "_ZN6S512C53v32Ev");}
void  S512C5 ::v33(){vfunc_called(this, "_ZN6S512C53v33Ev");}
void  S512C5 ::v34(){vfunc_called(this, "_ZN6S512C53v34Ev");}
void  S512C5 ::v35(){vfunc_called(this, "_ZN6S512C53v35Ev");}
void  S512C5 ::v36(){vfunc_called(this, "_ZN6S512C53v36Ev");}
void  S512C5 ::v37(){vfunc_called(this, "_ZN6S512C53v37Ev");}
void  S512C5 ::v38(){vfunc_called(this, "_ZN6S512C53v38Ev");}
void  S512C5 ::v39(){vfunc_called(this, "_ZN6S512C53v39Ev");}
void  S512C5 ::v40(){vfunc_called(this, "_ZN6S512C53v40Ev");}
void  S512C5 ::v41(){vfunc_called(this, "_ZN6S512C53v41Ev");}
void  S512C5 ::v42(){vfunc_called(this, "_ZN6S512C53v42Ev");}
void  S512C5 ::v43(){vfunc_called(this, "_ZN6S512C53v43Ev");}
void  S512C5 ::v44(){vfunc_called(this, "_ZN6S512C53v44Ev");}
void  S512C5 ::v45(){vfunc_called(this, "_ZN6S512C53v45Ev");}
void  S512C5 ::v46(){vfunc_called(this, "_ZN6S512C53v46Ev");}
void  S512C5 ::v47(){vfunc_called(this, "_ZN6S512C53v47Ev");}
void  S512C5 ::v48(){vfunc_called(this, "_ZN6S512C53v48Ev");}
void  S512C5 ::v49(){vfunc_called(this, "_ZN6S512C53v49Ev");}
void  S512C5 ::v50(){vfunc_called(this, "_ZN6S512C53v50Ev");}
void  S512C5 ::v51(){vfunc_called(this, "_ZN6S512C53v51Ev");}
void  S512C5 ::v52(){vfunc_called(this, "_ZN6S512C53v52Ev");}
void  S512C5 ::v53(){vfunc_called(this, "_ZN6S512C53v53Ev");}
void  S512C5 ::v54(){vfunc_called(this, "_ZN6S512C53v54Ev");}
void  S512C5 ::v55(){vfunc_called(this, "_ZN6S512C53v55Ev");}
void  S512C5 ::v56(){vfunc_called(this, "_ZN6S512C53v56Ev");}
void  S512C5 ::v57(){vfunc_called(this, "_ZN6S512C53v57Ev");}
void  S512C5 ::v58(){vfunc_called(this, "_ZN6S512C53v58Ev");}
void  S512C5 ::v59(){vfunc_called(this, "_ZN6S512C53v59Ev");}
void  S512C5 ::v60(){vfunc_called(this, "_ZN6S512C53v60Ev");}
void  S512C5 ::v61(){vfunc_called(this, "_ZN6S512C53v61Ev");}
void  S512C5 ::v62(){vfunc_called(this, "_ZN6S512C53v62Ev");}
void  S512C5 ::v63(){vfunc_called(this, "_ZN6S512C53v63Ev");}
void  S512C5 ::v64(){vfunc_called(this, "_ZN6S512C53v64Ev");}
void  S512C5 ::v65(){vfunc_called(this, "_ZN6S512C53v65Ev");}
void  S512C5 ::v66(){vfunc_called(this, "_ZN6S512C53v66Ev");}
void  S512C5 ::v67(){vfunc_called(this, "_ZN6S512C53v67Ev");}
void  S512C5 ::v68(){vfunc_called(this, "_ZN6S512C53v68Ev");}
void  S512C5 ::v69(){vfunc_called(this, "_ZN6S512C53v69Ev");}
void  S512C5 ::v70(){vfunc_called(this, "_ZN6S512C53v70Ev");}
void  S512C5 ::v71(){vfunc_called(this, "_ZN6S512C53v71Ev");}
void  S512C5 ::v72(){vfunc_called(this, "_ZN6S512C53v72Ev");}
void  S512C5 ::v73(){vfunc_called(this, "_ZN6S512C53v73Ev");}
void  S512C5 ::v74(){vfunc_called(this, "_ZN6S512C53v74Ev");}
void  S512C5 ::v75(){vfunc_called(this, "_ZN6S512C53v75Ev");}
void  S512C5 ::v76(){vfunc_called(this, "_ZN6S512C53v76Ev");}
void  S512C5 ::v77(){vfunc_called(this, "_ZN6S512C53v77Ev");}
void  S512C5 ::v78(){vfunc_called(this, "_ZN6S512C53v78Ev");}
void  S512C5 ::v79(){vfunc_called(this, "_ZN6S512C53v79Ev");}
void  S512C5 ::v80(){vfunc_called(this, "_ZN6S512C53v80Ev");}
void  S512C5 ::v81(){vfunc_called(this, "_ZN6S512C53v81Ev");}
void  S512C5 ::v82(){vfunc_called(this, "_ZN6S512C53v82Ev");}
void  S512C5 ::v83(){vfunc_called(this, "_ZN6S512C53v83Ev");}
void  S512C5 ::v84(){vfunc_called(this, "_ZN6S512C53v84Ev");}
void  S512C5 ::v85(){vfunc_called(this, "_ZN6S512C53v85Ev");}
void  S512C5 ::v86(){vfunc_called(this, "_ZN6S512C53v86Ev");}
void  S512C5 ::v87(){vfunc_called(this, "_ZN6S512C53v87Ev");}
void  S512C5 ::v88(){vfunc_called(this, "_ZN6S512C53v88Ev");}
S512C5 ::S512C5(){ note_ctor("S512C5", this);} // tgen

static void Test_S512C5()
{
  extern Class_Descriptor cd_S512C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S512C5, buf);
    S512C5 *dp, &lv = *(dp=new (buf) S512C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S512C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S512C5)");
    check_field_offset(lv, s512c5f0, ABISELECT(8,4), "S512C5.s512c5f0");
    check_field_offset(lv, s512c5f1, ABISELECT(16,8), "S512C5.s512c5f1");
    check_field_offset(lv, s512c5f2, ABISELECT(24,16), "S512C5.s512c5f2");
    check_field_offset(lv, s512c5f3, ABISELECT(56,32), "S512C5.s512c5f3");
    check_field_offset(lv, s512c5f4, ABISELECT(64,40), "S512C5.s512c5f4");
    check_field_offset(lv, s512c5f5, ABISELECT(72,44), "S512C5.s512c5f5");
    check_field_offset(lv, s512c5f6, ABISELECT(80,52), "S512C5.s512c5f6");
    test_class_info(&lv, &cd_S512C5);
    dp->~S512C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS512C5(Test_S512C5, "S512C5", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S512C5C1Ev();
extern void _ZN6S512C5D1Ev();
Name_Map name_map_S512C5[] = {
  NSPAIR(_ZN6S512C5C1Ev),
  NSPAIR(_ZN6S512C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S512C5[];
extern void _ZN6S512C5D1Ev();
extern void _ZN6S512C5D0Ev();
extern void _ZN6S512C53v25Ev();
extern void _ZN6S512C53v26Ev();
extern void _ZN6S512C53v27Ev();
extern void _ZN6S512C53v28Ev();
extern void _ZN6S512C53v29Ev();
extern void _ZN6S512C53v30Ev();
extern void _ZN6S512C53v31Ev();
extern void _ZN6S512C53v32Ev();
extern void _ZN6S512C53v33Ev();
extern void _ZN6S512C53v34Ev();
extern void _ZN6S512C53v35Ev();
extern void _ZN6S512C53v36Ev();
extern void _ZN6S512C53v37Ev();
extern void _ZN6S512C53v38Ev();
extern void _ZN6S512C53v39Ev();
extern void _ZN6S512C53v40Ev();
extern void _ZN6S512C53v41Ev();
extern void _ZN6S512C53v42Ev();
extern void _ZN6S512C53v43Ev();
extern void _ZN6S512C53v44Ev();
extern void _ZN6S512C53v45Ev();
extern void _ZN6S512C53v46Ev();
extern void _ZN6S512C53v47Ev();
extern void _ZN6S512C53v48Ev();
extern void _ZN6S512C53v49Ev();
extern void _ZN6S512C53v50Ev();
extern void _ZN6S512C53v51Ev();
extern void _ZN6S512C53v52Ev();
extern void _ZN6S512C53v53Ev();
extern void _ZN6S512C53v54Ev();
extern void _ZN6S512C53v55Ev();
extern void _ZN6S512C53v56Ev();
extern void _ZN6S512C53v57Ev();
extern void _ZN6S512C53v58Ev();
extern void _ZN6S512C53v59Ev();
extern void _ZN6S512C53v60Ev();
extern void _ZN6S512C53v61Ev();
extern void _ZN6S512C53v62Ev();
extern void _ZN6S512C53v63Ev();
extern void _ZN6S512C53v64Ev();
extern void _ZN6S512C53v65Ev();
extern void _ZN6S512C53v66Ev();
extern void _ZN6S512C53v67Ev();
extern void _ZN6S512C53v68Ev();
extern void _ZN6S512C53v69Ev();
extern void _ZN6S512C53v70Ev();
extern void _ZN6S512C53v71Ev();
extern void _ZN6S512C53v72Ev();
extern void _ZN6S512C53v73Ev();
extern void _ZN6S512C53v74Ev();
extern void _ZN6S512C53v75Ev();
extern void _ZN6S512C53v76Ev();
extern void _ZN6S512C53v77Ev();
extern void _ZN6S512C53v78Ev();
extern void _ZN6S512C53v79Ev();
extern void _ZN6S512C53v80Ev();
extern void _ZN6S512C53v81Ev();
extern void _ZN6S512C53v82Ev();
extern void _ZN6S512C53v83Ev();
extern void _ZN6S512C53v84Ev();
extern void _ZN6S512C53v85Ev();
extern void _ZN6S512C53v86Ev();
extern void _ZN6S512C53v87Ev();
extern void _ZN6S512C53v88Ev();
static  VTBL_ENTRY vtc_S512C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S512C5[0]),
  (VTBL_ENTRY)&_ZN6S512C5D1Ev,
  (VTBL_ENTRY)&_ZN6S512C5D0Ev,
  (VTBL_ENTRY)&_ZN6S512C53v25Ev,
  (VTBL_ENTRY)&_ZN6S512C53v26Ev,
  (VTBL_ENTRY)&_ZN6S512C53v27Ev,
  (VTBL_ENTRY)&_ZN6S512C53v28Ev,
  (VTBL_ENTRY)&_ZN6S512C53v29Ev,
  (VTBL_ENTRY)&_ZN6S512C53v30Ev,
  (VTBL_ENTRY)&_ZN6S512C53v31Ev,
  (VTBL_ENTRY)&_ZN6S512C53v32Ev,
  (VTBL_ENTRY)&_ZN6S512C53v33Ev,
  (VTBL_ENTRY)&_ZN6S512C53v34Ev,
  (VTBL_ENTRY)&_ZN6S512C53v35Ev,
  (VTBL_ENTRY)&_ZN6S512C53v36Ev,
  (VTBL_ENTRY)&_ZN6S512C53v37Ev,
  (VTBL_ENTRY)&_ZN6S512C53v38Ev,
  (VTBL_ENTRY)&_ZN6S512C53v39Ev,
  (VTBL_ENTRY)&_ZN6S512C53v40Ev,
  (VTBL_ENTRY)&_ZN6S512C53v41Ev,
  (VTBL_ENTRY)&_ZN6S512C53v42Ev,
  (VTBL_ENTRY)&_ZN6S512C53v43Ev,
  (VTBL_ENTRY)&_ZN6S512C53v44Ev,
  (VTBL_ENTRY)&_ZN6S512C53v45Ev,
  (VTBL_ENTRY)&_ZN6S512C53v46Ev,
  (VTBL_ENTRY)&_ZN6S512C53v47Ev,
  (VTBL_ENTRY)&_ZN6S512C53v48Ev,
  (VTBL_ENTRY)&_ZN6S512C53v49Ev,
  (VTBL_ENTRY)&_ZN6S512C53v50Ev,
  (VTBL_ENTRY)&_ZN6S512C53v51Ev,
  (VTBL_ENTRY)&_ZN6S512C53v52Ev,
  (VTBL_ENTRY)&_ZN6S512C53v53Ev,
  (VTBL_ENTRY)&_ZN6S512C53v54Ev,
  (VTBL_ENTRY)&_ZN6S512C53v55Ev,
  (VTBL_ENTRY)&_ZN6S512C53v56Ev,
  (VTBL_ENTRY)&_ZN6S512C53v57Ev,
  (VTBL_ENTRY)&_ZN6S512C53v58Ev,
  (VTBL_ENTRY)&_ZN6S512C53v59Ev,
  (VTBL_ENTRY)&_ZN6S512C53v60Ev,
  (VTBL_ENTRY)&_ZN6S512C53v61Ev,
  (VTBL_ENTRY)&_ZN6S512C53v62Ev,
  (VTBL_ENTRY)&_ZN6S512C53v63Ev,
  (VTBL_ENTRY)&_ZN6S512C53v64Ev,
  (VTBL_ENTRY)&_ZN6S512C53v65Ev,
  (VTBL_ENTRY)&_ZN6S512C53v66Ev,
  (VTBL_ENTRY)&_ZN6S512C53v67Ev,
  (VTBL_ENTRY)&_ZN6S512C53v68Ev,
  (VTBL_ENTRY)&_ZN6S512C53v69Ev,
  (VTBL_ENTRY)&_ZN6S512C53v70Ev,
  (VTBL_ENTRY)&_ZN6S512C53v71Ev,
  (VTBL_ENTRY)&_ZN6S512C53v72Ev,
  (VTBL_ENTRY)&_ZN6S512C53v73Ev,
  (VTBL_ENTRY)&_ZN6S512C53v74Ev,
  (VTBL_ENTRY)&_ZN6S512C53v75Ev,
  (VTBL_ENTRY)&_ZN6S512C53v76Ev,
  (VTBL_ENTRY)&_ZN6S512C53v77Ev,
  (VTBL_ENTRY)&_ZN6S512C53v78Ev,
  (VTBL_ENTRY)&_ZN6S512C53v79Ev,
  (VTBL_ENTRY)&_ZN6S512C53v80Ev,
  (VTBL_ENTRY)&_ZN6S512C53v81Ev,
  (VTBL_ENTRY)&_ZN6S512C53v82Ev,
  (VTBL_ENTRY)&_ZN6S512C53v83Ev,
  (VTBL_ENTRY)&_ZN6S512C53v84Ev,
  (VTBL_ENTRY)&_ZN6S512C53v85Ev,
  (VTBL_ENTRY)&_ZN6S512C53v86Ev,
  (VTBL_ENTRY)&_ZN6S512C53v87Ev,
  (VTBL_ENTRY)&_ZN6S512C53v88Ev,
};
extern VTBL_ENTRY _ZTI6S512C5[];
extern  VTBL_ENTRY _ZTV6S512C5[];
Class_Descriptor cd_S512C5 = {  "S512C5", // class name
  0,0,//no base classes
  &(vtc_S512C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S512C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S512C5),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  S512C4  : S512C5 {
  ::S48C54 s512c4f0;
  ::S48C54 s512c4f1;
  ::S28C13_nt s512c4f2;
  int s512c4f3;
  char s512c4f4[4];
  void *s512c4f5[2];
  ::S48C47 s512c4f6;
  unsigned int s512c4f7:1;
  unsigned int s512c4f8:1;
  unsigned int s512c4f9:1;
  unsigned int s512c4f10:1;
  unsigned int s512c4f11:1;
  unsigned int s512c4f12:1;
  unsigned int s512c4f13:1;
  unsigned int s512c4f14:1;
  unsigned int s512c4f15:1;
  unsigned int s512c4f16:1;
  unsigned int s512c4f17:1;
  unsigned int s512c4f18:1;
  unsigned int s512c4f19:1;
  unsigned int s512c4f20:1;
  unsigned int s512c4f21:1;
  unsigned int s512c4f22:1;
  unsigned int s512c4f23:1;
  unsigned int s512c4f24:1;
  unsigned int s512c4f25:1;
  unsigned int s512c4f26:1;
  unsigned int s512c4f27:1;
  unsigned int s512c4f28:1;
  unsigned int s512c4f29:1;
  unsigned int s512c4f30:1;
  unsigned int s512c4f31:1;
  unsigned int s512c4f32:1;
  unsigned int s512c4f33:1;
  unsigned int s512c4f34:1;
  unsigned int s512c4f35:1;
  unsigned int s512c4f36:1;
  unsigned int s512c4f37:1;
  unsigned int s512c4f38:1;
  unsigned int s512c4f39:1;
  unsigned int s512c4f40:1;
  unsigned int s512c4f41:1;
  unsigned int s512c4f42:1;
  unsigned int s512c4f43:1;
  unsigned int s512c4f44:1;
  unsigned int s512c4f45:1;
  unsigned int s512c4f46:1;
  unsigned int s512c4f47:1;
  unsigned int s512c4f48:1;
  unsigned int s512c4f49:1;
  unsigned int s512c4f50:1;
  unsigned int s512c4f51:1;
  unsigned int s512c4f52:1;
  unsigned int s512c4f53:1;
  unsigned int s512c4f54:1;
  unsigned int s512c4f55:1;
  unsigned int s512c4f56:1;
  unsigned int s512c4f57:1;
  unsigned int s512c4f58:1;
  unsigned int s512c4f59:1;
  unsigned int s512c4f60:1;
  unsigned int s512c4f61:1;
  unsigned int s512c4f62:1;
  unsigned int s512c4f63:1;
  unsigned int s512c4f64:1;
  unsigned int s512c4f65:1;
  unsigned int s512c4f66:1;
  unsigned int s512c4f67:1;
  unsigned int s512c4f68:1;
  unsigned int s512c4f69:1;
  unsigned int s512c4f70:1;
  unsigned int s512c4f71:1;
  unsigned int s512c4f72:1;
  unsigned int s512c4f73:1;
  unsigned int s512c4f74:1;
  unsigned int s512c4f75:1;
  unsigned int s512c4f76:1;
  unsigned int s512c4f77:1;
  unsigned int s512c4f78:1;
  unsigned int s512c4f79:1;
  unsigned int s512c4f80:1;
  unsigned int s512c4f81:1;
  unsigned int s512c4f82:1;
  unsigned int s512c4f83:1;
  int s512c4f84[5];
  void *s512c4f85[2];
  int s512c4f86[3];
  ::S28C9_nt s512c4f87;
  ::S28C9_nt s512c4f88;
  ::S28C9_nt s512c4f89;
  ::S48C43 s512c4f90;
  ::S48C43 s512c4f91;
  int s512c4f92;
  void *s512c4f93[2];
  ::S48C18 s512c4f94;
  ::S28C18_nt s512c4f95;
  ::S48C18 s512c4f96;
  ::S48C18 s512c4f97;
  void *s512c4f98;
  ::S28C9_nt s512c4f99;
  ::S48C43 s512c4f100;
  ::S48C18 s512c4f101;
  ::S28C18_nt s512c4f102;
  int s512c4f103;
  ::S48C18 s512c4f104;
  ::S48C18 s512c4f105;
  void *s512c4f106;
  int s512c4f107;
  char s512c4f108;
  ::S28C18_nt s512c4f109;
  ::S28C18_nt s512c4f110;
  void *s512c4f111;
  int s512c4f112;
  void *s512c4f113;
  ::S48C39 s512c4f114;
  ::S28C55 s512c4f115;
  ::S28C48 s512c4f116;
  virtual  ~S512C4(); // _ZN6S512C4D1Ev
  virtual void  v89(); // _ZN6S512C43v89Ev
  virtual void  v90(); // _ZN6S512C43v90Ev
  virtual void  v91(); // _ZN6S512C43v91Ev
  virtual void  v92(); // _ZN6S512C43v92Ev
  virtual void  v93(); // _ZN6S512C43v93Ev
  virtual void  v94(); // _ZN6S512C43v94Ev
  virtual void  v95(); // _ZN6S512C43v95Ev
  virtual void  v96(); // _ZN6S512C43v96Ev
  virtual void  v97(); // _ZN6S512C43v97Ev
  virtual void  v98(); // _ZN6S512C43v98Ev
  virtual void  v99(); // _ZN6S512C43v99Ev
  virtual void  v100(); // _ZN6S512C44v100Ev
  virtual void  v101(); // _ZN6S512C44v101Ev
  virtual void  v102(); // _ZN6S512C44v102Ev
  virtual void  v103(); // _ZN6S512C44v103Ev
  virtual void  v104(); // _ZN6S512C44v104Ev
  virtual void  v105(); // _ZN6S512C44v105Ev
  virtual void  v106(); // _ZN6S512C44v106Ev
  virtual void  v107(); // _ZN6S512C44v107Ev
  virtual void  v108(); // _ZN6S512C44v108Ev
  virtual void  v109(); // _ZN6S512C44v109Ev
  virtual void  v110(); // _ZN6S512C44v110Ev
  virtual void  v111(); // _ZN6S512C44v111Ev
  virtual void  v112(); // _ZN6S512C44v112Ev
  virtual void  v113(); // _ZN6S512C44v113Ev
  virtual void  v114(); // _ZN6S512C44v114Ev
  virtual void  v115(); // _ZN6S512C44v115Ev
  virtual void  v116(); // _ZN6S512C44v116Ev
  virtual void  v117(); // _ZN6S512C44v117Ev
  virtual void  v118(); // _ZN6S512C44v118Ev
  virtual void  v119(); // _ZN6S512C44v119Ev
  virtual void  v120(); // _ZN6S512C44v120Ev
  virtual void  v121(); // _ZN6S512C44v121Ev
  virtual void  v122(); // _ZN6S512C44v122Ev
  virtual void  v123(); // _ZN6S512C44v123Ev
  virtual void  v124(); // _ZN6S512C44v124Ev
  virtual void  v125(); // _ZN6S512C44v125Ev
  virtual void  v126(); // _ZN6S512C44v126Ev
  virtual void  v127(); // _ZN6S512C44v127Ev
  virtual void  v128(); // _ZN6S512C44v128Ev
  virtual void  v129(); // _ZN6S512C44v129Ev
  virtual void  v130(); // _ZN6S512C44v130Ev
  virtual void  v131(); // _ZN6S512C44v131Ev
  virtual void  v132(); // _ZN6S512C44v132Ev
  virtual void  v133(); // _ZN6S512C44v133Ev
  virtual void  v134(); // _ZN6S512C44v134Ev
  virtual void  v135(); // _ZN6S512C44v135Ev
  virtual void  v136(); // _ZN6S512C44v136Ev
  virtual void  v137(); // _ZN6S512C44v137Ev
  virtual void  v138(); // _ZN6S512C44v138Ev
  virtual void  v139(); // _ZN6S512C44v139Ev
  virtual void  v140(); // _ZN6S512C44v140Ev
  virtual void  v141(); // _ZN6S512C44v141Ev
  virtual void  v142(); // _ZN6S512C44v142Ev
  virtual void  v143(); // _ZN6S512C44v143Ev
  virtual void  v144(); // _ZN6S512C44v144Ev
  virtual void  v145(); // _ZN6S512C44v145Ev
  virtual void  v146(); // _ZN6S512C44v146Ev
  virtual void  v147(); // _ZN6S512C44v147Ev
  virtual void  v148(); // _ZN6S512C44v148Ev
  virtual void  v149(); // _ZN6S512C44v149Ev
  virtual void  v150(); // _ZN6S512C44v150Ev
  virtual void  v151(); // _ZN6S512C44v151Ev
  virtual void  v152(); // _ZN6S512C44v152Ev
  virtual void  v153(); // _ZN6S512C44v153Ev
  virtual void  v154(); // _ZN6S512C44v154Ev
  virtual void  v155(); // _ZN6S512C44v155Ev
  virtual void  v156(); // _ZN6S512C44v156Ev
  virtual void  v157(); // _ZN6S512C44v157Ev
  virtual void  v158(); // _ZN6S512C44v158Ev
  virtual void  v159(); // _ZN6S512C44v159Ev
  virtual void  v160(); // _ZN6S512C44v160Ev
  virtual void  v161(); // _ZN6S512C44v161Ev
  virtual void  v162(); // _ZN6S512C44v162Ev
  virtual void  v163(); // _ZN6S512C44v163Ev
  virtual void  v164(); // _ZN6S512C44v164Ev
  virtual void  v165(); // _ZN6S512C44v165Ev
  virtual void  v166(); // _ZN6S512C44v166Ev
  virtual void  v167(); // _ZN6S512C44v167Ev
  virtual void  v168(); // _ZN6S512C44v168Ev
  virtual void  v169(); // _ZN6S512C44v169Ev
  virtual void  v170(); // _ZN6S512C44v170Ev
  virtual void  v171(); // _ZN6S512C44v171Ev
  virtual void  v172(); // _ZN6S512C44v172Ev
  virtual void  v173(); // _ZN6S512C44v173Ev
  virtual void  v174(); // _ZN6S512C44v174Ev
  virtual void  v175(); // _ZN6S512C44v175Ev
  virtual void  v176(); // _ZN6S512C44v176Ev
  virtual void  v177(); // _ZN6S512C44v177Ev
  virtual void  v178(); // _ZN6S512C44v178Ev
  virtual void  v179(); // _ZN6S512C44v179Ev
  virtual void  v180(); // _ZN6S512C44v180Ev
  virtual void  v181(); // _ZN6S512C44v181Ev
  virtual void  v182(); // _ZN6S512C44v182Ev
  virtual void  v183(); // _ZN6S512C44v183Ev
  virtual void  v184(); // _ZN6S512C44v184Ev
  virtual void  v185(); // _ZN6S512C44v185Ev
  virtual void  v186(); // _ZN6S512C44v186Ev
  virtual void  v187(); // _ZN6S512C44v187Ev
  virtual void  v188(); // _ZN6S512C44v188Ev
  virtual void  v189(); // _ZN6S512C44v189Ev
  virtual void  v190(); // _ZN6S512C44v190Ev
  virtual void  v191(); // _ZN6S512C44v191Ev
  virtual void  v192(); // _ZN6S512C44v192Ev
  virtual void  v193(); // _ZN6S512C44v193Ev
  virtual void  v194(); // _ZN6S512C44v194Ev
  virtual void  v195(); // _ZN6S512C44v195Ev
  virtual void  v196(); // _ZN6S512C44v196Ev
  virtual void  v197(); // _ZN6S512C44v197Ev
  virtual void  v198(); // _ZN6S512C44v198Ev
  virtual void  v199(); // _ZN6S512C44v199Ev
  virtual void  v200(); // _ZN6S512C44v200Ev
  virtual void  v201(); // _ZN6S512C44v201Ev
  virtual void  v202(); // _ZN6S512C44v202Ev
  virtual void  v203(); // _ZN6S512C44v203Ev
  virtual void  v204(); // _ZN6S512C44v204Ev
  virtual void  v205(); // _ZN6S512C44v205Ev
  virtual void  v206(); // _ZN6S512C44v206Ev
  virtual void  v207(); // _ZN6S512C44v207Ev
  virtual void  v208(); // _ZN6S512C44v208Ev
  virtual void  v209(); // _ZN6S512C44v209Ev
  virtual void  v210(); // _ZN6S512C44v210Ev
  virtual void  v211(); // _ZN6S512C44v211Ev
  virtual void  v212(); // _ZN6S512C44v212Ev
  virtual void  v213(); // _ZN6S512C44v213Ev
  virtual void  v214(); // _ZN6S512C44v214Ev
  virtual void  v215(); // _ZN6S512C44v215Ev
  virtual void  v216(); // _ZN6S512C44v216Ev
  virtual void  v217(); // _ZN6S512C44v217Ev
  virtual void  v218(); // _ZN6S512C44v218Ev
  virtual void  v219(); // _ZN6S512C44v219Ev
  virtual void  v220(); // _ZN6S512C44v220Ev
  virtual void  v221(); // _ZN6S512C44v221Ev
  virtual void  v222(); // _ZN6S512C44v222Ev
  virtual void  v223(); // _ZN6S512C44v223Ev
  virtual void  v224(); // _ZN6S512C44v224Ev
  virtual void  v225(); // _ZN6S512C44v225Ev
  virtual void  v226(); // _ZN6S512C44v226Ev
  virtual void  v227(); // _ZN6S512C44v227Ev
  virtual void  v228(); // _ZN6S512C44v228Ev
  virtual void  v229(); // _ZN6S512C44v229Ev
  virtual void  v230(); // _ZN6S512C44v230Ev
  virtual void  v231(); // _ZN6S512C44v231Ev
  S512C4(); // tgen
};
//SIG(-1 S512C4) C1{ BC2{ vd v144 v145 v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 FC4{ BC5{ BC6{ m Fp Fi[2]}}} FC4 FC7{ m Fi} Fi Fc[4] Fp[2] FC8{ BC9{ BC6}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC3 FC3 FC3 FC10{ BC11{ BC6}} FC10 Fi Fp[2] FC12{ m Fi[3]} FC13{ m Fi[3]} FC12 FC12 Fp FC3 FC10 FC12 FC13 Fi FC12 FC12 Fp Fi Fc FC13 FC13 Fp Fi Fp FC14{ BC15{ BC6}} FC16{ BC17{ BC6}} FC18{ BC19{ BC6}}}


 S512C4 ::~S512C4(){ note_dtor("S512C4", this);}
void  S512C4 ::v89(){vfunc_called(this, "_ZN6S512C43v89Ev");}
void  S512C4 ::v90(){vfunc_called(this, "_ZN6S512C43v90Ev");}
void  S512C4 ::v91(){vfunc_called(this, "_ZN6S512C43v91Ev");}
void  S512C4 ::v92(){vfunc_called(this, "_ZN6S512C43v92Ev");}
void  S512C4 ::v93(){vfunc_called(this, "_ZN6S512C43v93Ev");}
void  S512C4 ::v94(){vfunc_called(this, "_ZN6S512C43v94Ev");}
void  S512C4 ::v95(){vfunc_called(this, "_ZN6S512C43v95Ev");}
void  S512C4 ::v96(){vfunc_called(this, "_ZN6S512C43v96Ev");}
void  S512C4 ::v97(){vfunc_called(this, "_ZN6S512C43v97Ev");}
void  S512C4 ::v98(){vfunc_called(this, "_ZN6S512C43v98Ev");}
void  S512C4 ::v99(){vfunc_called(this, "_ZN6S512C43v99Ev");}
void  S512C4 ::v100(){vfunc_called(this, "_ZN6S512C44v100Ev");}
void  S512C4 ::v101(){vfunc_called(this, "_ZN6S512C44v101Ev");}
void  S512C4 ::v102(){vfunc_called(this, "_ZN6S512C44v102Ev");}
void  S512C4 ::v103(){vfunc_called(this, "_ZN6S512C44v103Ev");}
void  S512C4 ::v104(){vfunc_called(this, "_ZN6S512C44v104Ev");}
void  S512C4 ::v105(){vfunc_called(this, "_ZN6S512C44v105Ev");}
void  S512C4 ::v106(){vfunc_called(this, "_ZN6S512C44v106Ev");}
void  S512C4 ::v107(){vfunc_called(this, "_ZN6S512C44v107Ev");}
void  S512C4 ::v108(){vfunc_called(this, "_ZN6S512C44v108Ev");}
void  S512C4 ::v109(){vfunc_called(this, "_ZN6S512C44v109Ev");}
void  S512C4 ::v110(){vfunc_called(this, "_ZN6S512C44v110Ev");}
void  S512C4 ::v111(){vfunc_called(this, "_ZN6S512C44v111Ev");}
void  S512C4 ::v112(){vfunc_called(this, "_ZN6S512C44v112Ev");}
void  S512C4 ::v113(){vfunc_called(this, "_ZN6S512C44v113Ev");}
void  S512C4 ::v114(){vfunc_called(this, "_ZN6S512C44v114Ev");}
void  S512C4 ::v115(){vfunc_called(this, "_ZN6S512C44v115Ev");}
void  S512C4 ::v116(){vfunc_called(this, "_ZN6S512C44v116Ev");}
void  S512C4 ::v117(){vfunc_called(this, "_ZN6S512C44v117Ev");}
void  S512C4 ::v118(){vfunc_called(this, "_ZN6S512C44v118Ev");}
void  S512C4 ::v119(){vfunc_called(this, "_ZN6S512C44v119Ev");}
void  S512C4 ::v120(){vfunc_called(this, "_ZN6S512C44v120Ev");}
void  S512C4 ::v121(){vfunc_called(this, "_ZN6S512C44v121Ev");}
void  S512C4 ::v122(){vfunc_called(this, "_ZN6S512C44v122Ev");}
void  S512C4 ::v123(){vfunc_called(this, "_ZN6S512C44v123Ev");}
void  S512C4 ::v124(){vfunc_called(this, "_ZN6S512C44v124Ev");}
void  S512C4 ::v125(){vfunc_called(this, "_ZN6S512C44v125Ev");}
void  S512C4 ::v126(){vfunc_called(this, "_ZN6S512C44v126Ev");}
void  S512C4 ::v127(){vfunc_called(this, "_ZN6S512C44v127Ev");}
void  S512C4 ::v128(){vfunc_called(this, "_ZN6S512C44v128Ev");}
void  S512C4 ::v129(){vfunc_called(this, "_ZN6S512C44v129Ev");}
void  S512C4 ::v130(){vfunc_called(this, "_ZN6S512C44v130Ev");}
void  S512C4 ::v131(){vfunc_called(this, "_ZN6S512C44v131Ev");}
void  S512C4 ::v132(){vfunc_called(this, "_ZN6S512C44v132Ev");}
void  S512C4 ::v133(){vfunc_called(this, "_ZN6S512C44v133Ev");}
void  S512C4 ::v134(){vfunc_called(this, "_ZN6S512C44v134Ev");}
void  S512C4 ::v135(){vfunc_called(this, "_ZN6S512C44v135Ev");}
void  S512C4 ::v136(){vfunc_called(this, "_ZN6S512C44v136Ev");}
void  S512C4 ::v137(){vfunc_called(this, "_ZN6S512C44v137Ev");}
void  S512C4 ::v138(){vfunc_called(this, "_ZN6S512C44v138Ev");}
void  S512C4 ::v139(){vfunc_called(this, "_ZN6S512C44v139Ev");}
void  S512C4 ::v140(){vfunc_called(this, "_ZN6S512C44v140Ev");}
void  S512C4 ::v141(){vfunc_called(this, "_ZN6S512C44v141Ev");}
void  S512C4 ::v142(){vfunc_called(this, "_ZN6S512C44v142Ev");}
void  S512C4 ::v143(){vfunc_called(this, "_ZN6S512C44v143Ev");}
void  S512C4 ::v144(){vfunc_called(this, "_ZN6S512C44v144Ev");}
void  S512C4 ::v145(){vfunc_called(this, "_ZN6S512C44v145Ev");}
void  S512C4 ::v146(){vfunc_called(this, "_ZN6S512C44v146Ev");}
void  S512C4 ::v147(){vfunc_called(this, "_ZN6S512C44v147Ev");}
void  S512C4 ::v148(){vfunc_called(this, "_ZN6S512C44v148Ev");}
void  S512C4 ::v149(){vfunc_called(this, "_ZN6S512C44v149Ev");}
void  S512C4 ::v150(){vfunc_called(this, "_ZN6S512C44v150Ev");}
void  S512C4 ::v151(){vfunc_called(this, "_ZN6S512C44v151Ev");}
void  S512C4 ::v152(){vfunc_called(this, "_ZN6S512C44v152Ev");}
void  S512C4 ::v153(){vfunc_called(this, "_ZN6S512C44v153Ev");}
void  S512C4 ::v154(){vfunc_called(this, "_ZN6S512C44v154Ev");}
void  S512C4 ::v155(){vfunc_called(this, "_ZN6S512C44v155Ev");}
void  S512C4 ::v156(){vfunc_called(this, "_ZN6S512C44v156Ev");}
void  S512C4 ::v157(){vfunc_called(this, "_ZN6S512C44v157Ev");}
void  S512C4 ::v158(){vfunc_called(this, "_ZN6S512C44v158Ev");}
void  S512C4 ::v159(){vfunc_called(this, "_ZN6S512C44v159Ev");}
void  S512C4 ::v160(){vfunc_called(this, "_ZN6S512C44v160Ev");}
void  S512C4 ::v161(){vfunc_called(this, "_ZN6S512C44v161Ev");}
void  S512C4 ::v162(){vfunc_called(this, "_ZN6S512C44v162Ev");}
void  S512C4 ::v163(){vfunc_called(this, "_ZN6S512C44v163Ev");}
void  S512C4 ::v164(){vfunc_called(this, "_ZN6S512C44v164Ev");}
void  S512C4 ::v165(){vfunc_called(this, "_ZN6S512C44v165Ev");}
void  S512C4 ::v166(){vfunc_called(this, "_ZN6S512C44v166Ev");}
void  S512C4 ::v167(){vfunc_called(this, "_ZN6S512C44v167Ev");}
void  S512C4 ::v168(){vfunc_called(this, "_ZN6S512C44v168Ev");}
void  S512C4 ::v169(){vfunc_called(this, "_ZN6S512C44v169Ev");}
void  S512C4 ::v170(){vfunc_called(this, "_ZN6S512C44v170Ev");}
void  S512C4 ::v171(){vfunc_called(this, "_ZN6S512C44v171Ev");}
void  S512C4 ::v172(){vfunc_called(this, "_ZN6S512C44v172Ev");}
void  S512C4 ::v173(){vfunc_called(this, "_ZN6S512C44v173Ev");}
void  S512C4 ::v174(){vfunc_called(this, "_ZN6S512C44v174Ev");}
void  S512C4 ::v175(){vfunc_called(this, "_ZN6S512C44v175Ev");}
void  S512C4 ::v176(){vfunc_called(this, "_ZN6S512C44v176Ev");}
void  S512C4 ::v177(){vfunc_called(this, "_ZN6S512C44v177Ev");}
void  S512C4 ::v178(){vfunc_called(this, "_ZN6S512C44v178Ev");}
void  S512C4 ::v179(){vfunc_called(this, "_ZN6S512C44v179Ev");}
void  S512C4 ::v180(){vfunc_called(this, "_ZN6S512C44v180Ev");}
void  S512C4 ::v181(){vfunc_called(this, "_ZN6S512C44v181Ev");}
void  S512C4 ::v182(){vfunc_called(this, "_ZN6S512C44v182Ev");}
void  S512C4 ::v183(){vfunc_called(this, "_ZN6S512C44v183Ev");}
void  S512C4 ::v184(){vfunc_called(this, "_ZN6S512C44v184Ev");}
void  S512C4 ::v185(){vfunc_called(this, "_ZN6S512C44v185Ev");}
void  S512C4 ::v186(){vfunc_called(this, "_ZN6S512C44v186Ev");}
void  S512C4 ::v187(){vfunc_called(this, "_ZN6S512C44v187Ev");}
void  S512C4 ::v188(){vfunc_called(this, "_ZN6S512C44v188Ev");}
void  S512C4 ::v189(){vfunc_called(this, "_ZN6S512C44v189Ev");}
void  S512C4 ::v190(){vfunc_called(this, "_ZN6S512C44v190Ev");}
void  S512C4 ::v191(){vfunc_called(this, "_ZN6S512C44v191Ev");}
void  S512C4 ::v192(){vfunc_called(this, "_ZN6S512C44v192Ev");}
void  S512C4 ::v193(){vfunc_called(this, "_ZN6S512C44v193Ev");}
void  S512C4 ::v194(){vfunc_called(this, "_ZN6S512C44v194Ev");}
void  S512C4 ::v195(){vfunc_called(this, "_ZN6S512C44v195Ev");}
void  S512C4 ::v196(){vfunc_called(this, "_ZN6S512C44v196Ev");}
void  S512C4 ::v197(){vfunc_called(this, "_ZN6S512C44v197Ev");}
void  S512C4 ::v198(){vfunc_called(this, "_ZN6S512C44v198Ev");}
void  S512C4 ::v199(){vfunc_called(this, "_ZN6S512C44v199Ev");}
void  S512C4 ::v200(){vfunc_called(this, "_ZN6S512C44v200Ev");}
void  S512C4 ::v201(){vfunc_called(this, "_ZN6S512C44v201Ev");}
void  S512C4 ::v202(){vfunc_called(this, "_ZN6S512C44v202Ev");}
void  S512C4 ::v203(){vfunc_called(this, "_ZN6S512C44v203Ev");}
void  S512C4 ::v204(){vfunc_called(this, "_ZN6S512C44v204Ev");}
void  S512C4 ::v205(){vfunc_called(this, "_ZN6S512C44v205Ev");}
void  S512C4 ::v206(){vfunc_called(this, "_ZN6S512C44v206Ev");}
void  S512C4 ::v207(){vfunc_called(this, "_ZN6S512C44v207Ev");}
void  S512C4 ::v208(){vfunc_called(this, "_ZN6S512C44v208Ev");}
void  S512C4 ::v209(){vfunc_called(this, "_ZN6S512C44v209Ev");}
void  S512C4 ::v210(){vfunc_called(this, "_ZN6S512C44v210Ev");}
void  S512C4 ::v211(){vfunc_called(this, "_ZN6S512C44v211Ev");}
void  S512C4 ::v212(){vfunc_called(this, "_ZN6S512C44v212Ev");}
void  S512C4 ::v213(){vfunc_called(this, "_ZN6S512C44v213Ev");}
void  S512C4 ::v214(){vfunc_called(this, "_ZN6S512C44v214Ev");}
void  S512C4 ::v215(){vfunc_called(this, "_ZN6S512C44v215Ev");}
void  S512C4 ::v216(){vfunc_called(this, "_ZN6S512C44v216Ev");}
void  S512C4 ::v217(){vfunc_called(this, "_ZN6S512C44v217Ev");}
void  S512C4 ::v218(){vfunc_called(this, "_ZN6S512C44v218Ev");}
void  S512C4 ::v219(){vfunc_called(this, "_ZN6S512C44v219Ev");}
void  S512C4 ::v220(){vfunc_called(this, "_ZN6S512C44v220Ev");}
void  S512C4 ::v221(){vfunc_called(this, "_ZN6S512C44v221Ev");}
void  S512C4 ::v222(){vfunc_called(this, "_ZN6S512C44v222Ev");}
void  S512C4 ::v223(){vfunc_called(this, "_ZN6S512C44v223Ev");}
void  S512C4 ::v224(){vfunc_called(this, "_ZN6S512C44v224Ev");}
void  S512C4 ::v225(){vfunc_called(this, "_ZN6S512C44v225Ev");}
void  S512C4 ::v226(){vfunc_called(this, "_ZN6S512C44v226Ev");}
void  S512C4 ::v227(){vfunc_called(this, "_ZN6S512C44v227Ev");}
void  S512C4 ::v228(){vfunc_called(this, "_ZN6S512C44v228Ev");}
void  S512C4 ::v229(){vfunc_called(this, "_ZN6S512C44v229Ev");}
void  S512C4 ::v230(){vfunc_called(this, "_ZN6S512C44v230Ev");}
void  S512C4 ::v231(){vfunc_called(this, "_ZN6S512C44v231Ev");}
S512C4 ::S512C4(){ note_ctor("S512C4", this);} // tgen

static void Test_S512C4()
{
  extern Class_Descriptor cd_S512C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(72,110)];
    init_test(&cd_S512C4, buf);
    S512C4 *dp, &lv = *(dp=new (buf) S512C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(568,436), "sizeof(S512C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S512C4)");
    check_base_class_offset(lv, (S512C5*), 0, "S512C4");
    check_field_offset(lv, s512c4f0, ABISELECT(96,60), "S512C4.s512c4f0");
    check_field_offset(lv, s512c4f1, ABISELECT(112,72), "S512C4.s512c4f1");
    check_field_offset(lv, s512c4f2, ABISELECT(128,84), "S512C4.s512c4f2");
    check_field_offset(lv, s512c4f3, ABISELECT(132,88), "S512C4.s512c4f3");
    check_field_offset(lv, s512c4f4, ABISELECT(136,92), "S512C4.s512c4f4");
    check_field_offset(lv, s512c4f5, ABISELECT(144,96), "S512C4.s512c4f5");
    check_field_offset(lv, s512c4f6, ABISELECT(160,104), "S512C4.s512c4f6");
    set_bf_and_test(lv, s512c4f7, ABISELECT(176,116), 0, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f8, ABISELECT(176,116), 1, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f9, ABISELECT(176,116), 2, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f10, ABISELECT(176,116), 3, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f11, ABISELECT(176,116), 4, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f12, ABISELECT(176,116), 5, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f13, ABISELECT(176,116), 6, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f14, ABISELECT(176,116), 7, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f15, ABISELECT(177,117), 0, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f16, ABISELECT(177,117), 1, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f17, ABISELECT(177,117), 2, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f18, ABISELECT(177,117), 3, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f19, ABISELECT(177,117), 4, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f20, ABISELECT(177,117), 5, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f21, ABISELECT(177,117), 6, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f22, ABISELECT(177,117), 7, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f23, ABISELECT(178,118), 0, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f24, ABISELECT(178,118), 1, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f25, ABISELECT(178,118), 2, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f26, ABISELECT(178,118), 3, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f27, ABISELECT(178,118), 4, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f28, ABISELECT(178,118), 5, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f29, ABISELECT(178,118), 6, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f30, ABISELECT(178,118), 7, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f31, ABISELECT(179,119), 0, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f32, ABISELECT(179,119), 1, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f33, ABISELECT(179,119), 2, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f34, ABISELECT(179,119), 3, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f35, ABISELECT(179,119), 4, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f36, ABISELECT(179,119), 5, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f37, ABISELECT(179,119), 6, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f38, ABISELECT(179,119), 7, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f39, ABISELECT(180,120), 0, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f40, ABISELECT(180,120), 1, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f41, ABISELECT(180,120), 2, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f42, ABISELECT(180,120), 3, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f43, ABISELECT(180,120), 4, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f44, ABISELECT(180,120), 5, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f45, ABISELECT(180,120), 6, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f46, ABISELECT(180,120), 7, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f47, ABISELECT(181,121), 0, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f48, ABISELECT(181,121), 1, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f49, ABISELECT(181,121), 2, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f50, ABISELECT(181,121), 3, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f51, ABISELECT(181,121), 4, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f52, ABISELECT(181,121), 5, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f53, ABISELECT(181,121), 6, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f54, ABISELECT(181,121), 7, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f55, ABISELECT(182,122), 0, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f56, ABISELECT(182,122), 1, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f57, ABISELECT(182,122), 2, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f58, ABISELECT(182,122), 3, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f59, ABISELECT(182,122), 4, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f60, ABISELECT(182,122), 5, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f61, ABISELECT(182,122), 6, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f62, ABISELECT(182,122), 7, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f63, ABISELECT(183,123), 0, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f64, ABISELECT(183,123), 1, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f65, ABISELECT(183,123), 2, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f66, ABISELECT(183,123), 3, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f67, ABISELECT(183,123), 4, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f68, ABISELECT(183,123), 5, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f69, ABISELECT(183,123), 6, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f70, ABISELECT(183,123), 7, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f71, ABISELECT(184,124), 0, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f72, ABISELECT(184,124), 1, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f73, ABISELECT(184,124), 2, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f74, ABISELECT(184,124), 3, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f75, ABISELECT(184,124), 4, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f76, ABISELECT(184,124), 5, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f77, ABISELECT(184,124), 6, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f78, ABISELECT(184,124), 7, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f79, ABISELECT(185,125), 0, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f80, ABISELECT(185,125), 1, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f81, ABISELECT(185,125), 2, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f82, ABISELECT(185,125), 3, 1, 1, "S512C4");
    set_bf_and_test(lv, s512c4f83, ABISELECT(185,125), 4, 1, 1, "S512C4");
    check_field_offset(lv, s512c4f84, ABISELECT(188,128), "S512C4.s512c4f84");
    check_field_offset(lv, s512c4f85, ABISELECT(208,148), "S512C4.s512c4f85");
    check_field_offset(lv, s512c4f86, ABISELECT(224,156), "S512C4.s512c4f86");
    check_field_offset(lv, s512c4f87, ABISELECT(236,168), "S512C4.s512c4f87");
    check_field_offset(lv, s512c4f88, ABISELECT(244,176), "S512C4.s512c4f88");
    check_field_offset(lv, s512c4f89, ABISELECT(252,184), "S512C4.s512c4f89");
    check_field_offset(lv, s512c4f90, ABISELECT(264,192), "S512C4.s512c4f90");
    check_field_offset(lv, s512c4f91, ABISELECT(280,204), "S512C4.s512c4f91");
    check_field_offset(lv, s512c4f92, ABISELECT(296,216), "S512C4.s512c4f92");
    check_field_offset(lv, s512c4f93, ABISELECT(304,220), "S512C4.s512c4f93");
    check_field_offset(lv, s512c4f94, ABISELECT(320,228), "S512C4.s512c4f94");
    check_field_offset(lv, s512c4f95, ABISELECT(332,240), "S512C4.s512c4f95");
    check_field_offset(lv, s512c4f96, ABISELECT(344,252), "S512C4.s512c4f96");
    check_field_offset(lv, s512c4f97, ABISELECT(356,264), "S512C4.s512c4f97");
    check_field_offset(lv, s512c4f98, ABISELECT(368,276), "S512C4.s512c4f98");
    check_field_offset(lv, s512c4f99, ABISELECT(376,280), "S512C4.s512c4f99");
    check_field_offset(lv, s512c4f100, ABISELECT(384,288), "S512C4.s512c4f100");
    check_field_offset(lv, s512c4f101, ABISELECT(400,300), "S512C4.s512c4f101");
    check_field_offset(lv, s512c4f102, ABISELECT(412,312), "S512C4.s512c4f102");
    check_field_offset(lv, s512c4f103, ABISELECT(424,324), "S512C4.s512c4f103");
    check_field_offset(lv, s512c4f104, ABISELECT(428,328), "S512C4.s512c4f104");
    check_field_offset(lv, s512c4f105, ABISELECT(440,340), "S512C4.s512c4f105");
    check_field_offset(lv, s512c4f106, ABISELECT(456,352), "S512C4.s512c4f106");
    check_field_offset(lv, s512c4f107, ABISELECT(464,356), "S512C4.s512c4f107");
    check_field_offset(lv, s512c4f108, ABISELECT(468,360), "S512C4.s512c4f108");
    check_field_offset(lv, s512c4f109, ABISELECT(472,364), "S512C4.s512c4f109");
    check_field_offset(lv, s512c4f110, ABISELECT(484,376), "S512C4.s512c4f110");
    check_field_offset(lv, s512c4f111, ABISELECT(496,388), "S512C4.s512c4f111");
    check_field_offset(lv, s512c4f112, ABISELECT(504,392), "S512C4.s512c4f112");
    check_field_offset(lv, s512c4f113, ABISELECT(512,396), "S512C4.s512c4f113");
    check_field_offset(lv, s512c4f114, ABISELECT(520,400), "S512C4.s512c4f114");
    check_field_offset(lv, s512c4f115, ABISELECT(536,412), "S512C4.s512c4f115");
    check_field_offset(lv, s512c4f116, ABISELECT(552,424), "S512C4.s512c4f116");
    test_class_info(&lv, &cd_S512C4);
    dp->~S512C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS512C4(Test_S512C4, "S512C4", ABISELECT(568,436));

#else // __cplusplus

extern void _ZN6S512C4C1Ev();
extern void _ZN6S512C4D1Ev();
Name_Map name_map_S512C4[] = {
  NSPAIR(_ZN6S512C4C1Ev),
  NSPAIR(_ZN6S512C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S512C5;
extern VTBL_ENTRY _ZTI6S512C5[];
extern  VTBL_ENTRY _ZTV6S512C5[];
static Base_Class bases_S512C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S512C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S512C4[];
extern void _ZN6S512C4D1Ev();
extern void _ZN6S512C4D0Ev();
extern void _ZN6S512C53v25Ev();
extern void _ZN6S512C53v26Ev();
extern void _ZN6S512C53v27Ev();
extern void _ZN6S512C53v28Ev();
extern void _ZN6S512C53v29Ev();
extern void _ZN6S512C53v30Ev();
extern void _ZN6S512C53v31Ev();
extern void _ZN6S512C53v32Ev();
extern void _ZN6S512C53v33Ev();
extern void _ZN6S512C53v34Ev();
extern void _ZN6S512C53v35Ev();
extern void _ZN6S512C53v36Ev();
extern void _ZN6S512C53v37Ev();
extern void _ZN6S512C53v38Ev();
extern void _ZN6S512C53v39Ev();
extern void _ZN6S512C53v40Ev();
extern void _ZN6S512C53v41Ev();
extern void _ZN6S512C53v42Ev();
extern void _ZN6S512C53v43Ev();
extern void _ZN6S512C53v44Ev();
extern void _ZN6S512C53v45Ev();
extern void _ZN6S512C53v46Ev();
extern void _ZN6S512C53v47Ev();
extern void _ZN6S512C53v48Ev();
extern void _ZN6S512C53v49Ev();
extern void _ZN6S512C53v50Ev();
extern void _ZN6S512C53v51Ev();
extern void _ZN6S512C53v52Ev();
extern void _ZN6S512C53v53Ev();
extern void _ZN6S512C53v54Ev();
extern void _ZN6S512C53v55Ev();
extern void _ZN6S512C53v56Ev();
extern void _ZN6S512C53v57Ev();
extern void _ZN6S512C53v58Ev();
extern void _ZN6S512C53v59Ev();
extern void _ZN6S512C53v60Ev();
extern void _ZN6S512C53v61Ev();
extern void _ZN6S512C53v62Ev();
extern void _ZN6S512C53v63Ev();
extern void _ZN6S512C53v64Ev();
extern void _ZN6S512C53v65Ev();
extern void _ZN6S512C53v66Ev();
extern void _ZN6S512C53v67Ev();
extern void _ZN6S512C53v68Ev();
extern void _ZN6S512C53v69Ev();
extern void _ZN6S512C53v70Ev();
extern void _ZN6S512C53v71Ev();
extern void _ZN6S512C53v72Ev();
extern void _ZN6S512C53v73Ev();
extern void _ZN6S512C53v74Ev();
extern void _ZN6S512C53v75Ev();
extern void _ZN6S512C53v76Ev();
extern void _ZN6S512C53v77Ev();
extern void _ZN6S512C53v78Ev();
extern void _ZN6S512C53v79Ev();
extern void _ZN6S512C53v80Ev();
extern void _ZN6S512C53v81Ev();
extern void _ZN6S512C53v82Ev();
extern void _ZN6S512C53v83Ev();
extern void _ZN6S512C53v84Ev();
extern void _ZN6S512C53v85Ev();
extern void _ZN6S512C53v86Ev();
extern void _ZN6S512C53v87Ev();
extern void _ZN6S512C53v88Ev();
extern void _ZN6S512C43v89Ev();
extern void _ZN6S512C43v90Ev();
extern void _ZN6S512C43v91Ev();
extern void _ZN6S512C43v92Ev();
extern void _ZN6S512C43v93Ev();
extern void _ZN6S512C43v94Ev();
extern void _ZN6S512C43v95Ev();
extern void _ZN6S512C43v96Ev();
extern void _ZN6S512C43v97Ev();
extern void _ZN6S512C43v98Ev();
extern void _ZN6S512C43v99Ev();
extern void _ZN6S512C44v100Ev();
extern void _ZN6S512C44v101Ev();
extern void _ZN6S512C44v102Ev();
extern void _ZN6S512C44v103Ev();
extern void _ZN6S512C44v104Ev();
extern void _ZN6S512C44v105Ev();
extern void _ZN6S512C44v106Ev();
extern void _ZN6S512C44v107Ev();
extern void _ZN6S512C44v108Ev();
extern void _ZN6S512C44v109Ev();
extern void _ZN6S512C44v110Ev();
extern void _ZN6S512C44v111Ev();
extern void _ZN6S512C44v112Ev();
extern void _ZN6S512C44v113Ev();
extern void _ZN6S512C44v114Ev();
extern void _ZN6S512C44v115Ev();
extern void _ZN6S512C44v116Ev();
extern void _ZN6S512C44v117Ev();
extern void _ZN6S512C44v118Ev();
extern void _ZN6S512C44v119Ev();
extern void _ZN6S512C44v120Ev();
extern void _ZN6S512C44v121Ev();
extern void _ZN6S512C44v122Ev();
extern void _ZN6S512C44v123Ev();
extern void _ZN6S512C44v124Ev();
extern void _ZN6S512C44v125Ev();
extern void _ZN6S512C44v126Ev();
extern void _ZN6S512C44v127Ev();
extern void _ZN6S512C44v128Ev();
extern void _ZN6S512C44v129Ev();
extern void _ZN6S512C44v130Ev();
extern void _ZN6S512C44v131Ev();
extern void _ZN6S512C44v132Ev();
extern void _ZN6S512C44v133Ev();
extern void _ZN6S512C44v134Ev();
extern void _ZN6S512C44v135Ev();
extern void _ZN6S512C44v136Ev();
extern void _ZN6S512C44v137Ev();
extern void _ZN6S512C44v138Ev();
extern void _ZN6S512C44v139Ev();
extern void _ZN6S512C44v140Ev();
extern void _ZN6S512C44v141Ev();
extern void _ZN6S512C44v142Ev();
extern void _ZN6S512C44v143Ev();
extern void _ZN6S512C44v144Ev();
extern void _ZN6S512C44v145Ev();
extern void _ZN6S512C44v146Ev();
extern void _ZN6S512C44v147Ev();
extern void _ZN6S512C44v148Ev();
extern void _ZN6S512C44v149Ev();
extern void _ZN6S512C44v150Ev();
extern void _ZN6S512C44v151Ev();
extern void _ZN6S512C44v152Ev();
extern void _ZN6S512C44v153Ev();
extern void _ZN6S512C44v154Ev();
extern void _ZN6S512C44v155Ev();
extern void _ZN6S512C44v156Ev();
extern void _ZN6S512C44v157Ev();
extern void _ZN6S512C44v158Ev();
extern void _ZN6S512C44v159Ev();
extern void _ZN6S512C44v160Ev();
extern void _ZN6S512C44v161Ev();
extern void _ZN6S512C44v162Ev();
extern void _ZN6S512C44v163Ev();
extern void _ZN6S512C44v164Ev();
extern void _ZN6S512C44v165Ev();
extern void _ZN6S512C44v166Ev();
extern void _ZN6S512C44v167Ev();
extern void _ZN6S512C44v168Ev();
extern void _ZN6S512C44v169Ev();
extern void _ZN6S512C44v170Ev();
extern void _ZN6S512C44v171Ev();
extern void _ZN6S512C44v172Ev();
extern void _ZN6S512C44v173Ev();
extern void _ZN6S512C44v174Ev();
extern void _ZN6S512C44v175Ev();
extern void _ZN6S512C44v176Ev();
extern void _ZN6S512C44v177Ev();
extern void _ZN6S512C44v178Ev();
extern void _ZN6S512C44v179Ev();
extern void _ZN6S512C44v180Ev();
extern void _ZN6S512C44v181Ev();
extern void _ZN6S512C44v182Ev();
extern void _ZN6S512C44v183Ev();
extern void _ZN6S512C44v184Ev();
extern void _ZN6S512C44v185Ev();
extern void _ZN6S512C44v186Ev();
extern void _ZN6S512C44v187Ev();
extern void _ZN6S512C44v188Ev();
extern void _ZN6S512C44v189Ev();
extern void _ZN6S512C44v190Ev();
extern void _ZN6S512C44v191Ev();
extern void _ZN6S512C44v192Ev();
extern void _ZN6S512C44v193Ev();
extern void _ZN6S512C44v194Ev();
extern void _ZN6S512C44v195Ev();
extern void _ZN6S512C44v196Ev();
extern void _ZN6S512C44v197Ev();
extern void _ZN6S512C44v198Ev();
extern void _ZN6S512C44v199Ev();
extern void _ZN6S512C44v200Ev();
extern void _ZN6S512C44v201Ev();
extern void _ZN6S512C44v202Ev();
extern void _ZN6S512C44v203Ev();
extern void _ZN6S512C44v204Ev();
extern void _ZN6S512C44v205Ev();
extern void _ZN6S512C44v206Ev();
extern void _ZN6S512C44v207Ev();
extern void _ZN6S512C44v208Ev();
extern void _ZN6S512C44v209Ev();
extern void _ZN6S512C44v210Ev();
extern void _ZN6S512C44v211Ev();
extern void _ZN6S512C44v212Ev();
extern void _ZN6S512C44v213Ev();
extern void _ZN6S512C44v214Ev();
extern void _ZN6S512C44v215Ev();
extern void _ZN6S512C44v216Ev();
extern void _ZN6S512C44v217Ev();
extern void _ZN6S512C44v218Ev();
extern void _ZN6S512C44v219Ev();
extern void _ZN6S512C44v220Ev();
extern void _ZN6S512C44v221Ev();
extern void _ZN6S512C44v222Ev();
extern void _ZN6S512C44v223Ev();
extern void _ZN6S512C44v224Ev();
extern void _ZN6S512C44v225Ev();
extern void _ZN6S512C44v226Ev();
extern void _ZN6S512C44v227Ev();
extern void _ZN6S512C44v228Ev();
extern void _ZN6S512C44v229Ev();
extern void _ZN6S512C44v230Ev();
extern void _ZN6S512C44v231Ev();
static  VTBL_ENTRY vtc_S512C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S512C4[0]),
  (VTBL_ENTRY)&_ZN6S512C4D1Ev,
  (VTBL_ENTRY)&_ZN6S512C4D0Ev,
  (VTBL_ENTRY)&_ZN6S512C53v25Ev,
  (VTBL_ENTRY)&_ZN6S512C53v26Ev,
  (VTBL_ENTRY)&_ZN6S512C53v27Ev,
  (VTBL_ENTRY)&_ZN6S512C53v28Ev,
  (VTBL_ENTRY)&_ZN6S512C53v29Ev,
  (VTBL_ENTRY)&_ZN6S512C53v30Ev,
  (VTBL_ENTRY)&_ZN6S512C53v31Ev,
  (VTBL_ENTRY)&_ZN6S512C53v32Ev,
  (VTBL_ENTRY)&_ZN6S512C53v33Ev,
  (VTBL_ENTRY)&_ZN6S512C53v34Ev,
  (VTBL_ENTRY)&_ZN6S512C53v35Ev,
  (VTBL_ENTRY)&_ZN6S512C53v36Ev,
  (VTBL_ENTRY)&_ZN6S512C53v37Ev,
  (VTBL_ENTRY)&_ZN6S512C53v38Ev,
  (VTBL_ENTRY)&_ZN6S512C53v39Ev,
  (VTBL_ENTRY)&_ZN6S512C53v40Ev,
  (VTBL_ENTRY)&_ZN6S512C53v41Ev,
  (VTBL_ENTRY)&_ZN6S512C53v42Ev,
  (VTBL_ENTRY)&_ZN6S512C53v43Ev,
  (VTBL_ENTRY)&_ZN6S512C53v44Ev,
  (VTBL_ENTRY)&_ZN6S512C53v45Ev,
  (VTBL_ENTRY)&_ZN6S512C53v46Ev,
  (VTBL_ENTRY)&_ZN6S512C53v47Ev,
  (VTBL_ENTRY)&_ZN6S512C53v48Ev,
  (VTBL_ENTRY)&_ZN6S512C53v49Ev,
  (VTBL_ENTRY)&_ZN6S512C53v50Ev,
  (VTBL_ENTRY)&_ZN6S512C53v51Ev,
  (VTBL_ENTRY)&_ZN6S512C53v52Ev,
  (VTBL_ENTRY)&_ZN6S512C53v53Ev,
  (VTBL_ENTRY)&_ZN6S512C53v54Ev,
  (VTBL_ENTRY)&_ZN6S512C53v55Ev,
  (VTBL_ENTRY)&_ZN6S512C53v56Ev,
  (VTBL_ENTRY)&_ZN6S512C53v57Ev,
  (VTBL_ENTRY)&_ZN6S512C53v58Ev,
  (VTBL_ENTRY)&_ZN6S512C53v59Ev,
  (VTBL_ENTRY)&_ZN6S512C53v60Ev,
  (VTBL_ENTRY)&_ZN6S512C53v61Ev,
  (VTBL_ENTRY)&_ZN6S512C53v62Ev,
  (VTBL_ENTRY)&_ZN6S512C53v63Ev,
  (VTBL_ENTRY)&_ZN6S512C53v64Ev,
  (VTBL_ENTRY)&_ZN6S512C53v65Ev,
  (VTBL_ENTRY)&_ZN6S512C53v66Ev,
  (VTBL_ENTRY)&_ZN6S512C53v67Ev,
  (VTBL_ENTRY)&_ZN6S512C53v68Ev,
  (VTBL_ENTRY)&_ZN6S512C53v69Ev,
  (VTBL_ENTRY)&_ZN6S512C53v70Ev,
  (VTBL_ENTRY)&_ZN6S512C53v71Ev,
  (VTBL_ENTRY)&_ZN6S512C53v72Ev,
  (VTBL_ENTRY)&_ZN6S512C53v73Ev,
  (VTBL_ENTRY)&_ZN6S512C53v74Ev,
  (VTBL_ENTRY)&_ZN6S512C53v75Ev,
  (VTBL_ENTRY)&_ZN6S512C53v76Ev,
  (VTBL_ENTRY)&_ZN6S512C53v77Ev,
  (VTBL_ENTRY)&_ZN6S512C53v78Ev,
  (VTBL_ENTRY)&_ZN6S512C53v79Ev,
  (VTBL_ENTRY)&_ZN6S512C53v80Ev,
  (VTBL_ENTRY)&_ZN6S512C53v81Ev,
  (VTBL_ENTRY)&_ZN6S512C53v82Ev,
  (VTBL_ENTRY)&_ZN6S512C53v83Ev,
  (VTBL_ENTRY)&_ZN6S512C53v84Ev,
  (VTBL_ENTRY)&_ZN6S512C53v85Ev,
  (VTBL_ENTRY)&_ZN6S512C53v86Ev,
  (VTBL_ENTRY)&_ZN6S512C53v87Ev,
  (VTBL_ENTRY)&_ZN6S512C53v88Ev,
  (VTBL_ENTRY)&_ZN6S512C43v89Ev,
  (VTBL_ENTRY)&_ZN6S512C43v90Ev,
  (VTBL_ENTRY)&_ZN6S512C43v91Ev,
  (VTBL_ENTRY)&_ZN6S512C43v92Ev,
  (VTBL_ENTRY)&_ZN6S512C43v93Ev,
  (VTBL_ENTRY)&_ZN6S512C43v94Ev,
  (VTBL_ENTRY)&_ZN6S512C43v95Ev,
  (VTBL_ENTRY)&_ZN6S512C43v96Ev,
  (VTBL_ENTRY)&_ZN6S512C43v97Ev,
  (VTBL_ENTRY)&_ZN6S512C43v98Ev,
  (VTBL_ENTRY)&_ZN6S512C43v99Ev,
  (VTBL_ENTRY)&_ZN6S512C44v100Ev,
  (VTBL_ENTRY)&_ZN6S512C44v101Ev,
  (VTBL_ENTRY)&_ZN6S512C44v102Ev,
  (VTBL_ENTRY)&_ZN6S512C44v103Ev,
  (VTBL_ENTRY)&_ZN6S512C44v104Ev,
  (VTBL_ENTRY)&_ZN6S512C44v105Ev,
  (VTBL_ENTRY)&_ZN6S512C44v106Ev,
  (VTBL_ENTRY)&_ZN6S512C44v107Ev,
  (VTBL_ENTRY)&_ZN6S512C44v108Ev,
  (VTBL_ENTRY)&_ZN6S512C44v109Ev,
  (VTBL_ENTRY)&_ZN6S512C44v110Ev,
  (VTBL_ENTRY)&_ZN6S512C44v111Ev,
  (VTBL_ENTRY)&_ZN6S512C44v112Ev,
  (VTBL_ENTRY)&_ZN6S512C44v113Ev,
  (VTBL_ENTRY)&_ZN6S512C44v114Ev,
  (VTBL_ENTRY)&_ZN6S512C44v115Ev,
  (VTBL_ENTRY)&_ZN6S512C44v116Ev,
  (VTBL_ENTRY)&_ZN6S512C44v117Ev,
  (VTBL_ENTRY)&_ZN6S512C44v118Ev,
  (VTBL_ENTRY)&_ZN6S512C44v119Ev,
  (VTBL_ENTRY)&_ZN6S512C44v120Ev,
  (VTBL_ENTRY)&_ZN6S512C44v121Ev,
  (VTBL_ENTRY)&_ZN6S512C44v122Ev,
  (VTBL_ENTRY)&_ZN6S512C44v123Ev,
  (VTBL_ENTRY)&_ZN6S512C44v124Ev,
  (VTBL_ENTRY)&_ZN6S512C44v125Ev,
  (VTBL_ENTRY)&_ZN6S512C44v126Ev,
  (VTBL_ENTRY)&_ZN6S512C44v127Ev,
  (VTBL_ENTRY)&_ZN6S512C44v128Ev,
  (VTBL_ENTRY)&_ZN6S512C44v129Ev,
  (VTBL_ENTRY)&_ZN6S512C44v130Ev,
  (VTBL_ENTRY)&_ZN6S512C44v131Ev,
  (VTBL_ENTRY)&_ZN6S512C44v132Ev,
  (VTBL_ENTRY)&_ZN6S512C44v133Ev,
  (VTBL_ENTRY)&_ZN6S512C44v134Ev,
  (VTBL_ENTRY)&_ZN6S512C44v135Ev,
  (VTBL_ENTRY)&_ZN6S512C44v136Ev,
  (VTBL_ENTRY)&_ZN6S512C44v137Ev,
  (VTBL_ENTRY)&_ZN6S512C44v138Ev,
  (VTBL_ENTRY)&_ZN6S512C44v139Ev,
  (VTBL_ENTRY)&_ZN6S512C44v140Ev,
  (VTBL_ENTRY)&_ZN6S512C44v141Ev,
  (VTBL_ENTRY)&_ZN6S512C44v142Ev,
  (VTBL_ENTRY)&_ZN6S512C44v143Ev,
  (VTBL_ENTRY)&_ZN6S512C44v144Ev,
  (VTBL_ENTRY)&_ZN6S512C44v145Ev,
  (VTBL_ENTRY)&_ZN6S512C44v146Ev,
  (VTBL_ENTRY)&_ZN6S512C44v147Ev,
  (VTBL_ENTRY)&_ZN6S512C44v148Ev,
  (VTBL_ENTRY)&_ZN6S512C44v149Ev,
  (VTBL_ENTRY)&_ZN6S512C44v150Ev,
  (VTBL_ENTRY)&_ZN6S512C44v151Ev,
  (VTBL_ENTRY)&_ZN6S512C44v152Ev,
  (VTBL_ENTRY)&_ZN6S512C44v153Ev,
  (VTBL_ENTRY)&_ZN6S512C44v154Ev,
  (VTBL_ENTRY)&_ZN6S512C44v155Ev,
  (VTBL_ENTRY)&_ZN6S512C44v156Ev,
  (VTBL_ENTRY)&_ZN6S512C44v157Ev,
  (VTBL_ENTRY)&_ZN6S512C44v158Ev,
  (VTBL_ENTRY)&_ZN6S512C44v159Ev,
  (VTBL_ENTRY)&_ZN6S512C44v160Ev,
  (VTBL_ENTRY)&_ZN6S512C44v161Ev,
  (VTBL_ENTRY)&_ZN6S512C44v162Ev,
  (VTBL_ENTRY)&_ZN6S512C44v163Ev,
  (VTBL_ENTRY)&_ZN6S512C44v164Ev,
  (VTBL_ENTRY)&_ZN6S512C44v165Ev,
  (VTBL_ENTRY)&_ZN6S512C44v166Ev,
  (VTBL_ENTRY)&_ZN6S512C44v167Ev,
  (VTBL_ENTRY)&_ZN6S512C44v168Ev,
  (VTBL_ENTRY)&_ZN6S512C44v169Ev,
  (VTBL_ENTRY)&_ZN6S512C44v170Ev,
  (VTBL_ENTRY)&_ZN6S512C44v171Ev,
  (VTBL_ENTRY)&_ZN6S512C44v172Ev,
  (VTBL_ENTRY)&_ZN6S512C44v173Ev,
  (VTBL_ENTRY)&_ZN6S512C44v174Ev,
  (VTBL_ENTRY)&_ZN6S512C44v175Ev,
  (VTBL_ENTRY)&_ZN6S512C44v176Ev,
  (VTBL_ENTRY)&_ZN6S512C44v177Ev,
  (VTBL_ENTRY)&_ZN6S512C44v178Ev,
  (VTBL_ENTRY)&_ZN6S512C44v179Ev,
  (VTBL_ENTRY)&_ZN6S512C44v180Ev,
  (VTBL_ENTRY)&_ZN6S512C44v181Ev,
  (VTBL_ENTRY)&_ZN6S512C44v182Ev,
  (VTBL_ENTRY)&_ZN6S512C44v183Ev,
  (VTBL_ENTRY)&_ZN6S512C44v184Ev,
  (VTBL_ENTRY)&_ZN6S512C44v185Ev,
  (VTBL_ENTRY)&_ZN6S512C44v186Ev,
  (VTBL_ENTRY)&_ZN6S512C44v187Ev,
  (VTBL_ENTRY)&_ZN6S512C44v188Ev,
  (VTBL_ENTRY)&_ZN6S512C44v189Ev,
  (VTBL_ENTRY)&_ZN6S512C44v190Ev,
  (VTBL_ENTRY)&_ZN6S512C44v191Ev,
  (VTBL_ENTRY)&_ZN6S512C44v192Ev,
  (VTBL_ENTRY)&_ZN6S512C44v193Ev,
  (VTBL_ENTRY)&_ZN6S512C44v194Ev,
  (VTBL_ENTRY)&_ZN6S512C44v195Ev,
  (VTBL_ENTRY)&_ZN6S512C44v196Ev,
  (VTBL_ENTRY)&_ZN6S512C44v197Ev,
  (VTBL_ENTRY)&_ZN6S512C44v198Ev,
  (VTBL_ENTRY)&_ZN6S512C44v199Ev,
  (VTBL_ENTRY)&_ZN6S512C44v200Ev,
  (VTBL_ENTRY)&_ZN6S512C44v201Ev,
  (VTBL_ENTRY)&_ZN6S512C44v202Ev,
  (VTBL_ENTRY)&_ZN6S512C44v203Ev,
  (VTBL_ENTRY)&_ZN6S512C44v204Ev,
  (VTBL_ENTRY)&_ZN6S512C44v205Ev,
  (VTBL_ENTRY)&_ZN6S512C44v206Ev,
  (VTBL_ENTRY)&_ZN6S512C44v207Ev,
  (VTBL_ENTRY)&_ZN6S512C44v208Ev,
  (VTBL_ENTRY)&_ZN6S512C44v209Ev,
  (VTBL_ENTRY)&_ZN6S512C44v210Ev,
  (VTBL_ENTRY)&_ZN6S512C44v211Ev,
  (VTBL_ENTRY)&_ZN6S512C44v212Ev,
  (VTBL_ENTRY)&_ZN6S512C44v213Ev,
  (VTBL_ENTRY)&_ZN6S512C44v214Ev,
  (VTBL_ENTRY)&_ZN6S512C44v215Ev,
  (VTBL_ENTRY)&_ZN6S512C44v216Ev,
  (VTBL_ENTRY)&_ZN6S512C44v217Ev,
  (VTBL_ENTRY)&_ZN6S512C44v218Ev,
  (VTBL_ENTRY)&_ZN6S512C44v219Ev,
  (VTBL_ENTRY)&_ZN6S512C44v220Ev,
  (VTBL_ENTRY)&_ZN6S512C44v221Ev,
  (VTBL_ENTRY)&_ZN6S512C44v222Ev,
  (VTBL_ENTRY)&_ZN6S512C44v223Ev,
  (VTBL_ENTRY)&_ZN6S512C44v224Ev,
  (VTBL_ENTRY)&_ZN6S512C44v225Ev,
  (VTBL_ENTRY)&_ZN6S512C44v226Ev,
  (VTBL_ENTRY)&_ZN6S512C44v227Ev,
  (VTBL_ENTRY)&_ZN6S512C44v228Ev,
  (VTBL_ENTRY)&_ZN6S512C44v229Ev,
  (VTBL_ENTRY)&_ZN6S512C44v230Ev,
  (VTBL_ENTRY)&_ZN6S512C44v231Ev,
};
extern VTBL_ENTRY _ZTI6S512C4[];
extern  VTBL_ENTRY _ZTV6S512C4[];
Class_Descriptor cd_S512C4 = {  "S512C4", // class name
  bases_S512C4, 1,
  &(vtc_S512C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(568,436), // object size
  NSPAIRA(_ZTI6S512C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S512C4),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  S512C3  : S512C4 {
  void *s512c3f0[2];
  int s512c3f1;
  void *s512c3f2;
  unsigned int s512c3f3:1;
  unsigned int s512c3f4:1;
  unsigned int s512c3f5:1;
  unsigned int s512c3f6:1;
  unsigned int s512c3f7:1;
  unsigned int s512c3f8:1;
  unsigned int s512c3f9:1;
  unsigned int s512c3f10:1;
  unsigned int s512c3f11:1;
  unsigned int s512c3f12:1;
  unsigned int s512c3f13:1;
  unsigned int s512c3f14:1;
  unsigned int s512c3f15:1;
  unsigned int s512c3f16:1;
  unsigned int s512c3f17:1;
  unsigned int s512c3f18:1;
  unsigned int s512c3f19:1;
  unsigned int s512c3f20:1;
  unsigned int s512c3f21:1;
  char s512c3f22;
  int s512c3f23[2];
  void *s512c3f24;
  ::S48C18 s512c3f25;
  ::S48C18 s512c3f26;
  void *s512c3f27[5];
  ::S48C18 s512c3f28;
  void *s512c3f29;
  ::S28C44 s512c3f30;
  void *s512c3f31[2];
  ::S48C18 s512c3f32;
  void *s512c3f33;
  int s512c3f34[2];
  void *s512c3f35;
  int s512c3f36;
  ::S48C18 s512c3f37;
  ::S48C18 s512c3f38;
  ::S48C18 s512c3f39;
  void *s512c3f40[2];
  int s512c3f41;
  ::S48C18 s512c3f42;
  int s512c3f43[4];
  void *s512c3f44[2];
  ::S28C40 s512c3f45;
  int s512c3f46;
  ::S28C18_nt s512c3f47;
  virtual  ~S512C3(); // _ZN6S512C3D1Ev
  virtual void  v232(); // _ZN6S512C34v232Ev
  virtual void  v233(); // _ZN6S512C34v233Ev
  virtual void  v234(); // _ZN6S512C34v234Ev
  virtual void  v235(); // _ZN6S512C34v235Ev
  virtual void  v236(); // _ZN6S512C34v236Ev
  virtual void  v237(); // _ZN6S512C34v237Ev
  virtual void  v238(); // _ZN6S512C34v238Ev
  virtual void  v239(); // _ZN6S512C34v239Ev
  virtual void  v240(); // _ZN6S512C34v240Ev
  virtual void  v241(); // _ZN6S512C34v241Ev
  virtual void  v242(); // _ZN6S512C34v242Ev
  virtual void  v243(); // _ZN6S512C34v243Ev
  virtual void  v244(); // _ZN6S512C34v244Ev
  virtual void  v245(); // _ZN6S512C34v245Ev
  virtual void  v246(); // _ZN6S512C34v246Ev
  virtual void  v247(); // _ZN6S512C34v247Ev
  virtual void  v248(); // _ZN6S512C34v248Ev
  virtual void  v249(); // _ZN6S512C34v249Ev
  virtual void  v250(); // _ZN6S512C34v250Ev
  virtual void  v251(); // _ZN6S512C34v251Ev
  virtual void  v252(); // _ZN6S512C34v252Ev
  virtual void  v253(); // _ZN6S512C34v253Ev
  virtual void  v254(); // _ZN6S512C34v254Ev
  virtual void  v255(); // _ZN6S512C34v255Ev
  virtual void  v256(); // _ZN6S512C34v256Ev
  virtual void  v257(); // _ZN6S512C34v257Ev
  virtual void  v258(); // _ZN6S512C34v258Ev
  virtual void  v259(); // _ZN6S512C34v259Ev
  virtual void  v260(); // _ZN6S512C34v260Ev
  virtual void  v261(); // _ZN6S512C34v261Ev
  virtual void  v262(); // _ZN6S512C34v262Ev
  virtual void  v263(); // _ZN6S512C34v263Ev
  virtual void  v264(); // _ZN6S512C34v264Ev
  virtual void  v265(); // _ZN6S512C34v265Ev
  virtual void  v266(); // _ZN6S512C34v266Ev
  virtual void  v267(); // _ZN6S512C34v267Ev
  virtual void  v268(); // _ZN6S512C34v268Ev
  virtual void  v269(); // _ZN6S512C34v269Ev
  virtual void  v270(); // _ZN6S512C34v270Ev
  virtual void  v271(); // _ZN6S512C34v271Ev
  virtual void  v272(); // _ZN6S512C34v272Ev
  virtual void  v273(); // _ZN6S512C34v273Ev
  virtual void  v274(); // _ZN6S512C34v274Ev
  virtual void  v275(); // _ZN6S512C34v275Ev
  virtual void  v276(); // _ZN6S512C34v276Ev
  virtual void  v277(); // _ZN6S512C34v277Ev
  virtual void  v278(); // _ZN6S512C34v278Ev
  virtual void  v279(); // _ZN6S512C34v279Ev
  virtual void  v280(); // _ZN6S512C34v280Ev
  virtual void  v281(); // _ZN6S512C34v281Ev
  S512C3(); // tgen
};
//SIG(-1 S512C3) C1{ BC2{ BC3{ vd 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 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd 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 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 FC5{ BC6{ BC7{ m Fp Fi[2]}}} FC5 FC8{ m Fi} Fi Fc[4] Fp[2] FC9{ BC10{ BC7}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC4 FC4 FC4 FC11{ BC12{ BC7}} FC11 Fi Fp[2] FC13{ m Fi[3]} FC14{ m Fi[3]} FC13 FC13 Fp FC4 FC11 FC13 FC14 Fi FC13 FC13 Fp Fi Fc FC14 FC14 Fp Fi Fp FC15{ BC16{ BC7}} FC17{ BC18{ BC7}} FC19{ BC20{ BC7}}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 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 Fp[2] Fi Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fc Fi[2] Fp FC13 FC13 Fp[5] FC13 Fp FC21{ BC22{ BC7}} Fp[2] FC13 Fp Fi[2] Fp Fi FC13 FC13 FC13 Fp[2] Fi FC13 Fi[4] Fp[2] FC23{ BC24{ BC7}} Fi FC14}


 S512C3 ::~S512C3(){ note_dtor("S512C3", this);}
void  S512C3 ::v232(){vfunc_called(this, "_ZN6S512C34v232Ev");}
void  S512C3 ::v233(){vfunc_called(this, "_ZN6S512C34v233Ev");}
void  S512C3 ::v234(){vfunc_called(this, "_ZN6S512C34v234Ev");}
void  S512C3 ::v235(){vfunc_called(this, "_ZN6S512C34v235Ev");}
void  S512C3 ::v236(){vfunc_called(this, "_ZN6S512C34v236Ev");}
void  S512C3 ::v237(){vfunc_called(this, "_ZN6S512C34v237Ev");}
void  S512C3 ::v238(){vfunc_called(this, "_ZN6S512C34v238Ev");}
void  S512C3 ::v239(){vfunc_called(this, "_ZN6S512C34v239Ev");}
void  S512C3 ::v240(){vfunc_called(this, "_ZN6S512C34v240Ev");}
void  S512C3 ::v241(){vfunc_called(this, "_ZN6S512C34v241Ev");}
void  S512C3 ::v242(){vfunc_called(this, "_ZN6S512C34v242Ev");}
void  S512C3 ::v243(){vfunc_called(this, "_ZN6S512C34v243Ev");}
void  S512C3 ::v244(){vfunc_called(this, "_ZN6S512C34v244Ev");}
void  S512C3 ::v245(){vfunc_called(this, "_ZN6S512C34v245Ev");}
void  S512C3 ::v246(){vfunc_called(this, "_ZN6S512C34v246Ev");}
void  S512C3 ::v247(){vfunc_called(this, "_ZN6S512C34v247Ev");}
void  S512C3 ::v248(){vfunc_called(this, "_ZN6S512C34v248Ev");}
void  S512C3 ::v249(){vfunc_called(this, "_ZN6S512C34v249Ev");}
void  S512C3 ::v250(){vfunc_called(this, "_ZN6S512C34v250Ev");}
void  S512C3 ::v251(){vfunc_called(this, "_ZN6S512C34v251Ev");}
void  S512C3 ::v252(){vfunc_called(this, "_ZN6S512C34v252Ev");}
void  S512C3 ::v253(){vfunc_called(this, "_ZN6S512C34v253Ev");}
void  S512C3 ::v254(){vfunc_called(this, "_ZN6S512C34v254Ev");}
void  S512C3 ::v255(){vfunc_called(this, "_ZN6S512C34v255Ev");}
void  S512C3 ::v256(){vfunc_called(this, "_ZN6S512C34v256Ev");}
void  S512C3 ::v257(){vfunc_called(this, "_ZN6S512C34v257Ev");}
void  S512C3 ::v258(){vfunc_called(this, "_ZN6S512C34v258Ev");}
void  S512C3 ::v259(){vfunc_called(this, "_ZN6S512C34v259Ev");}
void  S512C3 ::v260(){vfunc_called(this, "_ZN6S512C34v260Ev");}
void  S512C3 ::v261(){vfunc_called(this, "_ZN6S512C34v261Ev");}
void  S512C3 ::v262(){vfunc_called(this, "_ZN6S512C34v262Ev");}
void  S512C3 ::v263(){vfunc_called(this, "_ZN6S512C34v263Ev");}
void  S512C3 ::v264(){vfunc_called(this, "_ZN6S512C34v264Ev");}
void  S512C3 ::v265(){vfunc_called(this, "_ZN6S512C34v265Ev");}
void  S512C3 ::v266(){vfunc_called(this, "_ZN6S512C34v266Ev");}
void  S512C3 ::v267(){vfunc_called(this, "_ZN6S512C34v267Ev");}
void  S512C3 ::v268(){vfunc_called(this, "_ZN6S512C34v268Ev");}
void  S512C3 ::v269(){vfunc_called(this, "_ZN6S512C34v269Ev");}
void  S512C3 ::v270(){vfunc_called(this, "_ZN6S512C34v270Ev");}
void  S512C3 ::v271(){vfunc_called(this, "_ZN6S512C34v271Ev");}
void  S512C3 ::v272(){vfunc_called(this, "_ZN6S512C34v272Ev");}
void  S512C3 ::v273(){vfunc_called(this, "_ZN6S512C34v273Ev");}
void  S512C3 ::v274(){vfunc_called(this, "_ZN6S512C34v274Ev");}
void  S512C3 ::v275(){vfunc_called(this, "_ZN6S512C34v275Ev");}
void  S512C3 ::v276(){vfunc_called(this, "_ZN6S512C34v276Ev");}
void  S512C3 ::v277(){vfunc_called(this, "_ZN6S512C34v277Ev");}
void  S512C3 ::v278(){vfunc_called(this, "_ZN6S512C34v278Ev");}
void  S512C3 ::v279(){vfunc_called(this, "_ZN6S512C34v279Ev");}
void  S512C3 ::v280(){vfunc_called(this, "_ZN6S512C34v280Ev");}
void  S512C3 ::v281(){vfunc_called(this, "_ZN6S512C34v281Ev");}
S512C3 ::S512C3(){ note_ctor("S512C3", this);} // tgen

static void Test_S512C3()
{
  extern Class_Descriptor cd_S512C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(116,174)];
    init_test(&cd_S512C3, buf);
    S512C3 *dp, &lv = *(dp=new (buf) S512C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(920,692), "sizeof(S512C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S512C3)");
    check_base_class_offset(lv, (S512C5*)(S512C4*), 0, "S512C3");
    check_base_class_offset(lv, (S512C4*), 0, "S512C3");
    check_field_offset(lv, s512c3f0, ABISELECT(568,436), "S512C3.s512c3f0");
    check_field_offset(lv, s512c3f1, ABISELECT(584,444), "S512C3.s512c3f1");
    check_field_offset(lv, s512c3f2, ABISELECT(592,448), "S512C3.s512c3f2");
    set_bf_and_test(lv, s512c3f3, ABISELECT(600,452), 0, 1, 1, "S512C3");
    set_bf_and_test(lv, s512c3f4, ABISELECT(600,452), 1, 1, 1, "S512C3");
    set_bf_and_test(lv, s512c3f5, ABISELECT(600,452), 2, 1, 1, "S512C3");
    set_bf_and_test(lv, s512c3f6, ABISELECT(600,452), 3, 1, 1, "S512C3");
    set_bf_and_test(lv, s512c3f7, ABISELECT(600,452), 4, 1, 1, "S512C3");
    set_bf_and_test(lv, s512c3f8, ABISELECT(600,452), 5, 1, 1, "S512C3");
    set_bf_and_test(lv, s512c3f9, ABISELECT(600,452), 6, 1, 1, "S512C3");
    set_bf_and_test(lv, s512c3f10, ABISELECT(600,452), 7, 1, 1, "S512C3");
    set_bf_and_test(lv, s512c3f11, ABISELECT(601,453), 0, 1, 1, "S512C3");
    set_bf_and_test(lv, s512c3f12, ABISELECT(601,453), 1, 1, 1, "S512C3");
    set_bf_and_test(lv, s512c3f13, ABISELECT(601,453), 2, 1, 1, "S512C3");
    set_bf_and_test(lv, s512c3f14, ABISELECT(601,453), 3, 1, 1, "S512C3");
    set_bf_and_test(lv, s512c3f15, ABISELECT(601,453), 4, 1, 1, "S512C3");
    set_bf_and_test(lv, s512c3f16, ABISELECT(601,453), 5, 1, 1, "S512C3");
    set_bf_and_test(lv, s512c3f17, ABISELECT(601,453), 6, 1, 1, "S512C3");
    set_bf_and_test(lv, s512c3f18, ABISELECT(601,453), 7, 1, 1, "S512C3");
    set_bf_and_test(lv, s512c3f19, ABISELECT(602,454), 0, 1, 1, "S512C3");
    set_bf_and_test(lv, s512c3f20, ABISELECT(602,454), 1, 1, 1, "S512C3");
    set_bf_and_test(lv, s512c3f21, ABISELECT(602,454), 2, 1, 1, "S512C3");
    check_field_offset(lv, s512c3f22, ABISELECT(603,455), "S512C3.s512c3f22");
    check_field_offset(lv, s512c3f23, ABISELECT(604,456), "S512C3.s512c3f23");
    check_field_offset(lv, s512c3f24, ABISELECT(616,464), "S512C3.s512c3f24");
    check_field_offset(lv, s512c3f25, ABISELECT(624,468), "S512C3.s512c3f25");
    check_field_offset(lv, s512c3f26, ABISELECT(636,480), "S512C3.s512c3f26");
    check_field_offset(lv, s512c3f27, ABISELECT(648,492), "S512C3.s512c3f27");
    check_field_offset(lv, s512c3f28, ABISELECT(688,512), "S512C3.s512c3f28");
    check_field_offset(lv, s512c3f29, ABISELECT(704,524), "S512C3.s512c3f29");
    check_field_offset(lv, s512c3f30, ABISELECT(712,528), "S512C3.s512c3f30");
    check_field_offset(lv, s512c3f31, ABISELECT(728,540), "S512C3.s512c3f31");
    check_field_offset(lv, s512c3f32, ABISELECT(744,548), "S512C3.s512c3f32");
    check_field_offset(lv, s512c3f33, ABISELECT(760,560), "S512C3.s512c3f33");
    check_field_offset(lv, s512c3f34, ABISELECT(768,564), "S512C3.s512c3f34");
    check_field_offset(lv, s512c3f35, ABISELECT(776,572), "S512C3.s512c3f35");
    check_field_offset(lv, s512c3f36, ABISELECT(784,576), "S512C3.s512c3f36");
    check_field_offset(lv, s512c3f37, ABISELECT(788,580), "S512C3.s512c3f37");
    check_field_offset(lv, s512c3f38, ABISELECT(800,592), "S512C3.s512c3f38");
    check_field_offset(lv, s512c3f39, ABISELECT(812,604), "S512C3.s512c3f39");
    check_field_offset(lv, s512c3f40, ABISELECT(824,616), "S512C3.s512c3f40");
    check_field_offset(lv, s512c3f41, ABISELECT(840,624), "S512C3.s512c3f41");
    check_field_offset(lv, s512c3f42, ABISELECT(844,628), "S512C3.s512c3f42");
    check_field_offset(lv, s512c3f43, ABISELECT(856,640), "S512C3.s512c3f43");
    check_field_offset(lv, s512c3f44, ABISELECT(872,656), "S512C3.s512c3f44");
    check_field_offset(lv, s512c3f45, ABISELECT(888,664), "S512C3.s512c3f45");
    check_field_offset(lv, s512c3f46, ABISELECT(904,676), "S512C3.s512c3f46");
    check_field_offset(lv, s512c3f47, ABISELECT(908,680), "S512C3.s512c3f47");
    test_class_info(&lv, &cd_S512C3);
    dp->~S512C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS512C3(Test_S512C3, "S512C3", ABISELECT(920,692));

#else // __cplusplus

extern void _ZN6S512C3C1Ev();
extern void _ZN6S512C3D1Ev();
Name_Map name_map_S512C3[] = {
  NSPAIR(_ZN6S512C3C1Ev),
  NSPAIR(_ZN6S512C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S512C5;
extern VTBL_ENTRY _ZTI6S512C5[];
extern  VTBL_ENTRY _ZTV6S512C5[];
extern Class_Descriptor cd_S512C4;
extern VTBL_ENTRY _ZTI6S512C4[];
extern  VTBL_ENTRY _ZTV6S512C4[];
static Base_Class bases_S512C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S512C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S512C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S512C3[];
extern void _ZN6S512C3D1Ev();
extern void _ZN6S512C3D0Ev();
extern void _ZN6S512C53v25Ev();
extern void _ZN6S512C53v26Ev();
extern void _ZN6S512C53v27Ev();
extern void _ZN6S512C53v28Ev();
extern void _ZN6S512C53v29Ev();
extern void _ZN6S512C53v30Ev();
extern void _ZN6S512C53v31Ev();
extern void _ZN6S512C53v32Ev();
extern void _ZN6S512C53v33Ev();
extern void _ZN6S512C53v34Ev();
extern void _ZN6S512C53v35Ev();
extern void _ZN6S512C53v36Ev();
extern void _ZN6S512C53v37Ev();
extern void _ZN6S512C53v38Ev();
extern void _ZN6S512C53v39Ev();
extern void _ZN6S512C53v40Ev();
extern void _ZN6S512C53v41Ev();
extern void _ZN6S512C53v42Ev();
extern void _ZN6S512C53v43Ev();
extern void _ZN6S512C53v44Ev();
extern void _ZN6S512C53v45Ev();
extern void _ZN6S512C53v46Ev();
extern void _ZN6S512C53v47Ev();
extern void _ZN6S512C53v48Ev();
extern void _ZN6S512C53v49Ev();
extern void _ZN6S512C53v50Ev();
extern void _ZN6S512C53v51Ev();
extern void _ZN6S512C53v52Ev();
extern void _ZN6S512C53v53Ev();
extern void _ZN6S512C53v54Ev();
extern void _ZN6S512C53v55Ev();
extern void _ZN6S512C53v56Ev();
extern void _ZN6S512C53v57Ev();
extern void _ZN6S512C53v58Ev();
extern void _ZN6S512C53v59Ev();
extern void _ZN6S512C53v60Ev();
extern void _ZN6S512C53v61Ev();
extern void _ZN6S512C53v62Ev();
extern void _ZN6S512C53v63Ev();
extern void _ZN6S512C53v64Ev();
extern void _ZN6S512C53v65Ev();
extern void _ZN6S512C53v66Ev();
extern void _ZN6S512C53v67Ev();
extern void _ZN6S512C53v68Ev();
extern void _ZN6S512C53v69Ev();
extern void _ZN6S512C53v70Ev();
extern void _ZN6S512C53v71Ev();
extern void _ZN6S512C53v72Ev();
extern void _ZN6S512C53v73Ev();
extern void _ZN6S512C53v74Ev();
extern void _ZN6S512C53v75Ev();
extern void _ZN6S512C53v76Ev();
extern void _ZN6S512C53v77Ev();
extern void _ZN6S512C53v78Ev();
extern void _ZN6S512C53v79Ev();
extern void _ZN6S512C53v80Ev();
extern void _ZN6S512C53v81Ev();
extern void _ZN6S512C53v82Ev();
extern void _ZN6S512C53v83Ev();
extern void _ZN6S512C53v84Ev();
extern void _ZN6S512C53v85Ev();
extern void _ZN6S512C53v86Ev();
extern void _ZN6S512C53v87Ev();
extern void _ZN6S512C53v88Ev();
extern void _ZN6S512C43v89Ev();
extern void _ZN6S512C43v90Ev();
extern void _ZN6S512C43v91Ev();
extern void _ZN6S512C43v92Ev();
extern void _ZN6S512C43v93Ev();
extern void _ZN6S512C43v94Ev();
extern void _ZN6S512C43v95Ev();
extern void _ZN6S512C43v96Ev();
extern void _ZN6S512C43v97Ev();
extern void _ZN6S512C43v98Ev();
extern void _ZN6S512C43v99Ev();
extern void _ZN6S512C44v100Ev();
extern void _ZN6S512C44v101Ev();
extern void _ZN6S512C44v102Ev();
extern void _ZN6S512C44v103Ev();
extern void _ZN6S512C44v104Ev();
extern void _ZN6S512C44v105Ev();
extern void _ZN6S512C44v106Ev();
extern void _ZN6S512C44v107Ev();
extern void _ZN6S512C44v108Ev();
extern void _ZN6S512C44v109Ev();
extern void _ZN6S512C44v110Ev();
extern void _ZN6S512C44v111Ev();
extern void _ZN6S512C44v112Ev();
extern void _ZN6S512C44v113Ev();
extern void _ZN6S512C44v114Ev();
extern void _ZN6S512C44v115Ev();
extern void _ZN6S512C44v116Ev();
extern void _ZN6S512C44v117Ev();
extern void _ZN6S512C44v118Ev();
extern void _ZN6S512C44v119Ev();
extern void _ZN6S512C44v120Ev();
extern void _ZN6S512C44v121Ev();
extern void _ZN6S512C44v122Ev();
extern void _ZN6S512C44v123Ev();
extern void _ZN6S512C44v124Ev();
extern void _ZN6S512C44v125Ev();
extern void _ZN6S512C44v126Ev();
extern void _ZN6S512C44v127Ev();
extern void _ZN6S512C44v128Ev();
extern void _ZN6S512C44v129Ev();
extern void _ZN6S512C44v130Ev();
extern void _ZN6S512C44v131Ev();
extern void _ZN6S512C44v132Ev();
extern void _ZN6S512C44v133Ev();
extern void _ZN6S512C44v134Ev();
extern void _ZN6S512C44v135Ev();
extern void _ZN6S512C44v136Ev();
extern void _ZN6S512C44v137Ev();
extern void _ZN6S512C44v138Ev();
extern void _ZN6S512C44v139Ev();
extern void _ZN6S512C44v140Ev();
extern void _ZN6S512C44v141Ev();
extern void _ZN6S512C44v142Ev();
extern void _ZN6S512C44v143Ev();
extern void _ZN6S512C44v144Ev();
extern void _ZN6S512C44v145Ev();
extern void _ZN6S512C44v146Ev();
extern void _ZN6S512C44v147Ev();
extern void _ZN6S512C44v148Ev();
extern void _ZN6S512C44v149Ev();
extern void _ZN6S512C44v150Ev();
extern void _ZN6S512C44v151Ev();
extern void _ZN6S512C44v152Ev();
extern void _ZN6S512C44v153Ev();
extern void _ZN6S512C44v154Ev();
extern void _ZN6S512C44v155Ev();
extern void _ZN6S512C44v156Ev();
extern void _ZN6S512C44v157Ev();
extern void _ZN6S512C44v158Ev();
extern void _ZN6S512C44v159Ev();
extern void _ZN6S512C44v160Ev();
extern void _ZN6S512C44v161Ev();
extern void _ZN6S512C44v162Ev();
extern void _ZN6S512C44v163Ev();
extern void _ZN6S512C44v164Ev();
extern void _ZN6S512C44v165Ev();
extern void _ZN6S512C44v166Ev();
extern void _ZN6S512C44v167Ev();
extern void _ZN6S512C44v168Ev();
extern void _ZN6S512C44v169Ev();
extern void _ZN6S512C44v170Ev();
extern void _ZN6S512C44v171Ev();
extern void _ZN6S512C44v172Ev();
extern void _ZN6S512C44v173Ev();
extern void _ZN6S512C44v174Ev();
extern void _ZN6S512C44v175Ev();
extern void _ZN6S512C44v176Ev();
extern void _ZN6S512C44v177Ev();
extern void _ZN6S512C44v178Ev();
extern void _ZN6S512C44v179Ev();
extern void _ZN6S512C44v180Ev();
extern void _ZN6S512C44v181Ev();
extern void _ZN6S512C44v182Ev();
extern void _ZN6S512C44v183Ev();
extern void _ZN6S512C44v184Ev();
extern void _ZN6S512C44v185Ev();
extern void _ZN6S512C44v186Ev();
extern void _ZN6S512C44v187Ev();
extern void _ZN6S512C44v188Ev();
extern void _ZN6S512C44v189Ev();
extern void _ZN6S512C44v190Ev();
extern void _ZN6S512C44v191Ev();
extern void _ZN6S512C44v192Ev();
extern void _ZN6S512C44v193Ev();
extern void _ZN6S512C44v194Ev();
extern void _ZN6S512C44v195Ev();
extern void _ZN6S512C44v196Ev();
extern void _ZN6S512C44v197Ev();
extern void _ZN6S512C44v198Ev();
extern void _ZN6S512C44v199Ev();
extern void _ZN6S512C44v200Ev();
extern void _ZN6S512C44v201Ev();
extern void _ZN6S512C44v202Ev();
extern void _ZN6S512C44v203Ev();
extern void _ZN6S512C44v204Ev();
extern void _ZN6S512C44v205Ev();
extern void _ZN6S512C44v206Ev();
extern void _ZN6S512C44v207Ev();
extern void _ZN6S512C44v208Ev();
extern void _ZN6S512C44v209Ev();
extern void _ZN6S512C44v210Ev();
extern void _ZN6S512C44v211Ev();
extern void _ZN6S512C44v212Ev();
extern void _ZN6S512C44v213Ev();
extern void _ZN6S512C44v214Ev();
extern void _ZN6S512C44v215Ev();
extern void _ZN6S512C44v216Ev();
extern void _ZN6S512C44v217Ev();
extern void _ZN6S512C44v218Ev();
extern void _ZN6S512C44v219Ev();
extern void _ZN6S512C44v220Ev();
extern void _ZN6S512C44v221Ev();
extern void _ZN6S512C44v222Ev();
extern void _ZN6S512C44v223Ev();
extern void _ZN6S512C44v224Ev();
extern void _ZN6S512C44v225Ev();
extern void _ZN6S512C44v226Ev();
extern void _ZN6S512C44v227Ev();
extern void _ZN6S512C44v228Ev();
extern void _ZN6S512C44v229Ev();
extern void _ZN6S512C44v230Ev();
extern void _ZN6S512C44v231Ev();
extern void _ZN6S512C34v232Ev();
extern void _ZN6S512C34v233Ev();
extern void _ZN6S512C34v234Ev();
extern void _ZN6S512C34v235Ev();
extern void _ZN6S512C34v236Ev();
extern void _ZN6S512C34v237Ev();
extern void _ZN6S512C34v238Ev();
extern void _ZN6S512C34v239Ev();
extern void _ZN6S512C34v240Ev();
extern void _ZN6S512C34v241Ev();
extern void _ZN6S512C34v242Ev();
extern void _ZN6S512C34v243Ev();
extern void _ZN6S512C34v244Ev();
extern void _ZN6S512C34v245Ev();
extern void _ZN6S512C34v246Ev();
extern void _ZN6S512C34v247Ev();
extern void _ZN6S512C34v248Ev();
extern void _ZN6S512C34v249Ev();
extern void _ZN6S512C34v250Ev();
extern void _ZN6S512C34v251Ev();
extern void _ZN6S512C34v252Ev();
extern void _ZN6S512C34v253Ev();
extern void _ZN6S512C34v254Ev();
extern void _ZN6S512C34v255Ev();
extern void _ZN6S512C34v256Ev();
extern void _ZN6S512C34v257Ev();
extern void _ZN6S512C34v258Ev();
extern void _ZN6S512C34v259Ev();
extern void _ZN6S512C34v260Ev();
extern void _ZN6S512C34v261Ev();
extern void _ZN6S512C34v262Ev();
extern void _ZN6S512C34v263Ev();
extern void _ZN6S512C34v264Ev();
extern void _ZN6S512C34v265Ev();
extern void _ZN6S512C34v266Ev();
extern void _ZN6S512C34v267Ev();
extern void _ZN6S512C34v268Ev();
extern void _ZN6S512C34v269Ev();
extern void _ZN6S512C34v270Ev();
extern void _ZN6S512C34v271Ev();
extern void _ZN6S512C34v272Ev();
extern void _ZN6S512C34v273Ev();
extern void _ZN6S512C34v274Ev();
extern void _ZN6S512C34v275Ev();
extern void _ZN6S512C34v276Ev();
extern void _ZN6S512C34v277Ev();
extern void _ZN6S512C34v278Ev();
extern void _ZN6S512C34v279Ev();
extern void _ZN6S512C34v280Ev();
extern void _ZN6S512C34v281Ev();
static  VTBL_ENTRY vtc_S512C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S512C3[0]),
  (VTBL_ENTRY)&_ZN6S512C3D1Ev,
  (VTBL_ENTRY)&_ZN6S512C3D0Ev,
  (VTBL_ENTRY)&_ZN6S512C53v25Ev,
  (VTBL_ENTRY)&_ZN6S512C53v26Ev,
  (VTBL_ENTRY)&_ZN6S512C53v27Ev,
  (VTBL_ENTRY)&_ZN6S512C53v28Ev,
  (VTBL_ENTRY)&_ZN6S512C53v29Ev,
  (VTBL_ENTRY)&_ZN6S512C53v30Ev,
  (VTBL_ENTRY)&_ZN6S512C53v31Ev,
  (VTBL_ENTRY)&_ZN6S512C53v32Ev,
  (VTBL_ENTRY)&_ZN6S512C53v33Ev,
  (VTBL_ENTRY)&_ZN6S512C53v34Ev,
  (VTBL_ENTRY)&_ZN6S512C53v35Ev,
  (VTBL_ENTRY)&_ZN6S512C53v36Ev,
  (VTBL_ENTRY)&_ZN6S512C53v37Ev,
  (VTBL_ENTRY)&_ZN6S512C53v38Ev,
  (VTBL_ENTRY)&_ZN6S512C53v39Ev,
  (VTBL_ENTRY)&_ZN6S512C53v40Ev,
  (VTBL_ENTRY)&_ZN6S512C53v41Ev,
  (VTBL_ENTRY)&_ZN6S512C53v42Ev,
  (VTBL_ENTRY)&_ZN6S512C53v43Ev,
  (VTBL_ENTRY)&_ZN6S512C53v44Ev,
  (VTBL_ENTRY)&_ZN6S512C53v45Ev,
  (VTBL_ENTRY)&_ZN6S512C53v46Ev,
  (VTBL_ENTRY)&_ZN6S512C53v47Ev,
  (VTBL_ENTRY)&_ZN6S512C53v48Ev,
  (VTBL_ENTRY)&_ZN6S512C53v49Ev,
  (VTBL_ENTRY)&_ZN6S512C53v50Ev,
  (VTBL_ENTRY)&_ZN6S512C53v51Ev,
  (VTBL_ENTRY)&_ZN6S512C53v52Ev,
  (VTBL_ENTRY)&_ZN6S512C53v53Ev,
  (VTBL_ENTRY)&_ZN6S512C53v54Ev,
  (VTBL_ENTRY)&_ZN6S512C53v55Ev,
  (VTBL_ENTRY)&_ZN6S512C53v56Ev,
  (VTBL_ENTRY)&_ZN6S512C53v57Ev,
  (VTBL_ENTRY)&_ZN6S512C53v58Ev,
  (VTBL_ENTRY)&_ZN6S512C53v59Ev,
  (VTBL_ENTRY)&_ZN6S512C53v60Ev,
  (VTBL_ENTRY)&_ZN6S512C53v61Ev,
  (VTBL_ENTRY)&_ZN6S512C53v62Ev,
  (VTBL_ENTRY)&_ZN6S512C53v63Ev,
  (VTBL_ENTRY)&_ZN6S512C53v64Ev,
  (VTBL_ENTRY)&_ZN6S512C53v65Ev,
  (VTBL_ENTRY)&_ZN6S512C53v66Ev,
  (VTBL_ENTRY)&_ZN6S512C53v67Ev,
  (VTBL_ENTRY)&_ZN6S512C53v68Ev,
  (VTBL_ENTRY)&_ZN6S512C53v69Ev,
  (VTBL_ENTRY)&_ZN6S512C53v70Ev,
  (VTBL_ENTRY)&_ZN6S512C53v71Ev,
  (VTBL_ENTRY)&_ZN6S512C53v72Ev,
  (VTBL_ENTRY)&_ZN6S512C53v73Ev,
  (VTBL_ENTRY)&_ZN6S512C53v74Ev,
  (VTBL_ENTRY)&_ZN6S512C53v75Ev,
  (VTBL_ENTRY)&_ZN6S512C53v76Ev,
  (VTBL_ENTRY)&_ZN6S512C53v77Ev,
  (VTBL_ENTRY)&_ZN6S512C53v78Ev,
  (VTBL_ENTRY)&_ZN6S512C53v79Ev,
  (VTBL_ENTRY)&_ZN6S512C53v80Ev,
  (VTBL_ENTRY)&_ZN6S512C53v81Ev,
  (VTBL_ENTRY)&_ZN6S512C53v82Ev,
  (VTBL_ENTRY)&_ZN6S512C53v83Ev,
  (VTBL_ENTRY)&_ZN6S512C53v84Ev,
  (VTBL_ENTRY)&_ZN6S512C53v85Ev,
  (VTBL_ENTRY)&_ZN6S512C53v86Ev,
  (VTBL_ENTRY)&_ZN6S512C53v87Ev,
  (VTBL_ENTRY)&_ZN6S512C53v88Ev,
  (VTBL_ENTRY)&_ZN6S512C43v89Ev,
  (VTBL_ENTRY)&_ZN6S512C43v90Ev,
  (VTBL_ENTRY)&_ZN6S512C43v91Ev,
  (VTBL_ENTRY)&_ZN6S512C43v92Ev,
  (VTBL_ENTRY)&_ZN6S512C43v93Ev,
  (VTBL_ENTRY)&_ZN6S512C43v94Ev,
  (VTBL_ENTRY)&_ZN6S512C43v95Ev,
  (VTBL_ENTRY)&_ZN6S512C43v96Ev,
  (VTBL_ENTRY)&_ZN6S512C43v97Ev,
  (VTBL_ENTRY)&_ZN6S512C43v98Ev,
  (VTBL_ENTRY)&_ZN6S512C43v99Ev,
  (VTBL_ENTRY)&_ZN6S512C44v100Ev,
  (VTBL_ENTRY)&_ZN6S512C44v101Ev,
  (VTBL_ENTRY)&_ZN6S512C44v102Ev,
  (VTBL_ENTRY)&_ZN6S512C44v103Ev,
  (VTBL_ENTRY)&_ZN6S512C44v104Ev,
  (VTBL_ENTRY)&_ZN6S512C44v105Ev,
  (VTBL_ENTRY)&_ZN6S512C44v106Ev,
  (VTBL_ENTRY)&_ZN6S512C44v107Ev,
  (VTBL_ENTRY)&_ZN6S512C44v108Ev,
  (VTBL_ENTRY)&_ZN6S512C44v109Ev,
  (VTBL_ENTRY)&_ZN6S512C44v110Ev,
  (VTBL_ENTRY)&_ZN6S512C44v111Ev,
  (VTBL_ENTRY)&_ZN6S512C44v112Ev,
  (VTBL_ENTRY)&_ZN6S512C44v113Ev,
  (VTBL_ENTRY)&_ZN6S512C44v114Ev,
  (VTBL_ENTRY)&_ZN6S512C44v115Ev,
  (VTBL_ENTRY)&_ZN6S512C44v116Ev,
  (VTBL_ENTRY)&_ZN6S512C44v117Ev,
  (VTBL_ENTRY)&_ZN6S512C44v118Ev,
  (VTBL_ENTRY)&_ZN6S512C44v119Ev,
  (VTBL_ENTRY)&_ZN6S512C44v120Ev,
  (VTBL_ENTRY)&_ZN6S512C44v121Ev,
  (VTBL_ENTRY)&_ZN6S512C44v122Ev,
  (VTBL_ENTRY)&_ZN6S512C44v123Ev,
  (VTBL_ENTRY)&_ZN6S512C44v124Ev,
  (VTBL_ENTRY)&_ZN6S512C44v125Ev,
  (VTBL_ENTRY)&_ZN6S512C44v126Ev,
  (VTBL_ENTRY)&_ZN6S512C44v127Ev,
  (VTBL_ENTRY)&_ZN6S512C44v128Ev,
  (VTBL_ENTRY)&_ZN6S512C44v129Ev,
  (VTBL_ENTRY)&_ZN6S512C44v130Ev,
  (VTBL_ENTRY)&_ZN6S512C44v131Ev,
  (VTBL_ENTRY)&_ZN6S512C44v132Ev,
  (VTBL_ENTRY)&_ZN6S512C44v133Ev,
  (VTBL_ENTRY)&_ZN6S512C44v134Ev,
  (VTBL_ENTRY)&_ZN6S512C44v135Ev,
  (VTBL_ENTRY)&_ZN6S512C44v136Ev,
  (VTBL_ENTRY)&_ZN6S512C44v137Ev,
  (VTBL_ENTRY)&_ZN6S512C44v138Ev,
  (VTBL_ENTRY)&_ZN6S512C44v139Ev,
  (VTBL_ENTRY)&_ZN6S512C44v140Ev,
  (VTBL_ENTRY)&_ZN6S512C44v141Ev,
  (VTBL_ENTRY)&_ZN6S512C44v142Ev,
  (VTBL_ENTRY)&_ZN6S512C44v143Ev,
  (VTBL_ENTRY)&_ZN6S512C44v144Ev,
  (VTBL_ENTRY)&_ZN6S512C44v145Ev,
  (VTBL_ENTRY)&_ZN6S512C44v146Ev,
  (VTBL_ENTRY)&_ZN6S512C44v147Ev,
  (VTBL_ENTRY)&_ZN6S512C44v148Ev,
  (VTBL_ENTRY)&_ZN6S512C44v149Ev,
  (VTBL_ENTRY)&_ZN6S512C44v150Ev,
  (VTBL_ENTRY)&_ZN6S512C44v151Ev,
  (VTBL_ENTRY)&_ZN6S512C44v152Ev,
  (VTBL_ENTRY)&_ZN6S512C44v153Ev,
  (VTBL_ENTRY)&_ZN6S512C44v154Ev,
  (VTBL_ENTRY)&_ZN6S512C44v155Ev,
  (VTBL_ENTRY)&_ZN6S512C44v156Ev,
  (VTBL_ENTRY)&_ZN6S512C44v157Ev,
  (VTBL_ENTRY)&_ZN6S512C44v158Ev,
  (VTBL_ENTRY)&_ZN6S512C44v159Ev,
  (VTBL_ENTRY)&_ZN6S512C44v160Ev,
  (VTBL_ENTRY)&_ZN6S512C44v161Ev,
  (VTBL_ENTRY)&_ZN6S512C44v162Ev,
  (VTBL_ENTRY)&_ZN6S512C44v163Ev,
  (VTBL_ENTRY)&_ZN6S512C44v164Ev,
  (VTBL_ENTRY)&_ZN6S512C44v165Ev,
  (VTBL_ENTRY)&_ZN6S512C44v166Ev,
  (VTBL_ENTRY)&_ZN6S512C44v167Ev,
  (VTBL_ENTRY)&_ZN6S512C44v168Ev,
  (VTBL_ENTRY)&_ZN6S512C44v169Ev,
  (VTBL_ENTRY)&_ZN6S512C44v170Ev,
  (VTBL_ENTRY)&_ZN6S512C44v171Ev,
  (VTBL_ENTRY)&_ZN6S512C44v172Ev,
  (VTBL_ENTRY)&_ZN6S512C44v173Ev,
  (VTBL_ENTRY)&_ZN6S512C44v174Ev,
  (VTBL_ENTRY)&_ZN6S512C44v175Ev,
  (VTBL_ENTRY)&_ZN6S512C44v176Ev,
  (VTBL_ENTRY)&_ZN6S512C44v177Ev,
  (VTBL_ENTRY)&_ZN6S512C44v178Ev,
  (VTBL_ENTRY)&_ZN6S512C44v179Ev,
  (VTBL_ENTRY)&_ZN6S512C44v180Ev,
  (VTBL_ENTRY)&_ZN6S512C44v181Ev,
  (VTBL_ENTRY)&_ZN6S512C44v182Ev,
  (VTBL_ENTRY)&_ZN6S512C44v183Ev,
  (VTBL_ENTRY)&_ZN6S512C44v184Ev,
  (VTBL_ENTRY)&_ZN6S512C44v185Ev,
  (VTBL_ENTRY)&_ZN6S512C44v186Ev,
  (VTBL_ENTRY)&_ZN6S512C44v187Ev,
  (VTBL_ENTRY)&_ZN6S512C44v188Ev,
  (VTBL_ENTRY)&_ZN6S512C44v189Ev,
  (VTBL_ENTRY)&_ZN6S512C44v190Ev,
  (VTBL_ENTRY)&_ZN6S512C44v191Ev,
  (VTBL_ENTRY)&_ZN6S512C44v192Ev,
  (VTBL_ENTRY)&_ZN6S512C44v193Ev,
  (VTBL_ENTRY)&_ZN6S512C44v194Ev,
  (VTBL_ENTRY)&_ZN6S512C44v195Ev,
  (VTBL_ENTRY)&_ZN6S512C44v196Ev,
  (VTBL_ENTRY)&_ZN6S512C44v197Ev,
  (VTBL_ENTRY)&_ZN6S512C44v198Ev,
  (VTBL_ENTRY)&_ZN6S512C44v199Ev,
  (VTBL_ENTRY)&_ZN6S512C44v200Ev,
  (VTBL_ENTRY)&_ZN6S512C44v201Ev,
  (VTBL_ENTRY)&_ZN6S512C44v202Ev,
  (VTBL_ENTRY)&_ZN6S512C44v203Ev,
  (VTBL_ENTRY)&_ZN6S512C44v204Ev,
  (VTBL_ENTRY)&_ZN6S512C44v205Ev,
  (VTBL_ENTRY)&_ZN6S512C44v206Ev,
  (VTBL_ENTRY)&_ZN6S512C44v207Ev,
  (VTBL_ENTRY)&_ZN6S512C44v208Ev,
  (VTBL_ENTRY)&_ZN6S512C44v209Ev,
  (VTBL_ENTRY)&_ZN6S512C44v210Ev,
  (VTBL_ENTRY)&_ZN6S512C44v211Ev,
  (VTBL_ENTRY)&_ZN6S512C44v212Ev,
  (VTBL_ENTRY)&_ZN6S512C44v213Ev,
  (VTBL_ENTRY)&_ZN6S512C44v214Ev,
  (VTBL_ENTRY)&_ZN6S512C44v215Ev,
  (VTBL_ENTRY)&_ZN6S512C44v216Ev,
  (VTBL_ENTRY)&_ZN6S512C44v217Ev,
  (VTBL_ENTRY)&_ZN6S512C44v218Ev,
  (VTBL_ENTRY)&_ZN6S512C44v219Ev,
  (VTBL_ENTRY)&_ZN6S512C44v220Ev,
  (VTBL_ENTRY)&_ZN6S512C44v221Ev,
  (VTBL_ENTRY)&_ZN6S512C44v222Ev,
  (VTBL_ENTRY)&_ZN6S512C44v223Ev,
  (VTBL_ENTRY)&_ZN6S512C44v224Ev,
  (VTBL_ENTRY)&_ZN6S512C44v225Ev,
  (VTBL_ENTRY)&_ZN6S512C44v226Ev,
  (VTBL_ENTRY)&_ZN6S512C44v227Ev,
  (VTBL_ENTRY)&_ZN6S512C44v228Ev,
  (VTBL_ENTRY)&_ZN6S512C44v229Ev,
  (VTBL_ENTRY)&_ZN6S512C44v230Ev,
  (VTBL_ENTRY)&_ZN6S512C44v231Ev,
  (VTBL_ENTRY)&_ZN6S512C34v232Ev,
  (VTBL_ENTRY)&_ZN6S512C34v233Ev,
  (VTBL_ENTRY)&_ZN6S512C34v234Ev,
  (VTBL_ENTRY)&_ZN6S512C34v235Ev,
  (VTBL_ENTRY)&_ZN6S512C34v236Ev,
  (VTBL_ENTRY)&_ZN6S512C34v237Ev,
  (VTBL_ENTRY)&_ZN6S512C34v238Ev,
  (VTBL_ENTRY)&_ZN6S512C34v239Ev,
  (VTBL_ENTRY)&_ZN6S512C34v240Ev,
  (VTBL_ENTRY)&_ZN6S512C34v241Ev,
  (VTBL_ENTRY)&_ZN6S512C34v242Ev,
  (VTBL_ENTRY)&_ZN6S512C34v243Ev,
  (VTBL_ENTRY)&_ZN6S512C34v244Ev,
  (VTBL_ENTRY)&_ZN6S512C34v245Ev,
  (VTBL_ENTRY)&_ZN6S512C34v246Ev,
  (VTBL_ENTRY)&_ZN6S512C34v247Ev,
  (VTBL_ENTRY)&_ZN6S512C34v248Ev,
  (VTBL_ENTRY)&_ZN6S512C34v249Ev,
  (VTBL_ENTRY)&_ZN6S512C34v250Ev,
  (VTBL_ENTRY)&_ZN6S512C34v251Ev,
  (VTBL_ENTRY)&_ZN6S512C34v252Ev,
  (VTBL_ENTRY)&_ZN6S512C34v253Ev,
  (VTBL_ENTRY)&_ZN6S512C34v254Ev,
  (VTBL_ENTRY)&_ZN6S512C34v255Ev,
  (VTBL_ENTRY)&_ZN6S512C34v256Ev,
  (VTBL_ENTRY)&_ZN6S512C34v257Ev,
  (VTBL_ENTRY)&_ZN6S512C34v258Ev,
  (VTBL_ENTRY)&_ZN6S512C34v259Ev,
  (VTBL_ENTRY)&_ZN6S512C34v260Ev,
  (VTBL_ENTRY)&_ZN6S512C34v261Ev,
  (VTBL_ENTRY)&_ZN6S512C34v262Ev,
  (VTBL_ENTRY)&_ZN6S512C34v263Ev,
  (VTBL_ENTRY)&_ZN6S512C34v264Ev,
  (VTBL_ENTRY)&_ZN6S512C34v265Ev,
  (VTBL_ENTRY)&_ZN6S512C34v266Ev,
  (VTBL_ENTRY)&_ZN6S512C34v267Ev,
  (VTBL_ENTRY)&_ZN6S512C34v268Ev,
  (VTBL_ENTRY)&_ZN6S512C34v269Ev,
  (VTBL_ENTRY)&_ZN6S512C34v270Ev,
  (VTBL_ENTRY)&_ZN6S512C34v271Ev,
  (VTBL_ENTRY)&_ZN6S512C34v272Ev,
  (VTBL_ENTRY)&_ZN6S512C34v273Ev,
  (VTBL_ENTRY)&_ZN6S512C34v274Ev,
  (VTBL_ENTRY)&_ZN6S512C34v275Ev,
  (VTBL_ENTRY)&_ZN6S512C34v276Ev,
  (VTBL_ENTRY)&_ZN6S512C34v277Ev,
  (VTBL_ENTRY)&_ZN6S512C34v278Ev,
  (VTBL_ENTRY)&_ZN6S512C34v279Ev,
  (VTBL_ENTRY)&_ZN6S512C34v280Ev,
  (VTBL_ENTRY)&_ZN6S512C34v281Ev,
};
extern VTBL_ENTRY _ZTI6S512C3[];
extern  VTBL_ENTRY _ZTV6S512C3[];
Class_Descriptor cd_S512C3 = {  "S512C3", // class name
  bases_S512C3, 2,
  &(vtc_S512C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(920,692), // object size
  NSPAIRA(_ZTI6S512C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S512C3),261, //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  S512C2  : S512C3 {
  unsigned int s512c2f0:1;
  unsigned int s512c2f1:1;
  unsigned int s512c2f2:1;
  int s512c2f3;
  void *s512c2f4[2];
  int s512c2f5;
  void *s512c2f6;
  virtual  ~S512C2(); // _ZN6S512C2D1Ev
  virtual void  v282(); // _ZN6S512C24v282Ev
  virtual void  v283(); // _ZN6S512C24v283Ev
  virtual void  v284(); // _ZN6S512C24v284Ev
  virtual void  v285(); // _ZN6S512C24v285Ev
  virtual void  v286(); // _ZN6S512C24v286Ev
  virtual void  v287(); // _ZN6S512C24v287Ev
  S512C2(); // tgen
};
//SIG(-1 S512C2) 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] FC10{ BC11{ BC8}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC5 FC5 FC5 FC12{ BC13{ BC8}} FC12 Fi Fp[2] FC14{ m Fi[3]} FC15{ m Fi[3]} FC14 FC14 Fp FC5 FC12 FC14 FC15 Fi FC14 FC14 Fp Fi Fc FC15 FC15 Fp Fi Fp FC16{ BC17{ BC8}} FC18{ BC19{ BC8}} FC20{ BC21{ BC8}}} vd v214 v215 v216 v217 v218 v219 v220 v221 v222 v223 v224 v225 v226 v227 v228 v229 v230 v231 v232 v233 v234 v235 v236 v237 v238 v239 v240 v241 v242 v243 v244 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 v258 v259 v260 v261 v262 v263 Fp[2] Fi Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fc Fi[2] Fp FC14 FC14 Fp[5] FC14 Fp FC22{ BC23{ BC8}} Fp[2] FC14 Fp Fi[2] Fp Fi FC14 FC14 FC14 Fp[2] Fi FC14 Fi[4] Fp[2] FC24{ BC25{ BC8}} Fi FC15} vd v1 v2 v3 v4 v5 v6 Fi:1 Fi:1 Fi:1 Fi Fp[2] Fi Fp}


 S512C2 ::~S512C2(){ note_dtor("S512C2", this);}
void  S512C2 ::v282(){vfunc_called(this, "_ZN6S512C24v282Ev");}
void  S512C2 ::v283(){vfunc_called(this, "_ZN6S512C24v283Ev");}
void  S512C2 ::v284(){vfunc_called(this, "_ZN6S512C24v284Ev");}
void  S512C2 ::v285(){vfunc_called(this, "_ZN6S512C24v285Ev");}
void  S512C2 ::v286(){vfunc_called(this, "_ZN6S512C24v286Ev");}
void  S512C2 ::v287(){vfunc_called(this, "_ZN6S512C24v287Ev");}
S512C2 ::S512C2(){ note_ctor("S512C2", this);} // tgen

static void Test_S512C2()
{
  extern Class_Descriptor cd_S512C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(121,180)];
    init_test(&cd_S512C2, buf);
    S512C2 *dp, &lv = *(dp=new (buf) S512C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(960,716), "sizeof(S512C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S512C2)");
    check_base_class_offset(lv, (S512C5*)(S512C4*)(S512C3*), 0, "S512C2");
    check_base_class_offset(lv, (S512C4*)(S512C3*), 0, "S512C2");
    check_base_class_offset(lv, (S512C3*), 0, "S512C2");
    set_bf_and_test(lv, s512c2f0, ABISELECT(920,692), 0, 1, 1, "S512C2");
    set_bf_and_test(lv, s512c2f1, ABISELECT(920,692), 1, 1, 1, "S512C2");
    set_bf_and_test(lv, s512c2f2, ABISELECT(920,692), 2, 1, 1, "S512C2");
    check_field_offset(lv, s512c2f3, ABISELECT(924,696), "S512C2.s512c2f3");
    check_field_offset(lv, s512c2f4, ABISELECT(928,700), "S512C2.s512c2f4");
    check_field_offset(lv, s512c2f5, ABISELECT(944,708), "S512C2.s512c2f5");
    check_field_offset(lv, s512c2f6, ABISELECT(952,712), "S512C2.s512c2f6");
    test_class_info(&lv, &cd_S512C2);
    dp->~S512C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS512C2(Test_S512C2, "S512C2", ABISELECT(960,716));

#else // __cplusplus

extern void _ZN6S512C2C1Ev();
extern void _ZN6S512C2D1Ev();
Name_Map name_map_S512C2[] = {
  NSPAIR(_ZN6S512C2C1Ev),
  NSPAIR(_ZN6S512C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S512C5;
extern VTBL_ENTRY _ZTI6S512C5[];
extern  VTBL_ENTRY _ZTV6S512C5[];
extern Class_Descriptor cd_S512C4;
extern VTBL_ENTRY _ZTI6S512C4[];
extern  VTBL_ENTRY _ZTV6S512C4[];
extern Class_Descriptor cd_S512C3;
extern VTBL_ENTRY _ZTI6S512C3[];
extern  VTBL_ENTRY _ZTV6S512C3[];
static Base_Class bases_S512C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S512C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S512C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S512C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S512C2[];
extern void _ZN6S512C2D1Ev();
extern void _ZN6S512C2D0Ev();
extern void _ZN6S512C53v25Ev();
extern void _ZN6S512C53v26Ev();
extern void _ZN6S512C53v27Ev();
extern void _ZN6S512C53v28Ev();
extern void _ZN6S512C53v29Ev();
extern void _ZN6S512C53v30Ev();
extern void _ZN6S512C53v31Ev();
extern void _ZN6S512C53v32Ev();
extern void _ZN6S512C53v33Ev();
extern void _ZN6S512C53v34Ev();
extern void _ZN6S512C53v35Ev();
extern void _ZN6S512C53v36Ev();
extern void _ZN6S512C53v37Ev();
extern void _ZN6S512C53v38Ev();
extern void _ZN6S512C53v39Ev();
extern void _ZN6S512C53v40Ev();
extern void _ZN6S512C53v41Ev();
extern void _ZN6S512C53v42Ev();
extern void _ZN6S512C53v43Ev();
extern void _ZN6S512C53v44Ev();
extern void _ZN6S512C53v45Ev();
extern void _ZN6S512C53v46Ev();
extern void _ZN6S512C53v47Ev();
extern void _ZN6S512C53v48Ev();
extern void _ZN6S512C53v49Ev();
extern void _ZN6S512C53v50Ev();
extern void _ZN6S512C53v51Ev();
extern void _ZN6S512C53v52Ev();
extern void _ZN6S512C53v53Ev();
extern void _ZN6S512C53v54Ev();
extern void _ZN6S512C53v55Ev();
extern void _ZN6S512C53v56Ev();
extern void _ZN6S512C53v57Ev();
extern void _ZN6S512C53v58Ev();
extern void _ZN6S512C53v59Ev();
extern void _ZN6S512C53v60Ev();
extern void _ZN6S512C53v61Ev();
extern void _ZN6S512C53v62Ev();
extern void _ZN6S512C53v63Ev();
extern void _ZN6S512C53v64Ev();
extern void _ZN6S512C53v65Ev();
extern void _ZN6S512C53v66Ev();
extern void _ZN6S512C53v67Ev();
extern void _ZN6S512C53v68Ev();
extern void _ZN6S512C53v69Ev();
extern void _ZN6S512C53v70Ev();
extern void _ZN6S512C53v71Ev();
extern void _ZN6S512C53v72Ev();
extern void _ZN6S512C53v73Ev();
extern void _ZN6S512C53v74Ev();
extern void _ZN6S512C53v75Ev();
extern void _ZN6S512C53v76Ev();
extern void _ZN6S512C53v77Ev();
extern void _ZN6S512C53v78Ev();
extern void _ZN6S512C53v79Ev();
extern void _ZN6S512C53v80Ev();
extern void _ZN6S512C53v81Ev();
extern void _ZN6S512C53v82Ev();
extern void _ZN6S512C53v83Ev();
extern void _ZN6S512C53v84Ev();
extern void _ZN6S512C53v85Ev();
extern void _ZN6S512C53v86Ev();
extern void _ZN6S512C53v87Ev();
extern void _ZN6S512C53v88Ev();
extern void _ZN6S512C43v89Ev();
extern void _ZN6S512C43v90Ev();
extern void _ZN6S512C43v91Ev();
extern void _ZN6S512C43v92Ev();
extern void _ZN6S512C43v93Ev();
extern void _ZN6S512C43v94Ev();
extern void _ZN6S512C43v95Ev();
extern void _ZN6S512C43v96Ev();
extern void _ZN6S512C43v97Ev();
extern void _ZN6S512C43v98Ev();
extern void _ZN6S512C43v99Ev();
extern void _ZN6S512C44v100Ev();
extern void _ZN6S512C44v101Ev();
extern void _ZN6S512C44v102Ev();
extern void _ZN6S512C44v103Ev();
extern void _ZN6S512C44v104Ev();
extern void _ZN6S512C44v105Ev();
extern void _ZN6S512C44v106Ev();
extern void _ZN6S512C44v107Ev();
extern void _ZN6S512C44v108Ev();
extern void _ZN6S512C44v109Ev();
extern void _ZN6S512C44v110Ev();
extern void _ZN6S512C44v111Ev();
extern void _ZN6S512C44v112Ev();
extern void _ZN6S512C44v113Ev();
extern void _ZN6S512C44v114Ev();
extern void _ZN6S512C44v115Ev();
extern void _ZN6S512C44v116Ev();
extern void _ZN6S512C44v117Ev();
extern void _ZN6S512C44v118Ev();
extern void _ZN6S512C44v119Ev();
extern void _ZN6S512C44v120Ev();
extern void _ZN6S512C44v121Ev();
extern void _ZN6S512C44v122Ev();
extern void _ZN6S512C44v123Ev();
extern void _ZN6S512C44v124Ev();
extern void _ZN6S512C44v125Ev();
extern void _ZN6S512C44v126Ev();
extern void _ZN6S512C44v127Ev();
extern void _ZN6S512C44v128Ev();
extern void _ZN6S512C44v129Ev();
extern void _ZN6S512C44v130Ev();
extern void _ZN6S512C44v131Ev();
extern void _ZN6S512C44v132Ev();
extern void _ZN6S512C44v133Ev();
extern void _ZN6S512C44v134Ev();
extern void _ZN6S512C44v135Ev();
extern void _ZN6S512C44v136Ev();
extern void _ZN6S512C44v137Ev();
extern void _ZN6S512C44v138Ev();
extern void _ZN6S512C44v139Ev();
extern void _ZN6S512C44v140Ev();
extern void _ZN6S512C44v141Ev();
extern void _ZN6S512C44v142Ev();
extern void _ZN6S512C44v143Ev();
extern void _ZN6S512C44v144Ev();
extern void _ZN6S512C44v145Ev();
extern void _ZN6S512C44v146Ev();
extern void _ZN6S512C44v147Ev();
extern void _ZN6S512C44v148Ev();
extern void _ZN6S512C44v149Ev();
extern void _ZN6S512C44v150Ev();
extern void _ZN6S512C44v151Ev();
extern void _ZN6S512C44v152Ev();
extern void _ZN6S512C44v153Ev();
extern void _ZN6S512C44v154Ev();
extern void _ZN6S512C44v155Ev();
extern void _ZN6S512C44v156Ev();
extern void _ZN6S512C44v157Ev();
extern void _ZN6S512C44v158Ev();
extern void _ZN6S512C44v159Ev();
extern void _ZN6S512C44v160Ev();
extern void _ZN6S512C44v161Ev();
extern void _ZN6S512C44v162Ev();
extern void _ZN6S512C44v163Ev();
extern void _ZN6S512C44v164Ev();
extern void _ZN6S512C44v165Ev();
extern void _ZN6S512C44v166Ev();
extern void _ZN6S512C44v167Ev();
extern void _ZN6S512C44v168Ev();
extern void _ZN6S512C44v169Ev();
extern void _ZN6S512C44v170Ev();
extern void _ZN6S512C44v171Ev();
extern void _ZN6S512C44v172Ev();
extern void _ZN6S512C44v173Ev();
extern void _ZN6S512C44v174Ev();
extern void _ZN6S512C44v175Ev();
extern void _ZN6S512C44v176Ev();
extern void _ZN6S512C44v177Ev();
extern void _ZN6S512C44v178Ev();
extern void _ZN6S512C44v179Ev();
extern void _ZN6S512C44v180Ev();
extern void _ZN6S512C44v181Ev();
extern void _ZN6S512C44v182Ev();
extern void _ZN6S512C44v183Ev();
extern void _ZN6S512C44v184Ev();
extern void _ZN6S512C44v185Ev();
extern void _ZN6S512C44v186Ev();
extern void _ZN6S512C44v187Ev();
extern void _ZN6S512C44v188Ev();
extern void _ZN6S512C44v189Ev();
extern void _ZN6S512C44v190Ev();
extern void _ZN6S512C44v191Ev();
extern void _ZN6S512C44v192Ev();
extern void _ZN6S512C44v193Ev();
extern void _ZN6S512C44v194Ev();
extern void _ZN6S512C44v195Ev();
extern void _ZN6S512C44v196Ev();
extern void _ZN6S512C44v197Ev();
extern void _ZN6S512C44v198Ev();
extern void _ZN6S512C44v199Ev();
extern void _ZN6S512C44v200Ev();
extern void _ZN6S512C44v201Ev();
extern void _ZN6S512C44v202Ev();
extern void _ZN6S512C44v203Ev();
extern void _ZN6S512C44v204Ev();
extern void _ZN6S512C44v205Ev();
extern void _ZN6S512C44v206Ev();
extern void _ZN6S512C44v207Ev();
extern void _ZN6S512C44v208Ev();
extern void _ZN6S512C44v209Ev();
extern void _ZN6S512C44v210Ev();
extern void _ZN6S512C44v211Ev();
extern void _ZN6S512C44v212Ev();
extern void _ZN6S512C44v213Ev();
extern void _ZN6S512C44v214Ev();
extern void _ZN6S512C44v215Ev();
extern void _ZN6S512C44v216Ev();
extern void _ZN6S512C44v217Ev();
extern void _ZN6S512C44v218Ev();
extern void _ZN6S512C44v219Ev();
extern void _ZN6S512C44v220Ev();
extern void _ZN6S512C44v221Ev();
extern void _ZN6S512C44v222Ev();
extern void _ZN6S512C44v223Ev();
extern void _ZN6S512C44v224Ev();
extern void _ZN6S512C44v225Ev();
extern void _ZN6S512C44v226Ev();
extern void _ZN6S512C44v227Ev();
extern void _ZN6S512C44v228Ev();
extern void _ZN6S512C44v229Ev();
extern void _ZN6S512C44v230Ev();
extern void _ZN6S512C44v231Ev();
extern void _ZN6S512C34v232Ev();
extern void _ZN6S512C34v233Ev();
extern void _ZN6S512C34v234Ev();
extern void _ZN6S512C34v235Ev();
extern void _ZN6S512C34v236Ev();
extern void _ZN6S512C34v237Ev();
extern void _ZN6S512C34v238Ev();
extern void _ZN6S512C34v239Ev();
extern void _ZN6S512C34v240Ev();
extern void _ZN6S512C34v241Ev();
extern void _ZN6S512C34v242Ev();
extern void _ZN6S512C34v243Ev();
extern void _ZN6S512C34v244Ev();
extern void _ZN6S512C34v245Ev();
extern void _ZN6S512C34v246Ev();
extern void _ZN6S512C34v247Ev();
extern void _ZN6S512C34v248Ev();
extern void _ZN6S512C34v249Ev();
extern void _ZN6S512C34v250Ev();
extern void _ZN6S512C34v251Ev();
extern void _ZN6S512C34v252Ev();
extern void _ZN6S512C34v253Ev();
extern void _ZN6S512C34v254Ev();
extern void _ZN6S512C34v255Ev();
extern void _ZN6S512C34v256Ev();
extern void _ZN6S512C34v257Ev();
extern void _ZN6S512C34v258Ev();
extern void _ZN6S512C34v259Ev();
extern void _ZN6S512C34v260Ev();
extern void _ZN6S512C34v261Ev();
extern void _ZN6S512C34v262Ev();
extern void _ZN6S512C34v263Ev();
extern void _ZN6S512C34v264Ev();
extern void _ZN6S512C34v265Ev();
extern void _ZN6S512C34v266Ev();
extern void _ZN6S512C34v267Ev();
extern void _ZN6S512C34v268Ev();
extern void _ZN6S512C34v269Ev();
extern void _ZN6S512C34v270Ev();
extern void _ZN6S512C34v271Ev();
extern void _ZN6S512C34v272Ev();
extern void _ZN6S512C34v273Ev();
extern void _ZN6S512C34v274Ev();
extern void _ZN6S512C34v275Ev();
extern void _ZN6S512C34v276Ev();
extern void _ZN6S512C34v277Ev();
extern void _ZN6S512C34v278Ev();
extern void _ZN6S512C34v279Ev();
extern void _ZN6S512C34v280Ev();
extern void _ZN6S512C34v281Ev();
extern void _ZN6S512C24v282Ev();
extern void _ZN6S512C24v283Ev();
extern void _ZN6S512C24v284Ev();
extern void _ZN6S512C24v285Ev();
extern void _ZN6S512C24v286Ev();
extern void _ZN6S512C24v287Ev();
static  VTBL_ENTRY vtc_S512C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S512C2[0]),
  (VTBL_ENTRY)&_ZN6S512C2D1Ev,
  (VTBL_ENTRY)&_ZN6S512C2D0Ev,
  (VTBL_ENTRY)&_ZN6S512C53v25Ev,
  (VTBL_ENTRY)&_ZN6S512C53v26Ev,
  (VTBL_ENTRY)&_ZN6S512C53v27Ev,
  (VTBL_ENTRY)&_ZN6S512C53v28Ev,
  (VTBL_ENTRY)&_ZN6S512C53v29Ev,
  (VTBL_ENTRY)&_ZN6S512C53v30Ev,
  (VTBL_ENTRY)&_ZN6S512C53v31Ev,
  (VTBL_ENTRY)&_ZN6S512C53v32Ev,
  (VTBL_ENTRY)&_ZN6S512C53v33Ev,
  (VTBL_ENTRY)&_ZN6S512C53v34Ev,
  (VTBL_ENTRY)&_ZN6S512C53v35Ev,
  (VTBL_ENTRY)&_ZN6S512C53v36Ev,
  (VTBL_ENTRY)&_ZN6S512C53v37Ev,
  (VTBL_ENTRY)&_ZN6S512C53v38Ev,
  (VTBL_ENTRY)&_ZN6S512C53v39Ev,
  (VTBL_ENTRY)&_ZN6S512C53v40Ev,
  (VTBL_ENTRY)&_ZN6S512C53v41Ev,
  (VTBL_ENTRY)&_ZN6S512C53v42Ev,
  (VTBL_ENTRY)&_ZN6S512C53v43Ev,
  (VTBL_ENTRY)&_ZN6S512C53v44Ev,
  (VTBL_ENTRY)&_ZN6S512C53v45Ev,
  (VTBL_ENTRY)&_ZN6S512C53v46Ev,
  (VTBL_ENTRY)&_ZN6S512C53v47Ev,
  (VTBL_ENTRY)&_ZN6S512C53v48Ev,
  (VTBL_ENTRY)&_ZN6S512C53v49Ev,
  (VTBL_ENTRY)&_ZN6S512C53v50Ev,
  (VTBL_ENTRY)&_ZN6S512C53v51Ev,
  (VTBL_ENTRY)&_ZN6S512C53v52Ev,
  (VTBL_ENTRY)&_ZN6S512C53v53Ev,
  (VTBL_ENTRY)&_ZN6S512C53v54Ev,
  (VTBL_ENTRY)&_ZN6S512C53v55Ev,
  (VTBL_ENTRY)&_ZN6S512C53v56Ev,
  (VTBL_ENTRY)&_ZN6S512C53v57Ev,
  (VTBL_ENTRY)&_ZN6S512C53v58Ev,
  (VTBL_ENTRY)&_ZN6S512C53v59Ev,
  (VTBL_ENTRY)&_ZN6S512C53v60Ev,
  (VTBL_ENTRY)&_ZN6S512C53v61Ev,
  (VTBL_ENTRY)&_ZN6S512C53v62Ev,
  (VTBL_ENTRY)&_ZN6S512C53v63Ev,
  (VTBL_ENTRY)&_ZN6S512C53v64Ev,
  (VTBL_ENTRY)&_ZN6S512C53v65Ev,
  (VTBL_ENTRY)&_ZN6S512C53v66Ev,
  (VTBL_ENTRY)&_ZN6S512C53v67Ev,
  (VTBL_ENTRY)&_ZN6S512C53v68Ev,
  (VTBL_ENTRY)&_ZN6S512C53v69Ev,
  (VTBL_ENTRY)&_ZN6S512C53v70Ev,
  (VTBL_ENTRY)&_ZN6S512C53v71Ev,
  (VTBL_ENTRY)&_ZN6S512C53v72Ev,
  (VTBL_ENTRY)&_ZN6S512C53v73Ev,
  (VTBL_ENTRY)&_ZN6S512C53v74Ev,
  (VTBL_ENTRY)&_ZN6S512C53v75Ev,
  (VTBL_ENTRY)&_ZN6S512C53v76Ev,
  (VTBL_ENTRY)&_ZN6S512C53v77Ev,
  (VTBL_ENTRY)&_ZN6S512C53v78Ev,
  (VTBL_ENTRY)&_ZN6S512C53v79Ev,
  (VTBL_ENTRY)&_ZN6S512C53v80Ev,
  (VTBL_ENTRY)&_ZN6S512C53v81Ev,
  (VTBL_ENTRY)&_ZN6S512C53v82Ev,
  (VTBL_ENTRY)&_ZN6S512C53v83Ev,
  (VTBL_ENTRY)&_ZN6S512C53v84Ev,
  (VTBL_ENTRY)&_ZN6S512C53v85Ev,
  (VTBL_ENTRY)&_ZN6S512C53v86Ev,
  (VTBL_ENTRY)&_ZN6S512C53v87Ev,
  (VTBL_ENTRY)&_ZN6S512C53v88Ev,
  (VTBL_ENTRY)&_ZN6S512C43v89Ev,
  (VTBL_ENTRY)&_ZN6S512C43v90Ev,
  (VTBL_ENTRY)&_ZN6S512C43v91Ev,
  (VTBL_ENTRY)&_ZN6S512C43v92Ev,
  (VTBL_ENTRY)&_ZN6S512C43v93Ev,
  (VTBL_ENTRY)&_ZN6S512C43v94Ev,
  (VTBL_ENTRY)&_ZN6S512C43v95Ev,
  (VTBL_ENTRY)&_ZN6S512C43v96Ev,
  (VTBL_ENTRY)&_ZN6S512C43v97Ev,
  (VTBL_ENTRY)&_ZN6S512C43v98Ev,
  (VTBL_ENTRY)&_ZN6S512C43v99Ev,
  (VTBL_ENTRY)&_ZN6S512C44v100Ev,
  (VTBL_ENTRY)&_ZN6S512C44v101Ev,
  (VTBL_ENTRY)&_ZN6S512C44v102Ev,
  (VTBL_ENTRY)&_ZN6S512C44v103Ev,
  (VTBL_ENTRY)&_ZN6S512C44v104Ev,
  (VTBL_ENTRY)&_ZN6S512C44v105Ev,
  (VTBL_ENTRY)&_ZN6S512C44v106Ev,
  (VTBL_ENTRY)&_ZN6S512C44v107Ev,
  (VTBL_ENTRY)&_ZN6S512C44v108Ev,
  (VTBL_ENTRY)&_ZN6S512C44v109Ev,
  (VTBL_ENTRY)&_ZN6S512C44v110Ev,
  (VTBL_ENTRY)&_ZN6S512C44v111Ev,
  (VTBL_ENTRY)&_ZN6S512C44v112Ev,
  (VTBL_ENTRY)&_ZN6S512C44v113Ev,
  (VTBL_ENTRY)&_ZN6S512C44v114Ev,
  (VTBL_ENTRY)&_ZN6S512C44v115Ev,
  (VTBL_ENTRY)&_ZN6S512C44v116Ev,
  (VTBL_ENTRY)&_ZN6S512C44v117Ev,
  (VTBL_ENTRY)&_ZN6S512C44v118Ev,
  (VTBL_ENTRY)&_ZN6S512C44v119Ev,
  (VTBL_ENTRY)&_ZN6S512C44v120Ev,
  (VTBL_ENTRY)&_ZN6S512C44v121Ev,
  (VTBL_ENTRY)&_ZN6S512C44v122Ev,
  (VTBL_ENTRY)&_ZN6S512C44v123Ev,
  (VTBL_ENTRY)&_ZN6S512C44v124Ev,
  (VTBL_ENTRY)&_ZN6S512C44v125Ev,
  (VTBL_ENTRY)&_ZN6S512C44v126Ev,
  (VTBL_ENTRY)&_ZN6S512C44v127Ev,
  (VTBL_ENTRY)&_ZN6S512C44v128Ev,
  (VTBL_ENTRY)&_ZN6S512C44v129Ev,
  (VTBL_ENTRY)&_ZN6S512C44v130Ev,
  (VTBL_ENTRY)&_ZN6S512C44v131Ev,
  (VTBL_ENTRY)&_ZN6S512C44v132Ev,
  (VTBL_ENTRY)&_ZN6S512C44v133Ev,
  (VTBL_ENTRY)&_ZN6S512C44v134Ev,
  (VTBL_ENTRY)&_ZN6S512C44v135Ev,
  (VTBL_ENTRY)&_ZN6S512C44v136Ev,
  (VTBL_ENTRY)&_ZN6S512C44v137Ev,
  (VTBL_ENTRY)&_ZN6S512C44v138Ev,
  (VTBL_ENTRY)&_ZN6S512C44v139Ev,
  (VTBL_ENTRY)&_ZN6S512C44v140Ev,
  (VTBL_ENTRY)&_ZN6S512C44v141Ev,
  (VTBL_ENTRY)&_ZN6S512C44v142Ev,
  (VTBL_ENTRY)&_ZN6S512C44v143Ev,
  (VTBL_ENTRY)&_ZN6S512C44v144Ev,
  (VTBL_ENTRY)&_ZN6S512C44v145Ev,
  (VTBL_ENTRY)&_ZN6S512C44v146Ev,
  (VTBL_ENTRY)&_ZN6S512C44v147Ev,
  (VTBL_ENTRY)&_ZN6S512C44v148Ev,
  (VTBL_ENTRY)&_ZN6S512C44v149Ev,
  (VTBL_ENTRY)&_ZN6S512C44v150Ev,
  (VTBL_ENTRY)&_ZN6S512C44v151Ev,
  (VTBL_ENTRY)&_ZN6S512C44v152Ev,
  (VTBL_ENTRY)&_ZN6S512C44v153Ev,
  (VTBL_ENTRY)&_ZN6S512C44v154Ev,
  (VTBL_ENTRY)&_ZN6S512C44v155Ev,
  (VTBL_ENTRY)&_ZN6S512C44v156Ev,
  (VTBL_ENTRY)&_ZN6S512C44v157Ev,
  (VTBL_ENTRY)&_ZN6S512C44v158Ev,
  (VTBL_ENTRY)&_ZN6S512C44v159Ev,
  (VTBL_ENTRY)&_ZN6S512C44v160Ev,
  (VTBL_ENTRY)&_ZN6S512C44v161Ev,
  (VTBL_ENTRY)&_ZN6S512C44v162Ev,
  (VTBL_ENTRY)&_ZN6S512C44v163Ev,
  (VTBL_ENTRY)&_ZN6S512C44v164Ev,
  (VTBL_ENTRY)&_ZN6S512C44v165Ev,
  (VTBL_ENTRY)&_ZN6S512C44v166Ev,
  (VTBL_ENTRY)&_ZN6S512C44v167Ev,
  (VTBL_ENTRY)&_ZN6S512C44v168Ev,
  (VTBL_ENTRY)&_ZN6S512C44v169Ev,
  (VTBL_ENTRY)&_ZN6S512C44v170Ev,
  (VTBL_ENTRY)&_ZN6S512C44v171Ev,
  (VTBL_ENTRY)&_ZN6S512C44v172Ev,
  (VTBL_ENTRY)&_ZN6S512C44v173Ev,
  (VTBL_ENTRY)&_ZN6S512C44v174Ev,
  (VTBL_ENTRY)&_ZN6S512C44v175Ev,
  (VTBL_ENTRY)&_ZN6S512C44v176Ev,
  (VTBL_ENTRY)&_ZN6S512C44v177Ev,
  (VTBL_ENTRY)&_ZN6S512C44v178Ev,
  (VTBL_ENTRY)&_ZN6S512C44v179Ev,
  (VTBL_ENTRY)&_ZN6S512C44v180Ev,
  (VTBL_ENTRY)&_ZN6S512C44v181Ev,
  (VTBL_ENTRY)&_ZN6S512C44v182Ev,
  (VTBL_ENTRY)&_ZN6S512C44v183Ev,
  (VTBL_ENTRY)&_ZN6S512C44v184Ev,
  (VTBL_ENTRY)&_ZN6S512C44v185Ev,
  (VTBL_ENTRY)&_ZN6S512C44v186Ev,
  (VTBL_ENTRY)&_ZN6S512C44v187Ev,
  (VTBL_ENTRY)&_ZN6S512C44v188Ev,
  (VTBL_ENTRY)&_ZN6S512C44v189Ev,
  (VTBL_ENTRY)&_ZN6S512C44v190Ev,
  (VTBL_ENTRY)&_ZN6S512C44v191Ev,
  (VTBL_ENTRY)&_ZN6S512C44v192Ev,
  (VTBL_ENTRY)&_ZN6S512C44v193Ev,
  (VTBL_ENTRY)&_ZN6S512C44v194Ev,
  (VTBL_ENTRY)&_ZN6S512C44v195Ev,
  (VTBL_ENTRY)&_ZN6S512C44v196Ev,
  (VTBL_ENTRY)&_ZN6S512C44v197Ev,
  (VTBL_ENTRY)&_ZN6S512C44v198Ev,
  (VTBL_ENTRY)&_ZN6S512C44v199Ev,
  (VTBL_ENTRY)&_ZN6S512C44v200Ev,
  (VTBL_ENTRY)&_ZN6S512C44v201Ev,
  (VTBL_ENTRY)&_ZN6S512C44v202Ev,
  (VTBL_ENTRY)&_ZN6S512C44v203Ev,
  (VTBL_ENTRY)&_ZN6S512C44v204Ev,
  (VTBL_ENTRY)&_ZN6S512C44v205Ev,
  (VTBL_ENTRY)&_ZN6S512C44v206Ev,
  (VTBL_ENTRY)&_ZN6S512C44v207Ev,
  (VTBL_ENTRY)&_ZN6S512C44v208Ev,
  (VTBL_ENTRY)&_ZN6S512C44v209Ev,
  (VTBL_ENTRY)&_ZN6S512C44v210Ev,
  (VTBL_ENTRY)&_ZN6S512C44v211Ev,
  (VTBL_ENTRY)&_ZN6S512C44v212Ev,
  (VTBL_ENTRY)&_ZN6S512C44v213Ev,
  (VTBL_ENTRY)&_ZN6S512C44v214Ev,
  (VTBL_ENTRY)&_ZN6S512C44v215Ev,
  (VTBL_ENTRY)&_ZN6S512C44v216Ev,
  (VTBL_ENTRY)&_ZN6S512C44v217Ev,
  (VTBL_ENTRY)&_ZN6S512C44v218Ev,
  (VTBL_ENTRY)&_ZN6S512C44v219Ev,
  (VTBL_ENTRY)&_ZN6S512C44v220Ev,
  (VTBL_ENTRY)&_ZN6S512C44v221Ev,
  (VTBL_ENTRY)&_ZN6S512C44v222Ev,
  (VTBL_ENTRY)&_ZN6S512C44v223Ev,
  (VTBL_ENTRY)&_ZN6S512C44v224Ev,
  (VTBL_ENTRY)&_ZN6S512C44v225Ev,
  (VTBL_ENTRY)&_ZN6S512C44v226Ev,
  (VTBL_ENTRY)&_ZN6S512C44v227Ev,
  (VTBL_ENTRY)&_ZN6S512C44v228Ev,
  (VTBL_ENTRY)&_ZN6S512C44v229Ev,
  (VTBL_ENTRY)&_ZN6S512C44v230Ev,
  (VTBL_ENTRY)&_ZN6S512C44v231Ev,
  (VTBL_ENTRY)&_ZN6S512C34v232Ev,
  (VTBL_ENTRY)&_ZN6S512C34v233Ev,
  (VTBL_ENTRY)&_ZN6S512C34v234Ev,
  (VTBL_ENTRY)&_ZN6S512C34v235Ev,
  (VTBL_ENTRY)&_ZN6S512C34v236Ev,
  (VTBL_ENTRY)&_ZN6S512C34v237Ev,
  (VTBL_ENTRY)&_ZN6S512C34v238Ev,
  (VTBL_ENTRY)&_ZN6S512C34v239Ev,
  (VTBL_ENTRY)&_ZN6S512C34v240Ev,
  (VTBL_ENTRY)&_ZN6S512C34v241Ev,
  (VTBL_ENTRY)&_ZN6S512C34v242Ev,
  (VTBL_ENTRY)&_ZN6S512C34v243Ev,
  (VTBL_ENTRY)&_ZN6S512C34v244Ev,
  (VTBL_ENTRY)&_ZN6S512C34v245Ev,
  (VTBL_ENTRY)&_ZN6S512C34v246Ev,
  (VTBL_ENTRY)&_ZN6S512C34v247Ev,
  (VTBL_ENTRY)&_ZN6S512C34v248Ev,
  (VTBL_ENTRY)&_ZN6S512C34v249Ev,
  (VTBL_ENTRY)&_ZN6S512C34v250Ev,
  (VTBL_ENTRY)&_ZN6S512C34v251Ev,
  (VTBL_ENTRY)&_ZN6S512C34v252Ev,
  (VTBL_ENTRY)&_ZN6S512C34v253Ev,
  (VTBL_ENTRY)&_ZN6S512C34v254Ev,
  (VTBL_ENTRY)&_ZN6S512C34v255Ev,
  (VTBL_ENTRY)&_ZN6S512C34v256Ev,
  (VTBL_ENTRY)&_ZN6S512C34v257Ev,
  (VTBL_ENTRY)&_ZN6S512C34v258Ev,
  (VTBL_ENTRY)&_ZN6S512C34v259Ev,
  (VTBL_ENTRY)&_ZN6S512C34v260Ev,
  (VTBL_ENTRY)&_ZN6S512C34v261Ev,
  (VTBL_ENTRY)&_ZN6S512C34v262Ev,
  (VTBL_ENTRY)&_ZN6S512C34v263Ev,
  (VTBL_ENTRY)&_ZN6S512C34v264Ev,
  (VTBL_ENTRY)&_ZN6S512C34v265Ev,
  (VTBL_ENTRY)&_ZN6S512C34v266Ev,
  (VTBL_ENTRY)&_ZN6S512C34v267Ev,
  (VTBL_ENTRY)&_ZN6S512C34v268Ev,
  (VTBL_ENTRY)&_ZN6S512C34v269Ev,
  (VTBL_ENTRY)&_ZN6S512C34v270Ev,
  (VTBL_ENTRY)&_ZN6S512C34v271Ev,
  (VTBL_ENTRY)&_ZN6S512C34v272Ev,
  (VTBL_ENTRY)&_ZN6S512C34v273Ev,
  (VTBL_ENTRY)&_ZN6S512C34v274Ev,
  (VTBL_ENTRY)&_ZN6S512C34v275Ev,
  (VTBL_ENTRY)&_ZN6S512C34v276Ev,
  (VTBL_ENTRY)&_ZN6S512C34v277Ev,
  (VTBL_ENTRY)&_ZN6S512C34v278Ev,
  (VTBL_ENTRY)&_ZN6S512C34v279Ev,
  (VTBL_ENTRY)&_ZN6S512C34v280Ev,
  (VTBL_ENTRY)&_ZN6S512C34v281Ev,
  (VTBL_ENTRY)&_ZN6S512C24v282Ev,
  (VTBL_ENTRY)&_ZN6S512C24v283Ev,
  (VTBL_ENTRY)&_ZN6S512C24v284Ev,
  (VTBL_ENTRY)&_ZN6S512C24v285Ev,
  (VTBL_ENTRY)&_ZN6S512C24v286Ev,
  (VTBL_ENTRY)&_ZN6S512C24v287Ev,
};
extern VTBL_ENTRY _ZTI6S512C2[];
extern  VTBL_ENTRY _ZTV6S512C2[];
Class_Descriptor cd_S512C2 = {  "S512C2", // class name
  bases_S512C2, 3,
  &(vtc_S512C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(960,716), // object size
  NSPAIRA(_ZTI6S512C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S512C2),267, //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  S512C1  : S512C2 {
  int s512c1f0;
  void *s512c1f1[2];
  ::S48C18 s512c1f2;
  void *s512c1f3;
  int s512c1f4;
  ::S48C18 s512c1f5;
  ::S48C18 s512c1f6;
  int s512c1f7[2];
  unsigned int s512c1f8:1;
  unsigned int s512c1f9:1;
  unsigned int s512c1f10:1;
  unsigned int s512c1f11:1;
  unsigned int s512c1f12:1;
  unsigned int s512c1f13:1;
  unsigned int s512c1f14:1;
  unsigned int s512c1f15:1;
  unsigned int s512c1f16:1;
  unsigned int s512c1f17:1;
  unsigned int s512c1f18:1;
  unsigned int s512c1f19:1;
  unsigned int s512c1f20:1;
  unsigned int s512c1f21:1;
  unsigned int s512c1f22:1;
  unsigned int s512c1f23:1;
  unsigned int s512c1f24:1;
  unsigned int s512c1f25:1;
  unsigned int s512c1f26:1;
  unsigned int s512c1f27:1;
  unsigned int s512c1f28:1;
  unsigned int s512c1f29:1;
  unsigned int s512c1f30:1;
  unsigned int s512c1f31:1;
  unsigned int s512c1f32:1;
  unsigned int s512c1f33:1;
  unsigned int s512c1f34:1;
  unsigned int s512c1f35:1;
  unsigned int s512c1f36:1;
  unsigned int s512c1f37:1;
  unsigned int s512c1f38:1;
  unsigned int s512c1f39:1;
  unsigned int s512c1f40:1;
  unsigned int s512c1f41:1;
  unsigned int s512c1f42:1;
  unsigned int s512c1f43:1;
  unsigned int s512c1f44:1;
  unsigned int s512c1f45:1;
  unsigned int s512c1f46:1;
  unsigned int s512c1f47:1;
  unsigned int s512c1f48:1;
  unsigned int s512c1f49:1;
  unsigned int s512c1f50:1;
  unsigned int s512c1f51:1;
  int s512c1f52[2];
  void *s512c1f53;
  int s512c1f54;
  void *s512c1f55;
  int s512c1f56[4];
  ::S28C9_nt s512c1f57;
  int s512c1f58[2];
  void *s512c1f59[2];
  ::S48C18 s512c1f60;
  int s512c1f61[2];
  void *s512c1f62;
  int s512c1f63[3];
  void *s512c1f64;
  int s512c1f65[12];
  void *s512c1f66;
  int s512c1f67[3];
  ::S28C31_nt s512c1f68;
  ::S28C31_nt s512c1f69;
  void *s512c1f70[3];
  int s512c1f71;
  void *s512c1f72[4];
  ::S48C18 s512c1f73;
  int s512c1f74[3];
  void *s512c1f75;
  int s512c1f76;
  void *s512c1f77;
  int s512c1f78[3];
  unsigned int s512c1f79:1;
  unsigned int s512c1f80:1;
  int s512c1f81[3];
  ::S28C9_nt s512c1f82[16];
  ::S28C9_nt s512c1f83;
  void *s512c1f84;
  int s512c1f85[2];
  void *s512c1f86;
  ::S48C18 s512c1f87;
  ::S28C34 s512c1f88;
  void *s512c1f89;
  int s512c1f90[6];
  ::S48C18 s512c1f91;
  ::S48C18 s512c1f92;
  void *s512c1f93[2];
  ::S48C18 s512c1f94;
  void *s512c1f95;
  char s512c1f96;
  void *s512c1f97;
  int s512c1f98[2];
  void *s512c1f99[2];
  int s512c1f100[2];
  ::S28C50 s512c1f101;
  virtual  ~S512C1(); // _ZN6S512C1D1Ev
  virtual void  v1(); // _ZN6S512C12v1Ev
  virtual void  v2(); // _ZN6S512C12v2Ev
  virtual void  v3(); // _ZN6S512C12v3Ev
  virtual void  v4(); // _ZN6S512C12v4Ev
  virtual void  v5(); // _ZN6S512C12v5Ev
  virtual void  v6(); // _ZN6S512C12v6Ev
  virtual void  v7(); // _ZN6S512C12v7Ev
  virtual void  v8(); // _ZN6S512C12v8Ev
  virtual void  v9(); // _ZN6S512C12v9Ev
  virtual void  v10(); // _ZN6S512C13v10Ev
  virtual void  v11(); // _ZN6S512C13v11Ev
  virtual void  v12(); // _ZN6S512C13v12Ev
  virtual void  v13(); // _ZN6S512C13v13Ev
  virtual void  v14(); // _ZN6S512C13v14Ev
  virtual void  v15(); // _ZN6S512C13v15Ev
  virtual void  v16(); // _ZN6S512C13v16Ev
  virtual void  v17(); // _ZN6S512C13v17Ev
  virtual void  v18(); // _ZN6S512C13v18Ev
  virtual void  v19(); // _ZN6S512C13v19Ev
  virtual void  v20(); // _ZN6S512C13v20Ev
  virtual void  v21(); // _ZN6S512C13v21Ev
  virtual void  v22(); // _ZN6S512C13v22Ev
  virtual void  v23(); // _ZN6S512C13v23Ev
  virtual void  v24(); // _ZN6S512C13v24Ev
  S512C1(); // tgen
};
//SIG(1 S512C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 Fi FL Fp[4] Fi[2] Fp FC6{ m Fi[2]} Fp[2]} vd v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 v208 v209 v210 v211 v212 v213 v214 v215 v216 v217 v218 v219 v220 v221 v222 v223 v224 v225 v226 v227 v228 v229 v230 v231 FC7{ BC8{ BC9{ m Fp Fi[2]}}} FC7 FC10{ m Fi} Fi Fc[4] Fp[2] FC11{ BC12{ BC9}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC6 FC6 FC6 FC13{ BC14{ BC9}} FC13 Fi Fp[2] FC15{ m Fi[3]} FC16{ m Fi[3]} FC15 FC15 Fp FC6 FC13 FC15 FC16 Fi FC15 FC15 Fp Fi Fc FC16 FC16 Fp Fi Fp FC17{ BC18{ BC9}} FC19{ BC20{ BC9}} FC21{ BC22{ BC9}}} vd v232 v233 v234 v235 v236 v237 v238 v239 v240 v241 v242 v243 v244 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 v258 v259 v260 v261 v262 v263 v264 v265 v266 v267 v268 v269 v270 v271 v272 v273 v274 v275 v276 v277 v278 v279 v280 v281 Fp[2] Fi Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fc Fi[2] Fp FC15 FC15 Fp[5] FC15 Fp FC23{ BC24{ BC9}} Fp[2] FC15 Fp Fi[2] Fp Fi FC15 FC15 FC15 Fp[2] Fi FC15 Fi[4] Fp[2] FC25{ BC26{ BC9}} Fi FC16} vd v282 v283 v284 v285 v286 v287 Fi:1 Fi:1 Fi:1 Fi Fp[2] Fi 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 Fi Fp[2] FC15 Fp Fi FC15 FC15 Fi[2] Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2] Fp Fi Fp Fi[4] FC6 Fi[2] Fp[2] FC15 Fi[2] Fp Fi[3] Fp Fi[12] Fp Fi[3] FC27{ BC28{ BC29{ BC9}}} FC27 Fp[3] Fi Fp[4] FC15 Fi[3] Fp Fi Fp Fi[3] Fi:1 Fi:1 Fi[3] FC6[16] FC6 Fp Fi[2] Fp FC15 FC30{ BC31{ BC9}} Fp Fi[6] FC15 FC15 Fp[2] FC15 Fp Fc Fp Fi[2] Fp[2] Fi[2] FC32{ m Fp FC6}}


 S512C1 ::~S512C1(){ note_dtor("S512C1", this);}
void  S512C1 ::v1(){vfunc_called(this, "_ZN6S512C12v1Ev");}
void  S512C1 ::v2(){vfunc_called(this, "_ZN6S512C12v2Ev");}
void  S512C1 ::v3(){vfunc_called(this, "_ZN6S512C12v3Ev");}
void  S512C1 ::v4(){vfunc_called(this, "_ZN6S512C12v4Ev");}
void  S512C1 ::v5(){vfunc_called(this, "_ZN6S512C12v5Ev");}
void  S512C1 ::v6(){vfunc_called(this, "_ZN6S512C12v6Ev");}
void  S512C1 ::v7(){vfunc_called(this, "_ZN6S512C12v7Ev");}
void  S512C1 ::v8(){vfunc_called(this, "_ZN6S512C12v8Ev");}
void  S512C1 ::v9(){vfunc_called(this, "_ZN6S512C12v9Ev");}
void  S512C1 ::v10(){vfunc_called(this, "_ZN6S512C13v10Ev");}
void  S512C1 ::v11(){vfunc_called(this, "_ZN6S512C13v11Ev");}
void  S512C1 ::v12(){vfunc_called(this, "_ZN6S512C13v12Ev");}
void  S512C1 ::v13(){vfunc_called(this, "_ZN6S512C13v13Ev");}
void  S512C1 ::v14(){vfunc_called(this, "_ZN6S512C13v14Ev");}
void  S512C1 ::v15(){vfunc_called(this, "_ZN6S512C13v15Ev");}
void  S512C1 ::v16(){vfunc_called(this, "_ZN6S512C13v16Ev");}
void  S512C1 ::v17(){vfunc_called(this, "_ZN6S512C13v17Ev");}
void  S512C1 ::v18(){vfunc_called(this, "_ZN6S512C13v18Ev");}
void  S512C1 ::v19(){vfunc_called(this, "_ZN6S512C13v19Ev");}
void  S512C1 ::v20(){vfunc_called(this, "_ZN6S512C13v20Ev");}
void  S512C1 ::v21(){vfunc_called(this, "_ZN6S512C13v21Ev");}
void  S512C1 ::v22(){vfunc_called(this, "_ZN6S512C13v22Ev");}
void  S512C1 ::v23(){vfunc_called(this, "_ZN6S512C13v23Ev");}
void  S512C1 ::v24(){vfunc_called(this, "_ZN6S512C13v24Ev");}
S512C1 ::S512C1(){ note_ctor("S512C1", this);} // tgen

static void Test_S512C1()
{
  extern Class_Descriptor cd_S512C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(225,343)];
    init_test(&cd_S512C1, buf);
    S512C1 *dp, &lv = *(dp=new (buf) S512C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1792,1368), "sizeof(S512C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S512C1)");
    check_base_class_offset(lv, (S512C5*)(S512C4*)(S512C3*)(S512C2*), 0, "S512C1");
    check_base_class_offset(lv, (S512C4*)(S512C3*)(S512C2*), 0, "S512C1");
    check_base_class_offset(lv, (S512C3*)(S512C2*), 0, "S512C1");
    check_base_class_offset(lv, (S512C2*), 0, "S512C1");
    check_field_offset(lv, s512c1f0, ABISELECT(960,716), "S512C1.s512c1f0");
    check_field_offset(lv, s512c1f1, ABISELECT(968,720), "S512C1.s512c1f1");
    check_field_offset(lv, s512c1f2, ABISELECT(984,728), "S512C1.s512c1f2");
    check_field_offset(lv, s512c1f3, ABISELECT(1000,740), "S512C1.s512c1f3");
    check_field_offset(lv, s512c1f4, ABISELECT(1008,744), "S512C1.s512c1f4");
    check_field_offset(lv, s512c1f5, ABISELECT(1012,748), "S512C1.s512c1f5");
    check_field_offset(lv, s512c1f6, ABISELECT(1024,760), "S512C1.s512c1f6");
    check_field_offset(lv, s512c1f7, ABISELECT(1036,772), "S512C1.s512c1f7");
    set_bf_and_test(lv, s512c1f8, ABISELECT(1044,780), 0, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f9, ABISELECT(1044,780), 1, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f10, ABISELECT(1044,780), 2, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f11, ABISELECT(1044,780), 3, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f12, ABISELECT(1044,780), 4, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f13, ABISELECT(1044,780), 5, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f14, ABISELECT(1044,780), 6, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f15, ABISELECT(1044,780), 7, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f16, ABISELECT(1045,781), 0, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f17, ABISELECT(1045,781), 1, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f18, ABISELECT(1045,781), 2, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f19, ABISELECT(1045,781), 3, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f20, ABISELECT(1045,781), 4, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f21, ABISELECT(1045,781), 5, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f22, ABISELECT(1045,781), 6, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f23, ABISELECT(1045,781), 7, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f24, ABISELECT(1046,782), 0, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f25, ABISELECT(1046,782), 1, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f26, ABISELECT(1046,782), 2, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f27, ABISELECT(1046,782), 3, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f28, ABISELECT(1046,782), 4, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f29, ABISELECT(1046,782), 5, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f30, ABISELECT(1046,782), 6, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f31, ABISELECT(1046,782), 7, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f32, ABISELECT(1047,783), 0, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f33, ABISELECT(1047,783), 1, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f34, ABISELECT(1047,783), 2, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f35, ABISELECT(1047,783), 3, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f36, ABISELECT(1047,783), 4, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f37, ABISELECT(1047,783), 5, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f38, ABISELECT(1047,783), 6, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f39, ABISELECT(1047,783), 7, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f40, ABISELECT(1048,784), 0, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f41, ABISELECT(1048,784), 1, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f42, ABISELECT(1048,784), 2, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f43, ABISELECT(1048,784), 3, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f44, ABISELECT(1048,784), 4, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f45, ABISELECT(1048,784), 5, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f46, ABISELECT(1048,784), 6, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f47, ABISELECT(1048,784), 7, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f48, ABISELECT(1049,785), 0, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f49, ABISELECT(1049,785), 1, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f50, ABISELECT(1049,785), 2, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f51, ABISELECT(1049,785), 3, 1, 1, "S512C1");
    check_field_offset(lv, s512c1f52, ABISELECT(1052,788), "S512C1.s512c1f52");
    check_field_offset(lv, s512c1f53, ABISELECT(1064,796), "S512C1.s512c1f53");
    check_field_offset(lv, s512c1f54, ABISELECT(1072,800), "S512C1.s512c1f54");
    check_field_offset(lv, s512c1f55, ABISELECT(1080,804), "S512C1.s512c1f55");
    check_field_offset(lv, s512c1f56, ABISELECT(1088,808), "S512C1.s512c1f56");
    check_field_offset(lv, s512c1f57, ABISELECT(1104,824), "S512C1.s512c1f57");
    check_field_offset(lv, s512c1f58, ABISELECT(1112,832), "S512C1.s512c1f58");
    check_field_offset(lv, s512c1f59, ABISELECT(1120,840), "S512C1.s512c1f59");
    check_field_offset(lv, s512c1f60, ABISELECT(1136,848), "S512C1.s512c1f60");
    check_field_offset(lv, s512c1f61, ABISELECT(1148,860), "S512C1.s512c1f61");
    check_field_offset(lv, s512c1f62, ABISELECT(1160,868), "S512C1.s512c1f62");
    check_field_offset(lv, s512c1f63, ABISELECT(1168,872), "S512C1.s512c1f63");
    check_field_offset(lv, s512c1f64, ABISELECT(1184,884), "S512C1.s512c1f64");
    check_field_offset(lv, s512c1f65, ABISELECT(1192,888), "S512C1.s512c1f65");
    check_field_offset(lv, s512c1f66, ABISELECT(1240,936), "S512C1.s512c1f66");
    check_field_offset(lv, s512c1f67, ABISELECT(1248,940), "S512C1.s512c1f67");
    check_field_offset(lv, s512c1f68, ABISELECT(1264,952), "S512C1.s512c1f68");
    check_field_offset(lv, s512c1f69, ABISELECT(1280,964), "S512C1.s512c1f69");
    check_field_offset(lv, s512c1f70, ABISELECT(1296,976), "S512C1.s512c1f70");
    check_field_offset(lv, s512c1f71, ABISELECT(1320,988), "S512C1.s512c1f71");
    check_field_offset(lv, s512c1f72, ABISELECT(1328,992), "S512C1.s512c1f72");
    check_field_offset(lv, s512c1f73, ABISELECT(1360,1008), "S512C1.s512c1f73");
    check_field_offset(lv, s512c1f74, ABISELECT(1372,1020), "S512C1.s512c1f74");
    check_field_offset(lv, s512c1f75, ABISELECT(1384,1032), "S512C1.s512c1f75");
    check_field_offset(lv, s512c1f76, ABISELECT(1392,1036), "S512C1.s512c1f76");
    check_field_offset(lv, s512c1f77, ABISELECT(1400,1040), "S512C1.s512c1f77");
    check_field_offset(lv, s512c1f78, ABISELECT(1408,1044), "S512C1.s512c1f78");
    set_bf_and_test(lv, s512c1f79, ABISELECT(1420,1056), 0, 1, 1, "S512C1");
    set_bf_and_test(lv, s512c1f80, ABISELECT(1420,1056), 1, 1, 1, "S512C1");
    check_field_offset(lv, s512c1f81, ABISELECT(1424,1060), "S512C1.s512c1f81");
    check_field_offset(lv, s512c1f82, ABISELECT(1436,1072), "S512C1.s512c1f82");
    check_field_offset(lv, s512c1f83, ABISELECT(1564,1200), "S512C1.s512c1f83");
    check_field_offset(lv, s512c1f84, ABISELECT(1576,1208), "S512C1.s512c1f84");
    check_field_offset(lv, s512c1f85, ABISELECT(1584,1212), "S512C1.s512c1f85");
    check_field_offset(lv, s512c1f86, ABISELECT(1592,1220), "S512C1.s512c1f86");
    check_field_offset(lv, s512c1f87, ABISELECT(1600,1224), "S512C1.s512c1f87");
    check_field_offset(lv, s512c1f88, ABISELECT(1616,1236), "S512C1.s512c1f88");
    check_field_offset(lv, s512c1f89, ABISELECT(1632,1248), "S512C1.s512c1f89");
    check_field_offset(lv, s512c1f90, ABISELECT(1640,1252), "S512C1.s512c1f90");
    check_field_offset(lv, s512c1f91, ABISELECT(1664,1276), "S512C1.s512c1f91");
    check_field_offset(lv, s512c1f92, ABISELECT(1676,1288), "S512C1.s512c1f92");
    check_field_offset(lv, s512c1f93, ABISELECT(1688,1300), "S512C1.s512c1f93");
    check_field_offset(lv, s512c1f94, ABISELECT(1704,1308), "S512C1.s512c1f94");
    check_field_offset(lv, s512c1f95, ABISELECT(1720,1320), "S512C1.s512c1f95");
    check_field_offset(lv, s512c1f96, ABISELECT(1728,1324), "S512C1.s512c1f96");
    check_field_offset(lv, s512c1f97, ABISELECT(1736,1328), "S512C1.s512c1f97");
    check_field_offset(lv, s512c1f98, ABISELECT(1744,1332), "S512C1.s512c1f98");
    check_field_offset(lv, s512c1f99, ABISELECT(1752,1340), "S512C1.s512c1f99");
    check_field_offset(lv, s512c1f100, ABISELECT(1768,1348), "S512C1.s512c1f100");
    check_field_offset(lv, s512c1f101, ABISELECT(1776,1356), "S512C1.s512c1f101");
    test_class_info(&lv, &cd_S512C1);
    dp->~S512C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS512C1(Test_S512C1, "S512C1", ABISELECT(1792,1368));

#else // __cplusplus

extern void _ZN6S512C1C1Ev();
extern void _ZN6S512C1D1Ev();
Name_Map name_map_S512C1[] = {
  NSPAIR(_ZN6S512C1C1Ev),
  NSPAIR(_ZN6S512C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S512C5;
extern VTBL_ENTRY _ZTI6S512C5[];
extern  VTBL_ENTRY _ZTV6S512C5[];
extern Class_Descriptor cd_S512C4;
extern VTBL_ENTRY _ZTI6S512C4[];
extern  VTBL_ENTRY _ZTV6S512C4[];
extern Class_Descriptor cd_S512C3;
extern VTBL_ENTRY _ZTI6S512C3[];
extern  VTBL_ENTRY _ZTV6S512C3[];
extern Class_Descriptor cd_S512C2;
extern VTBL_ENTRY _ZTI6S512C2[];
extern  VTBL_ENTRY _ZTV6S512C2[];
static Base_Class bases_S512C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S512C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S512C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S512C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S512C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S512C1[];
extern void _ZN6S512C1D1Ev();
extern void _ZN6S512C1D0Ev();
extern void _ZN6S512C53v25Ev();
extern void _ZN6S512C53v26Ev();
extern void _ZN6S512C53v27Ev();
extern void _ZN6S512C53v28Ev();
extern void _ZN6S512C53v29Ev();
extern void _ZN6S512C53v30Ev();
extern void _ZN6S512C53v31Ev();
extern void _ZN6S512C53v32Ev();
extern void _ZN6S512C53v33Ev();
extern void _ZN6S512C53v34Ev();
extern void _ZN6S512C53v35Ev();
extern void _ZN6S512C53v36Ev();
extern void _ZN6S512C53v37Ev();
extern void _ZN6S512C53v38Ev();
extern void _ZN6S512C53v39Ev();
extern void _ZN6S512C53v40Ev();
extern void _ZN6S512C53v41Ev();
extern void _ZN6S512C53v42Ev();
extern void _ZN6S512C53v43Ev();
extern void _ZN6S512C53v44Ev();
extern void _ZN6S512C53v45Ev();
extern void _ZN6S512C53v46Ev();
extern void _ZN6S512C53v47Ev();
extern void _ZN6S512C53v48Ev();
extern void _ZN6S512C53v49Ev();
extern void _ZN6S512C53v50Ev();
extern void _ZN6S512C53v51Ev();
extern void _ZN6S512C53v52Ev();
extern void _ZN6S512C53v53Ev();
extern void _ZN6S512C53v54Ev();
extern void _ZN6S512C53v55Ev();
extern void _ZN6S512C53v56Ev();
extern void _ZN6S512C53v57Ev();
extern void _ZN6S512C53v58Ev();
extern void _ZN6S512C53v59Ev();
extern void _ZN6S512C53v60Ev();
extern void _ZN6S512C53v61Ev();
extern void _ZN6S512C53v62Ev();
extern void _ZN6S512C53v63Ev();
extern void _ZN6S512C53v64Ev();
extern void _ZN6S512C53v65Ev();
extern void _ZN6S512C53v66Ev();
extern void _ZN6S512C53v67Ev();
extern void _ZN6S512C53v68Ev();
extern void _ZN6S512C53v69Ev();
extern void _ZN6S512C53v70Ev();
extern void _ZN6S512C53v71Ev();
extern void _ZN6S512C53v72Ev();
extern void _ZN6S512C53v73Ev();
extern void _ZN6S512C53v74Ev();
extern void _ZN6S512C53v75Ev();
extern void _ZN6S512C53v76Ev();
extern void _ZN6S512C53v77Ev();
extern void _ZN6S512C53v78Ev();
extern void _ZN6S512C53v79Ev();
extern void _ZN6S512C53v80Ev();
extern void _ZN6S512C53v81Ev();
extern void _ZN6S512C53v82Ev();
extern void _ZN6S512C53v83Ev();
extern void _ZN6S512C53v84Ev();
extern void _ZN6S512C53v85Ev();
extern void _ZN6S512C53v86Ev();
extern void _ZN6S512C53v87Ev();
extern void _ZN6S512C53v88Ev();
extern void _ZN6S512C43v89Ev();
extern void _ZN6S512C43v90Ev();
extern void _ZN6S512C43v91Ev();
extern void _ZN6S512C43v92Ev();
extern void _ZN6S512C43v93Ev();
extern void _ZN6S512C43v94Ev();
extern void _ZN6S512C43v95Ev();
extern void _ZN6S512C43v96Ev();
extern void _ZN6S512C43v97Ev();
extern void _ZN6S512C43v98Ev();
extern void _ZN6S512C43v99Ev();
extern void _ZN6S512C44v100Ev();
extern void _ZN6S512C44v101Ev();
extern void _ZN6S512C44v102Ev();
extern void _ZN6S512C44v103Ev();
extern void _ZN6S512C44v104Ev();
extern void _ZN6S512C44v105Ev();
extern void _ZN6S512C44v106Ev();
extern void _ZN6S512C44v107Ev();
extern void _ZN6S512C44v108Ev();
extern void _ZN6S512C44v109Ev();
extern void _ZN6S512C44v110Ev();
extern void _ZN6S512C44v111Ev();
extern void _ZN6S512C44v112Ev();
extern void _ZN6S512C44v113Ev();
extern void _ZN6S512C44v114Ev();
extern void _ZN6S512C44v115Ev();
extern void _ZN6S512C44v116Ev();
extern void _ZN6S512C44v117Ev();
extern void _ZN6S512C44v118Ev();
extern void _ZN6S512C44v119Ev();
extern void _ZN6S512C44v120Ev();
extern void _ZN6S512C44v121Ev();
extern void _ZN6S512C44v122Ev();
extern void _ZN6S512C44v123Ev();
extern void _ZN6S512C44v124Ev();
extern void _ZN6S512C44v125Ev();
extern void _ZN6S512C44v126Ev();
extern void _ZN6S512C44v127Ev();
extern void _ZN6S512C44v128Ev();
extern void _ZN6S512C44v129Ev();
extern void _ZN6S512C44v130Ev();
extern void _ZN6S512C44v131Ev();
extern void _ZN6S512C44v132Ev();
extern void _ZN6S512C44v133Ev();
extern void _ZN6S512C44v134Ev();
extern void _ZN6S512C44v135Ev();
extern void _ZN6S512C44v136Ev();
extern void _ZN6S512C44v137Ev();
extern void _ZN6S512C44v138Ev();
extern void _ZN6S512C44v139Ev();
extern void _ZN6S512C44v140Ev();
extern void _ZN6S512C44v141Ev();
extern void _ZN6S512C44v142Ev();
extern void _ZN6S512C44v143Ev();
extern void _ZN6S512C44v144Ev();
extern void _ZN6S512C44v145Ev();
extern void _ZN6S512C44v146Ev();
extern void _ZN6S512C44v147Ev();
extern void _ZN6S512C44v148Ev();
extern void _ZN6S512C44v149Ev();
extern void _ZN6S512C44v150Ev();
extern void _ZN6S512C44v151Ev();
extern void _ZN6S512C44v152Ev();
extern void _ZN6S512C44v153Ev();
extern void _ZN6S512C44v154Ev();
extern void _ZN6S512C44v155Ev();
extern void _ZN6S512C44v156Ev();
extern void _ZN6S512C44v157Ev();
extern void _ZN6S512C44v158Ev();
extern void _ZN6S512C44v159Ev();
extern void _ZN6S512C44v160Ev();
extern void _ZN6S512C44v161Ev();
extern void _ZN6S512C44v162Ev();
extern void _ZN6S512C44v163Ev();
extern void _ZN6S512C44v164Ev();
extern void _ZN6S512C44v165Ev();
extern void _ZN6S512C44v166Ev();
extern void _ZN6S512C44v167Ev();
extern void _ZN6S512C44v168Ev();
extern void _ZN6S512C44v169Ev();
extern void _ZN6S512C44v170Ev();
extern void _ZN6S512C44v171Ev();
extern void _ZN6S512C44v172Ev();
extern void _ZN6S512C44v173Ev();
extern void _ZN6S512C44v174Ev();
extern void _ZN6S512C44v175Ev();
extern void _ZN6S512C44v176Ev();
extern void _ZN6S512C44v177Ev();
extern void _ZN6S512C44v178Ev();
extern void _ZN6S512C44v179Ev();
extern void _ZN6S512C44v180Ev();
extern void _ZN6S512C44v181Ev();
extern void _ZN6S512C44v182Ev();
extern void _ZN6S512C44v183Ev();
extern void _ZN6S512C44v184Ev();
extern void _ZN6S512C44v185Ev();
extern void _ZN6S512C44v186Ev();
extern void _ZN6S512C44v187Ev();
extern void _ZN6S512C44v188Ev();
extern void _ZN6S512C44v189Ev();
extern void _ZN6S512C44v190Ev();
extern void _ZN6S512C44v191Ev();
extern void _ZN6S512C44v192Ev();
extern void _ZN6S512C44v193Ev();
extern void _ZN6S512C44v194Ev();
extern void _ZN6S512C44v195Ev();
extern void _ZN6S512C44v196Ev();
extern void _ZN6S512C44v197Ev();
extern void _ZN6S512C44v198Ev();
extern void _ZN6S512C44v199Ev();
extern void _ZN6S512C44v200Ev();
extern void _ZN6S512C44v201Ev();
extern void _ZN6S512C44v202Ev();
extern void _ZN6S512C44v203Ev();
extern void _ZN6S512C44v204Ev();
extern void _ZN6S512C44v205Ev();
extern void _ZN6S512C44v206Ev();
extern void _ZN6S512C44v207Ev();
extern void _ZN6S512C44v208Ev();
extern void _ZN6S512C44v209Ev();
extern void _ZN6S512C44v210Ev();
extern void _ZN6S512C44v211Ev();
extern void _ZN6S512C44v212Ev();
extern void _ZN6S512C44v213Ev();
extern void _ZN6S512C44v214Ev();
extern void _ZN6S512C44v215Ev();
extern void _ZN6S512C44v216Ev();
extern void _ZN6S512C44v217Ev();
extern void _ZN6S512C44v218Ev();
extern void _ZN6S512C44v219Ev();
extern void _ZN6S512C44v220Ev();
extern void _ZN6S512C44v221Ev();
extern void _ZN6S512C44v222Ev();
extern void _ZN6S512C44v223Ev();
extern void _ZN6S512C44v224Ev();
extern void _ZN6S512C44v225Ev();
extern void _ZN6S512C44v226Ev();
extern void _ZN6S512C44v227Ev();
extern void _ZN6S512C44v228Ev();
extern void _ZN6S512C44v229Ev();
extern void _ZN6S512C44v230Ev();
extern void _ZN6S512C44v231Ev();
extern void _ZN6S512C34v232Ev();
extern void _ZN6S512C34v233Ev();
extern void _ZN6S512C34v234Ev();
extern void _ZN6S512C34v235Ev();
extern void _ZN6S512C34v236Ev();
extern void _ZN6S512C34v237Ev();
extern void _ZN6S512C34v238Ev();
extern void _ZN6S512C34v239Ev();
extern void _ZN6S512C34v240Ev();
extern void _ZN6S512C34v241Ev();
extern void _ZN6S512C34v242Ev();
extern void _ZN6S512C34v243Ev();
extern void _ZN6S512C34v244Ev();
extern void _ZN6S512C34v245Ev();
extern void _ZN6S512C34v246Ev();
extern void _ZN6S512C34v247Ev();
extern void _ZN6S512C34v248Ev();
extern void _ZN6S512C34v249Ev();
extern void _ZN6S512C34v250Ev();
extern void _ZN6S512C34v251Ev();
extern void _ZN6S512C34v252Ev();
extern void _ZN6S512C34v253Ev();
extern void _ZN6S512C34v254Ev();
extern void _ZN6S512C34v255Ev();
extern void _ZN6S512C34v256Ev();
extern void _ZN6S512C34v257Ev();
extern void _ZN6S512C34v258Ev();
extern void _ZN6S512C34v259Ev();
extern void _ZN6S512C34v260Ev();
extern void _ZN6S512C34v261Ev();
extern void _ZN6S512C34v262Ev();
extern void _ZN6S512C34v263Ev();
extern void _ZN6S512C34v264Ev();
extern void _ZN6S512C34v265Ev();
extern void _ZN6S512C34v266Ev();
extern void _ZN6S512C34v267Ev();
extern void _ZN6S512C34v268Ev();
extern void _ZN6S512C34v269Ev();
extern void _ZN6S512C34v270Ev();
extern void _ZN6S512C34v271Ev();
extern void _ZN6S512C34v272Ev();
extern void _ZN6S512C34v273Ev();
extern void _ZN6S512C34v274Ev();
extern void _ZN6S512C34v275Ev();
extern void _ZN6S512C34v276Ev();
extern void _ZN6S512C34v277Ev();
extern void _ZN6S512C34v278Ev();
extern void _ZN6S512C34v279Ev();
extern void _ZN6S512C34v280Ev();
extern void _ZN6S512C34v281Ev();
extern void _ZN6S512C24v282Ev();
extern void _ZN6S512C24v283Ev();
extern void _ZN6S512C24v284Ev();
extern void _ZN6S512C24v285Ev();
extern void _ZN6S512C24v286Ev();
extern void _ZN6S512C24v287Ev();
extern void _ZN6S512C12v1Ev();
extern void _ZN6S512C12v2Ev();
extern void _ZN6S512C12v3Ev();
extern void _ZN6S512C12v4Ev();
extern void _ZN6S512C12v5Ev();
extern void _ZN6S512C12v6Ev();
extern void _ZN6S512C12v7Ev();
extern void _ZN6S512C12v8Ev();
extern void _ZN6S512C12v9Ev();
extern void _ZN6S512C13v10Ev();
extern void _ZN6S512C13v11Ev();
extern void _ZN6S512C13v12Ev();
extern void _ZN6S512C13v13Ev();
extern void _ZN6S512C13v14Ev();
extern void _ZN6S512C13v15Ev();
extern void _ZN6S512C13v16Ev();
extern void _ZN6S512C13v17Ev();
extern void _ZN6S512C13v18Ev();
extern void _ZN6S512C13v19Ev();
extern void _ZN6S512C13v20Ev();
extern void _ZN6S512C13v21Ev();
extern void _ZN6S512C13v22Ev();
extern void _ZN6S512C13v23Ev();
extern void _ZN6S512C13v24Ev();
static  VTBL_ENTRY vtc_S512C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S512C1[0]),
  (VTBL_ENTRY)&_ZN6S512C1D1Ev,
  (VTBL_ENTRY)&_ZN6S512C1D0Ev,
  (VTBL_ENTRY)&_ZN6S512C53v25Ev,
  (VTBL_ENTRY)&_ZN6S512C53v26Ev,
  (VTBL_ENTRY)&_ZN6S512C53v27Ev,
  (VTBL_ENTRY)&_ZN6S512C53v28Ev,
  (VTBL_ENTRY)&_ZN6S512C53v29Ev,
  (VTBL_ENTRY)&_ZN6S512C53v30Ev,
  (VTBL_ENTRY)&_ZN6S512C53v31Ev,
  (VTBL_ENTRY)&_ZN6S512C53v32Ev,
  (VTBL_ENTRY)&_ZN6S512C53v33Ev,
  (VTBL_ENTRY)&_ZN6S512C53v34Ev,
  (VTBL_ENTRY)&_ZN6S512C53v35Ev,
  (VTBL_ENTRY)&_ZN6S512C53v36Ev,
  (VTBL_ENTRY)&_ZN6S512C53v37Ev,
  (VTBL_ENTRY)&_ZN6S512C53v38Ev,
  (VTBL_ENTRY)&_ZN6S512C53v39Ev,
  (VTBL_ENTRY)&_ZN6S512C53v40Ev,
  (VTBL_ENTRY)&_ZN6S512C53v41Ev,
  (VTBL_ENTRY)&_ZN6S512C53v42Ev,
  (VTBL_ENTRY)&_ZN6S512C53v43Ev,
  (VTBL_ENTRY)&_ZN6S512C53v44Ev,
  (VTBL_ENTRY)&_ZN6S512C53v45Ev,
  (VTBL_ENTRY)&_ZN6S512C53v46Ev,
  (VTBL_ENTRY)&_ZN6S512C53v47Ev,
  (VTBL_ENTRY)&_ZN6S512C53v48Ev,
  (VTBL_ENTRY)&_ZN6S512C53v49Ev,
  (VTBL_ENTRY)&_ZN6S512C53v50Ev,
  (VTBL_ENTRY)&_ZN6S512C53v51Ev,
  (VTBL_ENTRY)&_ZN6S512C53v52Ev,
  (VTBL_ENTRY)&_ZN6S512C53v53Ev,
  (VTBL_ENTRY)&_ZN6S512C53v54Ev,
  (VTBL_ENTRY)&_ZN6S512C53v55Ev,
  (VTBL_ENTRY)&_ZN6S512C53v56Ev,
  (VTBL_ENTRY)&_ZN6S512C53v57Ev,
  (VTBL_ENTRY)&_ZN6S512C53v58Ev,
  (VTBL_ENTRY)&_ZN6S512C53v59Ev,
  (VTBL_ENTRY)&_ZN6S512C53v60Ev,
  (VTBL_ENTRY)&_ZN6S512C53v61Ev,
  (VTBL_ENTRY)&_ZN6S512C53v62Ev,
  (VTBL_ENTRY)&_ZN6S512C53v63Ev,
  (VTBL_ENTRY)&_ZN6S512C53v64Ev,
  (VTBL_ENTRY)&_ZN6S512C53v65Ev,
  (VTBL_ENTRY)&_ZN6S512C53v66Ev,
  (VTBL_ENTRY)&_ZN6S512C53v67Ev,
  (VTBL_ENTRY)&_ZN6S512C53v68Ev,
  (VTBL_ENTRY)&_ZN6S512C53v69Ev,
  (VTBL_ENTRY)&_ZN6S512C53v70Ev,
  (VTBL_ENTRY)&_ZN6S512C53v71Ev,
  (VTBL_ENTRY)&_ZN6S512C53v72Ev,
  (VTBL_ENTRY)&_ZN6S512C53v73Ev,
  (VTBL_ENTRY)&_ZN6S512C53v74Ev,
  (VTBL_ENTRY)&_ZN6S512C53v75Ev,
  (VTBL_ENTRY)&_ZN6S512C53v76Ev,
  (VTBL_ENTRY)&_ZN6S512C53v77Ev,
  (VTBL_ENTRY)&_ZN6S512C53v78Ev,
  (VTBL_ENTRY)&_ZN6S512C53v79Ev,
  (VTBL_ENTRY)&_ZN6S512C53v80Ev,
  (VTBL_ENTRY)&_ZN6S512C53v81Ev,
  (VTBL_ENTRY)&_ZN6S512C53v82Ev,
  (VTBL_ENTRY)&_ZN6S512C53v83Ev,
  (VTBL_ENTRY)&_ZN6S512C53v84Ev,
  (VTBL_ENTRY)&_ZN6S512C53v85Ev,
  (VTBL_ENTRY)&_ZN6S512C53v86Ev,
  (VTBL_ENTRY)&_ZN6S512C53v87Ev,
  (VTBL_ENTRY)&_ZN6S512C53v88Ev,
  (VTBL_ENTRY)&_ZN6S512C43v89Ev,
  (VTBL_ENTRY)&_ZN6S512C43v90Ev,
  (VTBL_ENTRY)&_ZN6S512C43v91Ev,
  (VTBL_ENTRY)&_ZN6S512C43v92Ev,
  (VTBL_ENTRY)&_ZN6S512C43v93Ev,
  (VTBL_ENTRY)&_ZN6S512C43v94Ev,
  (VTBL_ENTRY)&_ZN6S512C43v95Ev,
  (VTBL_ENTRY)&_ZN6S512C43v96Ev,
  (VTBL_ENTRY)&_ZN6S512C43v97Ev,
  (VTBL_ENTRY)&_ZN6S512C43v98Ev,
  (VTBL_ENTRY)&_ZN6S512C43v99Ev,
  (VTBL_ENTRY)&_ZN6S512C44v100Ev,
  (VTBL_ENTRY)&_ZN6S512C44v101Ev,
  (VTBL_ENTRY)&_ZN6S512C44v102Ev,
  (VTBL_ENTRY)&_ZN6S512C44v103Ev,
  (VTBL_ENTRY)&_ZN6S512C44v104Ev,
  (VTBL_ENTRY)&_ZN6S512C44v105Ev,
  (VTBL_ENTRY)&_ZN6S512C44v106Ev,
  (VTBL_ENTRY)&_ZN6S512C44v107Ev,
  (VTBL_ENTRY)&_ZN6S512C44v108Ev,
  (VTBL_ENTRY)&_ZN6S512C44v109Ev,
  (VTBL_ENTRY)&_ZN6S512C44v110Ev,
  (VTBL_ENTRY)&_ZN6S512C44v111Ev,
  (VTBL_ENTRY)&_ZN6S512C44v112Ev,
  (VTBL_ENTRY)&_ZN6S512C44v113Ev,
  (VTBL_ENTRY)&_ZN6S512C44v114Ev,
  (VTBL_ENTRY)&_ZN6S512C44v115Ev,
  (VTBL_ENTRY)&_ZN6S512C44v116Ev,
  (VTBL_ENTRY)&_ZN6S512C44v117Ev,
  (VTBL_ENTRY)&_ZN6S512C44v118Ev,
  (VTBL_ENTRY)&_ZN6S512C44v119Ev,
  (VTBL_ENTRY)&_ZN6S512C44v120Ev,
  (VTBL_ENTRY)&_ZN6S512C44v121Ev,
  (VTBL_ENTRY)&_ZN6S512C44v122Ev,
  (VTBL_ENTRY)&_ZN6S512C44v123Ev,
  (VTBL_ENTRY)&_ZN6S512C44v124Ev,
  (VTBL_ENTRY)&_ZN6S512C44v125Ev,
  (VTBL_ENTRY)&_ZN6S512C44v126Ev,
  (VTBL_ENTRY)&_ZN6S512C44v127Ev,
  (VTBL_ENTRY)&_ZN6S512C44v128Ev,
  (VTBL_ENTRY)&_ZN6S512C44v129Ev,
  (VTBL_ENTRY)&_ZN6S512C44v130Ev,
  (VTBL_ENTRY)&_ZN6S512C44v131Ev,
  (VTBL_ENTRY)&_ZN6S512C44v132Ev,
  (VTBL_ENTRY)&_ZN6S512C44v133Ev,
  (VTBL_ENTRY)&_ZN6S512C44v134Ev,
  (VTBL_ENTRY)&_ZN6S512C44v135Ev,
  (VTBL_ENTRY)&_ZN6S512C44v136Ev,
  (VTBL_ENTRY)&_ZN6S512C44v137Ev,
  (VTBL_ENTRY)&_ZN6S512C44v138Ev,
  (VTBL_ENTRY)&_ZN6S512C44v139Ev,
  (VTBL_ENTRY)&_ZN6S512C44v140Ev,
  (VTBL_ENTRY)&_ZN6S512C44v141Ev,
  (VTBL_ENTRY)&_ZN6S512C44v142Ev,
  (VTBL_ENTRY)&_ZN6S512C44v143Ev,
  (VTBL_ENTRY)&_ZN6S512C44v144Ev,
  (VTBL_ENTRY)&_ZN6S512C44v145Ev,
  (VTBL_ENTRY)&_ZN6S512C44v146Ev,
  (VTBL_ENTRY)&_ZN6S512C44v147Ev,
  (VTBL_ENTRY)&_ZN6S512C44v148Ev,
  (VTBL_ENTRY)&_ZN6S512C44v149Ev,
  (VTBL_ENTRY)&_ZN6S512C44v150Ev,
  (VTBL_ENTRY)&_ZN6S512C44v151Ev,
  (VTBL_ENTRY)&_ZN6S512C44v152Ev,
  (VTBL_ENTRY)&_ZN6S512C44v153Ev,
  (VTBL_ENTRY)&_ZN6S512C44v154Ev,
  (VTBL_ENTRY)&_ZN6S512C44v155Ev,
  (VTBL_ENTRY)&_ZN6S512C44v156Ev,
  (VTBL_ENTRY)&_ZN6S512C44v157Ev,
  (VTBL_ENTRY)&_ZN6S512C44v158Ev,
  (VTBL_ENTRY)&_ZN6S512C44v159Ev,
  (VTBL_ENTRY)&_ZN6S512C44v160Ev,
  (VTBL_ENTRY)&_ZN6S512C44v161Ev,
  (VTBL_ENTRY)&_ZN6S512C44v162Ev,
  (VTBL_ENTRY)&_ZN6S512C44v163Ev,
  (VTBL_ENTRY)&_ZN6S512C44v164Ev,
  (VTBL_ENTRY)&_ZN6S512C44v165Ev,
  (VTBL_ENTRY)&_ZN6S512C44v166Ev,
  (VTBL_ENTRY)&_ZN6S512C44v167Ev,
  (VTBL_ENTRY)&_ZN6S512C44v168Ev,
  (VTBL_ENTRY)&_ZN6S512C44v169Ev,
  (VTBL_ENTRY)&_ZN6S512C44v170Ev,
  (VTBL_ENTRY)&_ZN6S512C44v171Ev,
  (VTBL_ENTRY)&_ZN6S512C44v172Ev,
  (VTBL_ENTRY)&_ZN6S512C44v173Ev,
  (VTBL_ENTRY)&_ZN6S512C44v174Ev,
  (VTBL_ENTRY)&_ZN6S512C44v175Ev,
  (VTBL_ENTRY)&_ZN6S512C44v176Ev,
  (VTBL_ENTRY)&_ZN6S512C44v177Ev,
  (VTBL_ENTRY)&_ZN6S512C44v178Ev,
  (VTBL_ENTRY)&_ZN6S512C44v179Ev,
  (VTBL_ENTRY)&_ZN6S512C44v180Ev,
  (VTBL_ENTRY)&_ZN6S512C44v181Ev,
  (VTBL_ENTRY)&_ZN6S512C44v182Ev,
  (VTBL_ENTRY)&_ZN6S512C44v183Ev,
  (VTBL_ENTRY)&_ZN6S512C44v184Ev,
  (VTBL_ENTRY)&_ZN6S512C44v185Ev,
  (VTBL_ENTRY)&_ZN6S512C44v186Ev,
  (VTBL_ENTRY)&_ZN6S512C44v187Ev,
  (VTBL_ENTRY)&_ZN6S512C44v188Ev,
  (VTBL_ENTRY)&_ZN6S512C44v189Ev,
  (VTBL_ENTRY)&_ZN6S512C44v190Ev,
  (VTBL_ENTRY)&_ZN6S512C44v191Ev,
  (VTBL_ENTRY)&_ZN6S512C44v192Ev,
  (VTBL_ENTRY)&_ZN6S512C44v193Ev,
  (VTBL_ENTRY)&_ZN6S512C44v194Ev,
  (VTBL_ENTRY)&_ZN6S512C44v195Ev,
  (VTBL_ENTRY)&_ZN6S512C44v196Ev,
  (VTBL_ENTRY)&_ZN6S512C44v197Ev,
  (VTBL_ENTRY)&_ZN6S512C44v198Ev,
  (VTBL_ENTRY)&_ZN6S512C44v199Ev,
  (VTBL_ENTRY)&_ZN6S512C44v200Ev,
  (VTBL_ENTRY)&_ZN6S512C44v201Ev,
  (VTBL_ENTRY)&_ZN6S512C44v202Ev,
  (VTBL_ENTRY)&_ZN6S512C44v203Ev,
  (VTBL_ENTRY)&_ZN6S512C44v204Ev,
  (VTBL_ENTRY)&_ZN6S512C44v205Ev,
  (VTBL_ENTRY)&_ZN6S512C44v206Ev,
  (VTBL_ENTRY)&_ZN6S512C44v207Ev,
  (VTBL_ENTRY)&_ZN6S512C44v208Ev,
  (VTBL_ENTRY)&_ZN6S512C44v209Ev,
  (VTBL_ENTRY)&_ZN6S512C44v210Ev,
  (VTBL_ENTRY)&_ZN6S512C44v211Ev,
  (VTBL_ENTRY)&_ZN6S512C44v212Ev,
  (VTBL_ENTRY)&_ZN6S512C44v213Ev,
  (VTBL_ENTRY)&_ZN6S512C44v214Ev,
  (VTBL_ENTRY)&_ZN6S512C44v215Ev,
  (VTBL_ENTRY)&_ZN6S512C44v216Ev,
  (VTBL_ENTRY)&_ZN6S512C44v217Ev,
  (VTBL_ENTRY)&_ZN6S512C44v218Ev,
  (VTBL_ENTRY)&_ZN6S512C44v219Ev,
  (VTBL_ENTRY)&_ZN6S512C44v220Ev,
  (VTBL_ENTRY)&_ZN6S512C44v221Ev,
  (VTBL_ENTRY)&_ZN6S512C44v222Ev,
  (VTBL_ENTRY)&_ZN6S512C44v223Ev,
  (VTBL_ENTRY)&_ZN6S512C44v224Ev,
  (VTBL_ENTRY)&_ZN6S512C44v225Ev,
  (VTBL_ENTRY)&_ZN6S512C44v226Ev,
  (VTBL_ENTRY)&_ZN6S512C44v227Ev,
  (VTBL_ENTRY)&_ZN6S512C44v228Ev,
  (VTBL_ENTRY)&_ZN6S512C44v229Ev,
  (VTBL_ENTRY)&_ZN6S512C44v230Ev,
  (VTBL_ENTRY)&_ZN6S512C44v231Ev,
  (VTBL_ENTRY)&_ZN6S512C34v232Ev,
  (VTBL_ENTRY)&_ZN6S512C34v233Ev,
  (VTBL_ENTRY)&_ZN6S512C34v234Ev,
  (VTBL_ENTRY)&_ZN6S512C34v235Ev,
  (VTBL_ENTRY)&_ZN6S512C34v236Ev,
  (VTBL_ENTRY)&_ZN6S512C34v237Ev,
  (VTBL_ENTRY)&_ZN6S512C34v238Ev,
  (VTBL_ENTRY)&_ZN6S512C34v239Ev,
  (VTBL_ENTRY)&_ZN6S512C34v240Ev,
  (VTBL_ENTRY)&_ZN6S512C34v241Ev,
  (VTBL_ENTRY)&_ZN6S512C34v242Ev,
  (VTBL_ENTRY)&_ZN6S512C34v243Ev,
  (VTBL_ENTRY)&_ZN6S512C34v244Ev,
  (VTBL_ENTRY)&_ZN6S512C34v245Ev,
  (VTBL_ENTRY)&_ZN6S512C34v246Ev,
  (VTBL_ENTRY)&_ZN6S512C34v247Ev,
  (VTBL_ENTRY)&_ZN6S512C34v248Ev,
  (VTBL_ENTRY)&_ZN6S512C34v249Ev,
  (VTBL_ENTRY)&_ZN6S512C34v250Ev,
  (VTBL_ENTRY)&_ZN6S512C34v251Ev,
  (VTBL_ENTRY)&_ZN6S512C34v252Ev,
  (VTBL_ENTRY)&_ZN6S512C34v253Ev,
  (VTBL_ENTRY)&_ZN6S512C34v254Ev,
  (VTBL_ENTRY)&_ZN6S512C34v255Ev,
  (VTBL_ENTRY)&_ZN6S512C34v256Ev,
  (VTBL_ENTRY)&_ZN6S512C34v257Ev,
  (VTBL_ENTRY)&_ZN6S512C34v258Ev,
  (VTBL_ENTRY)&_ZN6S512C34v259Ev,
  (VTBL_ENTRY)&_ZN6S512C34v260Ev,
  (VTBL_ENTRY)&_ZN6S512C34v261Ev,
  (VTBL_ENTRY)&_ZN6S512C34v262Ev,
  (VTBL_ENTRY)&_ZN6S512C34v263Ev,
  (VTBL_ENTRY)&_ZN6S512C34v264Ev,
  (VTBL_ENTRY)&_ZN6S512C34v265Ev,
  (VTBL_ENTRY)&_ZN6S512C34v266Ev,
  (VTBL_ENTRY)&_ZN6S512C34v267Ev,
  (VTBL_ENTRY)&_ZN6S512C34v268Ev,
  (VTBL_ENTRY)&_ZN6S512C34v269Ev,
  (VTBL_ENTRY)&_ZN6S512C34v270Ev,
  (VTBL_ENTRY)&_ZN6S512C34v271Ev,
  (VTBL_ENTRY)&_ZN6S512C34v272Ev,
  (VTBL_ENTRY)&_ZN6S512C34v273Ev,
  (VTBL_ENTRY)&_ZN6S512C34v274Ev,
  (VTBL_ENTRY)&_ZN6S512C34v275Ev,
  (VTBL_ENTRY)&_ZN6S512C34v276Ev,
  (VTBL_ENTRY)&_ZN6S512C34v277Ev,
  (VTBL_ENTRY)&_ZN6S512C34v278Ev,
  (VTBL_ENTRY)&_ZN6S512C34v279Ev,
  (VTBL_ENTRY)&_ZN6S512C34v280Ev,
  (VTBL_ENTRY)&_ZN6S512C34v281Ev,
  (VTBL_ENTRY)&_ZN6S512C24v282Ev,
  (VTBL_ENTRY)&_ZN6S512C24v283Ev,
  (VTBL_ENTRY)&_ZN6S512C24v284Ev,
  (VTBL_ENTRY)&_ZN6S512C24v285Ev,
  (VTBL_ENTRY)&_ZN6S512C24v286Ev,
  (VTBL_ENTRY)&_ZN6S512C24v287Ev,
  (VTBL_ENTRY)&_ZN6S512C12v1Ev,
  (VTBL_ENTRY)&_ZN6S512C12v2Ev,
  (VTBL_ENTRY)&_ZN6S512C12v3Ev,
  (VTBL_ENTRY)&_ZN6S512C12v4Ev,
  (VTBL_ENTRY)&_ZN6S512C12v5Ev,
  (VTBL_ENTRY)&_ZN6S512C12v6Ev,
  (VTBL_ENTRY)&_ZN6S512C12v7Ev,
  (VTBL_ENTRY)&_ZN6S512C12v8Ev,
  (VTBL_ENTRY)&_ZN6S512C12v9Ev,
  (VTBL_ENTRY)&_ZN6S512C13v10Ev,
  (VTBL_ENTRY)&_ZN6S512C13v11Ev,
  (VTBL_ENTRY)&_ZN6S512C13v12Ev,
  (VTBL_ENTRY)&_ZN6S512C13v13Ev,
  (VTBL_ENTRY)&_ZN6S512C13v14Ev,
  (VTBL_ENTRY)&_ZN6S512C13v15Ev,
  (VTBL_ENTRY)&_ZN6S512C13v16Ev,
  (VTBL_ENTRY)&_ZN6S512C13v17Ev,
  (VTBL_ENTRY)&_ZN6S512C13v18Ev,
  (VTBL_ENTRY)&_ZN6S512C13v19Ev,
  (VTBL_ENTRY)&_ZN6S512C13v20Ev,
  (VTBL_ENTRY)&_ZN6S512C13v21Ev,
  (VTBL_ENTRY)&_ZN6S512C13v22Ev,
  (VTBL_ENTRY)&_ZN6S512C13v23Ev,
  (VTBL_ENTRY)&_ZN6S512C13v24Ev,
};
extern VTBL_ENTRY _ZTI6S512C1[];
extern  VTBL_ENTRY _ZTV6S512C1[];
Class_Descriptor cd_S512C1 = {  "S512C1", // class name
  bases_S512C1, 4,
  &(vtc_S512C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1792,1368), // object size
  NSPAIRA(_ZTI6S512C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S512C1),291, //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  S731C6_nt  {
  void *s731c6f0;
  int s731c6f1[2];
  ::S28C52_nt s731c6f2;
  void  mf731c6(); // _ZN9S731C6_nt7mf731c6Ev
};
//SIG(-1 S731C6_nt) C1{ m Fp Fi[2] FC2{ m}}


void  S731C6_nt ::mf731c6(){}

//skip512 S731C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S731C5_nt  {
  ::S731C6_nt s731c5f0;
  void  mf731c5(); // _ZN9S731C5_nt7mf731c5Ev
  virtual  ~S731C5_nt(); // _ZN9S731C5_ntD1Ev
  S731C5_nt(); // tgen
};
//SIG(-1 S731C5_nt) C1{ vd m FC2{ m Fp Fi[2] FC3{ m}}}


void  S731C5_nt ::mf731c5(){}
 S731C5_nt ::~S731C5_nt(){ note_dtor("S731C5_nt", this);}
S731C5_nt ::S731C5_nt(){ note_ctor("S731C5_nt", this);} // tgen

//skip512 S731C5_nt

#else // __cplusplus

extern void _ZN9S731C5_ntC1Ev();
extern void _ZN9S731C5_ntD1Ev();
Name_Map name_map_S731C5_nt[] = {
  NSPAIR(_ZN9S731C5_ntC1Ev),
  NSPAIR(_ZN9S731C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S731C5_nt[];
extern void _ZN9S731C5_ntD1Ev();
extern void _ZN9S731C5_ntD0Ev();
static  VTBL_ENTRY vtc_S731C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S731C5_nt[0]),
  (VTBL_ENTRY)&_ZN9S731C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S731C5_ntD0Ev,
};
extern VTBL_ENTRY _ZTI9S731C5_nt[];
VTBL_ENTRY *P__ZTI9S731C5_nt = _ZTI9S731C5_nt; 
extern  VTBL_ENTRY _ZTV9S731C5_nt[];
Class_Descriptor cd_S731C5_nt = {  "S731C5_nt", // class name
  0,0,//no base classes
  &(vtc_S731C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI9S731C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S731C5_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  S731C8_nt  {
  int s731c8f0[4];
  void *s731c8f1;
  char s731c8f2;
  int s731c8f3[2];
  void *s731c8f4[2];
  void  mf731c8(); // _ZN9S731C8_nt7mf731c8Ev
};
//SIG(-1 S731C8_nt) C1{ m Fi[4] Fp Fc Fi[2] Fp[2]}


void  S731C8_nt ::mf731c8(){}

//skip512 S731C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S731C4  : S731C5_nt {
  void *s731c4f0;
  ::S731C8_nt s731c4f1;
  virtual  ~S731C4(); // _ZN6S731C4D1Ev
  virtual void  v14(); // _ZN6S731C43v14Ev
  virtual void  v15(); // _ZN6S731C43v15Ev
  virtual void  v16(); // _ZN6S731C43v16Ev
  virtual void  v17(); // _ZN6S731C43v17Ev
  virtual void  v18(); // _ZN6S731C43v18Ev
  virtual void  v19(); // _ZN6S731C43v19Ev
  virtual void  v20(); // _ZN6S731C43v20Ev
  virtual void  v21(); // _ZN6S731C43v21Ev
  virtual void  v22(); // _ZN6S731C43v22Ev
  virtual void  v23(); // _ZN6S731C43v23Ev
  virtual void  v24(); // _ZN6S731C43v24Ev
  S731C4(); // tgen
};
//SIG(-1 S731C4) C1{ BC2{ vd m FC3{ m Fp Fi[2] FC4{ m}}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 Fp FC5{ m Fi[4] Fp Fc Fi[2] Fp[2]}}


 S731C4 ::~S731C4(){ note_dtor("S731C4", this);}
void  S731C4 ::v14(){vfunc_called(this, "_ZN6S731C43v14Ev");}
void  S731C4 ::v15(){vfunc_called(this, "_ZN6S731C43v15Ev");}
void  S731C4 ::v16(){vfunc_called(this, "_ZN6S731C43v16Ev");}
void  S731C4 ::v17(){vfunc_called(this, "_ZN6S731C43v17Ev");}
void  S731C4 ::v18(){vfunc_called(this, "_ZN6S731C43v18Ev");}
void  S731C4 ::v19(){vfunc_called(this, "_ZN6S731C43v19Ev");}
void  S731C4 ::v20(){vfunc_called(this, "_ZN6S731C43v20Ev");}
void  S731C4 ::v21(){vfunc_called(this, "_ZN6S731C43v21Ev");}
void  S731C4 ::v22(){vfunc_called(this, "_ZN6S731C43v22Ev");}
void  S731C4 ::v23(){vfunc_called(this, "_ZN6S731C43v23Ev");}
void  S731C4 ::v24(){vfunc_called(this, "_ZN6S731C43v24Ev");}
S731C4 ::S731C4(){ note_ctor("S731C4", this);} // tgen

static void Test_S731C4()
{
  extern Class_Descriptor cd_S731C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,17)];
    init_test(&cd_S731C4, buf);
    S731C4 *dp, &lv = *(dp=new (buf) S731C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,64), "sizeof(S731C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S731C4)");
    check_base_class_offset(lv, (S731C5_nt*), 0, "S731C4");
    check_field_offset(lv, s731c4f0, ABISELECT(32,20), "S731C4.s731c4f0");
    check_field_offset(lv, s731c4f1, ABISELECT(40,24), "S731C4.s731c4f1");
    test_class_info(&lv, &cd_S731C4);
    dp->~S731C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS731C4(Test_S731C4, "S731C4", ABISELECT(96,64));

#else // __cplusplus

extern void _ZN6S731C4C1Ev();
extern void _ZN6S731C4D1Ev();
Name_Map name_map_S731C4[] = {
  NSPAIR(_ZN6S731C4C1Ev),
  NSPAIR(_ZN6S731C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C5_nt;
extern VTBL_ENTRY _ZTI9S731C5_nt[];
extern  VTBL_ENTRY _ZTV9S731C5_nt[];
static Base_Class bases_S731C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S731C4[];
extern void _ZN6S731C4D1Ev();
extern void _ZN6S731C4D0Ev();
extern void _ZN6S731C43v14Ev();
extern void _ZN6S731C43v15Ev();
extern void _ZN6S731C43v16Ev();
extern void _ZN6S731C43v17Ev();
extern void _ZN6S731C43v18Ev();
extern void _ZN6S731C43v19Ev();
extern void _ZN6S731C43v20Ev();
extern void _ZN6S731C43v21Ev();
extern void _ZN6S731C43v22Ev();
extern void _ZN6S731C43v23Ev();
extern void _ZN6S731C43v24Ev();
static  VTBL_ENTRY vtc_S731C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S731C4[0]),
  (VTBL_ENTRY)&_ZN6S731C4D1Ev,
  (VTBL_ENTRY)&_ZN6S731C4D0Ev,
  (VTBL_ENTRY)&_ZN6S731C43v14Ev,
  (VTBL_ENTRY)&_ZN6S731C43v15Ev,
  (VTBL_ENTRY)&_ZN6S731C43v16Ev,
  (VTBL_ENTRY)&_ZN6S731C43v17Ev,
  (VTBL_ENTRY)&_ZN6S731C43v18Ev,
  (VTBL_ENTRY)&_ZN6S731C43v19Ev,
  (VTBL_ENTRY)&_ZN6S731C43v20Ev,
  (VTBL_ENTRY)&_ZN6S731C43v21Ev,
  (VTBL_ENTRY)&_ZN6S731C43v22Ev,
  (VTBL_ENTRY)&_ZN6S731C43v23Ev,
  (VTBL_ENTRY)&_ZN6S731C43v24Ev,
};
extern VTBL_ENTRY _ZTI6S731C4[];
extern  VTBL_ENTRY _ZTV6S731C4[];
Class_Descriptor cd_S731C4 = {  "S731C4", // class name
  bases_S731C4, 1,
  &(vtc_S731C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,64), // object size
  NSPAIRA(_ZTI6S731C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S731C4),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  S731C3  : S731C4 {
  int s731c3f0;
  virtual  ~S731C3(); // _ZN6S731C3D1Ev
  virtual void  v25(); // _ZN6S731C33v25Ev
  virtual void  v26(); // _ZN6S731C33v26Ev
  virtual void  v27(); // _ZN6S731C33v27Ev
  virtual void  v28(); // _ZN6S731C33v28Ev
  virtual void  v29(); // _ZN6S731C33v29Ev
  virtual void  v30(); // _ZN6S731C33v30Ev
  virtual void  v31(); // _ZN6S731C33v31Ev
  virtual void  v32(); // _ZN6S731C33v32Ev
  virtual void  v33(); // _ZN6S731C33v33Ev
  virtual void  v34(); // _ZN6S731C33v34Ev
  virtual void  v35(); // _ZN6S731C33v35Ev
  virtual void  v36(); // _ZN6S731C33v36Ev
  virtual void  v37(); // _ZN6S731C33v37Ev
  virtual void  v38(); // _ZN6S731C33v38Ev
  virtual void  v39(); // _ZN6S731C33v39Ev
  virtual void  v40(); // _ZN6S731C33v40Ev
  virtual void  v41(); // _ZN6S731C33v41Ev
  virtual void  v42(); // _ZN6S731C33v42Ev
  virtual void  v43(); // _ZN6S731C33v43Ev
  S731C3(); // tgen
};
//SIG(-1 S731C3) C1{ BC2{ BC3{ vd m FC4{ m Fp Fi[2] FC5{ m}}} vd v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 Fp FC6{ m Fi[4] Fp Fc Fi[2] Fp[2]}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 Fi}


 S731C3 ::~S731C3(){ note_dtor("S731C3", this);}
void  S731C3 ::v25(){vfunc_called(this, "_ZN6S731C33v25Ev");}
void  S731C3 ::v26(){vfunc_called(this, "_ZN6S731C33v26Ev");}
void  S731C3 ::v27(){vfunc_called(this, "_ZN6S731C33v27Ev");}
void  S731C3 ::v28(){vfunc_called(this, "_ZN6S731C33v28Ev");}
void  S731C3 ::v29(){vfunc_called(this, "_ZN6S731C33v29Ev");}
void  S731C3 ::v30(){vfunc_called(this, "_ZN6S731C33v30Ev");}
void  S731C3 ::v31(){vfunc_called(this, "_ZN6S731C33v31Ev");}
void  S731C3 ::v32(){vfunc_called(this, "_ZN6S731C33v32Ev");}
void  S731C3 ::v33(){vfunc_called(this, "_ZN6S731C33v33Ev");}
void  S731C3 ::v34(){vfunc_called(this, "_ZN6S731C33v34Ev");}
void  S731C3 ::v35(){vfunc_called(this, "_ZN6S731C33v35Ev");}
void  S731C3 ::v36(){vfunc_called(this, "_ZN6S731C33v36Ev");}
void  S731C3 ::v37(){vfunc_called(this, "_ZN6S731C33v37Ev");}
void  S731C3 ::v38(){vfunc_called(this, "_ZN6S731C33v38Ev");}
void  S731C3 ::v39(){vfunc_called(this, "_ZN6S731C33v39Ev");}
void  S731C3 ::v40(){vfunc_called(this, "_ZN6S731C33v40Ev");}
void  S731C3 ::v41(){vfunc_called(this, "_ZN6S731C33v41Ev");}
void  S731C3 ::v42(){vfunc_called(this, "_ZN6S731C33v42Ev");}
void  S731C3 ::v43(){vfunc_called(this, "_ZN6S731C33v43Ev");}
S731C3 ::S731C3(){ note_ctor("S731C3", this);} // tgen

static void Test_S731C3()
{
  extern Class_Descriptor cd_S731C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,18)];
    init_test(&cd_S731C3, buf);
    S731C3 *dp, &lv = *(dp=new (buf) S731C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,68), "sizeof(S731C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S731C3)");
    check_base_class_offset(lv, (S731C5_nt*)(S731C4*), 0, "S731C3");
    check_base_class_offset(lv, (S731C4*), 0, "S731C3");
    check_field_offset(lv, s731c3f0, ABISELECT(96,64), "S731C3.s731c3f0");
    test_class_info(&lv, &cd_S731C3);
    dp->~S731C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS731C3(Test_S731C3, "S731C3", ABISELECT(104,68));

#else // __cplusplus

extern void _ZN6S731C3C1Ev();
extern void _ZN6S731C3D1Ev();
Name_Map name_map_S731C3[] = {
  NSPAIR(_ZN6S731C3C1Ev),
  NSPAIR(_ZN6S731C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C5_nt;
extern VTBL_ENTRY _ZTI9S731C5_nt[];
extern  VTBL_ENTRY _ZTV9S731C5_nt[];
extern Class_Descriptor cd_S731C4;
extern VTBL_ENTRY _ZTI6S731C4[];
extern  VTBL_ENTRY _ZTV6S731C4[];
static Base_Class bases_S731C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S731C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S731C3[];
extern void _ZN6S731C3D1Ev();
extern void _ZN6S731C3D0Ev();
extern void _ZN6S731C43v14Ev();
extern void _ZN6S731C43v15Ev();
extern void _ZN6S731C43v16Ev();
extern void _ZN6S731C43v17Ev();
extern void _ZN6S731C43v18Ev();
extern void _ZN6S731C43v19Ev();
extern void _ZN6S731C43v20Ev();
extern void _ZN6S731C43v21Ev();
extern void _ZN6S731C43v22Ev();
extern void _ZN6S731C43v23Ev();
extern void _ZN6S731C43v24Ev();
extern void _ZN6S731C33v25Ev();
extern void _ZN6S731C33v26Ev();
extern void _ZN6S731C33v27Ev();
extern void _ZN6S731C33v28Ev();
extern void _ZN6S731C33v29Ev();
extern void _ZN6S731C33v30Ev();
extern void _ZN6S731C33v31Ev();
extern void _ZN6S731C33v32Ev();
extern void _ZN6S731C33v33Ev();
extern void _ZN6S731C33v34Ev();
extern void _ZN6S731C33v35Ev();
extern void _ZN6S731C33v36Ev();
extern void _ZN6S731C33v37Ev();
extern void _ZN6S731C33v38Ev();
extern void _ZN6S731C33v39Ev();
extern void _ZN6S731C33v40Ev();
extern void _ZN6S731C33v41Ev();
extern void _ZN6S731C33v42Ev();
extern void _ZN6S731C33v43Ev();
static  VTBL_ENTRY vtc_S731C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S731C3[0]),
  (VTBL_ENTRY)&_ZN6S731C3D1Ev,
  (VTBL_ENTRY)&_ZN6S731C3D0Ev,
  (VTBL_ENTRY)&_ZN6S731C43v14Ev,
  (VTBL_ENTRY)&_ZN6S731C43v15Ev,
  (VTBL_ENTRY)&_ZN6S731C43v16Ev,
  (VTBL_ENTRY)&_ZN6S731C43v17Ev,
  (VTBL_ENTRY)&_ZN6S731C43v18Ev,
  (VTBL_ENTRY)&_ZN6S731C43v19Ev,
  (VTBL_ENTRY)&_ZN6S731C43v20Ev,
  (VTBL_ENTRY)&_ZN6S731C43v21Ev,
  (VTBL_ENTRY)&_ZN6S731C43v22Ev,
  (VTBL_ENTRY)&_ZN6S731C43v23Ev,
  (VTBL_ENTRY)&_ZN6S731C43v24Ev,
  (VTBL_ENTRY)&_ZN6S731C33v25Ev,
  (VTBL_ENTRY)&_ZN6S731C33v26Ev,
  (VTBL_ENTRY)&_ZN6S731C33v27Ev,
  (VTBL_ENTRY)&_ZN6S731C33v28Ev,
  (VTBL_ENTRY)&_ZN6S731C33v29Ev,
  (VTBL_ENTRY)&_ZN6S731C33v30Ev,
  (VTBL_ENTRY)&_ZN6S731C33v31Ev,
  (VTBL_ENTRY)&_ZN6S731C33v32Ev,
  (VTBL_ENTRY)&_ZN6S731C33v33Ev,
  (VTBL_ENTRY)&_ZN6S731C33v34Ev,
  (VTBL_ENTRY)&_ZN6S731C33v35Ev,
  (VTBL_ENTRY)&_ZN6S731C33v36Ev,
  (VTBL_ENTRY)&_ZN6S731C33v37Ev,
  (VTBL_ENTRY)&_ZN6S731C33v38Ev,
  (VTBL_ENTRY)&_ZN6S731C33v39Ev,
  (VTBL_ENTRY)&_ZN6S731C33v40Ev,
  (VTBL_ENTRY)&_ZN6S731C33v41Ev,
  (VTBL_ENTRY)&_ZN6S731C33v42Ev,
  (VTBL_ENTRY)&_ZN6S731C33v43Ev,
};
extern VTBL_ENTRY _ZTI6S731C3[];
extern  VTBL_ENTRY _ZTV6S731C3[];
Class_Descriptor cd_S731C3 = {  "S731C3", // class name
  bases_S731C3, 2,
  &(vtc_S731C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,68), // object size
  NSPAIRA(_ZTI6S731C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S731C3),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S731C2  : S731C3 {
  ::S731C6_nt s731c2f0;
  virtual  ~S731C2(); // _ZN6S731C2D1Ev
  virtual void  v44(); // _ZN6S731C23v44Ev
  virtual void  v45(); // _ZN6S731C23v45Ev
  virtual void  v46(); // _ZN6S731C23v46Ev
  virtual void  v47(); // _ZN6S731C23v47Ev
  virtual void  v48(); // _ZN6S731C23v48Ev
  virtual void  v49(); // _ZN6S731C23v49Ev
  virtual void  v50(); // _ZN6S731C23v50Ev
  S731C2(); // tgen
};
//SIG(-1 S731C2) C1{ BC2{ BC3{ BC4{ vd m FC5{ m Fp Fi[2] FC6{ m}}} vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 Fp FC7{ m Fi[4] Fp Fc Fi[2] Fp[2]}} vd v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 Fi} vd v1 v2 v3 v4 v5 v6 v7 FC5}


 S731C2 ::~S731C2(){ note_dtor("S731C2", this);}
void  S731C2 ::v44(){vfunc_called(this, "_ZN6S731C23v44Ev");}
void  S731C2 ::v45(){vfunc_called(this, "_ZN6S731C23v45Ev");}
void  S731C2 ::v46(){vfunc_called(this, "_ZN6S731C23v46Ev");}
void  S731C2 ::v47(){vfunc_called(this, "_ZN6S731C23v47Ev");}
void  S731C2 ::v48(){vfunc_called(this, "_ZN6S731C23v48Ev");}
void  S731C2 ::v49(){vfunc_called(this, "_ZN6S731C23v49Ev");}
void  S731C2 ::v50(){vfunc_called(this, "_ZN6S731C23v50Ev");}
S731C2 ::S731C2(){ note_ctor("S731C2", this);} // tgen

static void Test_S731C2()
{
  extern Class_Descriptor cd_S731C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,22)];
    init_test(&cd_S731C2, buf);
    S731C2 *dp, &lv = *(dp=new (buf) S731C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S731C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S731C2)");
    check_base_class_offset(lv, (S731C5_nt*)(S731C4*)(S731C3*), 0, "S731C2");
    check_base_class_offset(lv, (S731C4*)(S731C3*), 0, "S731C2");
    check_base_class_offset(lv, (S731C3*), 0, "S731C2");
    check_field_offset(lv, s731c2f0, ABISELECT(104,68), "S731C2.s731c2f0");
    test_class_info(&lv, &cd_S731C2);
    dp->~S731C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS731C2(Test_S731C2, "S731C2", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN6S731C2C1Ev();
extern void _ZN6S731C2D1Ev();
Name_Map name_map_S731C2[] = {
  NSPAIR(_ZN6S731C2C1Ev),
  NSPAIR(_ZN6S731C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C5_nt;
extern VTBL_ENTRY _ZTI9S731C5_nt[];
extern  VTBL_ENTRY _ZTV9S731C5_nt[];
extern Class_Descriptor cd_S731C4;
extern VTBL_ENTRY _ZTI6S731C4[];
extern  VTBL_ENTRY _ZTV6S731C4[];
extern Class_Descriptor cd_S731C3;
extern VTBL_ENTRY _ZTI6S731C3[];
extern  VTBL_ENTRY _ZTV6S731C3[];
static Base_Class bases_S731C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S731C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S731C2[];
extern void _ZN6S731C2D1Ev();
extern void _ZN6S731C2D0Ev();
extern void _ZN6S731C43v14Ev();
extern void _ZN6S731C43v15Ev();
extern void _ZN6S731C43v16Ev();
extern void _ZN6S731C43v17Ev();
extern void _ZN6S731C43v18Ev();
extern void _ZN6S731C43v19Ev();
extern void _ZN6S731C43v20Ev();
extern void _ZN6S731C43v21Ev();
extern void _ZN6S731C43v22Ev();
extern void _ZN6S731C43v23Ev();
extern void _ZN6S731C43v24Ev();
extern void _ZN6S731C33v25Ev();
extern void _ZN6S731C33v26Ev();
extern void _ZN6S731C33v27Ev();
extern void _ZN6S731C33v28Ev();
extern void _ZN6S731C33v29Ev();
extern void _ZN6S731C33v30Ev();
extern void _ZN6S731C33v31Ev();
extern void _ZN6S731C33v32Ev();
extern void _ZN6S731C33v33Ev();
extern void _ZN6S731C33v34Ev();
extern void _ZN6S731C33v35Ev();
extern void _ZN6S731C33v36Ev();
extern void _ZN6S731C33v37Ev();
extern void _ZN6S731C33v38Ev();
extern void _ZN6S731C33v39Ev();
extern void _ZN6S731C33v40Ev();
extern void _ZN6S731C33v41Ev();
extern void _ZN6S731C33v42Ev();
extern void _ZN6S731C33v43Ev();
extern void _ZN6S731C23v44Ev();
extern void _ZN6S731C23v45Ev();
extern void _ZN6S731C23v46Ev();
extern void _ZN6S731C23v47Ev();
extern void _ZN6S731C23v48Ev();
extern void _ZN6S731C23v49Ev();
extern void _ZN6S731C23v50Ev();
static  VTBL_ENTRY vtc_S731C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S731C2[0]),
  (VTBL_ENTRY)&_ZN6S731C2D1Ev,
  (VTBL_ENTRY)&_ZN6S731C2D0Ev,
  (VTBL_ENTRY)&_ZN6S731C43v14Ev,
  (VTBL_ENTRY)&_ZN6S731C43v15Ev,
  (VTBL_ENTRY)&_ZN6S731C43v16Ev,
  (VTBL_ENTRY)&_ZN6S731C43v17Ev,
  (VTBL_ENTRY)&_ZN6S731C43v18Ev,
  (VTBL_ENTRY)&_ZN6S731C43v19Ev,
  (VTBL_ENTRY)&_ZN6S731C43v20Ev,
  (VTBL_ENTRY)&_ZN6S731C43v21Ev,
  (VTBL_ENTRY)&_ZN6S731C43v22Ev,
  (VTBL_ENTRY)&_ZN6S731C43v23Ev,
  (VTBL_ENTRY)&_ZN6S731C43v24Ev,
  (VTBL_ENTRY)&_ZN6S731C33v25Ev,
  (VTBL_ENTRY)&_ZN6S731C33v26Ev,
  (VTBL_ENTRY)&_ZN6S731C33v27Ev,
  (VTBL_ENTRY)&_ZN6S731C33v28Ev,
  (VTBL_ENTRY)&_ZN6S731C33v29Ev,
  (VTBL_ENTRY)&_ZN6S731C33v30Ev,
  (VTBL_ENTRY)&_ZN6S731C33v31Ev,
  (VTBL_ENTRY)&_ZN6S731C33v32Ev,
  (VTBL_ENTRY)&_ZN6S731C33v33Ev,
  (VTBL_ENTRY)&_ZN6S731C33v34Ev,
  (VTBL_ENTRY)&_ZN6S731C33v35Ev,
  (VTBL_ENTRY)&_ZN6S731C33v36Ev,
  (VTBL_ENTRY)&_ZN6S731C33v37Ev,
  (VTBL_ENTRY)&_ZN6S731C33v38Ev,
  (VTBL_ENTRY)&_ZN6S731C33v39Ev,
  (VTBL_ENTRY)&_ZN6S731C33v40Ev,
  (VTBL_ENTRY)&_ZN6S731C33v41Ev,
  (VTBL_ENTRY)&_ZN6S731C33v42Ev,
  (VTBL_ENTRY)&_ZN6S731C33v43Ev,
  (VTBL_ENTRY)&_ZN6S731C23v44Ev,
  (VTBL_ENTRY)&_ZN6S731C23v45Ev,
  (VTBL_ENTRY)&_ZN6S731C23v46Ev,
  (VTBL_ENTRY)&_ZN6S731C23v47Ev,
  (VTBL_ENTRY)&_ZN6S731C23v48Ev,
  (VTBL_ENTRY)&_ZN6S731C23v49Ev,
  (VTBL_ENTRY)&_ZN6S731C23v50Ev,
};
extern VTBL_ENTRY _ZTI6S731C2[];
extern  VTBL_ENTRY _ZTV6S731C2[];
Class_Descriptor cd_S731C2 = {  "S731C2", // class name
  bases_S731C2, 3,
  &(vtc_S731C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI6S731C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S731C2),41, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S731C11_nt  {
  virtual  ~S731C11_nt(); // _ZN10S731C11_ntD1Ev
  virtual void  v51(); // _ZN10S731C11_nt3v51Ev
  S731C11_nt(); // tgen
};
//SIG(-1 S731C11_nt) C1{ vd v1}


 S731C11_nt ::~S731C11_nt(){ note_dtor("S731C11_nt", this);}
void  S731C11_nt ::v51(){vfunc_called(this, "_ZN10S731C11_nt3v51Ev");}
S731C11_nt ::S731C11_nt(){ note_ctor("S731C11_nt", this);} // tgen

//skip512 S731C11_nt

#else // __cplusplus

extern void _ZN10S731C11_ntC1Ev();
extern void _ZN10S731C11_ntD1Ev();
Name_Map name_map_S731C11_nt[] = {
  NSPAIR(_ZN10S731C11_ntC1Ev),
  NSPAIR(_ZN10S731C11_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S731C11_nt[];
extern void _ZN10S731C11_ntD1Ev();
extern void _ZN10S731C11_ntD0Ev();
extern void _ZN10S731C11_nt3v51Ev();
static  VTBL_ENTRY vtc_S731C11_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S731C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S731C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S731C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S731C11_nt3v51Ev,
};
extern VTBL_ENTRY _ZTI10S731C11_nt[];
VTBL_ENTRY *P__ZTI10S731C11_nt = _ZTI10S731C11_nt; 
extern  VTBL_ENTRY _ZTV10S731C11_nt[];
Class_Descriptor cd_S731C11_nt = {  "S731C11_nt", // class name
  0,0,//no base classes
  &(vtc_S731C11_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S731C11_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S731C11_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  S731C12  {
  virtual  ~S731C12(); // _ZN7S731C12D1Ev
  virtual void  v52(); // _ZN7S731C123v52Ev
  S731C12(); // tgen
};
//SIG(-1 S731C12) C1{ vd v1}


 S731C12 ::~S731C12(){ note_dtor("S731C12", this);}
void  S731C12 ::v52(){vfunc_called(this, "_ZN7S731C123v52Ev");}
S731C12 ::S731C12(){ note_ctor("S731C12", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S731C12C1Ev();
extern void _ZN7S731C12D1Ev();
Name_Map name_map_S731C12[] = {
  NSPAIR(_ZN7S731C12C1Ev),
  NSPAIR(_ZN7S731C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S731C12[];
extern void _ZN7S731C12D1Ev();
extern void _ZN7S731C12D0Ev();
extern void _ZN7S731C123v52Ev();
static  VTBL_ENTRY vtc_S731C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S731C12[0]),
  (VTBL_ENTRY)&_ZN7S731C12D1Ev,
  (VTBL_ENTRY)&_ZN7S731C12D0Ev,
  (VTBL_ENTRY)&_ZN7S731C123v52Ev,
};
extern VTBL_ENTRY _ZTI7S731C12[];
extern  VTBL_ENTRY _ZTV7S731C12[];
Class_Descriptor cd_S731C12 = {  "S731C12", // class name
  0,0,//no base classes
  &(vtc_S731C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S731C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S731C12),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  S731C14_nt  {
  void *s731c14f0;
  void  mf731c14(); // _ZN10S731C14_nt8mf731c14Ev
  virtual  ~S731C14_nt(); // _ZN10S731C14_ntD1Ev
  S731C14_nt(); // tgen
};
//SIG(-1 S731C14_nt) C1{ vd m Fp}


void  S731C14_nt ::mf731c14(){}
 S731C14_nt ::~S731C14_nt(){ note_dtor("S731C14_nt", this);}
S731C14_nt ::S731C14_nt(){ note_ctor("S731C14_nt", this);} // tgen

//skip512 S731C14_nt

#else // __cplusplus

extern void _ZN10S731C14_ntC1Ev();
extern void _ZN10S731C14_ntD1Ev();
Name_Map name_map_S731C14_nt[] = {
  NSPAIR(_ZN10S731C14_ntC1Ev),
  NSPAIR(_ZN10S731C14_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern void _ZN10S731C14_ntD1Ev();
extern void _ZN10S731C14_ntD0Ev();
static  VTBL_ENTRY vtc_S731C14_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S731C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S731C14_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S731C14_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S731C14_nt[];
VTBL_ENTRY *P__ZTI10S731C14_nt = _ZTI10S731C14_nt; 
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
Class_Descriptor cd_S731C14_nt = {  "S731C14_nt", // class name
  0,0,//no base classes
  &(vtc_S731C14_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S731C14_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S731C14_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  S731C13  : S731C14_nt {
  void *s731c13f0;
  int s731c13f1;
  char s731c13f2[2];
  virtual  ~S731C13(); // _ZN7S731C13D1Ev
  S731C13(); // tgen
};
//SIG(-1 S731C13) C1{ BC2{ vd m Fp} vd Fp Fi Fc[2]}


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

static void Test_S731C13()
{
  extern Class_Descriptor cd_S731C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S731C13, buf);
    S731C13 *dp, &lv = *(dp=new (buf) S731C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S731C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S731C13)");
    check_base_class_offset(lv, (S731C14_nt*), 0, "S731C13");
    check_field_offset(lv, s731c13f0, ABISELECT(16,8), "S731C13.s731c13f0");
    check_field_offset(lv, s731c13f1, ABISELECT(24,12), "S731C13.s731c13f1");
    check_field_offset(lv, s731c13f2, ABISELECT(28,16), "S731C13.s731c13f2");
    test_class_info(&lv, &cd_S731C13);
    dp->~S731C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS731C13(Test_S731C13, "S731C13", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S731C13C1Ev();
extern void _ZN7S731C13D1Ev();
Name_Map name_map_S731C13[] = {
  NSPAIR(_ZN7S731C13C1Ev),
  NSPAIR(_ZN7S731C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
static Base_Class bases_S731C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C14_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S731C13[];
extern void _ZN7S731C13D1Ev();
extern void _ZN7S731C13D0Ev();
static  VTBL_ENTRY vtc_S731C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S731C13[0]),
  (VTBL_ENTRY)&_ZN7S731C13D1Ev,
  (VTBL_ENTRY)&_ZN7S731C13D0Ev,
};
extern VTBL_ENTRY _ZTI7S731C13[];
extern  VTBL_ENTRY _ZTV7S731C13[];
Class_Descriptor cd_S731C13 = {  "S731C13", // class name
  bases_S731C13, 1,
  &(vtc_S731C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S731C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S731C13),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  S731C17_nt  {
  void  mf731c17(); // _ZN10S731C17_nt8mf731c17Ev
};
//SIG(-1 S731C17_nt) C1{ m}


void  S731C17_nt ::mf731c17(){}

//skip512 S731C17_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S731C17_nt[];
VTBL_ENTRY *P__ZTI10S731C17_nt = _ZTI10S731C17_nt; 
Class_Descriptor cd_S731C17_nt = {  "S731C17_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI10S731C17_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  S731C16_nt  {
  void *s731c16f0;
  int s731c16f1;
  ::S731C17_nt s731c16f2;
  void  mf731c16(); // _ZN10S731C16_nt8mf731c16Ev
};
//SIG(-1 S731C16_nt) C1{ m Fp Fi FC2{ m}}


void  S731C16_nt ::mf731c16(){}

//skip512 S731C16_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S731C15_nt  {
  ::S731C16_nt s731c15f0;
  int s731c15f1;
  void  mf731c15(); // _ZN10S731C15_nt8mf731c15Ev
};
//SIG(-1 S731C15_nt) C1{ m FC2{ m Fp Fi FC3{ m}} Fi}


void  S731C15_nt ::mf731c15(){}

//skip512 S731C15_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S731C19_nt  {
  virtual  ~S731C19_nt(); // _ZN10S731C19_ntD1Ev
  virtual void  v62(); // _ZN10S731C19_nt3v62Ev
  virtual void  v63(); // _ZN10S731C19_nt3v63Ev
  virtual void  v64(); // _ZN10S731C19_nt3v64Ev
  virtual void  v65(); // _ZN10S731C19_nt3v65Ev
  virtual void  v66(); // _ZN10S731C19_nt3v66Ev
  virtual void  v67(); // _ZN10S731C19_nt3v67Ev
  virtual void  v68(); // _ZN10S731C19_nt3v68Ev
  virtual void  v69(); // _ZN10S731C19_nt3v69Ev
  virtual void  v70(); // _ZN10S731C19_nt3v70Ev
  S731C19_nt(); // tgen
};
//SIG(-1 S731C19_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S731C19_nt ::~S731C19_nt(){ note_dtor("S731C19_nt", this);}
void  S731C19_nt ::v62(){vfunc_called(this, "_ZN10S731C19_nt3v62Ev");}
void  S731C19_nt ::v63(){vfunc_called(this, "_ZN10S731C19_nt3v63Ev");}
void  S731C19_nt ::v64(){vfunc_called(this, "_ZN10S731C19_nt3v64Ev");}
void  S731C19_nt ::v65(){vfunc_called(this, "_ZN10S731C19_nt3v65Ev");}
void  S731C19_nt ::v66(){vfunc_called(this, "_ZN10S731C19_nt3v66Ev");}
void  S731C19_nt ::v67(){vfunc_called(this, "_ZN10S731C19_nt3v67Ev");}
void  S731C19_nt ::v68(){vfunc_called(this, "_ZN10S731C19_nt3v68Ev");}
void  S731C19_nt ::v69(){vfunc_called(this, "_ZN10S731C19_nt3v69Ev");}
void  S731C19_nt ::v70(){vfunc_called(this, "_ZN10S731C19_nt3v70Ev");}
S731C19_nt ::S731C19_nt(){ note_ctor("S731C19_nt", this);} // tgen

//skip512 S731C19_nt

#else // __cplusplus

extern void _ZN10S731C19_ntC1Ev();
extern void _ZN10S731C19_ntD1Ev();
Name_Map name_map_S731C19_nt[] = {
  NSPAIR(_ZN10S731C19_ntC1Ev),
  NSPAIR(_ZN10S731C19_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S731C19_nt[];
extern void _ZN10S731C19_ntD1Ev();
extern void _ZN10S731C19_ntD0Ev();
extern void _ZN10S731C19_nt3v62Ev();
extern void _ZN10S731C19_nt3v63Ev();
extern void _ZN10S731C19_nt3v64Ev();
extern void _ZN10S731C19_nt3v65Ev();
extern void _ZN10S731C19_nt3v66Ev();
extern void _ZN10S731C19_nt3v67Ev();
extern void _ZN10S731C19_nt3v68Ev();
extern void _ZN10S731C19_nt3v69Ev();
extern void _ZN10S731C19_nt3v70Ev();
static  VTBL_ENTRY vtc_S731C19_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S731C19_nt[0]),
  (VTBL_ENTRY)&_ZN10S731C19_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S731C19_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S731C19_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S731C19_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S731C19_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S731C19_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S731C19_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S731C19_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S731C19_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S731C19_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S731C19_nt3v70Ev,
};
extern VTBL_ENTRY _ZTI10S731C19_nt[];
VTBL_ENTRY *P__ZTI10S731C19_nt = _ZTI10S731C19_nt; 
extern  VTBL_ENTRY _ZTV10S731C19_nt[];
Class_Descriptor cd_S731C19_nt = {  "S731C19_nt", // class name
  0,0,//no base classes
  &(vtc_S731C19_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S731C19_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S731C19_nt),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S731C20  {
  void *s731c20f0;
  int s731c20f1[2];
  ::S731C17_nt s731c20f2;
  void  mf731c20(); // _ZN7S731C208mf731c20Ev
};
//SIG(-1 S731C20) C1{ m Fp Fi[2] FC2{ m}}


void  S731C20 ::mf731c20(){}

static void Test_S731C20()
{
  {
    init_simple_test("S731C20");
    S731C20 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S731C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S731C20)");
    check_field_offset(lv, s731c20f0, 0, "S731C20.s731c20f0");
    check_field_offset(lv, s731c20f1, ABISELECT(8,4), "S731C20.s731c20f1");
    check_field_offset(lv, s731c20f2, ABISELECT(16,12), "S731C20.s731c20f2");
  }
}
static Arrange_To_Call_Me vS731C20(Test_S731C20, "S731C20", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S731C18  : S731C19_nt {
  ::S731C20 s731c18f0;
  char s731c18f1;
  virtual  ~S731C18(); // _ZN7S731C18D1Ev
  virtual void  v53(); // _ZN7S731C183v53Ev
  virtual void  v54(); // _ZN7S731C183v54Ev
  virtual void  v55(); // _ZN7S731C183v55Ev
  virtual void  v56(); // _ZN7S731C183v56Ev
  virtual void  v57(); // _ZN7S731C183v57Ev
  virtual void  v58(); // _ZN7S731C183v58Ev
  virtual void  v59(); // _ZN7S731C183v59Ev
  virtual void  v60(); // _ZN7S731C183v60Ev
  virtual void  v61(); // _ZN7S731C183v61Ev
  S731C18(); // tgen
};
//SIG(-1 S731C18) C1{ BC2{ vd v10 v11 v12 v13 v14 v15 v16 v17 v18} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FC3{ m Fp Fi[2] FC4{ m}} Fc}


 S731C18 ::~S731C18(){ note_dtor("S731C18", this);}
void  S731C18 ::v53(){vfunc_called(this, "_ZN7S731C183v53Ev");}
void  S731C18 ::v54(){vfunc_called(this, "_ZN7S731C183v54Ev");}
void  S731C18 ::v55(){vfunc_called(this, "_ZN7S731C183v55Ev");}
void  S731C18 ::v56(){vfunc_called(this, "_ZN7S731C183v56Ev");}
void  S731C18 ::v57(){vfunc_called(this, "_ZN7S731C183v57Ev");}
void  S731C18 ::v58(){vfunc_called(this, "_ZN7S731C183v58Ev");}
void  S731C18 ::v59(){vfunc_called(this, "_ZN7S731C183v59Ev");}
void  S731C18 ::v60(){vfunc_called(this, "_ZN7S731C183v60Ev");}
void  S731C18 ::v61(){vfunc_called(this, "_ZN7S731C183v61Ev");}
S731C18 ::S731C18(){ note_ctor("S731C18", this);} // tgen

static void Test_S731C18()
{
  extern Class_Descriptor cd_S731C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S731C18, buf);
    S731C18 *dp, &lv = *(dp=new (buf) S731C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S731C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S731C18)");
    check_base_class_offset(lv, (S731C19_nt*), 0, "S731C18");
    check_field_offset(lv, s731c18f0, ABISELECT(8,4), "S731C18.s731c18f0");
    check_field_offset(lv, s731c18f1, ABISELECT(32,20), "S731C18.s731c18f1");
    test_class_info(&lv, &cd_S731C18);
    dp->~S731C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS731C18(Test_S731C18, "S731C18", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S731C18C1Ev();
extern void _ZN7S731C18D1Ev();
Name_Map name_map_S731C18[] = {
  NSPAIR(_ZN7S731C18C1Ev),
  NSPAIR(_ZN7S731C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C19_nt;
extern VTBL_ENTRY _ZTI10S731C19_nt[];
extern  VTBL_ENTRY _ZTV10S731C19_nt[];
static Base_Class bases_S731C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S731C18[];
extern void _ZN7S731C18D1Ev();
extern void _ZN7S731C18D0Ev();
extern void _ZN10S731C19_nt3v62Ev();
extern void _ZN10S731C19_nt3v63Ev();
extern void _ZN10S731C19_nt3v64Ev();
extern void _ZN10S731C19_nt3v65Ev();
extern void _ZN10S731C19_nt3v66Ev();
extern void _ZN10S731C19_nt3v67Ev();
extern void _ZN10S731C19_nt3v68Ev();
extern void _ZN10S731C19_nt3v69Ev();
extern void _ZN10S731C19_nt3v70Ev();
extern void _ZN7S731C183v53Ev();
extern void _ZN7S731C183v54Ev();
extern void _ZN7S731C183v55Ev();
extern void _ZN7S731C183v56Ev();
extern void _ZN7S731C183v57Ev();
extern void _ZN7S731C183v58Ev();
extern void _ZN7S731C183v59Ev();
extern void _ZN7S731C183v60Ev();
extern void _ZN7S731C183v61Ev();
static  VTBL_ENTRY vtc_S731C18[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S731C18[0]),
  (VTBL_ENTRY)&_ZN7S731C18D1Ev,
  (VTBL_ENTRY)&_ZN7S731C18D0Ev,
  (VTBL_ENTRY)&_ZN10S731C19_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S731C19_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S731C19_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S731C19_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S731C19_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S731C19_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S731C19_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S731C19_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S731C19_nt3v70Ev,
  (VTBL_ENTRY)&_ZN7S731C183v53Ev,
  (VTBL_ENTRY)&_ZN7S731C183v54Ev,
  (VTBL_ENTRY)&_ZN7S731C183v55Ev,
  (VTBL_ENTRY)&_ZN7S731C183v56Ev,
  (VTBL_ENTRY)&_ZN7S731C183v57Ev,
  (VTBL_ENTRY)&_ZN7S731C183v58Ev,
  (VTBL_ENTRY)&_ZN7S731C183v59Ev,
  (VTBL_ENTRY)&_ZN7S731C183v60Ev,
  (VTBL_ENTRY)&_ZN7S731C183v61Ev,
};
extern VTBL_ENTRY _ZTI7S731C18[];
extern  VTBL_ENTRY _ZTV7S731C18[];
Class_Descriptor cd_S731C18 = {  "S731C18", // class name
  bases_S731C18, 1,
  &(vtc_S731C18[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S731C18),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S731C18),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  S731C1  : S731C2 , S731C11_nt , S731C12 {
  ::S731C13 s731c1f0;
  ::S731C15_nt s731c1f1;
  ::S731C18 s731c1f2;
  char s731c1f3;
  ::S731C20 s731c1f4;
  ::S731C20 s731c1f5;
  virtual  ~S731C1(); // _ZN6S731C1D1Ev
  virtual void  v1(); // _ZN6S731C12v1Ev
  virtual void  v2(); // _ZN6S731C12v2Ev
  virtual void  v3(); // _ZN6S731C12v3Ev
  virtual void  v4(); // _ZN6S731C12v4Ev
  virtual void  v5(); // _ZN6S731C12v5Ev
  virtual void  v6(); // _ZN6S731C12v6Ev
  virtual void  v7(); // _ZN6S731C12v7Ev
  virtual void  v8(); // _ZN6S731C12v8Ev
  virtual void  v9(); // _ZN6S731C12v9Ev
  virtual void  v10(); // _ZN6S731C13v10Ev
  virtual void  v11(); // _ZN6S731C13v11Ev
  virtual void  v12(); // _ZN6S731C13v12Ev
  virtual void  v13(); // _ZN6S731C13v13Ev
  S731C1(); // tgen
};
//SIG(1 S731C1) C1{ BC2{ BC3{ BC4{ BC5{ vd m FC6{ m Fp Fi[2] FC7{ m}}} vd v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fp FC8{ m Fi[4] Fp Fc Fi[2] Fp[2]}} vd v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 Fi} vd v44 v45 v46 v47 v48 v49 v50 FC6} BC9{ vd v51} BC10{ vd v52} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 FC11{ BC12{ vd m Fp} vd Fp Fi Fc[2]} FC13{ m FC14{ m Fp Fi FC15{ m}} Fi} FC16{ BC17{ vd v62 v63 v64 v65 v66 v67 v68 v69 v70} vd v53 v54 v55 v56 v57 v58 v59 v60 v61 FC18{ m Fp Fi[2] FC15} Fc} Fc FC18 FC18}


 S731C1 ::~S731C1(){ note_dtor("S731C1", this);}
void  S731C1 ::v1(){vfunc_called(this, "_ZN6S731C12v1Ev");}
void  S731C1 ::v2(){vfunc_called(this, "_ZN6S731C12v2Ev");}
void  S731C1 ::v3(){vfunc_called(this, "_ZN6S731C12v3Ev");}
void  S731C1 ::v4(){vfunc_called(this, "_ZN6S731C12v4Ev");}
void  S731C1 ::v5(){vfunc_called(this, "_ZN6S731C12v5Ev");}
void  S731C1 ::v6(){vfunc_called(this, "_ZN6S731C12v6Ev");}
void  S731C1 ::v7(){vfunc_called(this, "_ZN6S731C12v7Ev");}
void  S731C1 ::v8(){vfunc_called(this, "_ZN6S731C12v8Ev");}
void  S731C1 ::v9(){vfunc_called(this, "_ZN6S731C12v9Ev");}
void  S731C1 ::v10(){vfunc_called(this, "_ZN6S731C13v10Ev");}
void  S731C1 ::v11(){vfunc_called(this, "_ZN6S731C13v11Ev");}
void  S731C1 ::v12(){vfunc_called(this, "_ZN6S731C13v12Ev");}
void  S731C1 ::v13(){vfunc_called(this, "_ZN6S731C13v13Ev");}
S731C1 ::S731C1(){ note_ctor("S731C1", this);} // tgen

static void Test_S731C1()
{
  extern Class_Descriptor cd_S731C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(38,48)];
    init_test(&cd_S731C1, buf);
    S731C1 *dp, &lv = *(dp=new (buf) S731C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(296,188), "sizeof(S731C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S731C1)");
    check_base_class_offset(lv, (S731C5_nt*)(S731C4*)(S731C3*)(S731C2*), 0, "S731C1");
    check_base_class_offset(lv, (S731C4*)(S731C3*)(S731C2*), 0, "S731C1");
    check_base_class_offset(lv, (S731C3*)(S731C2*), 0, "S731C1");
    check_base_class_offset(lv, (S731C2*), 0, "S731C1");
    check_base_class_offset(lv, (S731C11_nt*), ABISELECT(128,84), "S731C1");
    check_base_class_offset(lv, (S731C12*), ABISELECT(136,88), "S731C1");
    check_field_offset(lv, s731c1f0, ABISELECT(144,92), "S731C1.s731c1f0");
    check_field_offset(lv, s731c1f1, ABISELECT(176,112), "S731C1.s731c1f1");
    check_field_offset(lv, s731c1f2, ABISELECT(200,128), "S731C1.s731c1f2");
    check_field_offset(lv, s731c1f3, ABISELECT(240,152), "S731C1.s731c1f3");
    check_field_offset(lv, s731c1f4, ABISELECT(248,156), "S731C1.s731c1f4");
    check_field_offset(lv, s731c1f5, ABISELECT(272,172), "S731C1.s731c1f5");
    test_class_info(&lv, &cd_S731C1);
    dp->~S731C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS731C1(Test_S731C1, "S731C1", ABISELECT(296,188));

#else // __cplusplus

extern void _ZN6S731C1C1Ev();
extern void _ZN6S731C1D1Ev();
Name_Map name_map_S731C1[] = {
  NSPAIR(_ZN6S731C1C1Ev),
  NSPAIR(_ZN6S731C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C5_nt;
extern VTBL_ENTRY _ZTI9S731C5_nt[];
extern  VTBL_ENTRY _ZTV9S731C5_nt[];
extern Class_Descriptor cd_S731C4;
extern VTBL_ENTRY _ZTI6S731C4[];
extern  VTBL_ENTRY _ZTV6S731C4[];
extern Class_Descriptor cd_S731C3;
extern VTBL_ENTRY _ZTI6S731C3[];
extern  VTBL_ENTRY _ZTV6S731C3[];
extern Class_Descriptor cd_S731C2;
extern VTBL_ENTRY _ZTI6S731C2[];
extern  VTBL_ENTRY _ZTV6S731C2[];
extern Class_Descriptor cd_S731C11_nt;
extern VTBL_ENTRY _ZTI10S731C11_nt[];
extern  VTBL_ENTRY _ZTV10S731C11_nt[];
extern Class_Descriptor cd_S731C12;
extern VTBL_ENTRY _ZTI7S731C12[];
extern  VTBL_ENTRY _ZTV7S731C12[];
static Base_Class bases_S731C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S731C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S731C11_nt,    ABISELECT(128,84), //bcp->offset
    54, //bcp->virtual_function_table_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_S731C12,    ABISELECT(136,88), //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S731C1[];
extern void _ZN6S731C1D1Ev();
extern void _ZN6S731C1D0Ev();
extern void _ZN6S731C43v14Ev();
extern void _ZN6S731C43v15Ev();
extern void _ZN6S731C43v16Ev();
extern void _ZN6S731C43v17Ev();
extern void _ZN6S731C43v18Ev();
extern void _ZN6S731C43v19Ev();
extern void _ZN6S731C43v20Ev();
extern void _ZN6S731C43v21Ev();
extern void _ZN6S731C43v22Ev();
extern void _ZN6S731C43v23Ev();
extern void _ZN6S731C43v24Ev();
extern void _ZN6S731C33v25Ev();
extern void _ZN6S731C33v26Ev();
extern void _ZN6S731C33v27Ev();
extern void _ZN6S731C33v28Ev();
extern void _ZN6S731C33v29Ev();
extern void _ZN6S731C33v30Ev();
extern void _ZN6S731C33v31Ev();
extern void _ZN6S731C33v32Ev();
extern void _ZN6S731C33v33Ev();
extern void _ZN6S731C33v34Ev();
extern void _ZN6S731C33v35Ev();
extern void _ZN6S731C33v36Ev();
extern void _ZN6S731C33v37Ev();
extern void _ZN6S731C33v38Ev();
extern void _ZN6S731C33v39Ev();
extern void _ZN6S731C33v40Ev();
extern void _ZN6S731C33v41Ev();
extern void _ZN6S731C33v42Ev();
extern void _ZN6S731C33v43Ev();
extern void _ZN6S731C23v44Ev();
extern void _ZN6S731C23v45Ev();
extern void _ZN6S731C23v46Ev();
extern void _ZN6S731C23v47Ev();
extern void _ZN6S731C23v48Ev();
extern void _ZN6S731C23v49Ev();
extern void _ZN6S731C23v50Ev();
extern void _ZN6S731C12v1Ev();
extern void _ZN6S731C12v2Ev();
extern void _ZN6S731C12v3Ev();
extern void _ZN6S731C12v4Ev();
extern void _ZN6S731C12v5Ev();
extern void _ZN6S731C12v6Ev();
extern void _ZN6S731C12v7Ev();
extern void _ZN6S731C12v8Ev();
extern void _ZN6S731C12v9Ev();
extern void _ZN6S731C13v10Ev();
extern void _ZN6S731C13v11Ev();
extern void _ZN6S731C13v12Ev();
extern void _ZN6S731C13v13Ev();
extern void ABISELECT(_ZThn128_N6S731C1D1Ev,_ZThn84_N6S731C1D1Ev)();
extern void ABISELECT(_ZThn128_N6S731C1D0Ev,_ZThn84_N6S731C1D0Ev)();
extern void _ZN10S731C11_nt3v51Ev();
extern void ABISELECT(_ZThn136_N6S731C1D1Ev,_ZThn88_N6S731C1D1Ev)();
extern void ABISELECT(_ZThn136_N6S731C1D0Ev,_ZThn88_N6S731C1D0Ev)();
extern void _ZN7S731C123v52Ev();
static  VTBL_ENTRY vtc_S731C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S731C1[0]),
  (VTBL_ENTRY)&_ZN6S731C1D1Ev,
  (VTBL_ENTRY)&_ZN6S731C1D0Ev,
  (VTBL_ENTRY)&_ZN6S731C43v14Ev,
  (VTBL_ENTRY)&_ZN6S731C43v15Ev,
  (VTBL_ENTRY)&_ZN6S731C43v16Ev,
  (VTBL_ENTRY)&_ZN6S731C43v17Ev,
  (VTBL_ENTRY)&_ZN6S731C43v18Ev,
  (VTBL_ENTRY)&_ZN6S731C43v19Ev,
  (VTBL_ENTRY)&_ZN6S731C43v20Ev,
  (VTBL_ENTRY)&_ZN6S731C43v21Ev,
  (VTBL_ENTRY)&_ZN6S731C43v22Ev,
  (VTBL_ENTRY)&_ZN6S731C43v23Ev,
  (VTBL_ENTRY)&_ZN6S731C43v24Ev,
  (VTBL_ENTRY)&_ZN6S731C33v25Ev,
  (VTBL_ENTRY)&_ZN6S731C33v26Ev,
  (VTBL_ENTRY)&_ZN6S731C33v27Ev,
  (VTBL_ENTRY)&_ZN6S731C33v28Ev,
  (VTBL_ENTRY)&_ZN6S731C33v29Ev,
  (VTBL_ENTRY)&_ZN6S731C33v30Ev,
  (VTBL_ENTRY)&_ZN6S731C33v31Ev,
  (VTBL_ENTRY)&_ZN6S731C33v32Ev,
  (VTBL_ENTRY)&_ZN6S731C33v33Ev,
  (VTBL_ENTRY)&_ZN6S731C33v34Ev,
  (VTBL_ENTRY)&_ZN6S731C33v35Ev,
  (VTBL_ENTRY)&_ZN6S731C33v36Ev,
  (VTBL_ENTRY)&_ZN6S731C33v37Ev,
  (VTBL_ENTRY)&_ZN6S731C33v38Ev,
  (VTBL_ENTRY)&_ZN6S731C33v39Ev,
  (VTBL_ENTRY)&_ZN6S731C33v40Ev,
  (VTBL_ENTRY)&_ZN6S731C33v41Ev,
  (VTBL_ENTRY)&_ZN6S731C33v42Ev,
  (VTBL_ENTRY)&_ZN6S731C33v43Ev,
  (VTBL_ENTRY)&_ZN6S731C23v44Ev,
  (VTBL_ENTRY)&_ZN6S731C23v45Ev,
  (VTBL_ENTRY)&_ZN6S731C23v46Ev,
  (VTBL_ENTRY)&_ZN6S731C23v47Ev,
  (VTBL_ENTRY)&_ZN6S731C23v48Ev,
  (VTBL_ENTRY)&_ZN6S731C23v49Ev,
  (VTBL_ENTRY)&_ZN6S731C23v50Ev,
  (VTBL_ENTRY)&_ZN6S731C12v1Ev,
  (VTBL_ENTRY)&_ZN6S731C12v2Ev,
  (VTBL_ENTRY)&_ZN6S731C12v3Ev,
  (VTBL_ENTRY)&_ZN6S731C12v4Ev,
  (VTBL_ENTRY)&_ZN6S731C12v5Ev,
  (VTBL_ENTRY)&_ZN6S731C12v6Ev,
  (VTBL_ENTRY)&_ZN6S731C12v7Ev,
  (VTBL_ENTRY)&_ZN6S731C12v8Ev,
  (VTBL_ENTRY)&_ZN6S731C12v9Ev,
  (VTBL_ENTRY)&_ZN6S731C13v10Ev,
  (VTBL_ENTRY)&_ZN6S731C13v11Ev,
  (VTBL_ENTRY)&_ZN6S731C13v12Ev,
  (VTBL_ENTRY)&_ZN6S731C13v13Ev,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI6S731C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N6S731C1D1Ev,_ZThn84_N6S731C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N6S731C1D0Ev,_ZThn84_N6S731C1D0Ev),
  (VTBL_ENTRY)&_ZN10S731C11_nt3v51Ev,
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI6S731C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N6S731C1D1Ev,_ZThn88_N6S731C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N6S731C1D0Ev,_ZThn88_N6S731C1D0Ev),
  (VTBL_ENTRY)&_ZN7S731C123v52Ev,
};
extern VTBL_ENTRY _ZTI6S731C1[];
extern  VTBL_ENTRY _ZTV6S731C1[];
Class_Descriptor cd_S731C1 = {  "S731C1", // class name
  bases_S731C1, 6,
  &(vtc_S731C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(296,188), // object size
  NSPAIRA(_ZTI6S731C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV6S731C1),64, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1508C4  {
  int s1508c4f0;
  __tsi64 s1508c4f1;
  void *s1508c4f2[4];
  int s1508c4f3[2];
  void *s1508c4f4;
  ::S28C9_nt s1508c4f5;
  void *s1508c4f6[2];
  virtual  ~S1508C4(); // _ZN7S1508C4D1Ev
  virtual void  v6(); // _ZN7S1508C42v6Ev
  virtual void  v7(); // _ZN7S1508C42v7Ev
  virtual void  v8(); // _ZN7S1508C42v8Ev
  virtual void  v9(); // _ZN7S1508C42v9Ev
  virtual void  v10(); // _ZN7S1508C43v10Ev
  virtual void  v11(); // _ZN7S1508C43v11Ev
  virtual void  v12(); // _ZN7S1508C43v12Ev
  virtual void  v13(); // _ZN7S1508C43v13Ev
  virtual void  v14(); // _ZN7S1508C43v14Ev
  virtual void  v15(); // _ZN7S1508C43v15Ev
  virtual void  v16(); // _ZN7S1508C43v16Ev
  virtual void  v17(); // _ZN7S1508C43v17Ev
  virtual void  v18(); // _ZN7S1508C43v18Ev
  virtual void  v19(); // _ZN7S1508C43v19Ev
  virtual void  v20(); // _ZN7S1508C43v20Ev
  virtual void  v21(); // _ZN7S1508C43v21Ev
  virtual void  v22(); // _ZN7S1508C43v22Ev
  virtual void  v23(); // _ZN7S1508C43v23Ev
  virtual void  v24(); // _ZN7S1508C43v24Ev
  virtual void  v25(); // _ZN7S1508C43v25Ev
  virtual void  v26(); // _ZN7S1508C43v26Ev
  virtual void  v27(); // _ZN7S1508C43v27Ev
  virtual void  v28(); // _ZN7S1508C43v28Ev
  virtual void  v29(); // _ZN7S1508C43v29Ev
  virtual void  v30(); // _ZN7S1508C43v30Ev
  virtual void  v31(); // _ZN7S1508C43v31Ev
  virtual void  v32(); // _ZN7S1508C43v32Ev
  virtual void  v33(); // _ZN7S1508C43v33Ev
  virtual void  v34(); // _ZN7S1508C43v34Ev
  virtual void  v35(); // _ZN7S1508C43v35Ev
  virtual void  v36(); // _ZN7S1508C43v36Ev
  virtual void  v37(); // _ZN7S1508C43v37Ev
  virtual void  v38(); // _ZN7S1508C43v38Ev
  virtual void  v39(); // _ZN7S1508C43v39Ev
  virtual void  v40(); // _ZN7S1508C43v40Ev
  virtual void  v41(); // _ZN7S1508C43v41Ev
  virtual void  v42(); // _ZN7S1508C43v42Ev
  virtual void  v43(); // _ZN7S1508C43v43Ev
  virtual void  v44(); // _ZN7S1508C43v44Ev
  virtual void  v45(); // _ZN7S1508C43v45Ev
  virtual void  v46(); // _ZN7S1508C43v46Ev
  virtual void  v47(); // _ZN7S1508C43v47Ev
  virtual void  v48(); // _ZN7S1508C43v48Ev
  virtual void  v49(); // _ZN7S1508C43v49Ev
  virtual void  v50(); // _ZN7S1508C43v50Ev
  virtual void  v51(); // _ZN7S1508C43v51Ev
  virtual void  v52(); // _ZN7S1508C43v52Ev
  virtual void  v53(); // _ZN7S1508C43v53Ev
  virtual void  v54(); // _ZN7S1508C43v54Ev
  virtual void  v55(); // _ZN7S1508C43v55Ev
  virtual void  v56(); // _ZN7S1508C43v56Ev
  virtual void  v57(); // _ZN7S1508C43v57Ev
  virtual void  v58(); // _ZN7S1508C43v58Ev
  virtual void  v59(); // _ZN7S1508C43v59Ev
  virtual void  v60(); // _ZN7S1508C43v60Ev
  virtual void  v61(); // _ZN7S1508C43v61Ev
  virtual void  v62(); // _ZN7S1508C43v62Ev
  virtual void  v63(); // _ZN7S1508C43v63Ev
  virtual void  v64(); // _ZN7S1508C43v64Ev
  virtual void  v65(); // _ZN7S1508C43v65Ev
  virtual void  v66(); // _ZN7S1508C43v66Ev
  virtual void  v67(); // _ZN7S1508C43v67Ev
  virtual void  v68(); // _ZN7S1508C43v68Ev
  virtual void  v69(); // _ZN7S1508C43v69Ev
  S1508C4(); // tgen
};
//SIG(-1 S1508C4) 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]}


 S1508C4 ::~S1508C4(){ note_dtor("S1508C4", this);}
void  S1508C4 ::v6(){vfunc_called(this, "_ZN7S1508C42v6Ev");}
void  S1508C4 ::v7(){vfunc_called(this, "_ZN7S1508C42v7Ev");}
void  S1508C4 ::v8(){vfunc_called(this, "_ZN7S1508C42v8Ev");}
void  S1508C4 ::v9(){vfunc_called(this, "_ZN7S1508C42v9Ev");}
void  S1508C4 ::v10(){vfunc_called(this, "_ZN7S1508C43v10Ev");}
void  S1508C4 ::v11(){vfunc_called(this, "_ZN7S1508C43v11Ev");}
void  S1508C4 ::v12(){vfunc_called(this, "_ZN7S1508C43v12Ev");}
void  S1508C4 ::v13(){vfunc_called(this, "_ZN7S1508C43v13Ev");}
void  S1508C4 ::v14(){vfunc_called(this, "_ZN7S1508C43v14Ev");}
void  S1508C4 ::v15(){vfunc_called(this, "_ZN7S1508C43v15Ev");}
void  S1508C4 ::v16(){vfunc_called(this, "_ZN7S1508C43v16Ev");}
void  S1508C4 ::v17(){vfunc_called(this, "_ZN7S1508C43v17Ev");}
void  S1508C4 ::v18(){vfunc_called(this, "_ZN7S1508C43v18Ev");}
void  S1508C4 ::v19(){vfunc_called(this, "_ZN7S1508C43v19Ev");}
void  S1508C4 ::v20(){vfunc_called(this, "_ZN7S1508C43v20Ev");}
void  S1508C4 ::v21(){vfunc_called(this, "_ZN7S1508C43v21Ev");}
void  S1508C4 ::v22(){vfunc_called(this, "_ZN7S1508C43v22Ev");}
void  S1508C4 ::v23(){vfunc_called(this, "_ZN7S1508C43v23Ev");}
void  S1508C4 ::v24(){vfunc_called(this, "_ZN7S1508C43v24Ev");}
void  S1508C4 ::v25(){vfunc_called(this, "_ZN7S1508C43v25Ev");}
void  S1508C4 ::v26(){vfunc_called(this, "_ZN7S1508C43v26Ev");}
void  S1508C4 ::v27(){vfunc_called(this, "_ZN7S1508C43v27Ev");}
void  S1508C4 ::v28(){vfunc_called(this, "_ZN7S1508C43v28Ev");}
void  S1508C4 ::v29(){vfunc_called(this, "_ZN7S1508C43v29Ev");}
void  S1508C4 ::v30(){vfunc_called(this, "_ZN7S1508C43v30Ev");}
void  S1508C4 ::v31(){vfunc_called(this, "_ZN7S1508C43v31Ev");}
void  S1508C4 ::v32(){vfunc_called(this, "_ZN7S1508C43v32Ev");}
void  S1508C4 ::v33(){vfunc_called(this, "_ZN7S1508C43v33Ev");}
void  S1508C4 ::v34(){vfunc_called(this, "_ZN7S1508C43v34Ev");}
void  S1508C4 ::v35(){vfunc_called(this, "_ZN7S1508C43v35Ev");}
void  S1508C4 ::v36(){vfunc_called(this, "_ZN7S1508C43v36Ev");}
void  S1508C4 ::v37(){vfunc_called(this, "_ZN7S1508C43v37Ev");}
void  S1508C4 ::v38(){vfunc_called(this, "_ZN7S1508C43v38Ev");}
void  S1508C4 ::v39(){vfunc_called(this, "_ZN7S1508C43v39Ev");}
void  S1508C4 ::v40(){vfunc_called(this, "_ZN7S1508C43v40Ev");}
void  S1508C4 ::v41(){vfunc_called(this, "_ZN7S1508C43v41Ev");}
void  S1508C4 ::v42(){vfunc_called(this, "_ZN7S1508C43v42Ev");}
void  S1508C4 ::v43(){vfunc_called(this, "_ZN7S1508C43v43Ev");}
void  S1508C4 ::v44(){vfunc_called(this, "_ZN7S1508C43v44Ev");}
void  S1508C4 ::v45(){vfunc_called(this, "_ZN7S1508C43v45Ev");}
void  S1508C4 ::v46(){vfunc_called(this, "_ZN7S1508C43v46Ev");}
void  S1508C4 ::v47(){vfunc_called(this, "_ZN7S1508C43v47Ev");}
void  S1508C4 ::v48(){vfunc_called(this, "_ZN7S1508C43v48Ev");}
void  S1508C4 ::v49(){vfunc_called(this, "_ZN7S1508C43v49Ev");}
void  S1508C4 ::v50(){vfunc_called(this, "_ZN7S1508C43v50Ev");}
void  S1508C4 ::v51(){vfunc_called(this, "_ZN7S1508C43v51Ev");}
void  S1508C4 ::v52(){vfunc_called(this, "_ZN7S1508C43v52Ev");}
void  S1508C4 ::v53(){vfunc_called(this, "_ZN7S1508C43v53Ev");}
void  S1508C4 ::v54(){vfunc_called(this, "_ZN7S1508C43v54Ev");}
void  S1508C4 ::v55(){vfunc_called(this, "_ZN7S1508C43v55Ev");}
void  S1508C4 ::v56(){vfunc_called(this, "_ZN7S1508C43v56Ev");}
void  S1508C4 ::v57(){vfunc_called(this, "_ZN7S1508C43v57Ev");}
void  S1508C4 ::v58(){vfunc_called(this, "_ZN7S1508C43v58Ev");}
void  S1508C4 ::v59(){vfunc_called(this, "_ZN7S1508C43v59Ev");}
void  S1508C4 ::v60(){vfunc_called(this, "_ZN7S1508C43v60Ev");}
void  S1508C4 ::v61(){vfunc_called(this, "_ZN7S1508C43v61Ev");}
void  S1508C4 ::v62(){vfunc_called(this, "_ZN7S1508C43v62Ev");}
void  S1508C4 ::v63(){vfunc_called(this, "_ZN7S1508C43v63Ev");}
void  S1508C4 ::v64(){vfunc_called(this, "_ZN7S1508C43v64Ev");}
void  S1508C4 ::v65(){vfunc_called(this, "_ZN7S1508C43v65Ev");}
void  S1508C4 ::v66(){vfunc_called(this, "_ZN7S1508C43v66Ev");}
void  S1508C4 ::v67(){vfunc_called(this, "_ZN7S1508C43v67Ev");}
void  S1508C4 ::v68(){vfunc_called(this, "_ZN7S1508C43v68Ev");}
void  S1508C4 ::v69(){vfunc_called(this, "_ZN7S1508C43v69Ev");}
S1508C4 ::S1508C4(){ note_ctor("S1508C4", this);} // tgen

static void Test_S1508C4()
{
  extern Class_Descriptor cd_S1508C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1508C4, buf);
    S1508C4 *dp, &lv = *(dp=new (buf) S1508C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1508C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1508C4)");
    check_field_offset(lv, s1508c4f0, ABISELECT(8,4), "S1508C4.s1508c4f0");
    check_field_offset(lv, s1508c4f1, ABISELECT(16,8), "S1508C4.s1508c4f1");
    check_field_offset(lv, s1508c4f2, ABISELECT(24,16), "S1508C4.s1508c4f2");
    check_field_offset(lv, s1508c4f3, ABISELECT(56,32), "S1508C4.s1508c4f3");
    check_field_offset(lv, s1508c4f4, ABISELECT(64,40), "S1508C4.s1508c4f4");
    check_field_offset(lv, s1508c4f5, ABISELECT(72,44), "S1508C4.s1508c4f5");
    check_field_offset(lv, s1508c4f6, ABISELECT(80,52), "S1508C4.s1508c4f6");
    test_class_info(&lv, &cd_S1508C4);
    dp->~S1508C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1508C4(Test_S1508C4, "S1508C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1508C4C1Ev();
extern void _ZN7S1508C4D1Ev();
Name_Map name_map_S1508C4[] = {
  NSPAIR(_ZN7S1508C4C1Ev),
  NSPAIR(_ZN7S1508C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1508C4[];
extern void _ZN7S1508C4D1Ev();
extern void _ZN7S1508C4D0Ev();
extern void _ZN7S1508C42v6Ev();
extern void _ZN7S1508C42v7Ev();
extern void _ZN7S1508C42v8Ev();
extern void _ZN7S1508C42v9Ev();
extern void _ZN7S1508C43v10Ev();
extern void _ZN7S1508C43v11Ev();
extern void _ZN7S1508C43v12Ev();
extern void _ZN7S1508C43v13Ev();
extern void _ZN7S1508C43v14Ev();
extern void _ZN7S1508C43v15Ev();
extern void _ZN7S1508C43v16Ev();
extern void _ZN7S1508C43v17Ev();
extern void _ZN7S1508C43v18Ev();
extern void _ZN7S1508C43v19Ev();
extern void _ZN7S1508C43v20Ev();
extern void _ZN7S1508C43v21Ev();
extern void _ZN7S1508C43v22Ev();
extern void _ZN7S1508C43v23Ev();
extern void _ZN7S1508C43v24Ev();
extern void _ZN7S1508C43v25Ev();
extern void _ZN7S1508C43v26Ev();
extern void _ZN7S1508C43v27Ev();
extern void _ZN7S1508C43v28Ev();
extern void _ZN7S1508C43v29Ev();
extern void _ZN7S1508C43v30Ev();
extern void _ZN7S1508C43v31Ev();
extern void _ZN7S1508C43v32Ev();
extern void _ZN7S1508C43v33Ev();
extern void _ZN7S1508C43v34Ev();
extern void _ZN7S1508C43v35Ev();
extern void _ZN7S1508C43v36Ev();
extern void _ZN7S1508C43v37Ev();
extern void _ZN7S1508C43v38Ev();
extern void _ZN7S1508C43v39Ev();
extern void _ZN7S1508C43v40Ev();
extern void _ZN7S1508C43v41Ev();
extern void _ZN7S1508C43v42Ev();
extern void _ZN7S1508C43v43Ev();
extern void _ZN7S1508C43v44Ev();
extern void _ZN7S1508C43v45Ev();
extern void _ZN7S1508C43v46Ev();
extern void _ZN7S1508C43v47Ev();
extern void _ZN7S1508C43v48Ev();
extern void _ZN7S1508C43v49Ev();
extern void _ZN7S1508C43v50Ev();
extern void _ZN7S1508C43v51Ev();
extern void _ZN7S1508C43v52Ev();
extern void _ZN7S1508C43v53Ev();
extern void _ZN7S1508C43v54Ev();
extern void _ZN7S1508C43v55Ev();
extern void _ZN7S1508C43v56Ev();
extern void _ZN7S1508C43v57Ev();
extern void _ZN7S1508C43v58Ev();
extern void _ZN7S1508C43v59Ev();
extern void _ZN7S1508C43v60Ev();
extern void _ZN7S1508C43v61Ev();
extern void _ZN7S1508C43v62Ev();
extern void _ZN7S1508C43v63Ev();
extern void _ZN7S1508C43v64Ev();
extern void _ZN7S1508C43v65Ev();
extern void _ZN7S1508C43v66Ev();
extern void _ZN7S1508C43v67Ev();
extern void _ZN7S1508C43v68Ev();
extern void _ZN7S1508C43v69Ev();
static  VTBL_ENTRY vtc_S1508C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1508C4[0]),
  (VTBL_ENTRY)&_ZN7S1508C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1508C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1508C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1508C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1508C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1508C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v69Ev,
};
extern VTBL_ENTRY _ZTI7S1508C4[];
extern  VTBL_ENTRY _ZTV7S1508C4[];
Class_Descriptor cd_S1508C4 = {  "S1508C4", // class name
  0,0,//no base classes
  &(vtc_S1508C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1508C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1508C4),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  S1508C3  : S1508C4 {
  void *s1508c3f0;
  ::S28C31_nt s1508c3f1;
  int s1508c3f2;
  void *s1508c3f3;
  unsigned int s1508c3f4:1;
  ::S28C31_nt s1508c3f5;
  virtual  ~S1508C3(); // _ZN7S1508C3D1Ev
  virtual void  v70(); // _ZN7S1508C33v70Ev
  virtual void  v71(); // _ZN7S1508C33v71Ev
  virtual void  v72(); // _ZN7S1508C33v72Ev
  virtual void  v73(); // _ZN7S1508C33v73Ev
  virtual void  v74(); // _ZN7S1508C33v74Ev
  virtual void  v75(); // _ZN7S1508C33v75Ev
  virtual void  v76(); // _ZN7S1508C33v76Ev
  virtual void  v77(); // _ZN7S1508C33v77Ev
  S1508C3(); // tgen
};
//SIG(-1 S1508C3) C1{ BC2{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 Fp FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC4}


 S1508C3 ::~S1508C3(){ note_dtor("S1508C3", this);}
void  S1508C3 ::v70(){vfunc_called(this, "_ZN7S1508C33v70Ev");}
void  S1508C3 ::v71(){vfunc_called(this, "_ZN7S1508C33v71Ev");}
void  S1508C3 ::v72(){vfunc_called(this, "_ZN7S1508C33v72Ev");}
void  S1508C3 ::v73(){vfunc_called(this, "_ZN7S1508C33v73Ev");}
void  S1508C3 ::v74(){vfunc_called(this, "_ZN7S1508C33v74Ev");}
void  S1508C3 ::v75(){vfunc_called(this, "_ZN7S1508C33v75Ev");}
void  S1508C3 ::v76(){vfunc_called(this, "_ZN7S1508C33v76Ev");}
void  S1508C3 ::v77(){vfunc_called(this, "_ZN7S1508C33v77Ev");}
S1508C3 ::S1508C3(){ note_ctor("S1508C3", this);} // tgen

static void Test_S1508C3()
{
  extern Class_Descriptor cd_S1508C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,26)];
    init_test(&cd_S1508C3, buf);
    S1508C3 *dp, &lv = *(dp=new (buf) S1508C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,100), "sizeof(S1508C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1508C3)");
    check_base_class_offset(lv, (S1508C4*), 0, "S1508C3");
    check_field_offset(lv, s1508c3f0, ABISELECT(96,60), "S1508C3.s1508c3f0");
    check_field_offset(lv, s1508c3f1, ABISELECT(104,64), "S1508C3.s1508c3f1");
    check_field_offset(lv, s1508c3f2, ABISELECT(120,76), "S1508C3.s1508c3f2");
    check_field_offset(lv, s1508c3f3, ABISELECT(128,80), "S1508C3.s1508c3f3");
    set_bf_and_test(lv, s1508c3f4, ABISELECT(136,84), 0, 1, 1, "S1508C3");
    check_field_offset(lv, s1508c3f5, ABISELECT(144,88), "S1508C3.s1508c3f5");
    test_class_info(&lv, &cd_S1508C3);
    dp->~S1508C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1508C3(Test_S1508C3, "S1508C3", ABISELECT(160,100));

#else // __cplusplus

extern void _ZN7S1508C3C1Ev();
extern void _ZN7S1508C3D1Ev();
Name_Map name_map_S1508C3[] = {
  NSPAIR(_ZN7S1508C3C1Ev),
  NSPAIR(_ZN7S1508C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1508C4;
extern VTBL_ENTRY _ZTI7S1508C4[];
extern  VTBL_ENTRY _ZTV7S1508C4[];
static Base_Class bases_S1508C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1508C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1508C3[];
extern void _ZN7S1508C3D1Ev();
extern void _ZN7S1508C3D0Ev();
extern void _ZN7S1508C42v6Ev();
extern void _ZN7S1508C42v7Ev();
extern void _ZN7S1508C42v8Ev();
extern void _ZN7S1508C42v9Ev();
extern void _ZN7S1508C43v10Ev();
extern void _ZN7S1508C43v11Ev();
extern void _ZN7S1508C43v12Ev();
extern void _ZN7S1508C43v13Ev();
extern void _ZN7S1508C43v14Ev();
extern void _ZN7S1508C43v15Ev();
extern void _ZN7S1508C43v16Ev();
extern void _ZN7S1508C43v17Ev();
extern void _ZN7S1508C43v18Ev();
extern void _ZN7S1508C43v19Ev();
extern void _ZN7S1508C43v20Ev();
extern void _ZN7S1508C43v21Ev();
extern void _ZN7S1508C43v22Ev();
extern void _ZN7S1508C43v23Ev();
extern void _ZN7S1508C43v24Ev();
extern void _ZN7S1508C43v25Ev();
extern void _ZN7S1508C43v26Ev();
extern void _ZN7S1508C43v27Ev();
extern void _ZN7S1508C43v28Ev();
extern void _ZN7S1508C43v29Ev();
extern void _ZN7S1508C43v30Ev();
extern void _ZN7S1508C43v31Ev();
extern void _ZN7S1508C43v32Ev();
extern void _ZN7S1508C43v33Ev();
extern void _ZN7S1508C43v34Ev();
extern void _ZN7S1508C43v35Ev();
extern void _ZN7S1508C43v36Ev();
extern void _ZN7S1508C43v37Ev();
extern void _ZN7S1508C43v38Ev();
extern void _ZN7S1508C43v39Ev();
extern void _ZN7S1508C43v40Ev();
extern void _ZN7S1508C43v41Ev();
extern void _ZN7S1508C43v42Ev();
extern void _ZN7S1508C43v43Ev();
extern void _ZN7S1508C43v44Ev();
extern void _ZN7S1508C43v45Ev();
extern void _ZN7S1508C43v46Ev();
extern void _ZN7S1508C43v47Ev();
extern void _ZN7S1508C43v48Ev();
extern void _ZN7S1508C43v49Ev();
extern void _ZN7S1508C43v50Ev();
extern void _ZN7S1508C43v51Ev();
extern void _ZN7S1508C43v52Ev();
extern void _ZN7S1508C43v53Ev();
extern void _ZN7S1508C43v54Ev();
extern void _ZN7S1508C43v55Ev();
extern void _ZN7S1508C43v56Ev();
extern void _ZN7S1508C43v57Ev();
extern void _ZN7S1508C43v58Ev();
extern void _ZN7S1508C43v59Ev();
extern void _ZN7S1508C43v60Ev();
extern void _ZN7S1508C43v61Ev();
extern void _ZN7S1508C43v62Ev();
extern void _ZN7S1508C43v63Ev();
extern void _ZN7S1508C43v64Ev();
extern void _ZN7S1508C43v65Ev();
extern void _ZN7S1508C43v66Ev();
extern void _ZN7S1508C43v67Ev();
extern void _ZN7S1508C43v68Ev();
extern void _ZN7S1508C43v69Ev();
extern void _ZN7S1508C33v70Ev();
extern void _ZN7S1508C33v71Ev();
extern void _ZN7S1508C33v72Ev();
extern void _ZN7S1508C33v73Ev();
extern void _ZN7S1508C33v74Ev();
extern void _ZN7S1508C33v75Ev();
extern void _ZN7S1508C33v76Ev();
extern void _ZN7S1508C33v77Ev();
static  VTBL_ENTRY vtc_S1508C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1508C3[0]),
  (VTBL_ENTRY)&_ZN7S1508C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1508C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1508C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1508C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1508C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1508C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1508C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1508C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1508C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1508C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1508C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1508C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1508C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1508C33v77Ev,
};
extern VTBL_ENTRY _ZTI7S1508C3[];
extern  VTBL_ENTRY _ZTV7S1508C3[];
Class_Descriptor cd_S1508C3 = {  "S1508C3", // class name
  bases_S1508C3, 1,
  &(vtc_S1508C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,100), // object size
  NSPAIRA(_ZTI7S1508C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1508C3),76, //virtual function table var
  2, // 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  S1508C2  : S1508C3 {
  void *s1508c2f0;
  ::S48C18 s1508c2f1;
  unsigned int s1508c2f2:1;
  unsigned int s1508c2f3:1;
  unsigned int s1508c2f4:1;
  unsigned int s1508c2f5:1;
  char s1508c2f6;
  virtual  ~S1508C2(); // _ZN7S1508C2D1Ev
  virtual void  v78(); // _ZN7S1508C23v78Ev
  virtual void  v79(); // _ZN7S1508C23v79Ev
  virtual void  v80(); // _ZN7S1508C23v80Ev
  virtual void  v81(); // _ZN7S1508C23v81Ev
  virtual void  v82(); // _ZN7S1508C23v82Ev
  virtual void  v83(); // _ZN7S1508C23v83Ev
  virtual void  v84(); // _ZN7S1508C23v84Ev
  S1508C2(); // tgen
};
//SIG(-1 S1508C2) C1{ BC2{ BC3{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v72 v73 v74 v75 v76 v77 v78 v79 Fp FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC5} vd v1 v2 v3 v4 v5 v6 v7 Fp FC9{ m Fi[3]} Fi:1 Fi:1 Fi:1 Fi:1 Fc}


 S1508C2 ::~S1508C2(){ note_dtor("S1508C2", this);}
void  S1508C2 ::v78(){vfunc_called(this, "_ZN7S1508C23v78Ev");}
void  S1508C2 ::v79(){vfunc_called(this, "_ZN7S1508C23v79Ev");}
void  S1508C2 ::v80(){vfunc_called(this, "_ZN7S1508C23v80Ev");}
void  S1508C2 ::v81(){vfunc_called(this, "_ZN7S1508C23v81Ev");}
void  S1508C2 ::v82(){vfunc_called(this, "_ZN7S1508C23v82Ev");}
void  S1508C2 ::v83(){vfunc_called(this, "_ZN7S1508C23v83Ev");}
void  S1508C2 ::v84(){vfunc_called(this, "_ZN7S1508C23v84Ev");}
S1508C2 ::S1508C2(){ note_ctor("S1508C2", this);} // tgen

static void Test_S1508C2()
{
  extern Class_Descriptor cd_S1508C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,31)];
    init_test(&cd_S1508C2, buf);
    S1508C2 *dp, &lv = *(dp=new (buf) S1508C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,120), "sizeof(S1508C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1508C2)");
    check_base_class_offset(lv, (S1508C4*)(S1508C3*), 0, "S1508C2");
    check_base_class_offset(lv, (S1508C3*), 0, "S1508C2");
    check_field_offset(lv, s1508c2f0, ABISELECT(160,100), "S1508C2.s1508c2f0");
    check_field_offset(lv, s1508c2f1, ABISELECT(168,104), "S1508C2.s1508c2f1");
    set_bf_and_test(lv, s1508c2f2, ABISELECT(180,116), 0, 1, 1, "S1508C2");
    set_bf_and_test(lv, s1508c2f3, ABISELECT(180,116), 1, 1, 1, "S1508C2");
    set_bf_and_test(lv, s1508c2f4, ABISELECT(180,116), 2, 1, 1, "S1508C2");
    set_bf_and_test(lv, s1508c2f5, ABISELECT(180,116), 3, 1, 1, "S1508C2");
    check_field_offset(lv, s1508c2f6, ABISELECT(181,117), "S1508C2.s1508c2f6");
    test_class_info(&lv, &cd_S1508C2);
    dp->~S1508C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1508C2(Test_S1508C2, "S1508C2", ABISELECT(184,120));

#else // __cplusplus

extern void _ZN7S1508C2C1Ev();
extern void _ZN7S1508C2D1Ev();
Name_Map name_map_S1508C2[] = {
  NSPAIR(_ZN7S1508C2C1Ev),
  NSPAIR(_ZN7S1508C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1508C4;
extern VTBL_ENTRY _ZTI7S1508C4[];
extern  VTBL_ENTRY _ZTV7S1508C4[];
extern Class_Descriptor cd_S1508C3;
extern VTBL_ENTRY _ZTI7S1508C3[];
extern  VTBL_ENTRY _ZTV7S1508C3[];
static Base_Class bases_S1508C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1508C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1508C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1508C2[];
extern void _ZN7S1508C2D1Ev();
extern void _ZN7S1508C2D0Ev();
extern void _ZN7S1508C42v6Ev();
extern void _ZN7S1508C42v7Ev();
extern void _ZN7S1508C42v8Ev();
extern void _ZN7S1508C42v9Ev();
extern void _ZN7S1508C43v10Ev();
extern void _ZN7S1508C43v11Ev();
extern void _ZN7S1508C43v12Ev();
extern void _ZN7S1508C43v13Ev();
extern void _ZN7S1508C43v14Ev();
extern void _ZN7S1508C43v15Ev();
extern void _ZN7S1508C43v16Ev();
extern void _ZN7S1508C43v17Ev();
extern void _ZN7S1508C43v18Ev();
extern void _ZN7S1508C43v19Ev();
extern void _ZN7S1508C43v20Ev();
extern void _ZN7S1508C43v21Ev();
extern void _ZN7S1508C43v22Ev();
extern void _ZN7S1508C43v23Ev();
extern void _ZN7S1508C43v24Ev();
extern void _ZN7S1508C43v25Ev();
extern void _ZN7S1508C43v26Ev();
extern void _ZN7S1508C43v27Ev();
extern void _ZN7S1508C43v28Ev();
extern void _ZN7S1508C43v29Ev();
extern void _ZN7S1508C43v30Ev();
extern void _ZN7S1508C43v31Ev();
extern void _ZN7S1508C43v32Ev();
extern void _ZN7S1508C43v33Ev();
extern void _ZN7S1508C43v34Ev();
extern void _ZN7S1508C43v35Ev();
extern void _ZN7S1508C43v36Ev();
extern void _ZN7S1508C43v37Ev();
extern void _ZN7S1508C43v38Ev();
extern void _ZN7S1508C43v39Ev();
extern void _ZN7S1508C43v40Ev();
extern void _ZN7S1508C43v41Ev();
extern void _ZN7S1508C43v42Ev();
extern void _ZN7S1508C43v43Ev();
extern void _ZN7S1508C43v44Ev();
extern void _ZN7S1508C43v45Ev();
extern void _ZN7S1508C43v46Ev();
extern void _ZN7S1508C43v47Ev();
extern void _ZN7S1508C43v48Ev();
extern void _ZN7S1508C43v49Ev();
extern void _ZN7S1508C43v50Ev();
extern void _ZN7S1508C43v51Ev();
extern void _ZN7S1508C43v52Ev();
extern void _ZN7S1508C43v53Ev();
extern void _ZN7S1508C43v54Ev();
extern void _ZN7S1508C43v55Ev();
extern void _ZN7S1508C43v56Ev();
extern void _ZN7S1508C43v57Ev();
extern void _ZN7S1508C43v58Ev();
extern void _ZN7S1508C43v59Ev();
extern void _ZN7S1508C43v60Ev();
extern void _ZN7S1508C43v61Ev();
extern void _ZN7S1508C43v62Ev();
extern void _ZN7S1508C43v63Ev();
extern void _ZN7S1508C43v64Ev();
extern void _ZN7S1508C43v65Ev();
extern void _ZN7S1508C43v66Ev();
extern void _ZN7S1508C43v67Ev();
extern void _ZN7S1508C43v68Ev();
extern void _ZN7S1508C43v69Ev();
extern void _ZN7S1508C33v70Ev();
extern void _ZN7S1508C33v71Ev();
extern void _ZN7S1508C33v72Ev();
extern void _ZN7S1508C33v73Ev();
extern void _ZN7S1508C33v74Ev();
extern void _ZN7S1508C33v75Ev();
extern void _ZN7S1508C33v76Ev();
extern void _ZN7S1508C33v77Ev();
extern void _ZN7S1508C23v78Ev();
extern void _ZN7S1508C23v79Ev();
extern void _ZN7S1508C23v80Ev();
extern void _ZN7S1508C23v81Ev();
extern void _ZN7S1508C23v82Ev();
extern void _ZN7S1508C23v83Ev();
extern void _ZN7S1508C23v84Ev();
static  VTBL_ENTRY vtc_S1508C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1508C2[0]),
  (VTBL_ENTRY)&_ZN7S1508C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1508C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1508C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1508C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1508C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1508C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1508C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1508C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1508C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1508C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1508C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1508C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1508C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1508C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1508C23v78Ev,
  (VTBL_ENTRY)&_ZN7S1508C23v79Ev,
  (VTBL_ENTRY)&_ZN7S1508C23v80Ev,
  (VTBL_ENTRY)&_ZN7S1508C23v81Ev,
  (VTBL_ENTRY)&_ZN7S1508C23v82Ev,
  (VTBL_ENTRY)&_ZN7S1508C23v83Ev,
  (VTBL_ENTRY)&_ZN7S1508C23v84Ev,
};
extern VTBL_ENTRY _ZTI7S1508C2[];
extern  VTBL_ENTRY _ZTV7S1508C2[];
Class_Descriptor cd_S1508C2 = {  "S1508C2", // class name
  bases_S1508C2, 2,
  &(vtc_S1508C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,120), // object size
  NSPAIRA(_ZTI7S1508C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1508C2),83, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1508C1  : S1508C2 {
  unsigned int s1508c1f0:1;
  unsigned int s1508c1f1:1;
  unsigned int s1508c1f2:1;
  ::S48C18 s1508c1f3;
  void *s1508c1f4[2];
  char s1508c1f5;
  virtual  ~S1508C1(); // _ZN7S1508C1D1Ev
  virtual void  v1(); // _ZN7S1508C12v1Ev
  virtual void  v2(); // _ZN7S1508C12v2Ev
  virtual void  v3(); // _ZN7S1508C12v3Ev
  virtual void  v4(); // _ZN7S1508C12v4Ev
  virtual void  v5(); // _ZN7S1508C12v5Ev
  S1508C1(); // tgen
};
//SIG(1 S1508C1) C1{ BC2{ BC3{ BC4{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v70 v71 v72 v73 v74 v75 v76 v77 Fp FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC6} vd v78 v79 v80 v81 v82 v83 v84 Fp FC10{ m Fi[3]} Fi:1 Fi:1 Fi:1 Fi:1 Fc} vd v1 v2 v3 v4 v5 Fi:1 Fi:1 Fi:1 FC10 Fp[2] Fc}


 S1508C1 ::~S1508C1(){ note_dtor("S1508C1", this);}
void  S1508C1 ::v1(){vfunc_called(this, "_ZN7S1508C12v1Ev");}
void  S1508C1 ::v2(){vfunc_called(this, "_ZN7S1508C12v2Ev");}
void  S1508C1 ::v3(){vfunc_called(this, "_ZN7S1508C12v3Ev");}
void  S1508C1 ::v4(){vfunc_called(this, "_ZN7S1508C12v4Ev");}
void  S1508C1 ::v5(){vfunc_called(this, "_ZN7S1508C12v5Ev");}
S1508C1 ::S1508C1(){ note_ctor("S1508C1", this);} // tgen

static void Test_S1508C1()
{
  extern Class_Descriptor cd_S1508C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,37)];
    init_test(&cd_S1508C1, buf);
    S1508C1 *dp, &lv = *(dp=new (buf) S1508C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,144), "sizeof(S1508C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1508C1)");
    check_base_class_offset(lv, (S1508C4*)(S1508C3*)(S1508C2*), 0, "S1508C1");
    check_base_class_offset(lv, (S1508C3*)(S1508C2*), 0, "S1508C1");
    check_base_class_offset(lv, (S1508C2*), 0, "S1508C1");
    set_bf_and_test(lv, s1508c1f0, ABISELECT(182,118), 0, 1, 1, "S1508C1");
    set_bf_and_test(lv, s1508c1f1, ABISELECT(182,118), 1, 1, 1, "S1508C1");
    set_bf_and_test(lv, s1508c1f2, ABISELECT(182,118), 2, 1, 1, "S1508C1");
    check_field_offset(lv, s1508c1f3, ABISELECT(184,120), "S1508C1.s1508c1f3");
    check_field_offset(lv, s1508c1f4, ABISELECT(200,132), "S1508C1.s1508c1f4");
    check_field_offset(lv, s1508c1f5, ABISELECT(216,140), "S1508C1.s1508c1f5");
    test_class_info(&lv, &cd_S1508C1);
    dp->~S1508C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1508C1(Test_S1508C1, "S1508C1", ABISELECT(224,144));

#else // __cplusplus

extern void _ZN7S1508C1C1Ev();
extern void _ZN7S1508C1D1Ev();
Name_Map name_map_S1508C1[] = {
  NSPAIR(_ZN7S1508C1C1Ev),
  NSPAIR(_ZN7S1508C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1508C4;
extern VTBL_ENTRY _ZTI7S1508C4[];
extern  VTBL_ENTRY _ZTV7S1508C4[];
extern Class_Descriptor cd_S1508C3;
extern VTBL_ENTRY _ZTI7S1508C3[];
extern  VTBL_ENTRY _ZTV7S1508C3[];
extern Class_Descriptor cd_S1508C2;
extern VTBL_ENTRY _ZTI7S1508C2[];
extern  VTBL_ENTRY _ZTV7S1508C2[];
static Base_Class bases_S1508C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1508C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1508C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1508C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1508C1[];
extern void _ZN7S1508C1D1Ev();
extern void _ZN7S1508C1D0Ev();
extern void _ZN7S1508C42v6Ev();
extern void _ZN7S1508C42v7Ev();
extern void _ZN7S1508C42v8Ev();
extern void _ZN7S1508C42v9Ev();
extern void _ZN7S1508C43v10Ev();
extern void _ZN7S1508C43v11Ev();
extern void _ZN7S1508C43v12Ev();
extern void _ZN7S1508C43v13Ev();
extern void _ZN7S1508C43v14Ev();
extern void _ZN7S1508C43v15Ev();
extern void _ZN7S1508C43v16Ev();
extern void _ZN7S1508C43v17Ev();
extern void _ZN7S1508C43v18Ev();
extern void _ZN7S1508C43v19Ev();
extern void _ZN7S1508C43v20Ev();
extern void _ZN7S1508C43v21Ev();
extern void _ZN7S1508C43v22Ev();
extern void _ZN7S1508C43v23Ev();
extern void _ZN7S1508C43v24Ev();
extern void _ZN7S1508C43v25Ev();
extern void _ZN7S1508C43v26Ev();
extern void _ZN7S1508C43v27Ev();
extern void _ZN7S1508C43v28Ev();
extern void _ZN7S1508C43v29Ev();
extern void _ZN7S1508C43v30Ev();
extern void _ZN7S1508C43v31Ev();
extern void _ZN7S1508C43v32Ev();
extern void _ZN7S1508C43v33Ev();
extern void _ZN7S1508C43v34Ev();
extern void _ZN7S1508C43v35Ev();
extern void _ZN7S1508C43v36Ev();
extern void _ZN7S1508C43v37Ev();
extern void _ZN7S1508C43v38Ev();
extern void _ZN7S1508C43v39Ev();
extern void _ZN7S1508C43v40Ev();
extern void _ZN7S1508C43v41Ev();
extern void _ZN7S1508C43v42Ev();
extern void _ZN7S1508C43v43Ev();
extern void _ZN7S1508C43v44Ev();
extern void _ZN7S1508C43v45Ev();
extern void _ZN7S1508C43v46Ev();
extern void _ZN7S1508C43v47Ev();
extern void _ZN7S1508C43v48Ev();
extern void _ZN7S1508C43v49Ev();
extern void _ZN7S1508C43v50Ev();
extern void _ZN7S1508C43v51Ev();
extern void _ZN7S1508C43v52Ev();
extern void _ZN7S1508C43v53Ev();
extern void _ZN7S1508C43v54Ev();
extern void _ZN7S1508C43v55Ev();
extern void _ZN7S1508C43v56Ev();
extern void _ZN7S1508C43v57Ev();
extern void _ZN7S1508C43v58Ev();
extern void _ZN7S1508C43v59Ev();
extern void _ZN7S1508C43v60Ev();
extern void _ZN7S1508C43v61Ev();
extern void _ZN7S1508C43v62Ev();
extern void _ZN7S1508C43v63Ev();
extern void _ZN7S1508C43v64Ev();
extern void _ZN7S1508C43v65Ev();
extern void _ZN7S1508C43v66Ev();
extern void _ZN7S1508C43v67Ev();
extern void _ZN7S1508C43v68Ev();
extern void _ZN7S1508C43v69Ev();
extern void _ZN7S1508C33v70Ev();
extern void _ZN7S1508C33v71Ev();
extern void _ZN7S1508C33v72Ev();
extern void _ZN7S1508C33v73Ev();
extern void _ZN7S1508C33v74Ev();
extern void _ZN7S1508C33v75Ev();
extern void _ZN7S1508C33v76Ev();
extern void _ZN7S1508C33v77Ev();
extern void _ZN7S1508C23v78Ev();
extern void _ZN7S1508C23v79Ev();
extern void _ZN7S1508C23v80Ev();
extern void _ZN7S1508C23v81Ev();
extern void _ZN7S1508C23v82Ev();
extern void _ZN7S1508C23v83Ev();
extern void _ZN7S1508C23v84Ev();
extern void _ZN7S1508C12v1Ev();
extern void _ZN7S1508C12v2Ev();
extern void _ZN7S1508C12v3Ev();
extern void _ZN7S1508C12v4Ev();
extern void _ZN7S1508C12v5Ev();
static  VTBL_ENTRY vtc_S1508C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1508C1[0]),
  (VTBL_ENTRY)&_ZN7S1508C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1508C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1508C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1508C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1508C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1508C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1508C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1508C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1508C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1508C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1508C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1508C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1508C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1508C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1508C33v77Ev,
  (VTBL_ENTRY)&_ZN7S1508C23v78Ev,
  (VTBL_ENTRY)&_ZN7S1508C23v79Ev,
  (VTBL_ENTRY)&_ZN7S1508C23v80Ev,
  (VTBL_ENTRY)&_ZN7S1508C23v81Ev,
  (VTBL_ENTRY)&_ZN7S1508C23v82Ev,
  (VTBL_ENTRY)&_ZN7S1508C23v83Ev,
  (VTBL_ENTRY)&_ZN7S1508C23v84Ev,
  (VTBL_ENTRY)&_ZN7S1508C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1508C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1508C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1508C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1508C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S1508C1[];
extern  VTBL_ENTRY _ZTV7S1508C1[];
Class_Descriptor cd_S1508C1 = {  "S1508C1", // class name
  bases_S1508C1, 3,
  &(vtc_S1508C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,144), // object size
  NSPAIRA(_ZTI7S1508C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1508C1),88, //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  S3461C5_nt  {
  __tsi64 s3461c5f0;
  void  mf3461c5(); // _ZN10S3461C5_nt8mf3461c5Ev
};
//SIG(-1 S3461C5_nt) C1{ m FL}


void  S3461C5_nt ::mf3461c5(){}

//skip512 S3461C5_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S3461C5_nt[];
VTBL_ENTRY *P__ZTI10S3461C5_nt = _ZTI10S3461C5_nt; 
Class_Descriptor cd_S3461C5_nt = {  "S3461C5_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  8, // object size
  NSPAIRA(_ZTI10S3461C5_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  S3461C9  : virtual S3461C5_nt , S731C17_nt {
  virtual void  v1(); // _ZN7S3461C92v1Ev
  ~S3461C9(); // tgen
  S3461C9(); // tgen
};
//SIG(-1 S3461C9) C1{ VBC2{ m FL} BC3{ m} v1}


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

static void Test_S3461C9()
{
  extern Class_Descriptor cd_S3461C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3461C9, buf);
    S3461C9 *dp, &lv = *(dp=new (buf) S3461C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3461C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3461C9)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S3461C9");
    check_base_class_offset(lv, (S731C17_nt*), 0, "S3461C9");
    test_class_info(&lv, &cd_S3461C9);
    dp->~S3461C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3461C9(Test_S3461C9, "S3461C9", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S3461C9C1Ev();
extern void _ZN7S3461C9D1Ev();
Name_Map name_map_S3461C9[] = {
  NSPAIR(_ZN7S3461C9C1Ev),
  NSPAIR(_ZN7S3461C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S3461C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3461C9[];
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY vtc_S3461C9[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern VTBL_ENTRY _ZTV7S3461C9[];
static  VTT_ENTRY vtt_S3461C9[] = {
  {&(_ZTV7S3461C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
Class_Descriptor cd_S3461C9 = {  "S3461C9", // class name
  bases_S3461C9, 2,
  &(vtc_S3461C9[0]), // expected_vtbl_contents
  &(vtt_S3461C9[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S3461C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3461C9),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3461C9),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  S3461C8  : S3461C9 {
  ~S3461C8(); // tgen
  S3461C8(); // tgen
};
//SIG(-1 S3461C8) C1{ BC2{ VBC3{ m FL} BC4{ m} v1}}


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

static void Test_S3461C8()
{
  extern Class_Descriptor cd_S3461C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3461C8, buf);
    S3461C8 *dp, &lv = *(dp=new (buf) S3461C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3461C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3461C8)");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*), ABISELECT(8,4), "S3461C8");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*), 0, "S3461C8");
    check_base_class_offset(lv, (S3461C9*), 0, "S3461C8");
    test_class_info(&lv, &cd_S3461C8);
    dp->~S3461C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3461C8(Test_S3461C8, "S3461C8", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S3461C8C1Ev();
extern void _ZN7S3461C8D1Ev();
Name_Map name_map_S3461C8[] = {
  NSPAIR(_ZN7S3461C8C1Ev),
  NSPAIR(_ZN7S3461C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
static Base_Class bases_S3461C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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 _ZTI7S3461C8[];
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY vtc_S3461C8[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern VTBL_ENTRY _ZTV7S3461C8[];
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__7S3461C8[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
static  VTT_ENTRY vtt_S3461C8[] = {
  {&(_ZTV7S3461C8[3]),  3,4},
  {&(_tg__ZTV7S3461C9__7S3461C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
Class_Descriptor cd_S3461C8 = {  "S3461C8", // class name
  bases_S3461C8, 3,
  &(vtc_S3461C8[0]), // expected_vtbl_contents
  &(vtt_S3461C8[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S3461C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3461C8),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3461C8),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  S3461C6  : S3461C5_nt , virtual S731C17_nt , S3461C8 {
  virtual  ~S3461C6(); // _ZN7S3461C6D2Ev
  virtual void  v2(); // _ZN7S3461C62v2Ev
  S3461C6(); // tgen
};
//SIG(-1 S3461C6) C1{ BC2{ m FL} VBC3{ m} BC4{ BC5{ VBC2 BC3 v2}} vd v1}


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

static void Test_S3461C6()
{
  extern Class_Descriptor cd_S3461C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S3461C6, buf);
    S3461C6 *dp, &lv = *(dp=new (buf) S3461C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S3461C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3461C6)");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S3461C6");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(16,12), "S3461C6");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*), ABISELECT(16,12), "S3461C6");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*), 0, "S3461C6");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*), 0, "S3461C6");
    check_base_class_offset(lv, (S3461C8*), 0, "S3461C6");
    test_class_info(&lv, &cd_S3461C6);
    dp->~S3461C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3461C6(Test_S3461C6, "S3461C6", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN7S3461C6C1Ev();
extern void _ZN7S3461C6D2Ev();
Name_Map name_map_S3461C6[] = {
  NSPAIR(_ZN7S3461C6C1Ev),
  NSPAIR(_ZN7S3461C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
static Base_Class bases_S3461C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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_S3461C5_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
    4, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3461C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3461C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3461C6[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY vtc_S3461C6[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern VTBL_ENTRY _ZTV7S3461C6[];
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__7S3461C6[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C8__7S3461C6[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
static  VTT_ENTRY vtt_S3461C6[] = {
  {&(_ZTV7S3461C6[4]),  4,8},
  {&(_tg__ZTV7S3461C8__7S3461C6[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C8__7S3461C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
Class_Descriptor cd_S3461C6 = {  "S3461C6", // class name
  bases_S3461C6, 6,
  &(vtc_S3461C6[0]), // expected_vtbl_contents
  &(vtt_S3461C6[0]), // expected_vtt_contents
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI7S3461C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3461C6),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3461C6),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  S3461C12  : virtual S3461C5_nt , S3461C9 , S731C17_nt {
  ~S3461C12(); // tgen
  S3461C12(); // tgen
};
//SIG(-1 S3461C12) C1{ VBC2{ m FL} BC3{ VBC2 BC4{ m} v1} BC4}


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

static void Test_S3461C12()
{
  extern Class_Descriptor cd_S3461C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3461C12, buf);
    S3461C12 *dp, &lv = *(dp=new (buf) S3461C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3461C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3461C12)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S3461C12");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*), ABISELECT(8,4), "S3461C12");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*), 0, "S3461C12");
    check_base_class_offset(lv, (S3461C9*), 0, "S3461C12");
    /*is_ambiguous_... S3461C12::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(8,4), "S3461C12");
    test_class_info(&lv, &cd_S3461C12);
    dp->~S3461C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3461C12(Test_S3461C12, "S3461C12", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S3461C12C1Ev();
extern void _ZN8S3461C12D1Ev();
Name_Map name_map_S3461C12[] = {
  NSPAIR(_ZN8S3461C12C1Ev),
  NSPAIR(_ZN8S3461C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S3461C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3461C12[];
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY vtc_S3461C12[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern VTBL_ENTRY _ZTV8S3461C12[];
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C12[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
static  VTT_ENTRY vtt_S3461C12[] = {
  {&(_ZTV8S3461C12[3]),  3,4},
  {&(_tg__ZTV7S3461C9__8S3461C12[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
Class_Descriptor cd_S3461C12 = {  "S3461C12", // class name
  bases_S3461C12, 4,
  &(vtc_S3461C12[0]), // expected_vtbl_contents
  &(vtt_S3461C12[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S3461C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S3461C12),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3461C12),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  S3461C11  : virtual S3461C5_nt , S3461C12 , virtual S3461C9 {
  virtual void  v3(); // _ZN8S3461C112v3Ev
  ~S3461C11(); // tgen
  S3461C11(); // tgen
};
//SIG(-1 S3461C11) C1{ VBC2{ m FL} BC3{ VBC2 BC4{ VBC2 BC5{ m} v2} BC5} VBC4 v1}


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

static void Test_S3461C11()
{
  extern Class_Descriptor cd_S3461C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3461C11, buf);
    S3461C11 *dp, &lv = *(dp=new (buf) S3461C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3461C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3461C11)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(16,8), "S3461C11");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*), ABISELECT(16,8), "S3461C11");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*), ABISELECT(16,8), "S3461C11");
    /*is_ambiguous_... S3461C11::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*), ABISELECT(16,8), "S3461C11");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*), 0, "S3461C11");
    check_base_class_offset(lv, (S3461C9*)(S3461C12*), 0, "S3461C11");
    /*is_ambiguous_... S3461C12::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*), ABISELECT(8,4), "S3461C11");
    check_base_class_offset(lv, (S3461C12*), 0, "S3461C11");
    /*is_ambiguous_... S3461C11::S3461C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*), ABISELECT(24,16), "S3461C11");
    /*is_ambiguous_... S3461C11::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*), ABISELECT(24,16), "S3461C11");
    test_class_info(&lv, &cd_S3461C11);
    dp->~S3461C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3461C11(Test_S3461C11, "S3461C11", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S3461C11C1Ev();
extern void _ZN8S3461C11D1Ev();
Name_Map name_map_S3461C11[] = {
  NSPAIR(_ZN8S3461C11C1Ev),
  NSPAIR(_ZN8S3461C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
static Base_Class bases_S3461C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3461C12,    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_S731C17_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_S3461C9,    ABISELECT(24,16), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3461C11[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY vtc_S3461C11[] = {
  ABISELECT(24,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  0,
  -8,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern VTBL_ENTRY _ZTV8S3461C11[];
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C11[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C12__8S3461C11[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C11[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
static  VTT_ENTRY vtt_S3461C11[] = {
  {&(_ZTV8S3461C11[4]),  4,11},
  {&(_tg__ZTV8S3461C12__8S3461C11[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C12__8S3461C11[3]),  3,4},
  {&(_ZTV8S3461C11[10]),  10,11},
  {&(_tg__ZTV7S3461C9__A1__8S3461C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S3461C11[];
extern  VTBL_ENTRY _ZTV8S3461C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C11[];
Class_Descriptor cd_S3461C11 = {  "S3461C11", // class name
  bases_S3461C11, 7,
  &(vtc_S3461C11[0]), // expected_vtbl_contents
  &(vtt_S3461C11[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S3461C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S3461C11),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3461C11),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  S3461C13  : S3461C5_nt , virtual S3461C9 , S731C17_nt {
  virtual  ~S3461C13(); // _ZN8S3461C13D2Ev
  S3461C13(); // tgen
};
//SIG(-1 S3461C13) C1{ BC2{ m FL} VBC3{ VBC2 BC4{ m} v1} BC4 vd}


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

static void Test_S3461C13()
{
  extern Class_Descriptor cd_S3461C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S3461C13, buf);
    S3461C13 *dp, &lv = *(dp=new (buf) S3461C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S3461C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3461C13)");
    /*is_ambiguous_... S3461C13::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S3461C13");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*), ABISELECT(16,12), "S3461C13");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*), 0, "S3461C13");
    check_base_class_offset(lv, (S3461C9*), 0, "S3461C13");
    /*is_ambiguous_... S3461C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(16,12), "S3461C13");
    test_class_info(&lv, &cd_S3461C13);
    dp->~S3461C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3461C13(Test_S3461C13, "S3461C13", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN8S3461C13C1Ev();
extern void _ZN8S3461C13D2Ev();
Name_Map name_map_S3461C13[] = {
  NSPAIR(_ZN8S3461C13C1Ev),
  NSPAIR(_ZN8S3461C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S3461C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3461C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3461C13[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY vtc_S3461C13[] = {
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern VTBL_ENTRY _ZTV8S3461C13[];
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C13[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
static  VTT_ENTRY vtt_S3461C13[] = {
  {&(_ZTV8S3461C13[5]),  5,8},
  {&(_ZTV8S3461C13[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
Class_Descriptor cd_S3461C13 = {  "S3461C13", // class name
  bases_S3461C13, 5,
  &(vtc_S3461C13[0]), // expected_vtbl_contents
  &(vtt_S3461C13[0]), // expected_vtt_contents
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI8S3461C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S3461C13),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3461C13),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  S3461C4  : S3461C5_nt , S3461C6 , S28C52_nt , virtual S3461C11 , virtual S3461C13 {
  virtual  ~S3461C4(); // _ZN7S3461C4D2Ev
  S3461C4(); // tgen
};
//SIG(-1 S3461C4) C1{ BC2{ m FL} BC3{ BC2 VBC4{ m} BC5{ BC6{ VBC2 BC4 v1}} vd v2} BC7{ m} VBC8{ VBC2 BC9{ VBC2 BC6 BC4} VBC6 v3} VBC10{ BC2 VBC6 BC4 vd} vd}


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

static void Test_S3461C4()
{
  extern Class_Descriptor cd_S3461C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,14)];
    init_test(&cd_S3461C4, buf);
    S3461C4 *dp, &lv = *(dp=new (buf) S3461C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S3461C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3461C4)");
    /*is_ambiguous_... S3461C4::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(16,12), "S3461C4");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*), ABISELECT(8,4), "S3461C4");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*), ABISELECT(24,20), "S3461C4");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(24,20), "S3461C4");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C11*), ABISELECT(24,20), "S3461C4");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C11*), ABISELECT(24,20), "S3461C4");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(24,20), "S3461C4");
    /*is_ambiguous_... S3461C4::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*), ABISELECT(24,20), "S3461C4");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*), 0, "S3461C4");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*), 0, "S3461C4");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*), 0, "S3461C4");
    check_base_class_offset(lv, (S3461C6*), 0, "S3461C4");
    check_base_class_offset(lv, (S28C52_nt*), 0, "S3461C4");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(32,28), "S3461C4");
    check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(32,28), "S3461C4");
    /*is_ambiguous_... S3461C12::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C11*), ABISELECT(40,32), "S3461C4");
    check_base_class_offset(lv, (S3461C12*)(S3461C11*), ABISELECT(32,28), "S3461C4");
    /*is_ambiguous_... S3461C4::S3461C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*), ABISELECT(48,36), "S3461C4");
    /*is_ambiguous_... S3461C11::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C11*), ABISELECT(48,36), "S3461C4");
    check_base_class_offset(lv, (S3461C9*)(S3461C13*), ABISELECT(48,36), "S3461C4");
    check_base_class_offset(lv, (S3461C11*), ABISELECT(32,28), "S3461C4");
    /*is_ambiguous_... S3461C13::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*), ABISELECT(56,40), "S3461C4");
    /*is_ambiguous_... S3461C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*), ABISELECT(64,48), "S3461C4");
    check_base_class_offset(lv, (S3461C13*), ABISELECT(48,36), "S3461C4");
    test_class_info(&lv, &cd_S3461C4);
    dp->~S3461C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3461C4(Test_S3461C4, "S3461C4", ABISELECT(72,52));

#else // __cplusplus

extern void _ZN7S3461C4C1Ev();
extern void _ZN7S3461C4D2Ev();
Name_Map name_map_S3461C4[] = {
  NSPAIR(_ZN7S3461C4C1Ev),
  NSPAIR(_ZN7S3461C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C11;
extern VTBL_ENTRY _ZTI8S3461C11[];
extern  VTBL_ENTRY _ZTV8S3461C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
static Base_Class bases_S3461C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3461C9,    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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3461C8,    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_S3461C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S28C52_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(32,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(32,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
    3, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    14, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(48,36), //bcp->offset
    -1, //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
    1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S3461C11,    ABISELECT(32,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_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
    18, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    18, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(48,36), //bcp->offset
    19, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3461C4[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C4D1Ev();
extern void _ZN7S3461C4D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S3461C4D1Ev,_ZThn36_N7S3461C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S3461C4D0Ev,_ZThn36_N7S3461C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3461C4[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  ABISELECT(-48,-36),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev),
};
extern VTBL_ENTRY _ZTV7S3461C4[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__7S3461C4[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C6__7S3461C4[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C6__7S3461C4[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__7S3461C4[] = {
  ABISELECT(16,8),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C11__7S3461C4[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C11__A1__7S3461C4[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C11__7S3461C4[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A2__7S3461C4[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C13__7S3461C4[] = {
  0,
  0,
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
static  VTT_ENTRY vtt_S3461C4[] = {
  {&(_ZTV7S3461C4[7]),  7,28},
  {&(_tg__ZTV7S3461C6__7S3461C4[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C6__7S3461C4[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C6__7S3461C4[3]),  3,4},
  {&(_ZTV7S3461C4[17]),  17,28},
  {&(_ZTV7S3461C4[25]),  25,28},
  {&(_ZTV7S3461C4[25]),  25,28},
  {&(_tg__ZTV8S3461C11__7S3461C4[4]),  4,6},
  {&(_tg__ZTV8S3461C128S3461C11__7S3461C4[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C11__A1__7S3461C4[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C11__7S3461C4[4]),  4,5},
  {&(_tg__ZTV7S3461C9__A2__7S3461C4[3]),  3,4},
  {&(_tg__ZTV8S3461C13__7S3461C4[5]),  5,8},
  {&(_tg__ZTV8S3461C13__7S3461C4[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S3461C4[];
extern  VTBL_ENTRY _ZTV7S3461C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C4[];
static VTBL_ENTRY alt_thunk_names1[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3461C4D0Ev,_ZThn36_N7S3461C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3461C4D1Ev,_ZThn36_N7S3461C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3461C4 = {  "S3461C4", // class name
  bases_S3461C4, 19,
  &(vtc_S3461C4[0]), // expected_vtbl_contents
  &(vtt_S3461C4[0]), // expected_vtt_contents
  ABISELECT(72,52), // object size
  NSPAIRA(_ZTI7S3461C4),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S3461C4),28, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3461C4),14, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names1,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3461C14  : virtual S3461C8 {
  int s3461c14f0;
  ~S3461C14(); // tgen
  S3461C14(); // tgen
};
//SIG(-1 S3461C14) C1{ VBC2{ BC3{ VBC4{ m FL} BC5{ m} v1}} Fi}


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

static void Test_S3461C14()
{
  extern Class_Descriptor cd_S3461C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S3461C14, buf);
    S3461C14 *dp, &lv = *(dp=new (buf) S3461C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S3461C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3461C14)");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*), ABISELECT(16,8), "S3461C14");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*), 0, "S3461C14");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*), 0, "S3461C14");
    check_base_class_offset(lv, (S3461C8*), 0, "S3461C14");
    check_field_offset(lv, s3461c14f0, ABISELECT(8,4), "S3461C14.s3461c14f0");
    test_class_info(&lv, &cd_S3461C14);
    dp->~S3461C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3461C14(Test_S3461C14, "S3461C14", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S3461C14C1Ev();
extern void _ZN8S3461C14D1Ev();
Name_Map name_map_S3461C14[] = {
  NSPAIR(_ZN8S3461C14C1Ev),
  NSPAIR(_ZN8S3461C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
static Base_Class bases_S3461C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3461C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3461C14[];
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY vtc_S3461C14[] = {
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern VTBL_ENTRY _ZTV8S3461C14[];
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__8S3461C14[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C8__8S3461C14[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
static  VTT_ENTRY vtt_S3461C14[] = {
  {&(_ZTV8S3461C14[5]),  5,6},
  {&(_ZTV8S3461C14[5]),  5,6},
  {&(_tg__ZTV7S3461C8__8S3461C14[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C8__8S3461C14[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S3461C14[];
extern  VTBL_ENTRY _ZTV8S3461C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C14[];
Class_Descriptor cd_S3461C14 = {  "S3461C14", // class name
  bases_S3461C14, 4,
  &(vtc_S3461C14[0]), // expected_vtbl_contents
  &(vtt_S3461C14[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S3461C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S3461C14),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3461C14),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  S3461C3  : virtual S3461C4 , S3461C6 , S3461C14 {
  long double s3461c3f0;
  virtual  ~S3461C3(); // _ZN7S3461C3D2Ev
  S3461C3(); // tgen
};
//SIG(-1 S3461C3) C1{ VBC2{ BC3{ m FL} BC4{ BC3 VBC5{ m} BC6{ BC7{ VBC3 BC5 v1}} vd v2} BC8{ m} VBC9{ VBC3 BC10{ VBC3 BC7 BC5} VBC7 v3} VBC11{ BC3 VBC7 BC5 vd} vd} BC4 BC12{ VBC6 Fi} vd FD}


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

static void Test_S3461C3()
{
  extern Class_Descriptor cd_S3461C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,22)];
    init_test(&cd_S3461C3, buf);
    S3461C3 *dp, &lv = *(dp=new (buf) S3461C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S3461C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3461C3)");
    /*is_ambiguous_... S3461C4::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C4*), ABISELECT(64,44), "S3461C3");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C4*), ABISELECT(56,36), "S3461C3");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C4*), ABISELECT(72,52), "S3461C3");
    /*is_ambiguous_... S3461C3::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*), ABISELECT(72,52), "S3461C3");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*), ABISELECT(72,52), "S3461C3");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C11*), ABISELECT(72,52), "S3461C3");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C11*), ABISELECT(72,52), "S3461C3");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(72,52), "S3461C3");
    /*is_ambiguous_... S3461C3::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*), ABISELECT(72,52), "S3461C3");
    /*is_ambiguous_... S3461C3::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(72,52), "S3461C3");
    /*is_ambiguous_... S3461C3::S3461C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*), ABISELECT(72,52), "S3461C3");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*), ABISELECT(48,32), "S3461C3");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*), ABISELECT(48,32), "S3461C3");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C4*), ABISELECT(48,32), "S3461C3");
    check_base_class_offset(lv, (S3461C6*)(S3461C4*), ABISELECT(48,32), "S3461C3");
    check_base_class_offset(lv, (S28C52_nt*)(S3461C4*), ABISELECT(48,32), "S3461C3");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(80,60), "S3461C3");
    check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(80,60), "S3461C3");
    /*is_ambiguous_... S3461C12::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C11*), ABISELECT(88,64), "S3461C3");
    check_base_class_offset(lv, (S3461C12*)(S3461C11*), ABISELECT(80,60), "S3461C3");
    /*is_ambiguous_... S3461C3::S3461C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*), ABISELECT(96,68), "S3461C3");
    /*is_ambiguous_... S3461C11::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C11*), ABISELECT(96,68), "S3461C3");
    check_base_class_offset(lv, (S3461C9*)(S3461C13*), ABISELECT(96,68), "S3461C3");
    check_base_class_offset(lv, (S3461C11*)(S3461C4*), ABISELECT(80,60), "S3461C3");
    /*is_ambiguous_... S3461C13::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*), ABISELECT(104,72), "S3461C3");
    /*is_ambiguous_... S3461C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*), ABISELECT(112,80), "S3461C3");
    check_base_class_offset(lv, (S3461C13*)(S3461C4*), ABISELECT(96,68), "S3461C3");
    check_base_class_offset(lv, (S3461C4*), ABISELECT(48,32), "S3461C3");
    /*is_ambiguous_... S3461C3::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*), ABISELECT(8,4), "S3461C3");
    /*is_ambiguous_... S3461C3::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*), 0, "S3461C3");
    /*is_ambiguous_... S3461C3::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*), 0, "S3461C3");
    /*is_ambiguous_... S3461C3::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C6*), 0, "S3461C3");
    /*is_ambiguous_... S3461C3::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C6*), 0, "S3461C3");
    /*is_ambiguous_... S3461C3::S3461C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*), ABISELECT(16,12), "S3461C3");
    /*is_ambiguous_... S3461C3::S3461C8 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*), ABISELECT(16,12), "S3461C3");
    check_base_class_offset(lv, (S3461C8*)(S3461C14*), ABISELECT(16,12), "S3461C3");
    check_base_class_offset(lv, (S3461C14*), ABISELECT(16,12), "S3461C3");
    check_field_offset(lv, s3461c3f0, ABISELECT(32,20), "S3461C3.s3461c3f0");
    test_class_info(&lv, &cd_S3461C3);
    dp->~S3461C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3461C3(Test_S3461C3, "S3461C3", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN7S3461C3C1Ev();
extern void _ZN7S3461C3D2Ev();
Name_Map name_map_S3461C3[] = {
  NSPAIR(_ZN7S3461C3C1Ev),
  NSPAIR(_ZN7S3461C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C11;
extern VTBL_ENTRY _ZTI8S3461C11[];
extern  VTBL_ENTRY _ZTV8S3461C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C4;
extern VTBL_ENTRY _ZTI7S3461C4[];
extern  VTBL_ENTRY _ZTV7S3461C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C14;
extern VTBL_ENTRY _ZTI8S3461C14[];
extern  VTBL_ENTRY _ZTV8S3461C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C14[];
static Base_Class bases_S3461C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    19, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    7, //immediately_derived
  0, 0},
  {&cd_S731C17_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, 1},
  {&cd_S3461C5_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
    5, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3461C8,    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
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3461C6,    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
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(80,60), //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
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(88,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
    12, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S3461C11,    ABISELECT(80,60), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(104,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(112,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(96,68), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3461C4,    ABISELECT(48,32), //bcp->offset
    19, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3461C9,    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
    23, //immediately_derived
  0, 0},
  {&cd_S3461C8,    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
    13, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3461C6,    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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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
    26, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S3461C14,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3461C3[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C3D1Ev();
extern void _ZN7S3461C3D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n72_N7S3461C3D1Ev,_ZTv0_n36_N7S3461C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S3461C3D1Ev,_ZThn32_N7S3461C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S3461C3D0Ev,_ZTv0_n36_N7S3461C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S3461C3D0Ev,_ZThn32_N7S3461C3D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C3D1Ev,_ZTv0_n24_N7S3461C3D1Ev)();
extern void ABISELECT(_ZThn96_N7S3461C3D1Ev,_ZThn68_N7S3461C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3461C3D0Ev,_ZTv0_n24_N7S3461C3D0Ev)();
extern void ABISELECT(_ZThn96_N7S3461C3D0Ev,_ZThn68_N7S3461C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3461C3[] = {
  ABISELECT(16,12),
  ABISELECT(96,68),
  ABISELECT(96,68),
  ABISELECT(80,60),
  ABISELECT(48,32),
  ABISELECT(72,52),
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C3[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  0,
  0,
  ABISELECT(56,40),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S3461C3[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  0,
  ABISELECT(-48,-32),
  0,
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S3461C3[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3461C3D1Ev,_ZTv0_n36_N7S3461C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3461C3D0Ev,_ZTv0_n36_N7S3461C3D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI7S3461C3[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  ABISELECT(-96,-68),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S3461C3[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C3D1Ev,_ZTv0_n24_N7S3461C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C3D0Ev,_ZTv0_n24_N7S3461C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S3461C3[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__A1__7S3461C3[] = {
  ABISELECT(72,52),
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C6__A1__7S3461C3[] = {
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C6__A3__7S3461C3[] = {
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__7S3461C3[] = {
  0,
  0,
  ABISELECT(56,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C4D1Ev();
extern void _ZN7S3461C4D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C4__7S3461C3[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C67S3461C4__7S3461C3[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C67S3461C4__7S3461C3[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C67S3461C4__7S3461C3[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__7S3461C4__7S3461C3[] = {
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S3461C4D1Ev,_ZThn36_N7S3461C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S3461C4D0Ev,_ZThn36_N7S3461C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__7S3461C4__7S3461C3[] = {
  ABISELECT(-48,-36),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__7S3461C3[] = {
  ABISELECT(16,8),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C11__7S3461C3[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C11__A1__7S3461C3[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C11__7S3461C3[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A2__7S3461C3[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C13__7S3461C3[] = {
  0,
  0,
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__A2__7S3461C3[] = {
  ABISELECT(56,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C8__A4__7S3461C3[] = {
  ABISELECT(56,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
static  VTT_ENTRY vtt_S3461C3[] = {
  {&(_ZTV7S3461C3[9]),  9,50},
  {&(_tg__ZTV7S3461C6__A1__7S3461C3[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C6__A1__7S3461C3[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C6__A3__7S3461C3[3]),  3,4},
  {&(_tg__ZTV8S3461C14__7S3461C3[5]),  5,6},
  {&(_tg__ZTV8S3461C14__7S3461C3[5]),  5,6},
  {&(_ZTV7S3461C3[29]),  29,50},
  {&(_ZTV7S3461C3[39]),  39,50},
  {&(_ZTV7S3461C3[47]),  47,50},
  {&(_ZTV7S3461C3[47]),  47,50},
  {&(_ZTV7S3461C3[18]),  18,50},
  {&(_ZTV7S3461C3[18]),  18,50},
  {&(_tg__ZTV7S3461C4__7S3461C3[7]),  7,11},
  {&(_tg__ZTV7S3461C67S3461C4__7S3461C3[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C67S3461C4__7S3461C3[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C67S3461C4__7S3461C3[3]),  3,4},
  {&(_tg__ZTV8S3461C11__7S3461C4__7S3461C3[6]),  6,8},
  {&(_tg__ZTV8S3461C13__7S3461C4__7S3461C3[6]),  6,9},
  {&(_tg__ZTV8S3461C13__7S3461C4__7S3461C3[6]),  6,9},
  {&(_tg__ZTV8S3461C11__7S3461C3[4]),  4,6},
  {&(_tg__ZTV8S3461C128S3461C11__7S3461C3[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C11__A1__7S3461C3[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C11__7S3461C3[4]),  4,5},
  {&(_tg__ZTV7S3461C9__A2__7S3461C3[3]),  3,4},
  {&(_tg__ZTV8S3461C13__7S3461C3[5]),  5,8},
  {&(_tg__ZTV8S3461C13__7S3461C3[5]),  5,8},
  {&(_tg__ZTV7S3461C8__A2__7S3461C3[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C8__A4__7S3461C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S3461C3[];
extern  VTBL_ENTRY _ZTV7S3461C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C3[];
static VTBL_ENTRY alt_thunk_names2[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3461C4D0Ev,_ZThn36_N7S3461C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3461C4D1Ev,_ZThn36_N7S3461C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C3D0Ev,_ZTv0_n24_N7S3461C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3461C3D0Ev,_ZThn68_N7S3461C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C3D1Ev,_ZTv0_n24_N7S3461C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3461C3D1Ev,_ZThn68_N7S3461C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3461C3D0Ev,_ZTv0_n36_N7S3461C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3461C3D0Ev,_ZThn32_N7S3461C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3461C3D1Ev,_ZTv0_n36_N7S3461C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3461C3D1Ev,_ZThn32_N7S3461C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3461C3 = {  "S3461C3", // class name
  bases_S3461C3, 29,
  &(vtc_S3461C3[0]), // expected_vtbl_contents
  &(vtt_S3461C3[0]), // expected_vtt_contents
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI7S3461C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3461C3),50, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3461C3),28, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names2,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3461C17  : S3461C13 {
  virtual void  v4(); // _ZN8S3461C172v4Ev
  ~S3461C17(); // tgen
  S3461C17(); // tgen
};
//SIG(-1 S3461C17) C1{ BC2{ BC3{ m FL} VBC4{ VBC3 BC5{ m} v2} BC5 vd} v1}


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

static void Test_S3461C17()
{
  extern Class_Descriptor cd_S3461C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S3461C17, buf);
    S3461C17 *dp, &lv = *(dp=new (buf) S3461C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S3461C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3461C17)");
    /*is_ambiguous_... S3461C13::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*), ABISELECT(8,4), "S3461C17");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*), ABISELECT(24,16), "S3461C17");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*), 0, "S3461C17");
    check_base_class_offset(lv, (S3461C9*)(S3461C13*), 0, "S3461C17");
    /*is_ambiguous_... S3461C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*), ABISELECT(16,12), "S3461C17");
    check_base_class_offset(lv, (S3461C13*), 0, "S3461C17");
    test_class_info(&lv, &cd_S3461C17);
    dp->~S3461C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3461C17(Test_S3461C17, "S3461C17", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN8S3461C17C1Ev();
extern void _ZN8S3461C17D1Ev();
Name_Map name_map_S3461C17[] = {
  NSPAIR(_ZN8S3461C17C1Ev),
  NSPAIR(_ZN8S3461C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
static Base_Class bases_S3461C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3461C5_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3461C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    5, //immediately_derived
  0, 0},
  {&cd_S3461C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3461C17[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C17D1Ev();
extern void _ZN8S3461C17D0Ev();
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY vtc_S3461C17[] = {
  0,
  0,
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C17[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C17D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C17D0Ev,
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern VTBL_ENTRY _ZTV8S3461C17[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C13__8S3461C17[] = {
  0,
  0,
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C17[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
static  VTT_ENTRY vtt_S3461C17[] = {
  {&(_ZTV8S3461C17[5]),  5,9},
  {&(_tg__ZTV8S3461C13__8S3461C17[5]),  5,8},
  {&(_tg__ZTV8S3461C13__8S3461C17[5]),  5,8},
  {&(_ZTV8S3461C17[5]),  5,9},
  {&(_tg__ZTV7S3461C9__8S3461C17[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S3461C17[];
extern  VTBL_ENTRY _ZTV8S3461C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C17[];
Class_Descriptor cd_S3461C17 = {  "S3461C17", // class name
  bases_S3461C17, 6,
  &(vtc_S3461C17[0]), // expected_vtbl_contents
  &(vtt_S3461C17[0]), // expected_vtt_contents
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI8S3461C17),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S3461C17),9, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3461C17),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  S3461C16  : S3461C11 , S3461C9 , virtual S3461C17 , S3461C12 {
  ~S3461C16(); // tgen
  S3461C16(); // tgen
};
//SIG(-1 S3461C16) C1{ BC2{ VBC3{ m FL} BC4{ VBC3 BC5{ VBC3 BC6{ m} v1} BC6} VBC5 v2} BC5 VBC7{ BC8{ BC3 VBC5 BC6 vd} v3} BC4}


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

static void Test_S3461C16()
{
  extern Class_Descriptor cd_S3461C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S3461C16, buf);
    S3461C16 *dp, &lv = *(dp=new (buf) S3461C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S3461C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3461C16)");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C11*), ABISELECT(40,20), "S3461C16");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C11*), ABISELECT(40,20), "S3461C16");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(40,20), "S3461C16");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*), ABISELECT(40,20), "S3461C16");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*), ABISELECT(40,20), "S3461C16");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*), ABISELECT(40,20), "S3461C16");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*), ABISELECT(40,20), "S3461C16");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C11*), 0, "S3461C16");
    check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C11*), 0, "S3461C16");
    /*is_ambiguous_... S3461C12::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C11*), ABISELECT(8,4), "S3461C16");
    check_base_class_offset(lv, (S3461C12*)(S3461C11*), 0, "S3461C16");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*), ABISELECT(48,28), "S3461C16");
    /*is_ambiguous_... S3461C11::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C11*), ABISELECT(48,28), "S3461C16");
    check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C17*), ABISELECT(48,28), "S3461C16");
    check_base_class_offset(lv, (S3461C11*), 0, "S3461C16");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*), ABISELECT(16,8), "S3461C16");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*), ABISELECT(16,8), "S3461C16");
    /*is_ambiguous_... S3461C13::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C17*), ABISELECT(56,32), "S3461C16");
    /*is_ambiguous_... S3461C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C17*), ABISELECT(64,40), "S3461C16");
    check_base_class_offset(lv, (S3461C13*)(S3461C17*), ABISELECT(48,28), "S3461C16");
    check_base_class_offset(lv, (S3461C17*), ABISELECT(48,28), "S3461C16");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*), ABISELECT(24,12), "S3461C16");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*), ABISELECT(24,12), "S3461C16");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*), ABISELECT(32,16), "S3461C16");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C12*), ABISELECT(24,12), "S3461C16");
    test_class_info(&lv, &cd_S3461C16);
    dp->~S3461C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3461C16(Test_S3461C16, "S3461C16", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN8S3461C16C1Ev();
extern void _ZN8S3461C16D1Ev();
Name_Map name_map_S3461C16[] = {
  NSPAIR(_ZN8S3461C16C1Ev),
  NSPAIR(_ZN8S3461C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C11;
extern VTBL_ENTRY _ZTI8S3461C11[];
extern  VTBL_ENTRY _ZTV8S3461C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C11[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C17;
extern VTBL_ENTRY _ZTI8S3461C17[];
extern  VTBL_ENTRY _ZTV8S3461C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C17[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
static Base_Class bases_S3461C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    4, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3461C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3461C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3461C17,    ABISELECT(48,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_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
    15, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(24,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //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 _ZTI8S3461C16[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN8S3461C16D1Ev();
extern void _ZN8S3461C16D0Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C16D1Ev,_ZTv0_n24_N8S3461C16D1Ev)();
extern void ABISELECT(_ZThn48_N8S3461C16D1Ev,_ZThn28_N8S3461C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C16D0Ev,_ZTv0_n24_N8S3461C16D0Ev)();
extern void ABISELECT(_ZThn48_N8S3461C16D0Ev,_ZThn28_N8S3461C16D0Ev)() __attribute__((weak));
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY vtc_S3461C16[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&_ZN8S3461C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C16D0Ev,
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  0,
  ABISELECT(-48,-28),
  0,
  0,
  -8,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C16D1Ev,_ZTv0_n24_N8S3461C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C16D0Ev,_ZTv0_n24_N8S3461C16D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern VTBL_ENTRY _ZTV8S3461C16[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C16[] = {
  ABISELECT(48,28),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C11__8S3461C16[] = {
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C11__8S3461C16[] = {
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C11__8S3461C16[] = {
  0,
  -8,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A__8S3461C16[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__A1__8S3461C16[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C12__A3__8S3461C16[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C16[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C17D1Ev();
extern void _ZN8S3461C17D0Ev();
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C17__8S3461C16[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C17[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C17D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C17D0Ev,
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C17__8S3461C16[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
static  VTT_ENTRY vtt_S3461C16[] = {
  {&(_ZTV8S3461C16[5]),  5,28},
  {&(_tg__ZTV8S3461C11__8S3461C16[4]),  4,6},
  {&(_tg__ZTV8S3461C128S3461C11__8S3461C16[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C11__8S3461C16[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C11__8S3461C16[4]),  4,5},
  {&(_tg__ZTV7S3461C9__A__8S3461C16[3]),  3,4},
  {&(_tg__ZTV8S3461C12__A1__8S3461C16[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C12__A3__8S3461C16[3]),  3,4},
  {&(_ZTV8S3461C16[24]),  24,28},
  {&(_ZTV8S3461C16[12]),  12,28},
  {&(_ZTV8S3461C16[24]),  24,28},
  {&(_ZTV8S3461C16[16]),  16,28},
  {&(_tg__ZTV7S3461C9__A1__8S3461C16[3]),  3,4},
  {&(_tg__ZTV8S3461C17__8S3461C16[5]),  5,9},
  {&(_tg__ZTV8S3461C138S3461C17__8S3461C16[5]),  5,8},
  {&(_tg__ZTV8S3461C138S3461C17__8S3461C16[5]),  5,8},
  {&(_tg__ZTV8S3461C17__8S3461C16[5]),  5,9},
};
extern VTBL_ENTRY _ZTI8S3461C16[];
extern  VTBL_ENTRY _ZTV8S3461C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C16[];
static VTBL_ENTRY alt_thunk_names3[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C16D0Ev,_ZTv0_n24_N8S3461C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S3461C16D0Ev,_ZThn28_N8S3461C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C16D1Ev,_ZTv0_n24_N8S3461C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S3461C16D1Ev,_ZThn28_N8S3461C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3461C16 = {  "S3461C16", // class name
  bases_S3461C16, 18,
  &(vtc_S3461C16[0]), // expected_vtbl_contents
  &(vtt_S3461C16[0]), // expected_vtt_contents
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI8S3461C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S3461C16),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3461C16),17, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names3,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3461C18  : virtual S3461C9 , S3461C6 {
  virtual  ~S3461C18(); // _ZN8S3461C18D2Ev
  virtual void  v5(); // _ZN8S3461C182v5Ev
  S3461C18(); // tgen
};
//SIG(-1 S3461C18) C1{ VBC2{ VBC3{ m FL} BC4{ m} v2} BC5{ BC3 VBC4 BC6{ BC2} vd v3} vd v1}


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

static void Test_S3461C18()
{
  extern Class_Descriptor cd_S3461C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S3461C18, buf);
    S3461C18 *dp, &lv = *(dp=new (buf) S3461C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S3461C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3461C18)");
    /*is_ambiguous_... S3461C18::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*), ABISELECT(24,16), "S3461C18");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(24,16), "S3461C18");
    /*is_ambiguous_... S3461C18::S3461C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*), ABISELECT(16,12), "S3461C18");
    /*is_ambiguous_... S3461C18::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*), ABISELECT(16,12), "S3461C18");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*), ABISELECT(8,4), "S3461C18");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*), ABISELECT(32,24), "S3461C18");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*), 0, "S3461C18");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*), 0, "S3461C18");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*), 0, "S3461C18");
    check_base_class_offset(lv, (S3461C6*), 0, "S3461C18");
    test_class_info(&lv, &cd_S3461C18);
    dp->~S3461C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3461C18(Test_S3461C18, "S3461C18", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN8S3461C18C1Ev();
extern void _ZN8S3461C18D2Ev();
Name_Map name_map_S3461C18[] = {
  NSPAIR(_ZN8S3461C18C1Ev),
  NSPAIR(_ZN8S3461C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
static Base_Class bases_S3461C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(16,12), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3461C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3461C6,    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 _ZTI8S3461C18[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C18D1Ev();
extern void _ZN8S3461C18D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY vtc_S3461C18[] = {
  ABISELECT(16,12),
  ABISELECT(32,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern VTBL_ENTRY _ZTV8S3461C18[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__8S3461C18[] = {
  ABISELECT(32,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C6__8S3461C18[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C6__A1__8S3461C18[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C18[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
static  VTT_ENTRY vtt_S3461C18[] = {
  {&(_ZTV8S3461C18[5]),  5,15},
  {&(_tg__ZTV7S3461C6__8S3461C18[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C6__8S3461C18[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C6__A1__8S3461C18[3]),  3,4},
  {&(_ZTV8S3461C18[14]),  14,15},
  {&(_tg__ZTV7S3461C9__8S3461C18[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S3461C18[];
extern  VTBL_ENTRY _ZTV8S3461C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C18[];
Class_Descriptor cd_S3461C18 = {  "S3461C18", // class name
  bases_S3461C18, 9,
  &(vtc_S3461C18[0]), // expected_vtbl_contents
  &(vtt_S3461C18[0]), // expected_vtt_contents
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI8S3461C18),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3461C18),15, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3461C18),6, //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  S3461C15  : S3461C16 , S3461C14 , S3461C18 , S3461C6 {
  void *s3461c15f0;
  virtual  ~S3461C15(); // _ZN8S3461C15D2Ev
  S3461C15(); // tgen
};
//SIG(-1 S3461C15) C1{ BC2{ BC3{ VBC4{ m FL} BC5{ VBC4 BC6{ VBC4 BC7{ m} v1} BC7} VBC6 v2} BC6 VBC8{ BC9{ BC4 VBC6 BC7 vd} v3} BC5} BC10{ VBC11{ BC6} Fi} BC12{ VBC6 BC13{ BC4 VBC7 BC11 vd v4} vd v5} BC13 vd Fp}


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

static void Test_S3461C15()
{
  extern Class_Descriptor cd_S3461C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,21)];
    init_test(&cd_S3461C15, buf);
    S3461C15 *dp, &lv = *(dp=new (buf) S3461C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,80), "sizeof(S3461C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3461C15)");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C11*)(S3461C16*), ABISELECT(96,56), "S3461C15");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C11*)(S3461C16*), ABISELECT(96,56), "S3461C15");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C11*)(S3461C16*), ABISELECT(96,56), "S3461C15");
    /*is_ambiguous_... S3461C15::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*), ABISELECT(96,56), "S3461C15");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C16*), ABISELECT(96,56), "S3461C15");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C16*), ABISELECT(96,56), "S3461C15");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C16*), ABISELECT(96,56), "S3461C15");
    /*is_ambiguous_... S3461C15::S3461C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*), ABISELECT(96,56), "S3461C15");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(96,56), "S3461C15");
    /*is_ambiguous_... S3461C15::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(96,56), "S3461C15");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C11*)(S3461C16*), 0, "S3461C15");
    check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C11*)(S3461C16*), 0, "S3461C15");
    /*is_ambiguous_... S3461C12::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C11*)(S3461C16*), ABISELECT(8,4), "S3461C15");
    check_base_class_offset(lv, (S3461C12*)(S3461C11*)(S3461C16*), 0, "S3461C15");
    /*is_ambiguous_... S3461C15::S3461C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*), ABISELECT(104,64), "S3461C15");
    /*is_ambiguous_... S3461C11::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C11*)(S3461C16*), ABISELECT(104,64), "S3461C15");
    check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C17*), ABISELECT(104,64), "S3461C15");
    /*is_ambiguous_... S3461C18::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C18*), ABISELECT(104,64), "S3461C15");
    check_base_class_offset(lv, (S3461C11*)(S3461C16*), 0, "S3461C15");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C16*), ABISELECT(16,8), "S3461C15");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C16*), ABISELECT(16,8), "S3461C15");
    /*is_ambiguous_... S3461C13::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C17*), ABISELECT(112,68), "S3461C15");
    /*is_ambiguous_... S3461C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C17*), ABISELECT(120,76), "S3461C15");
    check_base_class_offset(lv, (S3461C13*)(S3461C17*), ABISELECT(104,64), "S3461C15");
    check_base_class_offset(lv, (S3461C17*)(S3461C16*), ABISELECT(104,64), "S3461C15");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C16*), ABISELECT(24,12), "S3461C15");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C16*), ABISELECT(24,12), "S3461C15");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C16*), ABISELECT(32,16), "S3461C15");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C16*), ABISELECT(24,12), "S3461C15");
    check_base_class_offset(lv, (S3461C16*), 0, "S3461C15");
    /*is_ambiguous_... S3461C15::S3461C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*), ABISELECT(40,20), "S3461C15");
    /*is_ambiguous_... S3461C15::S3461C8 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*), ABISELECT(40,20), "S3461C15");
    check_base_class_offset(lv, (S3461C8*)(S3461C14*), ABISELECT(40,20), "S3461C15");
    check_base_class_offset(lv, (S3461C14*), ABISELECT(40,20), "S3461C15");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C18*), ABISELECT(64,32), "S3461C15");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C18*), ABISELECT(121,77), "S3461C15");
    /*is_ambiguous_... S3461C15::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*), ABISELECT(121,77), "S3461C15");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(56,28), "S3461C15");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(56,28), "S3461C15");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(56,28), "S3461C15");
    check_base_class_offset(lv, (S3461C6*)(S3461C18*), ABISELECT(56,28), "S3461C15");
    check_base_class_offset(lv, (S3461C18*), ABISELECT(56,28), "S3461C15");
    /*is_ambiguous_... S3461C15::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*), ABISELECT(80,44), "S3461C15");
    /*is_ambiguous_... S3461C15::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(72,40), "S3461C15");
    /*is_ambiguous_... S3461C15::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(72,40), "S3461C15");
    /*is_ambiguous_... S3461C15::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C6*), ABISELECT(72,40), "S3461C15");
    /*is_ambiguous_... S3461C15::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C6*), ABISELECT(72,40), "S3461C15");
    check_field_offset(lv, s3461c15f0, ABISELECT(88,52), "S3461C15.s3461c15f0");
    test_class_info(&lv, &cd_S3461C15);
    dp->~S3461C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3461C15(Test_S3461C15, "S3461C15", ABISELECT(128,80));

#else // __cplusplus

extern void _ZN8S3461C15C1Ev();
extern void _ZN8S3461C15D2Ev();
Name_Map name_map_S3461C15[] = {
  NSPAIR(_ZN8S3461C15C1Ev),
  NSPAIR(_ZN8S3461C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C11;
extern VTBL_ENTRY _ZTI8S3461C11[];
extern  VTBL_ENTRY _ZTV8S3461C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C11[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C17;
extern VTBL_ENTRY _ZTI8S3461C17[];
extern  VTBL_ENTRY _ZTV8S3461C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C17[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C16;
extern VTBL_ENTRY _ZTI8S3461C16[];
extern  VTBL_ENTRY _ZTV8S3461C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C16[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C14;
extern VTBL_ENTRY _ZTI8S3461C14[];
extern  VTBL_ENTRY _ZTV8S3461C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C14[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C18;
extern VTBL_ENTRY _ZTI8S3461C18[];
extern  VTBL_ENTRY _ZTV8S3461C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C18[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
static Base_Class bases_S3461C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    6, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3461C12,    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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3461C11,    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
    8, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    12, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3461C17,    ABISELECT(104,64), //bcp->offset
    43, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    15, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(24,12), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3461C16,    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_S731C17_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S3461C14,    ABISELECT(40,20), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(121,77), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S3461C18,    ABISELECT(56,28), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    32, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(72,40), //bcp->offset
    35, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3461C15[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN8S3461C15D1Ev();
extern void _ZN8S3461C15D0Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn56_N8S3461C15D1Ev,_ZThn28_N8S3461C15D1Ev)();
extern void ABISELECT(_ZThn56_N8S3461C15D0Ev,_ZThn28_N8S3461C15D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn72_N8S3461C15D1Ev,_ZThn40_N8S3461C15D1Ev)();
extern void ABISELECT(_ZThn72_N8S3461C15D0Ev,_ZThn40_N8S3461C15D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C15D1Ev,_ZTv0_n24_N8S3461C15D1Ev)();
extern void ABISELECT(_ZThn104_N8S3461C15D1Ev,_ZThn64_N8S3461C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C15D0Ev,_ZTv0_n24_N8S3461C15D0Ev)();
extern void ABISELECT(_ZThn104_N8S3461C15D0Ev,_ZThn64_N8S3461C15D0Ev)() __attribute__((weak));
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY vtc_S3461C15[] = {
  ABISELECT(121,77),
  ABISELECT(40,20),
  ABISELECT(104,64),
  ABISELECT(104,64),
  ABISELECT(96,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&_ZN8S3461C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C15D0Ev,
  ABISELECT(80,48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(72,44),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  0,
  0,
  ABISELECT(56,36),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(48,36),
  ABISELECT(65,49),
  ABISELECT(40,28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S3461C15D1Ev,_ZThn28_N8S3461C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S3461C15D0Ev,_ZThn28_N8S3461C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
  ABISELECT(49,37),
  ABISELECT(24,16),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S3461C15D1Ev,_ZThn40_N8S3461C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S3461C15D0Ev,_ZThn40_N8S3461C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  0,
  ABISELECT(-104,-64),
  0,
  0,
  -8,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C15D1Ev,_ZTv0_n24_N8S3461C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C15D0Ev,_ZTv0_n24_N8S3461C15D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern VTBL_ENTRY _ZTV8S3461C15[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN8S3461C16D1Ev();
extern void _ZN8S3461C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C16__8S3461C15[] = {
  ABISELECT(104,64),
  ABISELECT(104,64),
  ABISELECT(96,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&_ZN8S3461C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C16D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C118S3461C16__8S3461C15[] = {
  ABISELECT(104,64),
  ABISELECT(96,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C118S3461C16__8S3461C15[] = {
  ABISELECT(96,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C118S3461C16__8S3461C15[] = {
  ABISELECT(96,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C118S3461C16__8S3461C15[] = {
  0,
  -8,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C16__A2__8S3461C15[] = {
  ABISELECT(80,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C16__A1__8S3461C15[] = {
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C16__A3__8S3461C15[] = {
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C16D1Ev,_ZTv0_n24_N8S3461C16D1Ev)();
extern void ABISELECT(_ZThn104_N8S3461C16D1Ev,_ZThn64_N8S3461C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C16D0Ev,_ZTv0_n24_N8S3461C16D0Ev)();
extern void ABISELECT(_ZThn104_N8S3461C16D0Ev,_ZThn64_N8S3461C16D0Ev)() __attribute__((weak));
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C17__8S3461C16__8S3461C15[] = {
  0,
  ABISELECT(-104,-64),
  0,
  0,
  -8,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C16D1Ev,_ZTv0_n24_N8S3461C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C16D0Ev,_ZTv0_n24_N8S3461C16D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A__8S3461C16__8S3461C15[] = {
  ABISELECT(80,48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__A1__8S3461C16__8S3461C15[] = {
  ABISELECT(72,44),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C15[] = {
  0,
  0,
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C18D1Ev();
extern void _ZN8S3461C18D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C18__8S3461C15[] = {
  ABISELECT(48,36),
  ABISELECT(65,49),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C68S3461C18__8S3461C15[] = {
  ABISELECT(65,49),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C68S3461C18__A1__8S3461C15[] = {
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C68S3461C18__A5__8S3461C15[] = {
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C18__8S3461C15[] = {
  0,
  -8,
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__A1__8S3461C15[] = {
  ABISELECT(49,37),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C6__A2__8S3461C15[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C6__A6__8S3461C15[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C15[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C17D1Ev();
extern void _ZN8S3461C17D0Ev();
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C17__8S3461C15[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C17[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C17D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C17D0Ev,
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C17__8S3461C15[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__8S3461C15[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C8__A4__8S3461C15[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
static  VTT_ENTRY vtt_S3461C15[] = {
  {&(_ZTV8S3461C15[7]),  7,54},
  {&(_tg__ZTV8S3461C16__8S3461C15[5]),  5,9},
  {&(_tg__ZTV8S3461C118S3461C16__8S3461C15[4]),  4,6},
  {&(_tg__ZTV8S3461C128S3461C118S3461C16__8S3461C15[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C118S3461C16__8S3461C15[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C118S3461C16__8S3461C15[4]),  4,5},
  {&(_tg__ZTV7S3461C98S3461C16__A2__8S3461C15[3]),  3,4},
  {&(_tg__ZTV8S3461C128S3461C16__A1__8S3461C15[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C16__A3__8S3461C15[3]),  3,4},
  {&(_tg__ZTV8S3461C17__8S3461C16__8S3461C15[7]),  7,11},
  {&(_tg__ZTV7S3461C9__A__8S3461C16__8S3461C15[3]),  3,4},
  {&(_tg__ZTV8S3461C17__8S3461C16__8S3461C15[7]),  7,11},
  {&(_tg__ZTV8S3461C12__A1__8S3461C16__8S3461C15[3]),  3,4},
  {&(_tg__ZTV8S3461C14__8S3461C15[5]),  5,6},
  {&(_tg__ZTV8S3461C14__8S3461C15[5]),  5,6},
  {&(_tg__ZTV8S3461C18__8S3461C15[5]),  5,10},
  {&(_tg__ZTV7S3461C68S3461C18__8S3461C15[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C68S3461C18__A1__8S3461C15[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C68S3461C18__A5__8S3461C15[3]),  3,4},
  {&(_tg__ZTV7S3461C9__8S3461C18__8S3461C15[4]),  4,5},
  {&(_tg__ZTV7S3461C6__A1__8S3461C15[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C6__A2__8S3461C15[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C6__A6__8S3461C15[3]),  3,4},
  {&(_ZTV8S3461C15[50]),  50,54},
  {&(_ZTV8S3461C15[14]),  14,54},
  {&(_ZTV8S3461C15[50]),  50,54},
  {&(_ZTV8S3461C15[18]),  18,54},
  {&(_ZTV8S3461C15[24]),  24,54},
  {&(_ZTV8S3461C15[24]),  24,54},
  {&(_ZTV8S3461C15[30]),  30,54},
  {&(_ZTV8S3461C15[39]),  39,54},
  {&(_tg__ZTV7S3461C9__A1__8S3461C15[3]),  3,4},
  {&(_tg__ZTV8S3461C17__8S3461C15[5]),  5,9},
  {&(_tg__ZTV8S3461C138S3461C17__8S3461C15[5]),  5,8},
  {&(_tg__ZTV8S3461C138S3461C17__8S3461C15[5]),  5,8},
  {&(_tg__ZTV8S3461C17__8S3461C15[5]),  5,9},
  {&(_tg__ZTV7S3461C8__8S3461C15[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C8__A4__8S3461C15[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S3461C15[];
extern  VTBL_ENTRY _ZTV8S3461C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C15[];
static VTBL_ENTRY alt_thunk_names4[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C16D0Ev,_ZTv0_n24_N8S3461C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S3461C16D0Ev,_ZThn64_N8S3461C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C16D1Ev,_ZTv0_n24_N8S3461C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S3461C16D1Ev,_ZThn64_N8S3461C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C15D0Ev,_ZTv0_n24_N8S3461C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S3461C15D0Ev,_ZThn64_N8S3461C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C15D1Ev,_ZTv0_n24_N8S3461C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S3461C15D1Ev,_ZThn64_N8S3461C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3461C15 = {  "S3461C15", // class name
  bases_S3461C15, 35,
  &(vtc_S3461C15[0]), // expected_vtbl_contents
  &(vtt_S3461C15[0]), // expected_vtt_contents
  ABISELECT(128,80), // object size
  NSPAIRA(_ZTI8S3461C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S3461C15),54, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3461C15),38, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names4,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3461C2  : S3461C3 , virtual S3461C12 , S3461C14 , S3461C15 {
  short s3461c2f0:6;
  ~S3461C2(); // tgen
  S3461C2(); // tgen
};
//SIG(-1 S3461C2) C1{ BC2{ VBC3{ BC4{ m FL} BC5{ BC4 VBC6{ m} BC7{ BC8{ VBC4 BC6 v1}} vd v2} BC9{ m} VBC10{ VBC4 BC11{ VBC4 BC8 BC6} VBC8 v3} VBC12{ BC4 VBC8 BC6 vd} vd} BC5 BC13{ VBC7 Fi} vd FD} VBC11 BC13 BC14{ BC15{ BC10 BC8 VBC16{ BC12 v4} BC11} BC13 BC17{ VBC8 BC5 vd v5} BC5 vd Fp} Fs:6}


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

static void Test_S3461C2()
{
  extern Class_Descriptor cd_S3461C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(19,45)];
    init_test(&cd_S3461C2, buf);
    S3461C2 *dp, &lv = *(dp=new (buf) S3461C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,176), "sizeof(S3461C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3461C2)");
    /*is_ambiguous_... S3461C4::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C4*), ABISELECT(184,112), "S3461C2");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C4*), ABISELECT(176,104), "S3461C2");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C4*), ABISELECT(192,120), "S3461C2");
    /*is_ambiguous_... S3461C3::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C3*), ABISELECT(192,120), "S3461C2");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C18*)(S3461C15*), ABISELECT(192,120), "S3461C2");
    /*is_ambiguous_... S3461C15::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C15*), ABISELECT(192,120), "S3461C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*), ABISELECT(192,120), "S3461C2");
    /*is_ambiguous_... S3461C2::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C11*), ABISELECT(192,120), "S3461C2");
    /*is_ambiguous_... S3461C2::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C11*), ABISELECT(192,120), "S3461C2");
    /*is_ambiguous_... S3461C2::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(192,120), "S3461C2");
    /*is_ambiguous_... S3461C2::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*), ABISELECT(192,120), "S3461C2");
    /*is_ambiguous_... S3461C3::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C3*), ABISELECT(192,120), "S3461C2");
    /*is_ambiguous_... S3461C2::S3461C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*), ABISELECT(192,120), "S3461C2");
    /*is_ambiguous_... S3461C2::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*), ABISELECT(192,120), "S3461C2");
    /*is_ambiguous_... S3461C2::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*), ABISELECT(192,120), "S3461C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C11*)(S3461C16*)(S3461C15*), ABISELECT(192,120), "S3461C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C15*), ABISELECT(192,120), "S3461C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C15*), ABISELECT(192,120), "S3461C2");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C16*)(S3461C15*), ABISELECT(192,120), "S3461C2");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C16*)(S3461C15*), ABISELECT(192,120), "S3461C2");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C16*)(S3461C15*), ABISELECT(192,120), "S3461C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C15*), ABISELECT(192,120), "S3461C2");
    /*is_ambiguous_... S3461C15::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C15*), ABISELECT(192,120), "S3461C2");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*), ABISELECT(168,100), "S3461C2");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*), ABISELECT(168,100), "S3461C2");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C4*), ABISELECT(168,100), "S3461C2");
    check_base_class_offset(lv, (S3461C6*)(S3461C4*), ABISELECT(168,100), "S3461C2");
    check_base_class_offset(lv, (S28C52_nt*)(S3461C4*), ABISELECT(168,100), "S3461C2");
    /*is_ambiguous_... S3461C2::S3461C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(200,128), "S3461C2");
    /*is_ambiguous_... S3461C2::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(200,128), "S3461C2");
    /*is_ambiguous_... S3461C2::S3461C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C11*), ABISELECT(208,132), "S3461C2");
    /*is_ambiguous_... S3461C2::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C11*), ABISELECT(200,128), "S3461C2");
    /*is_ambiguous_... S3461C2::S3461C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*), ABISELECT(216,136), "S3461C2");
    /*is_ambiguous_... S3461C2::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C11*), ABISELECT(216,136), "S3461C2");
    /*is_ambiguous_... S3461C2::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*), ABISELECT(216,136), "S3461C2");
    /*is_ambiguous_... S3461C11::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C11*)(S3461C16*)(S3461C15*), ABISELECT(216,136), "S3461C2");
    check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C17*), ABISELECT(216,136), "S3461C2");
    /*is_ambiguous_... S3461C18::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C18*)(S3461C15*), ABISELECT(216,136), "S3461C2");
    check_base_class_offset(lv, (S3461C11*)(S3461C4*), ABISELECT(200,128), "S3461C2");
    /*is_ambiguous_... S3461C2::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*), ABISELECT(224,140), "S3461C2");
    /*is_ambiguous_... S3461C2::S3461C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*), ABISELECT(232,148), "S3461C2");
    check_base_class_offset(lv, (S3461C13*)(S3461C4*), ABISELECT(216,136), "S3461C2");
    check_base_class_offset(lv, (S3461C4*)(S3461C3*), ABISELECT(168,100), "S3461C2");
    /*is_ambiguous_... S3461C3::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C3*), ABISELECT(8,4), "S3461C2");
    /*is_ambiguous_... S3461C3::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C3*), 0, "S3461C2");
    /*is_ambiguous_... S3461C3::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C3*), 0, "S3461C2");
    /*is_ambiguous_... S3461C3::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C3*), 0, "S3461C2");
    /*is_ambiguous_... S3461C3::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C3*), 0, "S3461C2");
    /*is_ambiguous_... S3461C2::S3461C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*), ABISELECT(16,12), "S3461C2");
    /*is_ambiguous_... S3461C2::S3461C8 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*), ABISELECT(16,12), "S3461C2");
    check_base_class_offset(lv, (S3461C8*)(S3461C14*)(S3461C3*), ABISELECT(16,12), "S3461C2");
    /*is_ambiguous_... S3461C2::S3461C14 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C14*), ABISELECT(16,12), "S3461C2");
    check_base_class_offset(lv, (S3461C8*)(S3461C14*)(S3461C15*), ABISELECT(16,12), "S3461C2");
    check_base_class_offset(lv, (S3461C14*)(S3461C3*), ABISELECT(16,12), "S3461C2");
    check_base_class_offset(lv, (S3461C3*), 0, "S3461C2");
    /*is_ambiguous_... S3461C2::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*), ABISELECT(240,152), "S3461C2");
    /*is_ambiguous_... S3461C2::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*), ABISELECT(240,152), "S3461C2");
    /*is_ambiguous_... S3461C2::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*), ABISELECT(248,156), "S3461C2");
    /*is_ambiguous_... S3461C2::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C12*), ABISELECT(240,152), "S3461C2");
    /*is_ambiguous_... S3461C2::S3461C14 */ AMB_check_base_class_offset(lv, (S3461C14*), ABISELECT(48,32), "S3461C2");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C15*), ABISELECT(64,40), "S3461C2");
    check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C15*), ABISELECT(64,40), "S3461C2");
    /*is_ambiguous_... S3461C12::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C15*), ABISELECT(72,44), "S3461C2");
    check_base_class_offset(lv, (S3461C12*)(S3461C11*)(S3461C16*)(S3461C15*), ABISELECT(64,40), "S3461C2");
    check_base_class_offset(lv, (S3461C11*)(S3461C16*)(S3461C15*), ABISELECT(64,40), "S3461C2");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C16*)(S3461C15*), ABISELECT(80,48), "S3461C2");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C16*)(S3461C15*), ABISELECT(80,48), "S3461C2");
    /*is_ambiguous_... S3461C13::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C17*), ABISELECT(264,164), "S3461C2");
    /*is_ambiguous_... S3461C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C17*), ABISELECT(272,172), "S3461C2");
    check_base_class_offset(lv, (S3461C13*)(S3461C17*), ABISELECT(256,160), "S3461C2");
    check_base_class_offset(lv, (S3461C17*)(S3461C16*)(S3461C15*), ABISELECT(256,160), "S3461C2");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C16*)(S3461C15*), ABISELECT(88,52), "S3461C2");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C16*)(S3461C15*), ABISELECT(88,52), "S3461C2");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C16*)(S3461C15*), ABISELECT(96,56), "S3461C2");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C16*)(S3461C15*), ABISELECT(88,52), "S3461C2");
    check_base_class_offset(lv, (S3461C16*)(S3461C15*), ABISELECT(64,40), "S3461C2");
    check_base_class_offset(lv, (S3461C14*)(S3461C15*), ABISELECT(104,60), "S3461C2");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C18*)(S3461C15*), ABISELECT(128,72), "S3461C2");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C15*), ABISELECT(120,68), "S3461C2");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C15*), ABISELECT(120,68), "S3461C2");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C18*)(S3461C15*), ABISELECT(120,68), "S3461C2");
    check_base_class_offset(lv, (S3461C6*)(S3461C18*)(S3461C15*), ABISELECT(120,68), "S3461C2");
    check_base_class_offset(lv, (S3461C18*)(S3461C15*), ABISELECT(120,68), "S3461C2");
    /*is_ambiguous_... S3461C15::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C15*), ABISELECT(144,84), "S3461C2");
    /*is_ambiguous_... S3461C15::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C15*), ABISELECT(136,80), "S3461C2");
    /*is_ambiguous_... S3461C15::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C15*), ABISELECT(136,80), "S3461C2");
    /*is_ambiguous_... S3461C15::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C15*), ABISELECT(136,80), "S3461C2");
    /*is_ambiguous_... S3461C15::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C15*), ABISELECT(136,80), "S3461C2");
    check_base_class_offset(lv, (S3461C15*), ABISELECT(64,40), "S3461C2");
    set_bf_and_test(lv, s3461c2f0, ABISELECT(160,96), 0, 6, 1, "S3461C2");
    set_bf_and_test(lv, s3461c2f0, ABISELECT(160,96), 0, 6, hide_sll(1LL<<5), "S3461C2");
    test_class_info(&lv, &cd_S3461C2);
    dp->~S3461C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3461C2(Test_S3461C2, "S3461C2", ABISELECT(288,176));

#else // __cplusplus

extern void _ZN7S3461C2C1Ev();
extern void _ZN7S3461C2D1Ev();
Name_Map name_map_S3461C2[] = {
  NSPAIR(_ZN7S3461C2C1Ev),
  NSPAIR(_ZN7S3461C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C11;
extern VTBL_ENTRY _ZTI8S3461C11[];
extern  VTBL_ENTRY _ZTV8S3461C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C4;
extern VTBL_ENTRY _ZTI7S3461C4[];
extern  VTBL_ENTRY _ZTV7S3461C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C14;
extern VTBL_ENTRY _ZTI8S3461C14[];
extern  VTBL_ENTRY _ZTV8S3461C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C14[];
extern Class_Descriptor cd_S3461C3;
extern VTBL_ENTRY _ZTI7S3461C3[];
extern  VTBL_ENTRY _ZTV7S3461C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C14;
extern VTBL_ENTRY _ZTI8S3461C14[];
extern  VTBL_ENTRY _ZTV8S3461C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C14[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C11;
extern VTBL_ENTRY _ZTI8S3461C11[];
extern  VTBL_ENTRY _ZTV8S3461C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C11[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C17;
extern VTBL_ENTRY _ZTI8S3461C17[];
extern  VTBL_ENTRY _ZTV8S3461C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C17[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C16;
extern VTBL_ENTRY _ZTI8S3461C16[];
extern  VTBL_ENTRY _ZTV8S3461C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C16[];
extern Class_Descriptor cd_S3461C14;
extern VTBL_ENTRY _ZTI8S3461C14[];
extern  VTBL_ENTRY _ZTV8S3461C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C14[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C18;
extern VTBL_ENTRY _ZTI8S3461C18[];
extern  VTBL_ENTRY _ZTV8S3461C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C18[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C15;
extern VTBL_ENTRY _ZTI8S3461C15[];
extern  VTBL_ENTRY _ZTV8S3461C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C15[];
static Base_Class bases_S3461C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(176,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
    7, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    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
    5, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    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
    19, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    10, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(200,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(208,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(200,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(216,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
    14, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(216,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S3461C11,    ABISELECT(200,128), //bcp->offset
    84, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(216,136), //bcp->offset
    92, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3461C4,    ABISELECT(168,100), //bcp->offset
    70, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3461C9,    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
    16, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S3461C8,    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
    17, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3461C6,    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
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    26, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S3461C14,    ABISELECT(16,12), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S3461C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    ABISELECT(240,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_S3461C9,    ABISELECT(240,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(248,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
    33, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(240,152), //bcp->offset
    101, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C14,    ABISELECT(48,32), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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
    36, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    38, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S3461C11,    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
    24, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(80,48), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    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
    44, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(272,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
    44, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(256,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S3461C17,    ABISELECT(256,160), //bcp->offset
    106, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    47, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    49, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(88,52), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S3461C16,    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
    28, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S3461C14,    ABISELECT(104,60), //bcp->offset
    46, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(120,68), //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
    31, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S3461C18,    ABISELECT(120,68), //bcp->offset
    52, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    60, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(136,80), //bcp->offset
    62, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S3461C15,    ABISELECT(64,40), //bcp->offset
    27, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3461C2[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C2D1Ev();
extern void _ZN7S3461C2D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void ABISELECT(_ZThn64_N7S3461C2D1Ev,_ZThn40_N7S3461C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S3461C2D0Ev,_ZThn40_N7S3461C2D0Ev)();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn120_N7S3461C2D1Ev,_ZThn68_N7S3461C2D1Ev)();
extern void ABISELECT(_ZThn120_N7S3461C2D0Ev,_ZThn68_N7S3461C2D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn136_N7S3461C2D1Ev,_ZThn80_N7S3461C2D1Ev)();
extern void ABISELECT(_ZThn136_N7S3461C2D0Ev,_ZThn80_N7S3461C2D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n72_N7S3461C2D1Ev,_ZTv0_n36_N7S3461C2D1Ev)();
extern void ABISELECT(_ZThn168_N7S3461C2D1Ev,_ZThn100_N7S3461C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S3461C2D0Ev,_ZTv0_n36_N7S3461C2D0Ev)();
extern void ABISELECT(_ZThn168_N7S3461C2D0Ev,_ZThn100_N7S3461C2D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C2D1Ev,_ZTv0_n24_N7S3461C2D1Ev)();
extern void ABISELECT(_ZThn216_N7S3461C2D1Ev,_ZThn136_N7S3461C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3461C2D0Ev,_ZTv0_n24_N7S3461C2D0Ev)();
extern void ABISELECT(_ZThn216_N7S3461C2D0Ev,_ZThn136_N7S3461C2D0Ev)() __attribute__((weak));
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C2D1Ev,_ZTv0_n24_N7S3461C2D1Ev)();
extern void ABISELECT(_ZThn256_N7S3461C2D1Ev,_ZThn160_N7S3461C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3461C2D0Ev,_ZTv0_n24_N7S3461C2D0Ev)();
extern void ABISELECT(_ZThn256_N7S3461C2D0Ev,_ZThn160_N7S3461C2D0Ev)() __attribute__((weak));
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY vtc_S3461C2[] = {
  ABISELECT(256,160),
  ABISELECT(240,152),
  ABISELECT(16,12),
  ABISELECT(216,136),
  ABISELECT(216,136),
  ABISELECT(200,128),
  ABISELECT(168,100),
  ABISELECT(192,120),
  ABISELECT(192,120),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  0,
  0,
  ABISELECT(176,108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(144,88),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(128,80),
  ABISELECT(-48,-28),
  ABISELECT(192,120),
  ABISELECT(152,96),
  ABISELECT(128,80),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S3461C2D1Ev,_ZThn40_N7S3461C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S3461C2D0Ev,_ZThn40_N7S3461C2D0Ev),
  ABISELECT(112,72),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(104,68),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(88,60),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(96,68),
  ABISELECT(72,52),
  ABISELECT(72,52),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S3461C2D1Ev,_ZThn68_N7S3461C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S3461C2D0Ev,_ZThn68_N7S3461C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
  ABISELECT(56,40),
  ABISELECT(56,40),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N7S3461C2D1Ev,_ZThn80_N7S3461C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N7S3461C2D0Ev,_ZThn80_N7S3461C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  0,
  ABISELECT(-168,-100),
  0,
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3461C2D1Ev,_ZTv0_n36_N7S3461C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3461C2D0Ev,_ZTv0_n36_N7S3461C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-200,-128),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  ABISELECT(-216,-136),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-216,-136),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C2D1Ev,_ZTv0_n24_N7S3461C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C2D0Ev,_ZTv0_n24_N7S3461C2D0Ev),
  0,
  ABISELECT(-48,-32),
  ABISELECT(-240,-152),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  0,
  ABISELECT(-256,-160),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-256,-160),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C2D1Ev,_ZTv0_n24_N7S3461C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C2D0Ev,_ZTv0_n24_N7S3461C2D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern VTBL_ENTRY _ZTV7S3461C2[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C3D1Ev();
extern void _ZN7S3461C3D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C3__7S3461C2[] = {
  ABISELECT(16,12),
  ABISELECT(216,136),
  ABISELECT(216,136),
  ABISELECT(200,128),
  ABISELECT(168,100),
  ABISELECT(192,120),
  ABISELECT(192,120),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C3[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C67S3461C3__A1__7S3461C2[] = {
  ABISELECT(192,120),
  ABISELECT(192,120),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C67S3461C3__A1__7S3461C2[] = {
  ABISELECT(192,120),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C67S3461C3__A3__7S3461C2[] = {
  ABISELECT(192,120),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C147S3461C3__7S3461C2[] = {
  0,
  0,
  ABISELECT(176,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n72_N7S3461C3D1Ev,_ZTv0_n36_N7S3461C3D1Ev)();
extern void ABISELECT(_ZThn168_N7S3461C3D1Ev,_ZThn100_N7S3461C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S3461C3D0Ev,_ZTv0_n36_N7S3461C3D0Ev)();
extern void ABISELECT(_ZThn168_N7S3461C3D0Ev,_ZThn100_N7S3461C3D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C4__7S3461C3__7S3461C2[] = {
  0,
  ABISELECT(-168,-100),
  0,
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI7S3461C3[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3461C3D1Ev,_ZTv0_n36_N7S3461C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3461C3D0Ev,_ZTv0_n36_N7S3461C3D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__7S3461C3__7S3461C2[] = {
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-200,-128),
  (VTBL_ENTRY)&(_ZTI7S3461C3[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C3D1Ev,_ZTv0_n24_N7S3461C3D1Ev)();
extern void ABISELECT(_ZThn216_N7S3461C3D1Ev,_ZThn136_N7S3461C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3461C3D0Ev,_ZTv0_n24_N7S3461C3D0Ev)();
extern void ABISELECT(_ZThn216_N7S3461C3D0Ev,_ZThn136_N7S3461C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__7S3461C3__7S3461C2[] = {
  ABISELECT(-216,-136),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-216,-136),
  (VTBL_ENTRY)&(_ZTI7S3461C3[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C3D1Ev,_ZTv0_n24_N7S3461C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C3D0Ev,_ZTv0_n24_N7S3461C3D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__7S3461C3__7S3461C2[] = {
  0,
  0,
  ABISELECT(176,108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S3461C3[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__A1__7S3461C2[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(144,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__8S3461C14__A1__7S3461C2[] = {
  0,
  ABISELECT(176,108),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN8S3461C15D1Ev();
extern void _ZN8S3461C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C15__7S3461C2[] = {
  ABISELECT(128,80),
  ABISELECT(-48,-28),
  ABISELECT(192,120),
  ABISELECT(152,96),
  ABISELECT(128,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&_ZN8S3461C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C15D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN8S3461C16D1Ev();
extern void _ZN8S3461C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C168S3461C15__7S3461C2[] = {
  ABISELECT(192,120),
  ABISELECT(152,96),
  ABISELECT(128,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&_ZN8S3461C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C16D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C118S3461C168S3461C15__A1__7S3461C2[] = {
  ABISELECT(152,96),
  ABISELECT(128,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C118S3461C168S3461C15__A2__7S3461C2[] = {
  ABISELECT(128,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C118S3461C168S3461C15__A6__7S3461C2[] = {
  ABISELECT(128,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C118S3461C168S3461C15__A1__7S3461C2[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C168S3461C15__A7__7S3461C2[] = {
  ABISELECT(112,72),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C168S3461C15__A3__7S3461C2[] = {
  ABISELECT(104,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C168S3461C15__A8__7S3461C2[] = {
  ABISELECT(104,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C168S3461C15__7S3461C2[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A__8S3461C168S3461C15__7S3461C2[] = {
  ABISELECT(112,72),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C16D1Ev,_ZTv0_n24_N8S3461C16D1Ev)();
extern void ABISELECT(_ZThn192_N8S3461C16D1Ev,_ZThn120_N8S3461C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C16D0Ev,_ZTv0_n24_N8S3461C16D0Ev)();
extern void ABISELECT(_ZThn192_N8S3461C16D0Ev,_ZThn120_N8S3461C16D0Ev)() __attribute__((weak));
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C17__8S3461C168S3461C15__7S3461C2[] = {
  0,
  ABISELECT(-192,-120),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C16D1Ev,_ZTv0_n24_N8S3461C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C16D0Ev,_ZTv0_n24_N8S3461C16D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__A1__8S3461C168S3461C15__7S3461C2[] = {
  ABISELECT(104,68),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C148S3461C15__A2__7S3461C2[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(88,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__8S3461C148S3461C15__A2__7S3461C2[] = {
  0,
  ABISELECT(176,108),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C18D1Ev();
extern void _ZN8S3461C18D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C188S3461C15__7S3461C2[] = {
  ABISELECT(96,68),
  ABISELECT(72,52),
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C68S3461C188S3461C15__A2__7S3461C2[] = {
  ABISELECT(72,52),
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C68S3461C188S3461C15__A3__7S3461C2[] = {
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C68S3461C188S3461C15__A9__7S3461C2[] = {
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C188S3461C15__7S3461C2[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C68S3461C15__A3__7S3461C2[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C68S3461C15__A4__7S3461C2[] = {
  ABISELECT(56,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C68S3461C15__A10__7S3461C2[] = {
  ABISELECT(56,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C15__7S3461C2[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C16__A2__8S3461C15__7S3461C2[] = {
  ABISELECT(112,72),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C15D1Ev,_ZTv0_n24_N8S3461C15D1Ev)();
extern void ABISELECT(_ZThn192_N8S3461C15D1Ev,_ZThn120_N8S3461C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C15D0Ev,_ZTv0_n24_N8S3461C15D0Ev)();
extern void ABISELECT(_ZThn192_N8S3461C15D0Ev,_ZThn120_N8S3461C15D0Ev)() __attribute__((weak));
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C17__8S3461C15__7S3461C2[] = {
  0,
  ABISELECT(-192,-120),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C15D1Ev,_ZTv0_n24_N8S3461C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C15D0Ev,_ZTv0_n24_N8S3461C15D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C16__A1__8S3461C15__7S3461C2[] = {
  ABISELECT(104,68),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C15__7S3461C2[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(88,60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__8S3461C15__7S3461C2[] = {
  0,
  ABISELECT(176,108),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn56_N8S3461C15D1Ev,_ZThn28_N8S3461C15D1Ev)();
extern void ABISELECT(_ZThn56_N8S3461C15D0Ev,_ZThn28_N8S3461C15D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C18__8S3461C15__7S3461C2[] = {
  ABISELECT(96,68),
  ABISELECT(72,52),
  ABISELECT(72,52),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S3461C15D1Ev,_ZThn28_N8S3461C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S3461C15D0Ev,_ZThn28_N8S3461C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn72_N8S3461C15D1Ev,_ZThn40_N8S3461C15D1Ev)();
extern void ABISELECT(_ZThn72_N8S3461C15D0Ev,_ZThn40_N8S3461C15D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__A1__8S3461C15__7S3461C2[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S3461C15D1Ev,_ZThn40_N8S3461C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S3461C15D0Ev,_ZThn40_N8S3461C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C4D1Ev();
extern void _ZN7S3461C4D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C4__7S3461C2[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C67S3461C4__7S3461C2[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C67S3461C4__7S3461C2[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C67S3461C4__7S3461C2[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__7S3461C4__7S3461C2[] = {
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S3461C4D1Ev,_ZThn36_N7S3461C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S3461C4D0Ev,_ZThn36_N7S3461C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__7S3461C4__7S3461C2[] = {
  ABISELECT(-48,-36),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__7S3461C2[] = {
  ABISELECT(16,8),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C11__7S3461C2[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C11__A1__7S3461C2[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C11__7S3461C2[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A2__7S3461C2[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C13__7S3461C2[] = {
  0,
  0,
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__A2__7S3461C2[] = {
  ABISELECT(176,108),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C8__A4__7S3461C2[] = {
  ABISELECT(176,108),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__A1__7S3461C2[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C12__A5__7S3461C2[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C17D1Ev();
extern void _ZN8S3461C17D0Ev();
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C17__7S3461C2[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C17[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C17D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C17D0Ev,
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C17__A1__7S3461C2[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C138S3461C17__A1__7S3461C2[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C17__7S3461C2[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S3461C17[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
static  VTT_ENTRY vtt_S3461C2[] = {
  {&(_ZTV7S3461C2[11]),  11,117},
  {&(_tg__ZTV7S3461C3__7S3461C2[9]),  9,13},
  {&(_tg__ZTV7S3461C67S3461C3__A1__7S3461C2[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C67S3461C3__A1__7S3461C2[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C67S3461C3__A3__7S3461C2[3]),  3,4},
  {&(_tg__ZTV8S3461C147S3461C3__7S3461C2[5]),  5,6},
  {&(_tg__ZTV8S3461C147S3461C3__7S3461C2[5]),  5,6},
  {&(_tg__ZTV7S3461C4__7S3461C3__7S3461C2[10]),  10,14},
  {&(_tg__ZTV8S3461C11__7S3461C3__7S3461C2[6]),  6,8},
  {&(_tg__ZTV8S3461C13__7S3461C3__7S3461C2[6]),  6,9},
  {&(_tg__ZTV8S3461C13__7S3461C3__7S3461C2[6]),  6,9},
  {&(_tg__ZTV8S3461C14__7S3461C3__7S3461C2[5]),  5,6},
  {&(_tg__ZTV8S3461C14__7S3461C3__7S3461C2[5]),  5,6},
  {&(_tg__ZTV8S3461C14__A1__7S3461C2[5]),  5,6},
  {&(_tg__ZTV7S3461C8__8S3461C14__A1__7S3461C2[4]),  4,5},
  {&(_tg__ZTV8S3461C15__7S3461C2[7]),  7,11},
  {&(_tg__ZTV8S3461C168S3461C15__7S3461C2[5]),  5,9},
  {&(_tg__ZTV8S3461C118S3461C168S3461C15__A1__7S3461C2[4]),  4,6},
  {&(_tg__ZTV8S3461C128S3461C118S3461C168S3461C15__A2__7S3461C2[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C118S3461C168S3461C15__A6__7S3461C2[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C118S3461C168S3461C15__A1__7S3461C2[4]),  4,5},
  {&(_tg__ZTV7S3461C98S3461C168S3461C15__A7__7S3461C2[3]),  3,4},
  {&(_tg__ZTV8S3461C128S3461C168S3461C15__A3__7S3461C2[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C168S3461C15__A8__7S3461C2[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C168S3461C15__7S3461C2[4]),  4,5},
  {&(_tg__ZTV7S3461C9__A__8S3461C168S3461C15__7S3461C2[3]),  3,4},
  {&(_tg__ZTV8S3461C17__8S3461C168S3461C15__7S3461C2[7]),  7,11},
  {&(_tg__ZTV8S3461C12__A1__8S3461C168S3461C15__7S3461C2[3]),  3,4},
  {&(_tg__ZTV8S3461C148S3461C15__A2__7S3461C2[5]),  5,6},
  {&(_tg__ZTV7S3461C8__8S3461C148S3461C15__A2__7S3461C2[4]),  4,5},
  {&(_tg__ZTV8S3461C188S3461C15__7S3461C2[5]),  5,10},
  {&(_tg__ZTV7S3461C68S3461C188S3461C15__A2__7S3461C2[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C68S3461C188S3461C15__A3__7S3461C2[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C68S3461C188S3461C15__A9__7S3461C2[3]),  3,4},
  {&(_tg__ZTV7S3461C9__8S3461C188S3461C15__7S3461C2[4]),  4,5},
  {&(_tg__ZTV7S3461C68S3461C15__A3__7S3461C2[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C68S3461C15__A4__7S3461C2[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C68S3461C15__A10__7S3461C2[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C15__7S3461C2[4]),  4,5},
  {&(_tg__ZTV7S3461C98S3461C16__A2__8S3461C15__7S3461C2[3]),  3,4},
  {&(_tg__ZTV8S3461C17__8S3461C15__7S3461C2[7]),  7,11},
  {&(_tg__ZTV8S3461C128S3461C16__A1__8S3461C15__7S3461C2[3]),  3,4},
  {&(_tg__ZTV8S3461C14__8S3461C15__7S3461C2[5]),  5,6},
  {&(_tg__ZTV7S3461C8__8S3461C15__7S3461C2[4]),  4,5},
  {&(_tg__ZTV8S3461C18__8S3461C15__7S3461C2[5]),  5,10},
  {&(_tg__ZTV7S3461C6__A1__8S3461C15__7S3461C2[4]),  4,8},
  {&(_ZTV7S3461C2[80]),  80,117},
  {&(_ZTV7S3461C2[90]),  90,117},
  {&(_ZTV7S3461C2[98]),  98,117},
  {&(_ZTV7S3461C2[98]),  98,117},
  {&(_ZTV7S3461C2[20]),  20,117},
  {&(_ZTV7S3461C2[20]),  20,117},
  {&(_ZTV7S3461C2[105]),  105,117},
  {&(_ZTV7S3461C2[26]),  26,117},
  {&(_ZTV7S3461C2[34]),  34,117},
  {&(_ZTV7S3461C2[41]),  41,117},
  {&(_ZTV7S3461C2[113]),  113,117},
  {&(_ZTV7S3461C2[45]),  45,117},
  {&(_ZTV7S3461C2[51]),  51,117},
  {&(_ZTV7S3461C2[57]),  57,117},
  {&(_ZTV7S3461C2[66]),  66,117},
  {&(_tg__ZTV7S3461C4__7S3461C2[7]),  7,11},
  {&(_tg__ZTV7S3461C67S3461C4__7S3461C2[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C67S3461C4__7S3461C2[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C67S3461C4__7S3461C2[3]),  3,4},
  {&(_tg__ZTV8S3461C11__7S3461C4__7S3461C2[6]),  6,8},
  {&(_tg__ZTV8S3461C13__7S3461C4__7S3461C2[6]),  6,9},
  {&(_tg__ZTV8S3461C13__7S3461C4__7S3461C2[6]),  6,9},
  {&(_tg__ZTV8S3461C11__7S3461C2[4]),  4,6},
  {&(_tg__ZTV8S3461C128S3461C11__7S3461C2[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C11__A1__7S3461C2[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C11__7S3461C2[4]),  4,5},
  {&(_tg__ZTV7S3461C9__A2__7S3461C2[3]),  3,4},
  {&(_tg__ZTV8S3461C13__7S3461C2[5]),  5,8},
  {&(_tg__ZTV8S3461C13__7S3461C2[5]),  5,8},
  {&(_tg__ZTV7S3461C8__A2__7S3461C2[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C8__A4__7S3461C2[3]),  3,4},
  {&(_tg__ZTV8S3461C12__A1__7S3461C2[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C12__A5__7S3461C2[3]),  3,4},
  {&(_tg__ZTV8S3461C17__7S3461C2[5]),  5,9},
  {&(_tg__ZTV8S3461C138S3461C17__A1__7S3461C2[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C138S3461C17__A1__7S3461C2[4]),  4,5},
  {&(_tg__ZTV7S3461C9__8S3461C17__7S3461C2[4]),  4,5},
};
extern VTBL_ENTRY _ZTI7S3461C2[];
extern  VTBL_ENTRY _ZTV7S3461C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C2[];
static VTBL_ENTRY alt_thunk_names5[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3461C4D0Ev,_ZThn36_N7S3461C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3461C4D1Ev,_ZThn36_N7S3461C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C15D0Ev,_ZTv0_n24_N8S3461C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3461C15D0Ev,_ZThn120_N8S3461C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C15D1Ev,_ZTv0_n24_N8S3461C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3461C15D1Ev,_ZThn120_N8S3461C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C16D0Ev,_ZTv0_n24_N8S3461C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3461C16D0Ev,_ZThn120_N8S3461C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C16D1Ev,_ZTv0_n24_N8S3461C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3461C16D1Ev,_ZThn120_N8S3461C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C3D0Ev,_ZTv0_n24_N7S3461C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S3461C3D0Ev,_ZThn136_N7S3461C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C3D1Ev,_ZTv0_n24_N7S3461C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S3461C3D1Ev,_ZThn136_N7S3461C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3461C3D0Ev,_ZTv0_n36_N7S3461C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S3461C3D0Ev,_ZThn100_N7S3461C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3461C3D1Ev,_ZTv0_n36_N7S3461C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S3461C3D1Ev,_ZThn100_N7S3461C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C2D0Ev,_ZTv0_n24_N7S3461C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S3461C2D0Ev,_ZThn160_N7S3461C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S3461C2D0Ev,_ZThn136_N7S3461C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C2D1Ev,_ZTv0_n24_N7S3461C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S3461C2D1Ev,_ZThn160_N7S3461C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S3461C2D1Ev,_ZThn136_N7S3461C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3461C2D0Ev,_ZTv0_n36_N7S3461C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S3461C2D0Ev,_ZThn100_N7S3461C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3461C2D1Ev,_ZTv0_n36_N7S3461C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S3461C2D1Ev,_ZThn100_N7S3461C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3461C2 = {  "S3461C2", // class name
  bases_S3461C2, 64,
  &(vtc_S3461C2[0]), // expected_vtbl_contents
  &(vtt_S3461C2[0]), // expected_vtt_contents
  ABISELECT(288,176), // object size
  NSPAIRA(_ZTI7S3461C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S3461C2),117, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3461C2),83, //virtual table table var
  37, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names5,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3461C19  : virtual S3461C5_nt , virtual S3461C12 , S3461C13 , virtual S3461C6 , S3461C4 {
  ~S3461C19(); // tgen
  S3461C19(); // tgen
};
//SIG(-1 S3461C19) C1{ VBC2{ m FL} VBC3{ VBC2 BC4{ VBC2 BC5{ m} v1} BC5} BC6{ BC2 VBC4 BC5 vd} VBC7{ BC2 VBC5 BC8{ BC4} vd v2} BC9{ BC2 BC7 BC10{ m} VBC11{ VBC2 BC3 VBC4 v3} VBC6 vd}}


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

static void Test_S3461C19()
{
  extern Class_Descriptor cd_S3461C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,24)];
    init_test(&cd_S3461C19, buf);
    S3461C19 *dp, &lv = *(dp=new (buf) S3461C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S3461C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3461C19)");
    /*is_ambiguous_... S3461C19::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(48,36), "S3461C19");
    /*is_ambiguous_... S3461C19::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*), ABISELECT(48,36), "S3461C19");
    /*is_ambiguous_... S3461C19::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*), ABISELECT(48,36), "S3461C19");
    /*is_ambiguous_... S3461C19::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*), ABISELECT(48,36), "S3461C19");
    /*is_ambiguous_... S3461C19::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(48,36), "S3461C19");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*), ABISELECT(48,36), "S3461C19");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C11*), ABISELECT(48,36), "S3461C19");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C11*), ABISELECT(48,36), "S3461C19");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(48,36), "S3461C19");
    /*is_ambiguous_... S3461C19::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*), ABISELECT(56,44), "S3461C19");
    /*is_ambiguous_... S3461C19::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*), ABISELECT(56,44), "S3461C19");
    /*is_ambiguous_... S3461C19::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*), ABISELECT(64,48), "S3461C19");
    /*is_ambiguous_... S3461C19::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C12*), ABISELECT(56,44), "S3461C19");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*), ABISELECT(8,4), "S3461C19");
    /*is_ambiguous_... S3461C19::S3461C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*), 0, "S3461C19");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*), 0, "S3461C19");
    /*is_ambiguous_... S3461C11::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C11*), 0, "S3461C19");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*), 0, "S3461C19");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*), ABISELECT(16,12), "S3461C19");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C13*), 0, "S3461C19");
    /*is_ambiguous_... S3461C19::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*), ABISELECT(80,56), "S3461C19");
    /*is_ambiguous_... S3461C19::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*), ABISELECT(88,64), "S3461C19");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C4*), ABISELECT(88,64), "S3461C19");
    /*is_ambiguous_... S3461C19::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(72,52), "S3461C19");
    /*is_ambiguous_... S3461C19::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(72,52), "S3461C19");
    /*is_ambiguous_... S3461C19::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C6*), ABISELECT(72,52), "S3461C19");
    /*is_ambiguous_... S3461C19::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C6*), ABISELECT(72,52), "S3461C19");
    /*is_ambiguous_... S3461C4::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C4*), ABISELECT(40,28), "S3461C19");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C4*), ABISELECT(32,20), "S3461C19");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*), ABISELECT(24,16), "S3461C19");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*), ABISELECT(24,16), "S3461C19");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C4*), ABISELECT(24,16), "S3461C19");
    check_base_class_offset(lv, (S3461C6*)(S3461C4*), ABISELECT(24,16), "S3461C19");
    check_base_class_offset(lv, (S28C52_nt*)(S3461C4*), ABISELECT(24,16), "S3461C19");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(96,68), "S3461C19");
    check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(96,68), "S3461C19");
    /*is_ambiguous_... S3461C12::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C11*), ABISELECT(104,72), "S3461C19");
    check_base_class_offset(lv, (S3461C12*)(S3461C11*), ABISELECT(96,68), "S3461C19");
    check_base_class_offset(lv, (S3461C11*)(S3461C4*), ABISELECT(96,68), "S3461C19");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*), ABISELECT(120,80), "S3461C19");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*), ABISELECT(128,88), "S3461C19");
    check_base_class_offset(lv, (S3461C13*)(S3461C4*), ABISELECT(112,76), "S3461C19");
    check_base_class_offset(lv, (S3461C4*), ABISELECT(24,16), "S3461C19");
    test_class_info(&lv, &cd_S3461C19);
    dp->~S3461C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3461C19(Test_S3461C19, "S3461C19", ABISELECT(136,92));

#else // __cplusplus

extern void _ZN8S3461C19C1Ev();
extern void _ZN8S3461C19D1Ev();
Name_Map name_map_S3461C19[] = {
  NSPAIR(_ZN8S3461C19C1Ev),
  NSPAIR(_ZN8S3461C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C11;
extern VTBL_ENTRY _ZTI8S3461C11[];
extern  VTBL_ENTRY _ZTV8S3461C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C4;
extern VTBL_ENTRY _ZTI7S3461C4[];
extern  VTBL_ENTRY _ZTV7S3461C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C4[];
static Base_Class bases_S3461C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(56,44), //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
    4, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(64,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(56,44), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3461C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3461C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(88,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_S731C17_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
    13, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(72,52), //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
    14, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(72,52), //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
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(72,52), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_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
    31, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3461C8,    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
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(104,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(96,68), //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
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3461C11,    ABISELECT(96,68), //bcp->offset
    40, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(120,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(128,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(112,76), //bcp->offset
    48, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3461C4,    ABISELECT(24,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3461C19[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C19D1Ev();
extern void _ZN8S3461C19D0Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn24_N8S3461C19D1Ev,_ZThn16_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn24_N8S3461C19D0Ev,_ZThn16_N8S3461C19D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn72_N8S3461C19D1Ev,_ZThn52_N8S3461C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev)();
extern void ABISELECT(_ZThn72_N8S3461C19D0Ev,_ZThn52_N8S3461C19D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn112_N8S3461C19D1Ev,_ZThn76_N8S3461C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev)();
extern void ABISELECT(_ZThn112_N8S3461C19D0Ev,_ZThn76_N8S3461C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3461C19[] = {
  ABISELECT(112,76),
  ABISELECT(96,68),
  ABISELECT(88,64),
  ABISELECT(72,52),
  ABISELECT(56,44),
  0,
  0,
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C19D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C19D0Ev,
  ABISELECT(88,60),
  ABISELECT(-24,-16),
  ABISELECT(72,52),
  ABISELECT(64,48),
  ABISELECT(24,20),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C19D1Ev,_ZThn16_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C19D0Ev,_ZThn16_N8S3461C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  0,
  -8,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  0,
  0,
  ABISELECT(-96,-68),
  ABISELECT(-48,-32),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-64,-40),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev),
};
extern VTBL_ENTRY _ZTV8S3461C19[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C13__A__8S3461C19[] = {
  0,
  0,
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C4D1Ev();
extern void _ZN7S3461C4D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C4__8S3461C19[] = {
  ABISELECT(88,60),
  ABISELECT(-24,-16),
  ABISELECT(72,52),
  ABISELECT(64,48),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C67S3461C4__A1__8S3461C19[] = {
  ABISELECT(64,48),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C67S3461C4__A1__8S3461C19[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C67S3461C4__A3__8S3461C19[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__7S3461C4__8S3461C19[] = {
  0,
  0,
  ABISELECT(-96,-68),
  ABISELECT(-48,-32),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A2__7S3461C4__8S3461C19[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev)();
extern void ABISELECT(_ZThn88_N7S3461C4D1Ev,_ZThn60_N7S3461C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev)();
extern void ABISELECT(_ZThn88_N7S3461C4D0Ev,_ZThn60_N7S3461C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__7S3461C4__8S3461C19[] = {
  ABISELECT(-88,-60),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-64,-40),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C19[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C12__8S3461C19[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C19[] = {
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__8S3461C19[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C6__8S3461C19[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C6__A2__8S3461C19[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C19[] = {
  ABISELECT(-96,-68),
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C11__A1__8S3461C19[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C11__A4__8S3461C19[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C11__8S3461C19[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C13__A1__8S3461C19[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C13__A1__8S3461C19[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(112,76),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
static  VTT_ENTRY vtt_S3461C19[] = {
  {&(_ZTV8S3461C19[10]),  10,57},
  {&(_tg__ZTV8S3461C13__A__8S3461C19[5]),  5,8},
  {&(_tg__ZTV8S3461C13__A__8S3461C19[5]),  5,8},
  {&(_tg__ZTV7S3461C4__8S3461C19[7]),  7,11},
  {&(_tg__ZTV7S3461C67S3461C4__A1__8S3461C19[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C67S3461C4__A1__8S3461C19[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C67S3461C4__A3__8S3461C19[3]),  3,4},
  {&(_tg__ZTV8S3461C11__7S3461C4__8S3461C19[6]),  6,8},
  {&(_tg__ZTV7S3461C9__A2__7S3461C4__8S3461C19[4]),  4,5},
  {&(_tg__ZTV8S3461C13__7S3461C4__8S3461C19[6]),  6,9},
  {&(_ZTV8S3461C19[28]),  28,57},
  {&(_ZTV8S3461C19[10]),  10,57},
  {&(_ZTV8S3461C19[36]),  36,57},
  {&(_ZTV8S3461C19[20]),  20,57},
  {&(_ZTV8S3461C19[46]),  46,57},
  {&(_ZTV8S3461C19[54]),  54,57},
  {&(_tg__ZTV8S3461C12__8S3461C19[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C12__8S3461C19[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C19[3]),  3,4},
  {&(_tg__ZTV7S3461C6__8S3461C19[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C6__8S3461C19[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C6__A2__8S3461C19[3]),  3,4},
  {&(_tg__ZTV8S3461C11__8S3461C19[4]),  4,6},
  {&(_tg__ZTV8S3461C128S3461C11__A1__8S3461C19[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C11__A4__8S3461C19[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C11__8S3461C19[4]),  4,5},
  {&(_tg__ZTV8S3461C13__A1__8S3461C19[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C13__A1__8S3461C19[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S3461C19[];
extern  VTBL_ENTRY _ZTV8S3461C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C19[];
static VTBL_ENTRY alt_thunk_names6[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S3461C4D0Ev,_ZThn60_N7S3461C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S3461C4D1Ev,_ZThn60_N7S3461C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S3461C19D0Ev,_ZThn76_N8S3461C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S3461C19D0Ev,_ZThn52_N8S3461C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S3461C19D1Ev,_ZThn76_N8S3461C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S3461C19D1Ev,_ZThn52_N8S3461C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3461C19 = {  "S3461C19", // class name
  bases_S3461C19, 32,
  &(vtc_S3461C19[0]), // expected_vtbl_contents
  &(vtt_S3461C19[0]), // expected_vtt_contents
  ABISELECT(136,92), // object size
  NSPAIRA(_ZTI8S3461C19),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S3461C19),57, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3461C19),28, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names6,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3461C24  : S731C17_nt , virtual S3461C9 , S3461C13 , S3461C5_nt {
  __tsi64 s3461c24f0;
  virtual  ~S3461C24(); // _ZN8S3461C24D2Ev
  S3461C24(); // tgen
};
//SIG(-1 S3461C24) C1{ BC2{ m} VBC3{ VBC4{ m FL} BC2 v1} BC5{ BC4 VBC3 BC2 vd} BC4 vd FL}


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

static void Test_S3461C24()
{
  extern Class_Descriptor cd_S3461C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,11)];
    init_test(&cd_S3461C24, buf);
    S3461C24 *dp, &lv = *(dp=new (buf) S3461C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S3461C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3461C24)");
    /*is_ambiguous_... S3461C24::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(17,13), "S3461C24");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*), ABISELECT(40,32), "S3461C24");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*), 0, "S3461C24");
    check_base_class_offset(lv, (S3461C9*), 0, "S3461C24");
    check_base_class_offset(lv, (S3461C9*)(S3461C13*), 0, "S3461C24");
    /*is_ambiguous_... S3461C13::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*), ABISELECT(8,4), "S3461C24");
    /*is_ambiguous_... S3461C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*), ABISELECT(16,12), "S3461C24");
    check_base_class_offset(lv, (S3461C13*), 0, "S3461C24");
    /*is_ambiguous_... S3461C24::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(24,16), "S3461C24");
    check_field_offset(lv, s3461c24f0, ABISELECT(32,24), "S3461C24.s3461c24f0");
    test_class_info(&lv, &cd_S3461C24);
    dp->~S3461C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3461C24(Test_S3461C24, "S3461C24", ABISELECT(48,40));

#else // __cplusplus

extern void _ZN8S3461C24C1Ev();
extern void _ZN8S3461C24D2Ev();
Name_Map name_map_S3461C24[] = {
  NSPAIR(_ZN8S3461C24C1Ev),
  NSPAIR(_ZN8S3461C24D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
static Base_Class bases_S3461C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    ABISELECT(17,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3461C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    6, //immediately_derived
  0, 0},
  {&cd_S3461C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3461C24[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C24D1Ev();
extern void _ZN8S3461C24D0Ev();
static  VTBL_ENTRY vtc_S3461C24[] = {
  0,
  0,
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C24[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C24D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C24D0Ev,
};
extern VTBL_ENTRY _ZTV8S3461C24[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C13__8S3461C24[] = {
  0,
  0,
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C24[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
static  VTT_ENTRY vtt_S3461C24[] = {
  {&(_ZTV8S3461C24[5]),  5,8},
  {&(_tg__ZTV8S3461C13__8S3461C24[5]),  5,8},
  {&(_tg__ZTV8S3461C13__8S3461C24[5]),  5,8},
  {&(_ZTV8S3461C24[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C24[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S3461C24[];
extern  VTBL_ENTRY _ZTV8S3461C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C24[];
Class_Descriptor cd_S3461C24 = {  "S3461C24", // class name
  bases_S3461C24, 8,
  &(vtc_S3461C24[0]), // expected_vtbl_contents
  &(vtt_S3461C24[0]), // expected_vtt_contents
  ABISELECT(48,40), // object size
  NSPAIRA(_ZTI8S3461C24),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S3461C24),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3461C24),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  S3461C25  : virtual S3461C14 , S3461C18 , virtual S3461C13 , virtual S3461C19 {
  void *s3461c25f0[9];
  virtual  ~S3461C25(); // _ZN8S3461C25D2Ev
  S3461C25(); // tgen
};
//SIG(-1 S3461C25) C1{ VBC2{ VBC3{ BC4{ VBC5{ m FL} BC6{ m} v1}} Fi} BC7{ VBC4 BC8{ BC5 VBC6 BC3 vd v2} vd v3} VBC9{ BC5 VBC4 BC6 vd} VBC10{ VBC5 VBC11{ VBC5 BC4 BC6} BC9 VBC8 BC12{ BC5 BC8 BC13{ m} VBC14{ VBC5 BC11 VBC4 v4} VBC9 vd}} vd Fp[9]}


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

static void Test_S3461C25()
{
  extern Class_Descriptor cd_S3461C25;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,38)];
    init_test(&cd_S3461C25, buf);
    S3461C25 *dp, &lv = *(dp=new (buf) S3461C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,148), "sizeof(S3461C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3461C25)");
    /*is_ambiguous_... S3461C25::S3461C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*), ABISELECT(104,56), "S3461C25");
    /*is_ambiguous_... S3461C25::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*), ABISELECT(104,56), "S3461C25");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(104,56), "S3461C25");
    /*is_ambiguous_... S3461C19::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C19*), ABISELECT(104,56), "S3461C25");
    /*is_ambiguous_... S3461C25::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*), ABISELECT(104,56), "S3461C25");
    /*is_ambiguous_... S3461C25::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*), ABISELECT(104,56), "S3461C25");
    /*is_ambiguous_... S3461C25::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(104,56), "S3461C25");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(104,56), "S3461C25");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C11*), ABISELECT(104,56), "S3461C25");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C11*), ABISELECT(104,56), "S3461C25");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(104,56), "S3461C25");
    /*is_ambiguous_... S3461C25::S3461C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*), ABISELECT(88,48), "S3461C25");
    /*is_ambiguous_... S3461C25::S3461C8 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*), ABISELECT(88,48), "S3461C25");
    check_base_class_offset(lv, (S3461C8*)(S3461C14*), ABISELECT(88,48), "S3461C25");
    check_base_class_offset(lv, (S3461C14*), ABISELECT(88,48), "S3461C25");
    /*is_ambiguous_... S3461C25::S3461C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*), ABISELECT(120,68), "S3461C25");
    /*is_ambiguous_... S3461C18::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C18*), ABISELECT(120,68), "S3461C25");
    /*is_ambiguous_... S3461C25::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*), ABISELECT(120,68), "S3461C25");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C19*), ABISELECT(120,68), "S3461C25");
    /*is_ambiguous_... S3461C11::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C11*), ABISELECT(120,68), "S3461C25");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C18*), ABISELECT(8,4), "S3461C25");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C18*), ABISELECT(112,64), "S3461C25");
    /*is_ambiguous_... S3461C25::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*), ABISELECT(112,64), "S3461C25");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(112,64), "S3461C25");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*), 0, "S3461C25");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*), 0, "S3461C25");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C18*), 0, "S3461C25");
    check_base_class_offset(lv, (S3461C6*)(S3461C18*), 0, "S3461C25");
    check_base_class_offset(lv, (S3461C18*), 0, "S3461C25");
    /*is_ambiguous_... S3461C25::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*), ABISELECT(128,72), "S3461C25");
    /*is_ambiguous_... S3461C25::S3461C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*), ABISELECT(136,80), "S3461C25");
    /*is_ambiguous_... S3461C25::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C13*), ABISELECT(120,68), "S3461C25");
    check_base_class_offset(lv, (S3461C13*)(S3461C4*)(S3461C19*), ABISELECT(120,68), "S3461C25");
    /*is_ambiguous_... S3461C25::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*), ABISELECT(192,120), "S3461C25");
    /*is_ambiguous_... S3461C25::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*), ABISELECT(192,120), "S3461C25");
    /*is_ambiguous_... S3461C25::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*), ABISELECT(200,124), "S3461C25");
    /*is_ambiguous_... S3461C19::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C19*), ABISELECT(192,120), "S3461C25");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C19*), ABISELECT(152,88), "S3461C25");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C19*), ABISELECT(160,96), "S3461C25");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C13*)(S3461C19*), ABISELECT(144,84), "S3461C25");
    /*is_ambiguous_... S3461C25::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*), ABISELECT(216,132), "S3461C25");
    /*is_ambiguous_... S3461C25::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(208,128), "S3461C25");
    /*is_ambiguous_... S3461C25::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(208,128), "S3461C25");
    /*is_ambiguous_... S3461C25::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C6*), ABISELECT(208,128), "S3461C25");
    /*is_ambiguous_... S3461C19::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C19*), ABISELECT(208,128), "S3461C25");
    /*is_ambiguous_... S3461C4::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C4*)(S3461C19*), ABISELECT(184,112), "S3461C25");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(176,104), "S3461C25");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(168,100), "S3461C25");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(168,100), "S3461C25");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(168,100), "S3461C25");
    check_base_class_offset(lv, (S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(168,100), "S3461C25");
    check_base_class_offset(lv, (S28C52_nt*)(S3461C4*)(S3461C19*), ABISELECT(168,100), "S3461C25");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(224,140), "S3461C25");
    check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(224,140), "S3461C25");
    /*is_ambiguous_... S3461C12::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C11*), ABISELECT(232,144), "S3461C25");
    check_base_class_offset(lv, (S3461C12*)(S3461C11*), ABISELECT(224,140), "S3461C25");
    check_base_class_offset(lv, (S3461C11*)(S3461C4*)(S3461C19*), ABISELECT(224,140), "S3461C25");
    check_base_class_offset(lv, (S3461C4*)(S3461C19*), ABISELECT(168,100), "S3461C25");
    check_base_class_offset(lv, (S3461C19*), ABISELECT(144,84), "S3461C25");
    check_field_offset(lv, s3461c25f0, ABISELECT(16,12), "S3461C25.s3461c25f0");
    test_class_info(&lv, &cd_S3461C25);
    dp->~S3461C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3461C25(Test_S3461C25, "S3461C25", ABISELECT(240,148));

#else // __cplusplus

extern void _ZN8S3461C25C1Ev();
extern void _ZN8S3461C25D2Ev();
Name_Map name_map_S3461C25[] = {
  NSPAIR(_ZN8S3461C25C1Ev),
  NSPAIR(_ZN8S3461C25D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C14;
extern VTBL_ENTRY _ZTI8S3461C14[];
extern  VTBL_ENTRY _ZTV8S3461C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C14[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C18;
extern VTBL_ENTRY _ZTI8S3461C18[];
extern  VTBL_ENTRY _ZTV8S3461C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C18[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C11;
extern VTBL_ENTRY _ZTI8S3461C11[];
extern  VTBL_ENTRY _ZTV8S3461C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C11[];
extern Class_Descriptor cd_S3461C4;
extern VTBL_ENTRY _ZTI7S3461C4[];
extern  VTBL_ENTRY _ZTV7S3461C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C4[];
extern Class_Descriptor cd_S3461C19;
extern VTBL_ENTRY _ZTI8S3461C19[];
extern  VTBL_ENTRY _ZTV8S3461C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C19[];
static Base_Class bases_S3461C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(88,48), //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_S3461C8,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3461C14,    ABISELECT(88,48), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    20, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3461C8,    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
    21, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3461C6,    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
    22, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3461C18,    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
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    16, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(120,68), //bcp->offset
    23, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    20, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(192,120), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(152,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    23, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(216,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    26, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(208,128), //bcp->offset
    63, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S3461C5_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
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(176,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
    34, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    32, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(168,100), //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
    17, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    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
    41, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(232,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S3461C11,    ABISELECT(224,140), //bcp->offset
    74, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S3461C4,    ABISELECT(168,100), //bcp->offset
    47, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S3461C19,    ABISELECT(144,84), //bcp->offset
    32, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3461C25[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C25D1Ev();
extern void _ZN8S3461C25D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev)();
extern void ABISELECT(_ZThn120_N8S3461C25D1Ev,_ZThn68_N8S3461C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev)();
extern void ABISELECT(_ZThn120_N8S3461C25D0Ev,_ZThn68_N8S3461C25D0Ev)() __attribute__((weak));
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C25D1Ev,_ZTv0_n44_N8S3461C25D1Ev)();
extern void ABISELECT(_ZThn144_N8S3461C25D1Ev,_ZThn84_N8S3461C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S3461C25D0Ev,_ZTv0_n44_N8S3461C25D0Ev)();
extern void ABISELECT(_ZThn144_N8S3461C25D0Ev,_ZThn84_N8S3461C25D0Ev)() __attribute__((weak));
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C25D1Ev,_ZTvn16_n44_N8S3461C25D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C25D0Ev,_ZTvn16_n44_N8S3461C25D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev)();
extern void ABISELECT(_ZThn208_N8S3461C25D1Ev,_ZThn128_N8S3461C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev)();
extern void ABISELECT(_ZThn208_N8S3461C25D0Ev,_ZThn128_N8S3461C25D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY vtc_S3461C25[] = {
  ABISELECT(224,140),
  ABISELECT(208,128),
  ABISELECT(192,120),
  ABISELECT(144,84),
  ABISELECT(120,68),
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(120,68),
  ABISELECT(112,64),
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C25D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C25D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(-120,-68),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev),
  ABISELECT(24,16),
  ABISELECT(-144,-84),
  ABISELECT(-24,-16),
  ABISELECT(80,56),
  ABISELECT(-32,-20),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-40,-28),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C25D1Ev,_ZTv0_n44_N8S3461C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C25D0Ev,_ZTv0_n44_N8S3461C25D0Ev),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(56,40),
  ABISELECT(-56,-36),
  ABISELECT(-64,-44),
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C25D1Ev,_ZTvn16_n44_N8S3461C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C25D0Ev,_ZTvn16_n44_N8S3461C25D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  0,
  ABISELECT(-88,-64),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  0,
  ABISELECT(-208,-128),
  0,
  ABISELECT(-96,-64),
  ABISELECT(-104,-72),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  0,
  0,
  ABISELECT(-104,-72),
  ABISELECT(-120,-84),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern VTBL_ENTRY _ZTV8S3461C25[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C18D1Ev();
extern void _ZN8S3461C18D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C18__8S3461C25[] = {
  ABISELECT(120,68),
  ABISELECT(112,64),
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C68S3461C18__8S3461C25[] = {
  ABISELECT(112,64),
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C68S3461C18__A1__8S3461C25[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C68S3461C18__A2__8S3461C25[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C18__8S3461C25[] = {
  0,
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C25[] = {
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__8S3461C25[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C8__8S3461C25[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C25[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C13__8S3461C25[] = {
  0,
  0,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C19D1Ev();
extern void _ZN8S3461C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C19__8S3461C25[] = {
  ABISELECT(-24,-16),
  ABISELECT(80,56),
  ABISELECT(-32,-20),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C19D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C19D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C19__A1__8S3461C25[] = {
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C138S3461C19__A1__8S3461C25[] = {
  0,
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C4D1Ev();
extern void _ZN7S3461C4D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__8S3461C25[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(56,40),
  ABISELECT(-56,-36),
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C67S3461C48S3461C19__A2__8S3461C25[] = {
  ABISELECT(-56,-36),
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C67S3461C48S3461C19__A3__8S3461C25[] = {
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C67S3461C48S3461C19__A5__8S3461C25[] = {
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__7S3461C48S3461C19__8S3461C25[] = {
  0,
  0,
  ABISELECT(-104,-72),
  ABISELECT(-120,-84),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C13__7S3461C48S3461C19__8S3461C25[] = {
  ABISELECT(48,32),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C19__8S3461C25[] = {
  0,
  ABISELECT(-88,-64),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C13__A1__8S3461C19__8S3461C25[] = {
  ABISELECT(24,16),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn64_N8S3461C19D1Ev,_ZThn44_N8S3461C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev)();
extern void ABISELECT(_ZThn64_N8S3461C19D0Ev,_ZThn44_N8S3461C19D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__8S3461C19__8S3461C25[] = {
  0,
  ABISELECT(-64,-44),
  0,
  ABISELECT(-96,-64),
  ABISELECT(-104,-72),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn24_N8S3461C19D1Ev,_ZThn16_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn24_N8S3461C19D0Ev,_ZThn16_N8S3461C19D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C4__8S3461C19__8S3461C25[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(56,40),
  ABISELECT(-56,-36),
  ABISELECT(-64,-44),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C19D1Ev,_ZThn16_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C19D0Ev,_ZThn16_N8S3461C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C19__8S3461C25[] = {
  0,
  0,
  ABISELECT(-104,-72),
  ABISELECT(-120,-84),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C25[] = {
  ABISELECT(-88,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C12__A3__8S3461C25[] = {
  ABISELECT(-88,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__A1__8S3461C25[] = {
  ABISELECT(-96,-64),
  ABISELECT(-104,-72),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C6__A2__8S3461C25[] = {
  ABISELECT(-104,-72),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C6__A4__8S3461C25[] = {
  ABISELECT(-104,-72),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C25[] = {
  ABISELECT(-104,-72),
  ABISELECT(-120,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C11__A1__8S3461C25[] = {
  ABISELECT(-120,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C11__A6__8S3461C25[] = {
  ABISELECT(-120,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C11__8S3461C25[] = {
  0,
  ABISELECT(-16,-12),
  ABISELECT(104,72),
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
static  VTT_ENTRY vtt_S3461C25[] = {
  {&(_ZTV8S3461C25[12]),  12,82},
  {&(_tg__ZTV8S3461C18__8S3461C25[5]),  5,10},
  {&(_tg__ZTV7S3461C68S3461C18__8S3461C25[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C68S3461C18__A1__8S3461C25[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C68S3461C18__A2__8S3461C25[3]),  3,4},
  {&(_tg__ZTV7S3461C9__8S3461C18__8S3461C25[4]),  4,5},
  {&(_ZTV8S3461C25[22]),  22,82},
  {&(_ZTV8S3461C25[22]),  22,82},
  {&(_ZTV8S3461C25[29]),  29,82},
  {&(_ZTV8S3461C25[29]),  29,82},
  {&(_ZTV8S3461C25[44]),  44,82},
  {&(_ZTV8S3461C25[62]),  62,82},
  {&(_ZTV8S3461C25[70]),  70,82},
  {&(_ZTV8S3461C25[54]),  54,82},
  {&(_ZTV8S3461C25[80]),  80,82},
  {&(_tg__ZTV8S3461C14__8S3461C25[5]),  5,6},
  {&(_tg__ZTV8S3461C14__8S3461C25[5]),  5,6},
  {&(_tg__ZTV7S3461C8__8S3461C25[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C8__8S3461C25[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C25[3]),  3,4},
  {&(_tg__ZTV8S3461C13__8S3461C25[5]),  5,8},
  {&(_tg__ZTV8S3461C13__8S3461C25[5]),  5,8},
  {&(_tg__ZTV8S3461C19__8S3461C25[10]),  10,13},
  {&(_tg__ZTV8S3461C138S3461C19__A1__8S3461C25[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C138S3461C19__A1__8S3461C25[4]),  4,5},
  {&(_tg__ZTV7S3461C48S3461C19__8S3461C25[7]),  7,11},
  {&(_tg__ZTV7S3461C67S3461C48S3461C19__A2__8S3461C25[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C67S3461C48S3461C19__A3__8S3461C25[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C67S3461C48S3461C19__A5__8S3461C25[3]),  3,4},
  {&(_tg__ZTV8S3461C11__7S3461C48S3461C19__8S3461C25[6]),  6,8},
  {&(_tg__ZTV8S3461C13__7S3461C48S3461C19__8S3461C25[6]),  6,9},
  {&(_tg__ZTV8S3461C13__7S3461C48S3461C19__8S3461C25[6]),  6,9},
  {&(_tg__ZTV8S3461C12__8S3461C19__8S3461C25[4]),  4,5},
  {&(_tg__ZTV8S3461C13__A1__8S3461C19__8S3461C25[6]),  6,9},
  {&(_tg__ZTV7S3461C6__8S3461C19__8S3461C25[7]),  7,11},
  {&(_tg__ZTV7S3461C4__8S3461C19__8S3461C25[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C19__8S3461C25[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A1__8S3461C19__8S3461C25[6]),  6,9},
  {&(_tg__ZTV8S3461C12__8S3461C25[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C12__A3__8S3461C25[3]),  3,4},
  {&(_tg__ZTV7S3461C6__A1__8S3461C25[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C6__A2__8S3461C25[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C6__A4__8S3461C25[3]),  3,4},
  {&(_tg__ZTV8S3461C11__8S3461C25[4]),  4,6},
  {&(_tg__ZTV8S3461C128S3461C11__A1__8S3461C25[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C11__A6__8S3461C25[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C11__8S3461C25[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S3461C25[];
extern  VTBL_ENTRY _ZTV8S3461C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C25[];
static VTBL_ENTRY alt_thunk_names7[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3461C19D0Ev,_ZThn44_N8S3461C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3461C19D1Ev,_ZThn44_N8S3461C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C25D0Ev,_ZTv0_n44_N8S3461C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S3461C25D0Ev,_ZThn84_N8S3461C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C25D1Ev,_ZTv0_n44_N8S3461C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S3461C25D1Ev,_ZThn84_N8S3461C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3461C25D0Ev,_ZThn128_N8S3461C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S3461C25D0Ev,_ZThn68_N8S3461C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3461C25D1Ev,_ZThn128_N8S3461C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S3461C25D1Ev,_ZThn68_N8S3461C25D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3461C25 = {  "S3461C25", // class name
  bases_S3461C25, 43,
  &(vtc_S3461C25[0]), // expected_vtbl_contents
  &(vtt_S3461C25[0]), // expected_vtt_contents
  ABISELECT(240,148), // object size
  NSPAIRA(_ZTI8S3461C25),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S3461C25),82, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3461C25),47, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names7,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3461C23  : virtual S3461C9 , virtual S3461C24 , virtual S3461C19 , S3461C25 {
  virtual  ~S3461C23(); // _ZN8S3461C23D2Ev
  S3461C23(); // tgen
};
//SIG(-1 S3461C23) C1{ VBC2{ VBC3{ m FL} BC4{ m} v1} VBC5{ BC4 VBC2 BC6{ BC3 VBC2 BC4 vd} BC3 vd FL} VBC7{ VBC3 VBC8{ VBC3 BC2 BC4} BC6 VBC9{ BC3 VBC4 BC10{ BC2} vd v2} BC11{ BC3 BC9 BC12{ m} VBC13{ VBC3 BC8 VBC2 v3} VBC6 vd}} BC14{ VBC15{ VBC10 Fi} BC16{ VBC2 BC9 vd v4} VBC6 VBC7 vd Fp[9]} vd}


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

static void Test_S3461C23()
{
  extern Class_Descriptor cd_S3461C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,46)];
    init_test(&cd_S3461C23, buf);
    S3461C23 *dp, &lv = *(dp=new (buf) S3461C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,180), "sizeof(S3461C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3461C23)");
    /*is_ambiguous_... S3461C23::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*), ABISELECT(88,48), "S3461C23");
    /*is_ambiguous_... S3461C19::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C19*), ABISELECT(88,48), "S3461C23");
    /*is_ambiguous_... S3461C23::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*), ABISELECT(88,48), "S3461C23");
    /*is_ambiguous_... S3461C23::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*), ABISELECT(88,48), "S3461C23");
    /*is_ambiguous_... S3461C23::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(88,48), "S3461C23");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(88,48), "S3461C23");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C11*), ABISELECT(88,48), "S3461C23");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C11*), ABISELECT(88,48), "S3461C23");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(88,48), "S3461C23");
    /*is_ambiguous_... S3461C23::S3461C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*), ABISELECT(88,48), "S3461C23");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C25*), ABISELECT(88,48), "S3461C23");
    /*is_ambiguous_... S3461C23::S3461C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*), ABISELECT(96,56), "S3461C23");
    /*is_ambiguous_... S3461C23::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*), ABISELECT(96,56), "S3461C23");
    check_base_class_offset(lv, (S3461C9*)(S3461C24*), ABISELECT(96,56), "S3461C23");
    check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C24*), ABISELECT(96,56), "S3461C23");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C19*), ABISELECT(96,56), "S3461C23");
    /*is_ambiguous_... S3461C11::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C11*), ABISELECT(96,56), "S3461C23");
    /*is_ambiguous_... S3461C23::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*), ABISELECT(96,56), "S3461C23");
    /*is_ambiguous_... S3461C18::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C18*)(S3461C25*), ABISELECT(96,56), "S3461C23");
    /*is_ambiguous_... S3461C24::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C24*), ABISELECT(113,69), "S3461C23");
    /*is_ambiguous_... S3461C13::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C24*), ABISELECT(104,60), "S3461C23");
    /*is_ambiguous_... S3461C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C24*), ABISELECT(112,68), "S3461C23");
    check_base_class_offset(lv, (S3461C13*)(S3461C24*), ABISELECT(96,56), "S3461C23");
    /*is_ambiguous_... S3461C24::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C24*), ABISELECT(120,72), "S3461C23");
    check_base_class_offset(lv, (S3461C24*), ABISELECT(96,56), "S3461C23");
    /*is_ambiguous_... S3461C23::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*), ABISELECT(184,124), "S3461C23");
    /*is_ambiguous_... S3461C23::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*), ABISELECT(184,124), "S3461C23");
    /*is_ambiguous_... S3461C23::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*), ABISELECT(192,128), "S3461C23");
    /*is_ambiguous_... S3461C19::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C19*), ABISELECT(184,124), "S3461C23");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C19*), ABISELECT(144,92), "S3461C23");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C19*), ABISELECT(152,100), "S3461C23");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C13*)(S3461C19*), ABISELECT(136,88), "S3461C23");
    /*is_ambiguous_... S3461C23::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*), ABISELECT(208,136), "S3461C23");
    /*is_ambiguous_... S3461C23::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*), ABISELECT(216,144), "S3461C23");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(216,144), "S3461C23");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C18*)(S3461C25*), ABISELECT(216,144), "S3461C23");
    /*is_ambiguous_... S3461C23::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(200,132), "S3461C23");
    /*is_ambiguous_... S3461C23::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(200,132), "S3461C23");
    /*is_ambiguous_... S3461C23::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C6*), ABISELECT(200,132), "S3461C23");
    /*is_ambiguous_... S3461C19::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C19*), ABISELECT(200,132), "S3461C23");
    /*is_ambiguous_... S3461C4::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C4*)(S3461C19*), ABISELECT(176,116), "S3461C23");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(168,108), "S3461C23");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(160,104), "S3461C23");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(160,104), "S3461C23");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(160,104), "S3461C23");
    check_base_class_offset(lv, (S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(160,104), "S3461C23");
    check_base_class_offset(lv, (S28C52_nt*)(S3461C4*)(S3461C19*), ABISELECT(160,104), "S3461C23");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(224,148), "S3461C23");
    check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(224,148), "S3461C23");
    /*is_ambiguous_... S3461C12::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C11*), ABISELECT(232,152), "S3461C23");
    check_base_class_offset(lv, (S3461C12*)(S3461C11*), ABISELECT(224,148), "S3461C23");
    check_base_class_offset(lv, (S3461C11*)(S3461C4*)(S3461C19*), ABISELECT(224,148), "S3461C23");
    /*is_ambiguous_... S3461C23::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*), ABISELECT(248,160), "S3461C23");
    /*is_ambiguous_... S3461C23::S3461C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*), ABISELECT(256,168), "S3461C23");
    check_base_class_offset(lv, (S3461C13*)(S3461C4*)(S3461C19*), ABISELECT(240,156), "S3461C23");
    /*is_ambiguous_... S3461C25::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C13*)(S3461C25*), ABISELECT(240,156), "S3461C23");
    check_base_class_offset(lv, (S3461C4*)(S3461C19*), ABISELECT(160,104), "S3461C23");
    check_base_class_offset(lv, (S3461C19*), ABISELECT(136,88), "S3461C23");
    check_base_class_offset(lv, (S3461C19*)(S3461C25*), ABISELECT(136,88), "S3461C23");
    /*is_ambiguous_... S3461C23::S3461C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*), ABISELECT(264,172), "S3461C23");
    /*is_ambiguous_... S3461C23::S3461C8 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*), ABISELECT(264,172), "S3461C23");
    check_base_class_offset(lv, (S3461C8*)(S3461C14*), ABISELECT(264,172), "S3461C23");
    check_base_class_offset(lv, (S3461C14*)(S3461C25*), ABISELECT(264,172), "S3461C23");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C18*)(S3461C25*), ABISELECT(8,4), "S3461C23");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C25*), 0, "S3461C23");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C25*), 0, "S3461C23");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C18*)(S3461C25*), 0, "S3461C23");
    check_base_class_offset(lv, (S3461C6*)(S3461C18*)(S3461C25*), 0, "S3461C23");
    check_base_class_offset(lv, (S3461C18*)(S3461C25*), 0, "S3461C23");
    check_base_class_offset(lv, (S3461C25*), 0, "S3461C23");
    test_class_info(&lv, &cd_S3461C23);
    dp->~S3461C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3461C23(Test_S3461C23, "S3461C23", ABISELECT(280,180));

#else // __cplusplus

extern void _ZN8S3461C23C1Ev();
extern void _ZN8S3461C23D2Ev();
Name_Map name_map_S3461C23[] = {
  NSPAIR(_ZN8S3461C23C1Ev),
  NSPAIR(_ZN8S3461C23D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C24;
extern VTBL_ENTRY _ZTI8S3461C24[];
extern  VTBL_ENTRY _ZTV8S3461C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C24[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C11;
extern VTBL_ENTRY _ZTI8S3461C11[];
extern  VTBL_ENTRY _ZTV8S3461C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C4;
extern VTBL_ENTRY _ZTI7S3461C4[];
extern  VTBL_ENTRY _ZTV7S3461C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C4[];
extern Class_Descriptor cd_S3461C19;
extern VTBL_ENTRY _ZTI8S3461C19[];
extern  VTBL_ENTRY _ZTV8S3461C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C19[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C14;
extern VTBL_ENTRY _ZTI8S3461C14[];
extern  VTBL_ENTRY _ZTV8S3461C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C14[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C18;
extern VTBL_ENTRY _ZTI8S3461C18[];
extern  VTBL_ENTRY _ZTV8S3461C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C18[];
extern Class_Descriptor cd_S3461C25;
extern VTBL_ENTRY _ZTI8S3461C25[];
extern  VTBL_ENTRY _ZTV8S3461C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C25[];
static Base_Class bases_S3461C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    2, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(113,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
    8, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    6, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    6, //immediately_derived
  0, 0},
  {&cd_S3461C13,    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
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    8, //immediately_derived
  0, 0},
  {&cd_S3461C24,    ABISELECT(96,56), //bcp->offset
    18, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    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
    10, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(184,124), //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
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(192,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
    12, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(184,124), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    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
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(136,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(208,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(216,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
    21, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    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
    19, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(200,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(200,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(200,132), //bcp->offset
    58, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(176,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
    37, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(168,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(160,104), //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
    16, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(232,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
    32, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S3461C11,    ABISELECT(224,148), //bcp->offset
    69, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(248,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(256,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
    36, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(240,156), //bcp->offset
    77, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S3461C4,    ABISELECT(160,104), //bcp->offset
    42, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S3461C19,    ABISELECT(136,88), //bcp->offset
    27, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(264,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
    40, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(264,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(264,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S3461C14,    ABISELECT(264,172), //bcp->offset
    86, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3461C9,    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
    22, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S3461C8,    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
    23, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S3461C6,    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
    24, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S3461C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S3461C25,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3461C23[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C23D1Ev();
extern void _ZN8S3461C23D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev)();
extern void ABISELECT(_ZThn96_N8S3461C23D1Ev,_ZThn56_N8S3461C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev)();
extern void ABISELECT(_ZThn96_N8S3461C23D0Ev,_ZThn56_N8S3461C23D0Ev)() __attribute__((weak));
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C23D1Ev,_ZTv0_n44_N8S3461C23D1Ev)();
extern void ABISELECT(_ZThn136_N8S3461C23D1Ev,_ZThn88_N8S3461C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S3461C23D0Ev,_ZTv0_n44_N8S3461C23D0Ev)();
extern void ABISELECT(_ZThn136_N8S3461C23D0Ev,_ZThn88_N8S3461C23D0Ev)() __attribute__((weak));
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C23D1Ev,_ZTvn16_n44_N8S3461C23D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C23D0Ev,_ZTvn16_n44_N8S3461C23D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev)();
extern void ABISELECT(_ZThn200_N8S3461C23D1Ev,_ZThn132_N8S3461C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev)();
extern void ABISELECT(_ZThn200_N8S3461C23D0Ev,_ZThn132_N8S3461C23D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev)();
extern void ABISELECT(_ZThn240_N8S3461C23D1Ev,_ZThn156_N8S3461C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev)();
extern void ABISELECT(_ZThn240_N8S3461C23D0Ev,_ZThn156_N8S3461C23D0Ev)() __attribute__((weak));
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY vtc_S3461C23[] = {
  ABISELECT(96,56),
  ABISELECT(224,148),
  ABISELECT(200,132),
  ABISELECT(184,124),
  ABISELECT(136,88),
  ABISELECT(240,156),
  ABISELECT(264,172),
  ABISELECT(264,172),
  ABISELECT(96,56),
  ABISELECT(216,144),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C23D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C23D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
  ABISELECT(-96,-56),
  0,
  0,
  -8,
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev),
  ABISELECT(24,16),
  ABISELECT(-136,-88),
  ABISELECT(104,68),
  ABISELECT(88,60),
  ABISELECT(80,56),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-48,-40),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C23D1Ev,_ZTv0_n44_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C23D0Ev,_ZTv0_n44_N8S3461C23D0Ev),
  ABISELECT(80,52),
  ABISELECT(-64,-48),
  ABISELECT(64,44),
  ABISELECT(56,40),
  ABISELECT(-72,-56),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C23D1Ev,_ZTvn16_n44_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C23D0Ev,_ZTvn16_n44_N8S3461C23D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  0,
  ABISELECT(-96,-76),
  ABISELECT(-184,-124),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  0,
  ABISELECT(-200,-132),
  0,
  ABISELECT(16,12),
  ABISELECT(-112,-84),
  ABISELECT(-200,-132),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  0,
  0,
  ABISELECT(-128,-92),
  ABISELECT(-136,-100),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  ABISELECT(-240,-156),
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  ABISELECT(-152,-108),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev),
  0,
  0,
  ABISELECT(-176,-124),
  ABISELECT(-264,-172),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern VTBL_ENTRY _ZTV8S3461C23[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C25D1Ev();
extern void _ZN8S3461C25D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C25__8S3461C23[] = {
  ABISELECT(224,148),
  ABISELECT(200,132),
  ABISELECT(184,124),
  ABISELECT(136,88),
  ABISELECT(240,156),
  ABISELECT(264,172),
  ABISELECT(264,172),
  ABISELECT(96,56),
  ABISELECT(216,144),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C25D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C25D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C18D1Ev();
extern void _ZN8S3461C18D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C188S3461C25__8S3461C23[] = {
  ABISELECT(96,56),
  ABISELECT(216,144),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C68S3461C188S3461C25__A2__8S3461C23[] = {
  ABISELECT(216,144),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C68S3461C188S3461C25__A3__8S3461C23[] = {
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C68S3461C188S3461C25__A6__8S3461C23[] = {
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C188S3461C25__8S3461C23[] = {
  0,
  -8,
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C25__8S3461C23[] = {
  0,
  0,
  ABISELECT(-176,-124),
  ABISELECT(-264,-172),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C25__8S3461C23[] = {
  0,
  -8,
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev)();
extern void ABISELECT(_ZThn240_N8S3461C25D1Ev,_ZThn156_N8S3461C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev)();
extern void ABISELECT(_ZThn240_N8S3461C25D0Ev,_ZThn156_N8S3461C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__8S3461C25__8S3461C23[] = {
  ABISELECT(-240,-156),
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  ABISELECT(-152,-108),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C25D1Ev,_ZTv0_n44_N8S3461C25D1Ev)();
extern void ABISELECT(_ZThn136_N8S3461C25D1Ev,_ZThn88_N8S3461C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S3461C25D0Ev,_ZTv0_n44_N8S3461C25D0Ev)();
extern void ABISELECT(_ZThn136_N8S3461C25D0Ev,_ZThn88_N8S3461C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C19__8S3461C25__8S3461C23[] = {
  ABISELECT(24,16),
  ABISELECT(-136,-88),
  ABISELECT(104,68),
  ABISELECT(88,60),
  ABISELECT(80,56),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-48,-40),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C25D1Ev,_ZTv0_n44_N8S3461C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C25D0Ev,_ZTv0_n44_N8S3461C25D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C25__8S3461C23[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-184,-124),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev)();
extern void ABISELECT(_ZThn200_N8S3461C25D1Ev,_ZThn132_N8S3461C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev)();
extern void ABISELECT(_ZThn200_N8S3461C25D0Ev,_ZThn132_N8S3461C25D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__A1__8S3461C25__8S3461C23[] = {
  0,
  ABISELECT(-200,-132),
  0,
  ABISELECT(16,12),
  ABISELECT(-112,-84),
  ABISELECT(-200,-132),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C25D1Ev,_ZTvn16_n44_N8S3461C25D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C25D0Ev,_ZTvn16_n44_N8S3461C25D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__8S3461C25__8S3461C23[] = {
  ABISELECT(80,52),
  ABISELECT(-64,-48),
  ABISELECT(64,44),
  ABISELECT(56,40),
  ABISELECT(-72,-56),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C25D1Ev,_ZTvn16_n44_N8S3461C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C25D0Ev,_ZTvn16_n44_N8S3461C25D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C25__8S3461C23[] = {
  0,
  0,
  ABISELECT(-128,-92),
  ABISELECT(-136,-100),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C23[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C24D1Ev();
extern void _ZN8S3461C24D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C24__8S3461C23[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C24[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C24D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C24D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C24__8S3461C23[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C19D1Ev();
extern void _ZN8S3461C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C19__8S3461C23[] = {
  ABISELECT(104,68),
  ABISELECT(88,60),
  ABISELECT(80,56),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-48,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C19D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C19D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C19__A1__8S3461C23[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-48,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C138S3461C19__A1__8S3461C23[] = {
  0,
  -8,
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C4D1Ev();
extern void _ZN7S3461C4D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__8S3461C23[] = {
  ABISELECT(80,52),
  ABISELECT(-64,-48),
  ABISELECT(64,44),
  ABISELECT(56,40),
  ABISELECT(-72,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C67S3461C48S3461C19__A1__8S3461C23[] = {
  ABISELECT(56,40),
  ABISELECT(-72,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C67S3461C48S3461C19__A1__8S3461C23[] = {
  ABISELECT(-72,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C67S3461C48S3461C19__A3__8S3461C23[] = {
  ABISELECT(-72,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__7S3461C48S3461C19__8S3461C23[] = {
  0,
  0,
  ABISELECT(-128,-92),
  ABISELECT(-136,-100),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A2__7S3461C48S3461C19__8S3461C23[] = {
  0,
  -8,
  ABISELECT(64,48),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S3461C4D1Ev,_ZThn52_N7S3461C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S3461C4D0Ev,_ZThn52_N7S3461C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__7S3461C48S3461C19__8S3461C23[] = {
  ABISELECT(-80,-52),
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  ABISELECT(-152,-108),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C19__8S3461C23[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C19__8S3461C23[] = {
  0,
  -8,
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn64_N8S3461C19D1Ev,_ZThn44_N8S3461C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev)();
extern void ABISELECT(_ZThn64_N8S3461C19D0Ev,_ZThn44_N8S3461C19D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__8S3461C19__8S3461C23[] = {
  0,
  ABISELECT(-64,-44),
  0,
  ABISELECT(16,12),
  ABISELECT(-112,-84),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn24_N8S3461C19D1Ev,_ZThn16_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn24_N8S3461C19D0Ev,_ZThn16_N8S3461C19D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C4__8S3461C19__8S3461C23[] = {
  ABISELECT(80,52),
  ABISELECT(-64,-48),
  ABISELECT(64,44),
  ABISELECT(56,40),
  ABISELECT(-72,-56),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C19D1Ev,_ZThn16_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C19D0Ev,_ZThn16_N8S3461C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C19__8S3461C23[] = {
  0,
  0,
  ABISELECT(-128,-92),
  ABISELECT(-136,-100),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn104_N8S3461C19D1Ev,_ZThn68_N8S3461C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev)();
extern void ABISELECT(_ZThn104_N8S3461C19D0Ev,_ZThn68_N8S3461C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__A1__8S3461C19__8S3461C23[] = {
  ABISELECT(-104,-68),
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  ABISELECT(-152,-108),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C23[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C12__A1__8S3461C23[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__8S3461C23[] = {
  ABISELECT(16,12),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C6__8S3461C23[] = {
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C6__A2__8S3461C23[] = {
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C23[] = {
  ABISELECT(-128,-92),
  ABISELECT(-136,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C11__A1__8S3461C23[] = {
  ABISELECT(-136,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C11__A4__8S3461C23[] = {
  ABISELECT(-136,-100),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C11__8S3461C23[] = {
  0,
  -8,
  ABISELECT(128,92),
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C13__A2__8S3461C23[] = {
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  ABISELECT(-152,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C13__A2__8S3461C23[] = {
  0,
  -8,
  ABISELECT(144,100),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C23[] = {
  0,
  0,
  ABISELECT(-176,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__A2__8S3461C23[] = {
  ABISELECT(-176,-124),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C8__A5__8S3461C23[] = {
  ABISELECT(-176,-124),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
static  VTT_ENTRY vtt_S3461C23[] = {
  {&(_ZTV8S3461C23[13]),  13,92},
  {&(_tg__ZTV8S3461C25__8S3461C23[12]),  12,17},
  {&(_tg__ZTV8S3461C188S3461C25__8S3461C23[5]),  5,10},
  {&(_tg__ZTV7S3461C68S3461C188S3461C25__A2__8S3461C23[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C68S3461C188S3461C25__A3__8S3461C23[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C68S3461C188S3461C25__A6__8S3461C23[3]),  3,4},
  {&(_tg__ZTV7S3461C9__8S3461C188S3461C25__8S3461C23[4]),  4,5},
  {&(_tg__ZTV8S3461C14__8S3461C25__8S3461C23[5]),  5,6},
  {&(_tg__ZTV8S3461C14__8S3461C25__8S3461C23[5]),  5,6},
  {&(_tg__ZTV7S3461C9__A1__8S3461C25__8S3461C23[4]),  4,5},
  {&(_tg__ZTV8S3461C13__8S3461C25__8S3461C23[6]),  6,9},
  {&(_tg__ZTV8S3461C19__8S3461C25__8S3461C23[12]),  12,15},
  {&(_tg__ZTV8S3461C12__8S3461C25__8S3461C23[4]),  4,5},
  {&(_tg__ZTV7S3461C6__A1__8S3461C25__8S3461C23[7]),  7,11},
  {&(_tg__ZTV7S3461C48S3461C19__8S3461C25__8S3461C23[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C25__8S3461C23[6]),  6,8},
  {&(_ZTV8S3461C23[24]),  24,92},
  {&(_ZTV8S3461C23[24]),  24,92},
  {&(_ZTV8S3461C23[39]),  39,92},
  {&(_ZTV8S3461C23[57]),  57,92},
  {&(_ZTV8S3461C23[65]),  65,92},
  {&(_ZTV8S3461C23[49]),  49,92},
  {&(_ZTV8S3461C23[75]),  75,92},
  {&(_ZTV8S3461C23[83]),  83,92},
  {&(_ZTV8S3461C23[91]),  91,92},
  {&(_ZTV8S3461C23[91]),  91,92},
  {&(_tg__ZTV7S3461C9__8S3461C23[3]),  3,4},
  {&(_tg__ZTV8S3461C24__8S3461C23[5]),  5,8},
  {&(_tg__ZTV8S3461C138S3461C24__8S3461C23[5]),  5,8},
  {&(_tg__ZTV8S3461C138S3461C24__8S3461C23[5]),  5,8},
  {&(_tg__ZTV8S3461C24__8S3461C23[5]),  5,8},
  {&(_tg__ZTV8S3461C19__8S3461C23[10]),  10,13},
  {&(_tg__ZTV8S3461C138S3461C19__A1__8S3461C23[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C138S3461C19__A1__8S3461C23[4]),  4,5},
  {&(_tg__ZTV7S3461C48S3461C19__8S3461C23[7]),  7,11},
  {&(_tg__ZTV7S3461C67S3461C48S3461C19__A1__8S3461C23[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C67S3461C48S3461C19__A1__8S3461C23[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C67S3461C48S3461C19__A3__8S3461C23[3]),  3,4},
  {&(_tg__ZTV8S3461C11__7S3461C48S3461C19__8S3461C23[6]),  6,8},
  {&(_tg__ZTV7S3461C9__A2__7S3461C48S3461C19__8S3461C23[4]),  4,5},
  {&(_tg__ZTV8S3461C13__7S3461C48S3461C19__8S3461C23[6]),  6,9},
  {&(_tg__ZTV8S3461C12__8S3461C19__8S3461C23[4]),  4,5},
  {&(_tg__ZTV7S3461C9__A1__8S3461C19__8S3461C23[4]),  4,5},
  {&(_tg__ZTV7S3461C6__8S3461C19__8S3461C23[7]),  7,11},
  {&(_tg__ZTV7S3461C4__8S3461C19__8S3461C23[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C19__8S3461C23[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A1__8S3461C19__8S3461C23[6]),  6,9},
  {&(_tg__ZTV8S3461C12__8S3461C23[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C12__A1__8S3461C23[3]),  3,4},
  {&(_tg__ZTV7S3461C6__8S3461C23[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C6__8S3461C23[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C6__A2__8S3461C23[3]),  3,4},
  {&(_tg__ZTV8S3461C11__8S3461C23[4]),  4,6},
  {&(_tg__ZTV8S3461C128S3461C11__A1__8S3461C23[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C11__A4__8S3461C23[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C11__8S3461C23[4]),  4,5},
  {&(_tg__ZTV8S3461C13__A2__8S3461C23[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C13__A2__8S3461C23[4]),  4,5},
  {&(_tg__ZTV8S3461C14__8S3461C23[5]),  5,6},
  {&(_tg__ZTV8S3461C14__8S3461C23[5]),  5,6},
  {&(_tg__ZTV7S3461C8__A2__8S3461C23[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C8__A5__8S3461C23[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S3461C23[];
extern  VTBL_ENTRY _ZTV8S3461C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C23[];
static VTBL_ENTRY alt_thunk_names8[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S3461C19D0Ev,_ZThn68_N8S3461C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3461C19D0Ev,_ZThn44_N8S3461C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S3461C19D1Ev,_ZThn68_N8S3461C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3461C19D1Ev,_ZThn44_N8S3461C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3461C4D0Ev,_ZThn52_N7S3461C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3461C4D1Ev,_ZThn52_N7S3461C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C25D0Ev,_ZTv0_n44_N8S3461C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S3461C25D0Ev,_ZThn88_N8S3461C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C25D1Ev,_ZTv0_n44_N8S3461C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S3461C25D1Ev,_ZThn88_N8S3461C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S3461C25D0Ev,_ZThn132_N8S3461C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S3461C25D0Ev,_ZThn156_N8S3461C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S3461C25D1Ev,_ZThn132_N8S3461C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S3461C25D1Ev,_ZThn156_N8S3461C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C23D0Ev,_ZTv0_n44_N8S3461C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S3461C23D0Ev,_ZThn88_N8S3461C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C23D1Ev,_ZTv0_n44_N8S3461C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S3461C23D1Ev,_ZThn88_N8S3461C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S3461C23D0Ev,_ZThn156_N8S3461C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S3461C23D0Ev,_ZThn132_N8S3461C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3461C23D0Ev,_ZThn56_N8S3461C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S3461C23D1Ev,_ZThn156_N8S3461C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S3461C23D1Ev,_ZThn132_N8S3461C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3461C23D1Ev,_ZThn56_N8S3461C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3461C23 = {  "S3461C23", // class name
  bases_S3461C23, 50,
  &(vtc_S3461C23[0]), // expected_vtbl_contents
  &(vtt_S3461C23[0]), // expected_vtt_contents
  ABISELECT(280,180), // object size
  NSPAIRA(_ZTI8S3461C23),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S3461C23),92, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3461C23),62, //virtual table table var
  26, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names8,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3461C22  : virtual S3461C18 , S3461C5_nt , virtual S3461C23 , S3461C13 , S3461C12 {
  char s3461c22f0;
  virtual  ~S3461C22(); // _ZN8S3461C22D2Ev
  virtual void  v6(); // _ZN8S3461C222v6Ev
  S3461C22(); // tgen
};
//SIG(-1 S3461C22) C1{ VBC2{ VBC3{ VBC4{ m FL} BC5{ m} v2} BC6{ BC4 VBC5 BC7{ BC3} vd v3} vd v4} BC4 VBC8{ VBC3 VBC9{ BC5 VBC3 BC10{ BC4 VBC3 BC5 vd} BC4 vd FL} VBC11{ VBC4 VBC12{ VBC4 BC3 BC5} BC10 VBC6 BC13{ BC4 BC6 BC14{ m} VBC15{ VBC4 BC12 VBC3 v5} VBC10 vd}} BC16{ VBC17{ VBC7 Fi} BC2 VBC10 VBC11 vd Fp[9]} vd} BC10 BC12 vd v1 Fc}


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

static void Test_S3461C22()
{
  extern Class_Descriptor cd_S3461C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(43,56)];
    init_test(&cd_S3461C22, buf);
    S3461C22 *dp, &lv = *(dp=new (buf) S3461C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,220), "sizeof(S3461C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3461C22)");
    /*is_ambiguous_... S3461C22::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*), ABISELECT(64,44), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(64,44), "S3461C22");
    /*is_ambiguous_... S3461C19::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C19*), ABISELECT(64,44), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*), ABISELECT(64,44), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*), ABISELECT(64,44), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(64,44), "S3461C22");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(64,44), "S3461C22");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C11*), ABISELECT(64,44), "S3461C22");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C11*), ABISELECT(64,44), "S3461C22");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(64,44), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*), ABISELECT(64,44), "S3461C22");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(64,44), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*), ABISELECT(64,44), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*), ABISELECT(64,44), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*), ABISELECT(160,100), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C18*), ABISELECT(160,100), "S3461C22");
    /*is_ambiguous_... S3461C23::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C23*), ABISELECT(160,100), "S3461C22");
    check_base_class_offset(lv, (S3461C9*)(S3461C24*), ABISELECT(160,100), "S3461C22");
    check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C24*), ABISELECT(160,100), "S3461C22");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C19*), ABISELECT(160,100), "S3461C22");
    /*is_ambiguous_... S3461C11::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C11*), ABISELECT(160,100), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*), ABISELECT(160,100), "S3461C22");
    /*is_ambiguous_... S3461C18::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(160,100), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*), ABISELECT(160,100), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C18*), ABISELECT(56,36), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C18 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C18*), 0, "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*), 0, "S3461C22");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C4*)(S3461C19*), 0, "S3461C22");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), 0, "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C18 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(48,32), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(48,32), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(48,32), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C18*), ABISELECT(48,32), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C18*), ABISELECT(48,32), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(24,16), "S3461C22");
    /*is_ambiguous_... S3461C24::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C24*), ABISELECT(177,113), "S3461C22");
    /*is_ambiguous_... S3461C13::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C24*), ABISELECT(168,104), "S3461C22");
    /*is_ambiguous_... S3461C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C24*), ABISELECT(176,112), "S3461C22");
    check_base_class_offset(lv, (S3461C13*)(S3461C24*), ABISELECT(160,100), "S3461C22");
    /*is_ambiguous_... S3461C24::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C24*), ABISELECT(184,116), "S3461C22");
    check_base_class_offset(lv, (S3461C24*)(S3461C23*), ABISELECT(160,100), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*), ABISELECT(248,168), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*), ABISELECT(248,168), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*), ABISELECT(256,172), "S3461C22");
    /*is_ambiguous_... S3461C19::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C19*), ABISELECT(248,168), "S3461C22");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C19*), ABISELECT(208,136), "S3461C22");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C19*), ABISELECT(216,144), "S3461C22");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C13*)(S3461C19*), ABISELECT(200,132), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*), ABISELECT(272,180), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(264,176), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(264,176), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C6*), ABISELECT(264,176), "S3461C22");
    /*is_ambiguous_... S3461C19::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C19*), ABISELECT(264,176), "S3461C22");
    /*is_ambiguous_... S3461C4::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C4*)(S3461C19*), ABISELECT(240,160), "S3461C22");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(232,152), "S3461C22");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(224,148), "S3461C22");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(224,148), "S3461C22");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(224,148), "S3461C22");
    check_base_class_offset(lv, (S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(224,148), "S3461C22");
    check_base_class_offset(lv, (S28C52_nt*)(S3461C4*)(S3461C19*), ABISELECT(224,148), "S3461C22");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(280,188), "S3461C22");
    check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(280,188), "S3461C22");
    /*is_ambiguous_... S3461C12::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C11*), ABISELECT(288,192), "S3461C22");
    check_base_class_offset(lv, (S3461C12*)(S3461C11*), ABISELECT(280,188), "S3461C22");
    check_base_class_offset(lv, (S3461C11*)(S3461C4*)(S3461C19*), ABISELECT(280,188), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*), ABISELECT(304,200), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*), ABISELECT(312,208), "S3461C22");
    check_base_class_offset(lv, (S3461C13*)(S3461C4*)(S3461C19*), ABISELECT(296,196), "S3461C22");
    /*is_ambiguous_... S3461C25::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C13*)(S3461C25*)(S3461C23*), ABISELECT(296,196), "S3461C22");
    check_base_class_offset(lv, (S3461C4*)(S3461C19*), ABISELECT(224,148), "S3461C22");
    check_base_class_offset(lv, (S3461C19*)(S3461C23*), ABISELECT(200,132), "S3461C22");
    check_base_class_offset(lv, (S3461C19*)(S3461C25*)(S3461C23*), ABISELECT(200,132), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*), ABISELECT(320,212), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C8 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*), ABISELECT(320,212), "S3461C22");
    check_base_class_offset(lv, (S3461C8*)(S3461C14*), ABISELECT(320,212), "S3461C22");
    check_base_class_offset(lv, (S3461C14*)(S3461C25*)(S3461C23*), ABISELECT(320,212), "S3461C22");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(80,56), "S3461C22");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(72,52), "S3461C22");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(72,52), "S3461C22");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(72,52), "S3461C22");
    check_base_class_offset(lv, (S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(72,52), "S3461C22");
    check_base_class_offset(lv, (S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(72,52), "S3461C22");
    check_base_class_offset(lv, (S3461C25*)(S3461C23*), ABISELECT(72,52), "S3461C22");
    check_base_class_offset(lv, (S3461C23*), ABISELECT(72,52), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*), ABISELECT(8,4), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*), ABISELECT(16,12), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C13*), 0, "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*), ABISELECT(32,24), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*), ABISELECT(32,24), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*), ABISELECT(40,28), "S3461C22");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C12*), ABISELECT(32,24), "S3461C22");
    check_field_offset(lv, s3461c22f0, ABISELECT(41,29), "S3461C22.s3461c22f0");
    test_class_info(&lv, &cd_S3461C22);
    dp->~S3461C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3461C22(Test_S3461C22, "S3461C22", ABISELECT(336,220));

#else // __cplusplus

extern void _ZN8S3461C22C1Ev();
extern void _ZN8S3461C22D2Ev();
Name_Map name_map_S3461C22[] = {
  NSPAIR(_ZN8S3461C22C1Ev),
  NSPAIR(_ZN8S3461C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C18;
extern VTBL_ENTRY _ZTI8S3461C18[];
extern  VTBL_ENTRY _ZTV8S3461C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C18[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C24;
extern VTBL_ENTRY _ZTI8S3461C24[];
extern  VTBL_ENTRY _ZTV8S3461C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C24[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C11;
extern VTBL_ENTRY _ZTI8S3461C11[];
extern  VTBL_ENTRY _ZTV8S3461C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C4;
extern VTBL_ENTRY _ZTI7S3461C4[];
extern  VTBL_ENTRY _ZTV7S3461C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C4[];
extern Class_Descriptor cd_S3461C19;
extern VTBL_ENTRY _ZTI8S3461C19[];
extern  VTBL_ENTRY _ZTV8S3461C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C19[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C14;
extern VTBL_ENTRY _ZTI8S3461C14[];
extern  VTBL_ENTRY _ZTV8S3461C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C14[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C18;
extern VTBL_ENTRY _ZTI8S3461C18[];
extern  VTBL_ENTRY _ZTV8S3461C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C18[];
extern Class_Descriptor cd_S3461C25;
extern VTBL_ENTRY _ZTI8S3461C25[];
extern  VTBL_ENTRY _ZTV8S3461C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C25[];
extern Class_Descriptor cd_S3461C23;
extern VTBL_ENTRY _ZTI8S3461C23[];
extern  VTBL_ENTRY _ZTV8S3461C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C23[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
static Base_Class bases_S3461C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3461C5_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
    8, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3461C8,    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
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3461C6,    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
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3461C18,    ABISELECT(48,32), //bcp->offset
    24, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    ABISELECT(177,113), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3461C5_nt,    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
    14, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(160,100), //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
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(184,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
    16, //immediately_derived
  0, 0},
  {&cd_S3461C24,    ABISELECT(160,100), //bcp->offset
    60, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    57, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(248,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(248,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(256,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(248,168), //bcp->offset
    95, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(208,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(216,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
    23, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(200,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(272,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(264,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(264,176), //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
    10, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(264,176), //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
    11, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(264,176), //bcp->offset
    100, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(240,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
    44, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(232,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
    34, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(224,148), //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
    18, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(280,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(280,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(288,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(280,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S3461C11,    ABISELECT(280,188), //bcp->offset
    111, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(304,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
    43, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(312,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
    43, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(296,196), //bcp->offset
    119, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S3461C4,    ABISELECT(224,148), //bcp->offset
    84, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S3461C19,    ABISELECT(200,132), //bcp->offset
    69, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    56, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(320,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(320,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(320,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S3461C14,    ABISELECT(320,212), //bcp->offset
    128, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    56, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    52, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(72,52), //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
    26, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(72,52), //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
    28, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S3461C18,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S3461C25,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S3461C23,    ABISELECT(72,52), //bcp->offset
    38, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_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
    60, //immediately_derived
  0, 0},
  {&cd_S3461C13,    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_S731C17_nt,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    64, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(32,24), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3461C22[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C22D1Ev();
extern void _ZN8S3461C22D0Ev();
extern void _ZN8S3461C222v6Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S3461C22D1Ev,_ZTv0_n28_N8S3461C22D1Ev)();
extern void ABISELECT(_ZThn48_N8S3461C22D1Ev,_ZThn32_N8S3461C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3461C22D0Ev,_ZTv0_n28_N8S3461C22D0Ev)();
extern void ABISELECT(_ZThn48_N8S3461C22D0Ev,_ZThn32_N8S3461C22D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S3461C22D1Ev,_ZTv0_n60_N8S3461C22D1Ev)();
extern void ABISELECT(_ZThn72_N8S3461C22D1Ev,_ZThn52_N8S3461C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S3461C22D0Ev,_ZTv0_n60_N8S3461C22D0Ev)();
extern void ABISELECT(_ZThn72_N8S3461C22D0Ev,_ZThn52_N8S3461C22D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev)();
extern void ABISELECT(_ZThn160_N8S3461C22D1Ev,_ZThn100_N8S3461C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev)();
extern void ABISELECT(_ZThn160_N8S3461C22D0Ev,_ZThn100_N8S3461C22D0Ev)() __attribute__((weak));
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C22D1Ev,_ZTv0_n44_N8S3461C22D1Ev)();
extern void ABISELECT(_ZThn200_N8S3461C22D1Ev,_ZThn132_N8S3461C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S3461C22D0Ev,_ZTv0_n44_N8S3461C22D0Ev)();
extern void ABISELECT(_ZThn200_N8S3461C22D0Ev,_ZThn132_N8S3461C22D0Ev)() __attribute__((weak));
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C22D1Ev,_ZTvn16_n44_N8S3461C22D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C22D0Ev,_ZTvn16_n44_N8S3461C22D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev)();
extern void ABISELECT(_ZThn264_N8S3461C22D1Ev,_ZThn176_N8S3461C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev)();
extern void ABISELECT(_ZThn264_N8S3461C22D0Ev,_ZThn176_N8S3461C22D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev)();
extern void ABISELECT(_ZThn296_N8S3461C22D1Ev,_ZThn196_N8S3461C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev)();
extern void ABISELECT(_ZThn296_N8S3461C22D0Ev,_ZThn196_N8S3461C22D0Ev)() __attribute__((weak));
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY vtc_S3461C22[] = {
  ABISELECT(320,212),
  ABISELECT(320,212),
  ABISELECT(296,196),
  ABISELECT(280,188),
  ABISELECT(264,176),
  ABISELECT(248,168),
  ABISELECT(200,132),
  ABISELECT(160,100),
  ABISELECT(72,52),
  0,
  ABISELECT(48,32),
  ABISELECT(160,100),
  ABISELECT(160,100),
  ABISELECT(64,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C22D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C22D0Ev,
  (VTBL_ENTRY)&_ZN8S3461C222v6Ev,
  ABISELECT(32,20),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  0,
  0,
  ABISELECT(-48,-32),
  0,
  ABISELECT(112,68),
  ABISELECT(-48,-32),
  ABISELECT(16,12),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3461C22D1Ev,_ZTv0_n28_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3461C22D0Ev,_ZTv0_n28_N8S3461C22D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
  0,
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-72,-52),
  -8,
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S3461C22D1Ev,_ZTv0_n60_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S3461C22D0Ev,_ZTv0_n60_N8S3461C22D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
  ABISELECT(-160,-100),
  0,
  0,
  ABISELECT(-96,-56),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev),
  ABISELECT(24,16),
  ABISELECT(-200,-132),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-200,-132),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  ABISELECT(-200,-132),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C22D1Ev,_ZTv0_n44_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C22D0Ev,_ZTv0_n44_N8S3461C22D0Ev),
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C22D1Ev,_ZTvn16_n44_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C22D0Ev,_ZTvn16_n44_N8S3461C22D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  0,
  ABISELECT(-184,-124),
  ABISELECT(-248,-168),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  0,
  ABISELECT(-264,-176),
  0,
  ABISELECT(-264,-176),
  ABISELECT(-200,-132),
  ABISELECT(-264,-176),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-280,-188),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  ABISELECT(-296,-196),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  ABISELECT(-296,-196),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev),
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-320,-212),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern VTBL_ENTRY _ZTV8S3461C22[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C13__A__8S3461C22[] = {
  ABISELECT(160,100),
  ABISELECT(160,100),
  ABISELECT(64,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C13__A__8S3461C22[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__A__8S3461C22[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C12__A8__8S3461C22[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C18D1Ev();
extern void _ZN8S3461C18D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C18__8S3461C22[] = {
  ABISELECT(112,68),
  ABISELECT(-48,-32),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C68S3461C18__8S3461C22[] = {
  ABISELECT(-48,-32),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C68S3461C18__8S3461C22[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C68S3461C18__A1__8S3461C22[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C18__8S3461C22[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C22[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C23D1Ev();
extern void _ZN8S3461C23D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C23__8S3461C22[] = {
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-72,-52),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C23D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C23D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C25D1Ev();
extern void _ZN8S3461C25D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C258S3461C23__8S3461C22[] = {
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-72,-52),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C25D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C25D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C18D1Ev();
extern void _ZN8S3461C18D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C188S3461C258S3461C23__A1__8S3461C22[] = {
  ABISELECT(88,48),
  ABISELECT(-72,-52),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C68S3461C188S3461C258S3461C23__A3__8S3461C22[] = {
  ABISELECT(-72,-52),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C68S3461C188S3461C258S3461C23__A4__8S3461C22[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C68S3461C188S3461C258S3461C23__A7__8S3461C22[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C188S3461C258S3461C23__A1__8S3461C22[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C258S3461C23__8S3461C22[] = {
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C258S3461C23__8S3461C22[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev)();
extern void ABISELECT(_ZThn224_N8S3461C25D1Ev,_ZThn144_N8S3461C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev)();
extern void ABISELECT(_ZThn224_N8S3461C25D0Ev,_ZThn144_N8S3461C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__8S3461C258S3461C23__8S3461C22[] = {
  ABISELECT(-224,-144),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C25D1Ev,_ZTv0_n44_N8S3461C25D1Ev)();
extern void ABISELECT(_ZThn128_N8S3461C25D1Ev,_ZThn80_N8S3461C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S3461C25D0Ev,_ZTv0_n44_N8S3461C25D0Ev)();
extern void ABISELECT(_ZThn128_N8S3461C25D0Ev,_ZThn80_N8S3461C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C19__8S3461C258S3461C23__8S3461C22[] = {
  ABISELECT(24,16),
  ABISELECT(-128,-80),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-200,-132),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C25D1Ev,_ZTv0_n44_N8S3461C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C25D0Ev,_ZTv0_n44_N8S3461C25D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C258S3461C23__8S3461C22[] = {
  0,
  ABISELECT(-184,-124),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev)();
extern void ABISELECT(_ZThn192_N8S3461C25D1Ev,_ZThn124_N8S3461C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev)();
extern void ABISELECT(_ZThn192_N8S3461C25D0Ev,_ZThn124_N8S3461C25D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__A1__8S3461C258S3461C23__8S3461C22[] = {
  0,
  ABISELECT(-192,-124),
  0,
  ABISELECT(-264,-176),
  ABISELECT(-200,-132),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C25D1Ev,_ZTvn16_n44_N8S3461C25D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C25D0Ev,_ZTvn16_n44_N8S3461C25D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__8S3461C258S3461C23__8S3461C22[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C25D1Ev,_ZTvn16_n44_N8S3461C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C25D0Ev,_ZTvn16_n44_N8S3461C25D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C258S3461C23__8S3461C22[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev)();
extern void ABISELECT(_ZThn88_N8S3461C23D1Ev,_ZThn48_N8S3461C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev)();
extern void ABISELECT(_ZThn88_N8S3461C23D0Ev,_ZThn48_N8S3461C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C24__8S3461C23__8S3461C22[] = {
  ABISELECT(-88,-48),
  0,
  0,
  ABISELECT(-96,-56),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C23D1Ev,_ZTv0_n44_N8S3461C23D1Ev)();
extern void ABISELECT(_ZThn128_N8S3461C23D1Ev,_ZThn80_N8S3461C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S3461C23D0Ev,_ZTv0_n44_N8S3461C23D0Ev)();
extern void ABISELECT(_ZThn128_N8S3461C23D0Ev,_ZThn80_N8S3461C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C19__8S3461C23__8S3461C22[] = {
  ABISELECT(24,16),
  ABISELECT(-128,-80),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-200,-132),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C23D1Ev,_ZTv0_n44_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C23D0Ev,_ZTv0_n44_N8S3461C23D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C23__8S3461C22[] = {
  0,
  ABISELECT(-184,-124),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev)();
extern void ABISELECT(_ZThn192_N8S3461C23D1Ev,_ZThn124_N8S3461C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev)();
extern void ABISELECT(_ZThn192_N8S3461C23D0Ev,_ZThn124_N8S3461C23D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__8S3461C23__8S3461C22[] = {
  0,
  ABISELECT(-192,-124),
  0,
  ABISELECT(-264,-176),
  ABISELECT(-200,-132),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C23D1Ev,_ZTvn16_n44_N8S3461C23D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C23D0Ev,_ZTvn16_n44_N8S3461C23D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__8S3461C23__8S3461C22[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C23D1Ev,_ZTvn16_n44_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C23D0Ev,_ZTvn16_n44_N8S3461C23D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C23__8S3461C22[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev)();
extern void ABISELECT(_ZThn224_N8S3461C23D1Ev,_ZThn144_N8S3461C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev)();
extern void ABISELECT(_ZThn224_N8S3461C23D0Ev,_ZThn144_N8S3461C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__A2__8S3461C23__8S3461C22[] = {
  ABISELECT(-224,-144),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C23__8S3461C22[] = {
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C24D1Ev();
extern void _ZN8S3461C24D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C24__8S3461C22[] = {
  0,
  0,
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C24[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C24D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C24D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C24__8S3461C22[] = {
  0,
  0,
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C19D1Ev();
extern void _ZN8S3461C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C19__8S3461C22[] = {
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-200,-132),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C19D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C19D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C19__A1__8S3461C22[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C138S3461C19__A1__8S3461C22[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C4D1Ev();
extern void _ZN7S3461C4D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__8S3461C22[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C67S3461C48S3461C19__A2__8S3461C22[] = {
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C67S3461C48S3461C19__A2__8S3461C22[] = {
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C67S3461C48S3461C19__A4__8S3461C22[] = {
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__7S3461C48S3461C19__8S3461C22[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A2__7S3461C48S3461C19__8S3461C22[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(64,48),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev)();
extern void ABISELECT(_ZThn72_N7S3461C4D1Ev,_ZThn48_N7S3461C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev)();
extern void ABISELECT(_ZThn72_N7S3461C4D0Ev,_ZThn48_N7S3461C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__7S3461C48S3461C19__8S3461C22[] = {
  ABISELECT(-72,-48),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C19__8S3461C22[] = {
  0,
  ABISELECT(-184,-124),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C19__8S3461C22[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn64_N8S3461C19D1Ev,_ZThn44_N8S3461C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev)();
extern void ABISELECT(_ZThn64_N8S3461C19D0Ev,_ZThn44_N8S3461C19D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__8S3461C19__8S3461C22[] = {
  0,
  ABISELECT(-64,-44),
  0,
  ABISELECT(-264,-176),
  ABISELECT(-200,-132),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn24_N8S3461C19D1Ev,_ZThn16_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn24_N8S3461C19D0Ev,_ZThn16_N8S3461C19D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C4__8S3461C19__8S3461C22[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C19D1Ev,_ZThn16_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C19D0Ev,_ZThn16_N8S3461C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C19__8S3461C22[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn96_N8S3461C19D1Ev,_ZThn64_N8S3461C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev)();
extern void ABISELECT(_ZThn96_N8S3461C19D0Ev,_ZThn64_N8S3461C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__A1__8S3461C19__8S3461C22[] = {
  ABISELECT(-96,-64),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C22[] = {
  ABISELECT(-184,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C12__A2__8S3461C22[] = {
  ABISELECT(-184,-124),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__A1__8S3461C22[] = {
  ABISELECT(-264,-176),
  ABISELECT(-200,-132),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C6__A1__8S3461C22[] = {
  ABISELECT(-200,-132),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C6__A3__8S3461C22[] = {
  ABISELECT(-200,-132),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C22[] = {
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C11__A1__8S3461C22[] = {
  ABISELECT(-216,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C11__A5__8S3461C22[] = {
  ABISELECT(-216,-144),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C11__8S3461C22[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C13__A2__8S3461C22[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C13__A2__8S3461C22[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(136,96),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C22[] = {
  0,
  0,
  ABISELECT(-256,-168),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__A3__8S3461C22[] = {
  ABISELECT(-256,-168),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C8__A6__8S3461C22[] = {
  ABISELECT(-256,-168),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
static  VTT_ENTRY vtt_S3461C22[] = {
  {&(_ZTV8S3461C22[16]),  16,134},
  {&(_tg__ZTV8S3461C13__A__8S3461C22[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C13__A__8S3461C22[4]),  4,5},
  {&(_tg__ZTV8S3461C12__A__8S3461C22[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C12__A8__8S3461C22[3]),  3,4},
  {&(_ZTV8S3461C22[33]),  33,134},
  {&(_ZTV8S3461C22[66]),  66,134},
  {&(_ZTV8S3461C22[55]),  55,134},
  {&(_ZTV8S3461C22[66]),  66,134},
  {&(_ZTV8S3461C22[81]),  81,134},
  {&(_ZTV8S3461C22[99]),  99,134},
  {&(_ZTV8S3461C22[107]),  107,134},
  {&(_ZTV8S3461C22[91]),  91,134},
  {&(_ZTV8S3461C22[117]),  117,134},
  {&(_ZTV8S3461C22[125]),  125,134},
  {&(_ZTV8S3461C22[133]),  133,134},
  {&(_ZTV8S3461C22[133]),  133,134},
  {&(_ZTV8S3461C22[23]),  23,134},
  {&(_tg__ZTV8S3461C18__8S3461C22[5]),  5,10},
  {&(_tg__ZTV7S3461C68S3461C18__8S3461C22[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C68S3461C18__8S3461C22[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C68S3461C18__A1__8S3461C22[3]),  3,4},
  {&(_tg__ZTV7S3461C9__8S3461C18__8S3461C22[4]),  4,5},
  {&(_tg__ZTV7S3461C9__8S3461C22[3]),  3,4},
  {&(_tg__ZTV8S3461C23__8S3461C22[13]),  13,18},
  {&(_tg__ZTV8S3461C258S3461C23__8S3461C22[12]),  12,17},
  {&(_tg__ZTV8S3461C188S3461C258S3461C23__A1__8S3461C22[5]),  5,10},
  {&(_tg__ZTV7S3461C68S3461C188S3461C258S3461C23__A3__8S3461C22[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C68S3461C188S3461C258S3461C23__A4__8S3461C22[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C68S3461C188S3461C258S3461C23__A7__8S3461C22[3]),  3,4},
  {&(_tg__ZTV7S3461C9__8S3461C188S3461C258S3461C23__A1__8S3461C22[4]),  4,5},
  {&(_tg__ZTV8S3461C14__8S3461C258S3461C23__8S3461C22[5]),  5,6},
  {&(_tg__ZTV8S3461C14__8S3461C258S3461C23__8S3461C22[5]),  5,6},
  {&(_tg__ZTV7S3461C9__A1__8S3461C258S3461C23__8S3461C22[4]),  4,5},
  {&(_tg__ZTV8S3461C13__8S3461C258S3461C23__8S3461C22[6]),  6,9},
  {&(_tg__ZTV8S3461C19__8S3461C258S3461C23__8S3461C22[12]),  12,15},
  {&(_tg__ZTV8S3461C12__8S3461C258S3461C23__8S3461C22[4]),  4,5},
  {&(_tg__ZTV7S3461C6__A1__8S3461C258S3461C23__8S3461C22[7]),  7,11},
  {&(_tg__ZTV7S3461C48S3461C19__8S3461C258S3461C23__8S3461C22[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C258S3461C23__8S3461C22[6]),  6,8},
  {&(_tg__ZTV8S3461C24__8S3461C23__8S3461C22[6]),  6,9},
  {&(_tg__ZTV8S3461C24__8S3461C23__8S3461C22[6]),  6,9},
  {&(_tg__ZTV8S3461C19__8S3461C23__8S3461C22[12]),  12,15},
  {&(_tg__ZTV8S3461C12__8S3461C23__8S3461C22[4]),  4,5},
  {&(_tg__ZTV7S3461C6__8S3461C23__8S3461C22[7]),  7,11},
  {&(_tg__ZTV7S3461C48S3461C19__8S3461C23__8S3461C22[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C23__8S3461C22[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A2__8S3461C23__8S3461C22[6]),  6,9},
  {&(_tg__ZTV8S3461C14__8S3461C23__8S3461C22[5]),  5,6},
  {&(_tg__ZTV8S3461C14__8S3461C23__8S3461C22[5]),  5,6},
  {&(_tg__ZTV8S3461C24__8S3461C22[5]),  5,8},
  {&(_tg__ZTV8S3461C138S3461C24__8S3461C22[5]),  5,8},
  {&(_tg__ZTV8S3461C138S3461C24__8S3461C22[5]),  5,8},
  {&(_tg__ZTV8S3461C24__8S3461C22[5]),  5,8},
  {&(_tg__ZTV8S3461C19__8S3461C22[10]),  10,13},
  {&(_tg__ZTV8S3461C138S3461C19__A1__8S3461C22[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C138S3461C19__A1__8S3461C22[4]),  4,5},
  {&(_tg__ZTV7S3461C48S3461C19__8S3461C22[7]),  7,11},
  {&(_tg__ZTV7S3461C67S3461C48S3461C19__A2__8S3461C22[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C67S3461C48S3461C19__A2__8S3461C22[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C67S3461C48S3461C19__A4__8S3461C22[3]),  3,4},
  {&(_tg__ZTV8S3461C11__7S3461C48S3461C19__8S3461C22[6]),  6,8},
  {&(_tg__ZTV7S3461C9__A2__7S3461C48S3461C19__8S3461C22[4]),  4,5},
  {&(_tg__ZTV8S3461C13__7S3461C48S3461C19__8S3461C22[6]),  6,9},
  {&(_tg__ZTV8S3461C12__8S3461C19__8S3461C22[4]),  4,5},
  {&(_tg__ZTV7S3461C9__A1__8S3461C19__8S3461C22[4]),  4,5},
  {&(_tg__ZTV7S3461C6__8S3461C19__8S3461C22[7]),  7,11},
  {&(_tg__ZTV7S3461C4__8S3461C19__8S3461C22[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C19__8S3461C22[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A1__8S3461C19__8S3461C22[6]),  6,9},
  {&(_tg__ZTV8S3461C12__8S3461C22[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C12__A2__8S3461C22[3]),  3,4},
  {&(_tg__ZTV7S3461C6__A1__8S3461C22[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C6__A1__8S3461C22[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C6__A3__8S3461C22[3]),  3,4},
  {&(_tg__ZTV8S3461C11__8S3461C22[4]),  4,6},
  {&(_tg__ZTV8S3461C128S3461C11__A1__8S3461C22[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C11__A5__8S3461C22[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C11__8S3461C22[4]),  4,5},
  {&(_tg__ZTV8S3461C13__A2__8S3461C22[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C13__A2__8S3461C22[4]),  4,5},
  {&(_tg__ZTV8S3461C14__8S3461C22[5]),  5,6},
  {&(_tg__ZTV8S3461C14__8S3461C22[5]),  5,6},
  {&(_tg__ZTV7S3461C8__A3__8S3461C22[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C8__A6__8S3461C22[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S3461C22[];
extern  VTBL_ENTRY _ZTV8S3461C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C22[];
static VTBL_ENTRY alt_thunk_names9[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3461C19D0Ev,_ZThn64_N8S3461C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3461C19D0Ev,_ZThn44_N8S3461C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3461C19D1Ev,_ZThn64_N8S3461C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3461C19D1Ev,_ZThn44_N8S3461C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S3461C4D0Ev,_ZThn48_N7S3461C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S3461C4D1Ev,_ZThn48_N7S3461C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C23D0Ev,_ZTv0_n44_N8S3461C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3461C23D0Ev,_ZThn80_N8S3461C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C23D1Ev,_ZTv0_n44_N8S3461C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3461C23D1Ev,_ZThn80_N8S3461C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S3461C23D0Ev,_ZThn144_N8S3461C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3461C23D0Ev,_ZThn124_N8S3461C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S3461C23D0Ev,_ZThn48_N8S3461C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S3461C23D1Ev,_ZThn144_N8S3461C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3461C23D1Ev,_ZThn124_N8S3461C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S3461C23D1Ev,_ZThn48_N8S3461C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C25D0Ev,_ZTv0_n44_N8S3461C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3461C25D0Ev,_ZThn80_N8S3461C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C25D1Ev,_ZTv0_n44_N8S3461C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3461C25D1Ev,_ZThn80_N8S3461C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3461C25D0Ev,_ZThn124_N8S3461C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S3461C25D0Ev,_ZThn144_N8S3461C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3461C25D1Ev,_ZThn124_N8S3461C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S3461C25D1Ev,_ZThn144_N8S3461C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C22D0Ev,_ZTv0_n44_N8S3461C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S3461C22D0Ev,_ZThn132_N8S3461C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C22D1Ev,_ZTv0_n44_N8S3461C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S3461C22D1Ev,_ZThn132_N8S3461C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S3461C22D0Ev,_ZThn196_N8S3461C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S3461C22D0Ev,_ZThn176_N8S3461C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S3461C22D0Ev,_ZThn100_N8S3461C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S3461C22D1Ev,_ZThn196_N8S3461C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S3461C22D1Ev,_ZThn176_N8S3461C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S3461C22D1Ev,_ZThn100_N8S3461C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S3461C22D0Ev,_ZTv0_n60_N8S3461C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S3461C22D0Ev,_ZThn52_N8S3461C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S3461C22D1Ev,_ZTv0_n60_N8S3461C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S3461C22D1Ev,_ZThn52_N8S3461C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3461C22D0Ev,_ZTv0_n28_N8S3461C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S3461C22D0Ev,_ZThn32_N8S3461C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3461C22D1Ev,_ZTv0_n28_N8S3461C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S3461C22D1Ev,_ZThn32_N8S3461C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3461C22 = {  "S3461C22", // class name
  bases_S3461C22, 65,
  &(vtc_S3461C22[0]), // expected_vtbl_contents
  &(vtt_S3461C22[0]), // expected_vtt_contents
  ABISELECT(336,220), // object size
  NSPAIRA(_ZTI8S3461C22),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S3461C22),134, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3461C22),85, //virtual table table var
  34, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names9,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3461C26  : virtual S3461C6 , S3461C19 , S3461C18 {
  int s3461c26f0;
  ~S3461C26(); // tgen
  S3461C26(); // tgen
};
//SIG(-1 S3461C26) C1{ VBC2{ BC3{ m FL} VBC4{ m} BC5{ BC6{ VBC3 BC4 v1}} vd v2} BC7{ VBC3 VBC8{ VBC3 BC6 BC4} BC9{ BC3 VBC6 BC4 vd} VBC2 BC10{ BC3 BC2 BC11{ m} VBC12{ VBC3 BC8 VBC6 v3} VBC9 vd}} BC13{ VBC6 BC2 vd v4} Fi}


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

static void Test_S3461C26()
{
  extern Class_Descriptor cd_S3461C26;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,27)];
    init_test(&cd_S3461C26, buf);
    S3461C26 *dp, &lv = *(dp=new (buf) S3461C26());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,104), "sizeof(S3461C26)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3461C26)");
    /*is_ambiguous_... S3461C26::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*), ABISELECT(80,56), "S3461C26");
    /*is_ambiguous_... S3461C26::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*), ABISELECT(88,64), "S3461C26");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(88,64), "S3461C26");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C18*), ABISELECT(88,64), "S3461C26");
    /*is_ambiguous_... S3461C26::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(88,64), "S3461C26");
    /*is_ambiguous_... S3461C19::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C19*), ABISELECT(88,64), "S3461C26");
    /*is_ambiguous_... S3461C26::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*), ABISELECT(88,64), "S3461C26");
    /*is_ambiguous_... S3461C26::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*), ABISELECT(88,64), "S3461C26");
    /*is_ambiguous_... S3461C26::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*), ABISELECT(88,64), "S3461C26");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(88,64), "S3461C26");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C11*), ABISELECT(88,64), "S3461C26");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C11*), ABISELECT(88,64), "S3461C26");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(88,64), "S3461C26");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(88,64), "S3461C26");
    /*is_ambiguous_... S3461C26::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(72,52), "S3461C26");
    /*is_ambiguous_... S3461C26::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(72,52), "S3461C26");
    /*is_ambiguous_... S3461C26::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C6*), ABISELECT(72,52), "S3461C26");
    /*is_ambiguous_... S3461C26::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C6*), ABISELECT(72,52), "S3461C26");
    /*is_ambiguous_... S3461C19::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C19*), ABISELECT(72,52), "S3461C26");
    /*is_ambiguous_... S3461C26::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*), ABISELECT(96,72), "S3461C26");
    /*is_ambiguous_... S3461C26::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*), ABISELECT(96,72), "S3461C26");
    /*is_ambiguous_... S3461C26::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*), ABISELECT(104,76), "S3461C26");
    /*is_ambiguous_... S3461C19::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C19*), ABISELECT(96,72), "S3461C26");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C19*), ABISELECT(8,4), "S3461C26");
    /*is_ambiguous_... S3461C26::S3461C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*), 0, "S3461C26");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C19*), 0, "S3461C26");
    /*is_ambiguous_... S3461C11::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C11*), 0, "S3461C26");
    /*is_ambiguous_... S3461C26::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*), 0, "S3461C26");
    /*is_ambiguous_... S3461C18::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C18*), 0, "S3461C26");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C19*), ABISELECT(16,12), "S3461C26");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C13*)(S3461C19*), 0, "S3461C26");
    /*is_ambiguous_... S3461C4::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C4*)(S3461C19*), ABISELECT(40,28), "S3461C26");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(32,20), "S3461C26");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(24,16), "S3461C26");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(24,16), "S3461C26");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(24,16), "S3461C26");
    check_base_class_offset(lv, (S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(24,16), "S3461C26");
    check_base_class_offset(lv, (S28C52_nt*)(S3461C4*)(S3461C19*), ABISELECT(24,16), "S3461C26");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(112,80), "S3461C26");
    check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(112,80), "S3461C26");
    /*is_ambiguous_... S3461C12::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C11*), ABISELECT(120,84), "S3461C26");
    check_base_class_offset(lv, (S3461C12*)(S3461C11*), ABISELECT(112,80), "S3461C26");
    check_base_class_offset(lv, (S3461C11*)(S3461C4*)(S3461C19*), ABISELECT(112,80), "S3461C26");
    /*is_ambiguous_... S3461C26::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*), ABISELECT(136,92), "S3461C26");
    /*is_ambiguous_... S3461C26::S3461C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*), ABISELECT(144,100), "S3461C26");
    check_base_class_offset(lv, (S3461C13*)(S3461C4*)(S3461C19*), ABISELECT(128,88), "S3461C26");
    check_base_class_offset(lv, (S3461C4*)(S3461C19*), ABISELECT(24,16), "S3461C26");
    check_base_class_offset(lv, (S3461C19*), 0, "S3461C26");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C18*), ABISELECT(56,40), "S3461C26");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(48,36), "S3461C26");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(48,36), "S3461C26");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(48,36), "S3461C26");
    check_base_class_offset(lv, (S3461C6*)(S3461C18*), ABISELECT(48,36), "S3461C26");
    check_base_class_offset(lv, (S3461C18*), ABISELECT(48,36), "S3461C26");
    check_field_offset(lv, s3461c26f0, ABISELECT(64,48), "S3461C26.s3461c26f0");
    test_class_info(&lv, &cd_S3461C26);
    dp->~S3461C26();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3461C26(Test_S3461C26, "S3461C26", ABISELECT(152,104));

#else // __cplusplus

extern void _ZN8S3461C26C1Ev();
extern void _ZN8S3461C26D1Ev();
Name_Map name_map_S3461C26[] = {
  NSPAIR(_ZN8S3461C26C1Ev),
  NSPAIR(_ZN8S3461C26D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C11;
extern VTBL_ENTRY _ZTI8S3461C11[];
extern  VTBL_ENTRY _ZTV8S3461C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C4;
extern VTBL_ENTRY _ZTI7S3461C4[];
extern  VTBL_ENTRY _ZTV7S3461C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C4[];
extern Class_Descriptor cd_S3461C19;
extern VTBL_ENTRY _ZTI8S3461C19[];
extern  VTBL_ENTRY _ZTV8S3461C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C19[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C18;
extern VTBL_ENTRY _ZTI8S3461C18[];
extern  VTBL_ENTRY _ZTV8S3461C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C18[];
static Base_Class bases_S3461C26[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(88,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(88,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    4, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(72,52), //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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(72,52), //bcp->offset
    34, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(104,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(96,72), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3461C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    15, //immediately_derived
  0, 0},
  {&cd_S3461C13,    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
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    31, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3461C8,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(112,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(112,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(120,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
    26, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(112,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3461C11,    ABISELECT(112,80), //bcp->offset
    50, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(136,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(144,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(128,88), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3461C4,    ABISELECT(24,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3461C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_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
    37, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    35, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S3461C8,    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
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(48,36), //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
    19, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S3461C18,    ABISELECT(48,36), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3461C26[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C26D1Ev();
extern void _ZN8S3461C26D0Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn24_N8S3461C26D1Ev,_ZThn16_N8S3461C26D1Ev)();
extern void ABISELECT(_ZThn24_N8S3461C26D0Ev,_ZThn16_N8S3461C26D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn48_N8S3461C26D1Ev,_ZThn36_N8S3461C26D1Ev)();
extern void ABISELECT(_ZThn48_N8S3461C26D0Ev,_ZThn36_N8S3461C26D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C26D1Ev,_ZTv0_n24_N8S3461C26D1Ev)();
extern void ABISELECT(_ZThn72_N8S3461C26D1Ev,_ZThn52_N8S3461C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C26D0Ev,_ZTv0_n24_N8S3461C26D0Ev)();
extern void ABISELECT(_ZThn72_N8S3461C26D0Ev,_ZThn52_N8S3461C26D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C26D1Ev,_ZTv0_n24_N8S3461C26D1Ev)();
extern void ABISELECT(_ZThn128_N8S3461C26D1Ev,_ZThn88_N8S3461C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C26D0Ev,_ZTv0_n24_N8S3461C26D0Ev)();
extern void ABISELECT(_ZThn128_N8S3461C26D0Ev,_ZThn88_N8S3461C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3461C26[] = {
  ABISELECT(128,88),
  ABISELECT(112,80),
  ABISELECT(88,64),
  ABISELECT(72,52),
  ABISELECT(96,72),
  0,
  0,
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C26D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C26D0Ev,
  ABISELECT(104,72),
  ABISELECT(-24,-16),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(64,48),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C26D1Ev,_ZThn16_N8S3461C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C26D0Ev,_ZThn16_N8S3461C26D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  ABISELECT(-48,-36),
  ABISELECT(40,28),
  ABISELECT(40,28),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S3461C26D1Ev,_ZThn36_N8S3461C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S3461C26D0Ev,_ZThn36_N8S3461C26D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C26D1Ev,_ZTv0_n24_N8S3461C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C26D0Ev,_ZTv0_n24_N8S3461C26D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  0,
  -8,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  0,
  0,
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C26D1Ev,_ZTv0_n24_N8S3461C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C26D0Ev,_ZTv0_n24_N8S3461C26D0Ev),
};
extern VTBL_ENTRY _ZTV8S3461C26[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C19D1Ev();
extern void _ZN8S3461C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C19__8S3461C26[] = {
  ABISELECT(128,88),
  ABISELECT(112,80),
  ABISELECT(88,64),
  ABISELECT(72,52),
  ABISELECT(96,72),
  0,
  0,
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C19D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C19D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C19__8S3461C26[] = {
  0,
  0,
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C4D1Ev();
extern void _ZN7S3461C4D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__8S3461C26[] = {
  ABISELECT(104,72),
  ABISELECT(-24,-16),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C67S3461C48S3461C19__A1__8S3461C26[] = {
  ABISELECT(64,48),
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C67S3461C48S3461C19__A1__8S3461C26[] = {
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C67S3461C48S3461C19__A3__8S3461C26[] = {
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__7S3461C48S3461C19__8S3461C26[] = {
  0,
  0,
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A2__7S3461C48S3461C19__8S3461C26[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev)();
extern void ABISELECT(_ZThn104_N7S3461C4D1Ev,_ZThn72_N7S3461C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev)();
extern void ABISELECT(_ZThn104_N7S3461C4D0Ev,_ZThn72_N7S3461C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__7S3461C48S3461C19__8S3461C26[] = {
  ABISELECT(-104,-72),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C19__8S3461C26[] = {
  0,
  -8,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn72_N8S3461C19D1Ev,_ZThn52_N8S3461C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev)();
extern void ABISELECT(_ZThn72_N8S3461C19D0Ev,_ZThn52_N8S3461C19D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__8S3461C19__8S3461C26[] = {
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn24_N8S3461C19D1Ev,_ZThn16_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn24_N8S3461C19D0Ev,_ZThn16_N8S3461C19D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C4__8S3461C19__8S3461C26[] = {
  ABISELECT(104,72),
  ABISELECT(-24,-16),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(64,48),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C19D1Ev,_ZThn16_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C19D0Ev,_ZThn16_N8S3461C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C19__8S3461C26[] = {
  0,
  0,
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn128_N8S3461C19D1Ev,_ZThn88_N8S3461C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev)();
extern void ABISELECT(_ZThn128_N8S3461C19D0Ev,_ZThn88_N8S3461C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__A1__8S3461C19__8S3461C26[] = {
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C18D1Ev();
extern void _ZN8S3461C18D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C18__8S3461C26[] = {
  ABISELECT(-48,-36),
  ABISELECT(40,28),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C68S3461C18__A2__8S3461C26[] = {
  ABISELECT(40,28),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C68S3461C18__A2__8S3461C26[] = {
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C68S3461C18__A5__8S3461C26[] = {
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C18__8S3461C26[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__8S3461C26[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C6__8S3461C26[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C6__8S3461C26[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C26[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C12__A1__8S3461C26[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A2__8S3461C26[] = {
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C26[] = {
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C11__A1__8S3461C26[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C11__A4__8S3461C26[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C11__8S3461C26[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(112,80),
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C13__A1__8S3461C26[] = {
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C13__A1__8S3461C26[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
static  VTT_ENTRY vtt_S3461C26[] = {
  {&(_ZTV8S3461C26[10]),  10,67},
  {&(_tg__ZTV8S3461C19__8S3461C26[10]),  10,13},
  {&(_tg__ZTV8S3461C138S3461C19__8S3461C26[5]),  5,8},
  {&(_tg__ZTV8S3461C138S3461C19__8S3461C26[5]),  5,8},
  {&(_tg__ZTV7S3461C48S3461C19__8S3461C26[7]),  7,11},
  {&(_tg__ZTV7S3461C67S3461C48S3461C19__A1__8S3461C26[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C67S3461C48S3461C19__A1__8S3461C26[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C67S3461C48S3461C19__A3__8S3461C26[3]),  3,4},
  {&(_tg__ZTV8S3461C11__7S3461C48S3461C19__8S3461C26[6]),  6,8},
  {&(_tg__ZTV7S3461C9__A2__7S3461C48S3461C19__8S3461C26[4]),  4,5},
  {&(_tg__ZTV8S3461C13__7S3461C48S3461C19__8S3461C26[6]),  6,9},
  {&(_tg__ZTV8S3461C12__8S3461C19__8S3461C26[4]),  4,5},
  {&(_tg__ZTV8S3461C19__8S3461C26[10]),  10,13},
  {&(_tg__ZTV7S3461C6__8S3461C19__8S3461C26[7]),  7,11},
  {&(_tg__ZTV7S3461C4__8S3461C19__8S3461C26[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C19__8S3461C26[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A1__8S3461C19__8S3461C26[6]),  6,9},
  {&(_tg__ZTV8S3461C18__8S3461C26[5]),  5,10},
  {&(_tg__ZTV7S3461C68S3461C18__A2__8S3461C26[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C68S3461C18__A2__8S3461C26[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C68S3461C18__A5__8S3461C26[3]),  3,4},
  {&(_tg__ZTV7S3461C9__8S3461C18__8S3461C26[4]),  4,5},
  {&(_ZTV8S3461C26[41]),  41,67},
  {&(_ZTV8S3461C26[49]),  49,67},
  {&(_ZTV8S3461C26[10]),  10,67},
  {&(_ZTV8S3461C26[20]),  20,67},
  {&(_ZTV8S3461C26[56]),  56,67},
  {&(_ZTV8S3461C26[64]),  64,67},
  {&(_ZTV8S3461C26[29]),  29,67},
  {&(_tg__ZTV7S3461C6__8S3461C26[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C6__8S3461C26[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C6__8S3461C26[3]),  3,4},
  {&(_tg__ZTV8S3461C12__8S3461C26[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C12__A1__8S3461C26[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A2__8S3461C26[3]),  3,4},
  {&(_tg__ZTV8S3461C11__8S3461C26[4]),  4,6},
  {&(_tg__ZTV8S3461C128S3461C11__A1__8S3461C26[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C11__A4__8S3461C26[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C11__8S3461C26[4]),  4,5},
  {&(_tg__ZTV8S3461C13__A1__8S3461C26[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C13__A1__8S3461C26[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S3461C26[];
extern  VTBL_ENTRY _ZTV8S3461C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C26[];
static VTBL_ENTRY alt_thunk_names10[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3461C19D0Ev,_ZThn88_N8S3461C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S3461C19D0Ev,_ZThn52_N8S3461C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3461C19D1Ev,_ZThn88_N8S3461C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S3461C19D1Ev,_ZThn52_N8S3461C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S3461C4D0Ev,_ZThn72_N7S3461C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S3461C4D1Ev,_ZThn72_N7S3461C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C26D0Ev,_ZTv0_n24_N8S3461C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3461C26D0Ev,_ZThn88_N8S3461C26D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S3461C26D0Ev,_ZThn52_N8S3461C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C26D1Ev,_ZTv0_n24_N8S3461C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3461C26D1Ev,_ZThn88_N8S3461C26D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S3461C26D1Ev,_ZThn52_N8S3461C26D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3461C26 = {  "S3461C26", // class name
  bases_S3461C26, 39,
  &(vtc_S3461C26[0]), // expected_vtbl_contents
  &(vtt_S3461C26[0]), // expected_vtt_contents
  ABISELECT(152,104), // object size
  NSPAIRA(_ZTI8S3461C26),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S3461C26),67, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3461C26),41, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names10,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3461C27  : S3461C16 , virtual S731C17_nt , virtual S3461C14 {
  int s3461c27f0;
  ~S3461C27(); // tgen
  S3461C27(); // tgen
};
//SIG(-1 S3461C27) C1{ BC2{ BC3{ VBC4{ m FL} BC5{ VBC4 BC6{ VBC4 BC7{ m} v1} BC7} VBC6 v2} BC6 VBC8{ BC9{ BC4 VBC6 BC7 vd} v3} BC5} VBC7 VBC10{ VBC11{ BC6} Fi} Fi}


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

static void Test_S3461C27()
{
  extern Class_Descriptor cd_S3461C27;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S3461C27, buf);
    S3461C27 *dp, &lv = *(dp=new (buf) S3461C27());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S3461C27)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3461C27)");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C11*)(S3461C16*), ABISELECT(40,24), "S3461C27");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C11*)(S3461C16*), ABISELECT(40,24), "S3461C27");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C11*)(S3461C16*), ABISELECT(40,24), "S3461C27");
    /*is_ambiguous_... S3461C27::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*), ABISELECT(40,24), "S3461C27");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C16*), ABISELECT(40,24), "S3461C27");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C16*), ABISELECT(40,24), "S3461C27");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C16*), ABISELECT(40,24), "S3461C27");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*), ABISELECT(40,24), "S3461C27");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C11*)(S3461C16*), 0, "S3461C27");
    check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C11*)(S3461C16*), 0, "S3461C27");
    /*is_ambiguous_... S3461C12::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C11*)(S3461C16*), ABISELECT(8,4), "S3461C27");
    check_base_class_offset(lv, (S3461C12*)(S3461C11*)(S3461C16*), 0, "S3461C27");
    /*is_ambiguous_... S3461C27::S3461C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*), ABISELECT(48,32), "S3461C27");
    /*is_ambiguous_... S3461C11::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C11*)(S3461C16*), ABISELECT(48,32), "S3461C27");
    check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C17*), ABISELECT(48,32), "S3461C27");
    check_base_class_offset(lv, (S3461C11*)(S3461C16*), 0, "S3461C27");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C16*), ABISELECT(16,8), "S3461C27");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C16*), ABISELECT(16,8), "S3461C27");
    /*is_ambiguous_... S3461C13::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C17*), ABISELECT(56,36), "S3461C27");
    /*is_ambiguous_... S3461C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C17*), ABISELECT(64,44), "S3461C27");
    check_base_class_offset(lv, (S3461C13*)(S3461C17*), ABISELECT(48,32), "S3461C27");
    check_base_class_offset(lv, (S3461C17*)(S3461C16*), ABISELECT(48,32), "S3461C27");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C16*), ABISELECT(24,12), "S3461C27");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C16*), ABISELECT(24,12), "S3461C27");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C16*), ABISELECT(32,16), "S3461C27");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C16*), ABISELECT(24,12), "S3461C27");
    check_base_class_offset(lv, (S3461C16*), 0, "S3461C27");
    /*is_ambiguous_... S3461C27::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(65,45), "S3461C27");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*), ABISELECT(72,48), "S3461C27");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*), ABISELECT(72,48), "S3461C27");
    check_base_class_offset(lv, (S3461C8*)(S3461C14*), ABISELECT(72,48), "S3461C27");
    check_base_class_offset(lv, (S3461C14*), ABISELECT(72,48), "S3461C27");
    check_field_offset(lv, s3461c27f0, ABISELECT(36,20), "S3461C27.s3461c27f0");
    test_class_info(&lv, &cd_S3461C27);
    dp->~S3461C27();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3461C27(Test_S3461C27, "S3461C27", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN8S3461C27C1Ev();
extern void _ZN8S3461C27D1Ev();
Name_Map name_map_S3461C27[] = {
  NSPAIR(_ZN8S3461C27C1Ev),
  NSPAIR(_ZN8S3461C27D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C11;
extern VTBL_ENTRY _ZTI8S3461C11[];
extern  VTBL_ENTRY _ZTV8S3461C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C11[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C17;
extern VTBL_ENTRY _ZTI8S3461C17[];
extern  VTBL_ENTRY _ZTV8S3461C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C17[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C16;
extern VTBL_ENTRY _ZTI8S3461C16[];
extern  VTBL_ENTRY _ZTV8S3461C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C16[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C14;
extern VTBL_ENTRY _ZTI8S3461C14[];
extern  VTBL_ENTRY _ZTV8S3461C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C14[];
static Base_Class bases_S3461C27[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3461C12,    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
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3461C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    12, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3461C17,    ABISELECT(48,32), //bcp->offset
    20, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    15, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3461C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    ABISELECT(65,45), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_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
    21, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S3461C14,    ABISELECT(72,48), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3461C27[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN8S3461C27D1Ev();
extern void _ZN8S3461C27D0Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C27D1Ev,_ZTv0_n24_N8S3461C27D1Ev)();
extern void ABISELECT(_ZThn48_N8S3461C27D1Ev,_ZThn32_N8S3461C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C27D0Ev,_ZTv0_n24_N8S3461C27D0Ev)();
extern void ABISELECT(_ZThn48_N8S3461C27D0Ev,_ZThn32_N8S3461C27D0Ev)() __attribute__((weak));
extern void _ZN8S3461C172v4Ev();
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY vtc_S3461C27[] = {
  ABISELECT(72,48),
  ABISELECT(72,48),
  ABISELECT(65,45),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C27[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&_ZN8S3461C27D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C27D0Ev,
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3461C27[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(16,12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3461C27[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  0,
  ABISELECT(-48,-32),
  0,
  0,
  -8,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S3461C27[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C27D1Ev,_ZTv0_n24_N8S3461C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C27D0Ev,_ZTv0_n24_N8S3461C27D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
  0,
  0,
  ABISELECT(-32,-24),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S3461C27[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern VTBL_ENTRY _ZTV8S3461C27[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN8S3461C16D1Ev();
extern void _ZN8S3461C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C16__8S3461C27[] = {
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&_ZN8S3461C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C16D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C118S3461C16__8S3461C27[] = {
  ABISELECT(48,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C118S3461C16__8S3461C27[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C118S3461C16__8S3461C27[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C118S3461C16__8S3461C27[] = {
  0,
  -8,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C16__A2__8S3461C27[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C16__A1__8S3461C27[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C16__A3__8S3461C27[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C16D1Ev,_ZTv0_n24_N8S3461C16D1Ev)();
extern void ABISELECT(_ZThn48_N8S3461C16D1Ev,_ZThn32_N8S3461C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C16D0Ev,_ZTv0_n24_N8S3461C16D0Ev)();
extern void ABISELECT(_ZThn48_N8S3461C16D0Ev,_ZThn32_N8S3461C16D0Ev)() __attribute__((weak));
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C17__8S3461C16__8S3461C27[] = {
  0,
  ABISELECT(-48,-32),
  0,
  0,
  -8,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C16D1Ev,_ZTv0_n24_N8S3461C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C16D0Ev,_ZTv0_n24_N8S3461C16D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A__8S3461C16__8S3461C27[] = {
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__A1__8S3461C16__8S3461C27[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C27[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C17D1Ev();
extern void _ZN8S3461C17D0Ev();
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C17__8S3461C27[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C17[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C17D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C17D0Ev,
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C17__8S3461C27[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C27[] = {
  0,
  0,
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__8S3461C27[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C8__A4__8S3461C27[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
static  VTT_ENTRY vtt_S3461C27[] = {
  {&(_ZTV8S3461C27[8]),  8,37},
  {&(_tg__ZTV8S3461C16__8S3461C27[5]),  5,9},
  {&(_tg__ZTV8S3461C118S3461C16__8S3461C27[4]),  4,6},
  {&(_tg__ZTV8S3461C128S3461C118S3461C16__8S3461C27[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C118S3461C16__8S3461C27[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C118S3461C16__8S3461C27[4]),  4,5},
  {&(_tg__ZTV7S3461C98S3461C16__A2__8S3461C27[3]),  3,4},
  {&(_tg__ZTV8S3461C128S3461C16__A1__8S3461C27[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C16__A3__8S3461C27[3]),  3,4},
  {&(_tg__ZTV8S3461C17__8S3461C16__8S3461C27[7]),  7,11},
  {&(_tg__ZTV7S3461C9__A__8S3461C16__8S3461C27[3]),  3,4},
  {&(_tg__ZTV8S3461C17__8S3461C16__8S3461C27[7]),  7,11},
  {&(_tg__ZTV8S3461C12__A1__8S3461C16__8S3461C27[3]),  3,4},
  {&(_ZTV8S3461C27[27]),  27,37},
  {&(_ZTV8S3461C27[15]),  15,37},
  {&(_ZTV8S3461C27[27]),  27,37},
  {&(_ZTV8S3461C27[19]),  19,37},
  {&(_ZTV8S3461C27[36]),  36,37},
  {&(_ZTV8S3461C27[36]),  36,37},
  {&(_tg__ZTV7S3461C9__A1__8S3461C27[3]),  3,4},
  {&(_tg__ZTV8S3461C17__8S3461C27[5]),  5,9},
  {&(_tg__ZTV8S3461C138S3461C17__8S3461C27[5]),  5,8},
  {&(_tg__ZTV8S3461C138S3461C17__8S3461C27[5]),  5,8},
  {&(_tg__ZTV8S3461C17__8S3461C27[5]),  5,9},
  {&(_tg__ZTV8S3461C14__8S3461C27[5]),  5,6},
  {&(_tg__ZTV8S3461C14__8S3461C27[5]),  5,6},
  {&(_tg__ZTV7S3461C8__8S3461C27[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C8__A4__8S3461C27[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S3461C27[];
extern  VTBL_ENTRY _ZTV8S3461C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C27[];
static VTBL_ENTRY alt_thunk_names11[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C16D0Ev,_ZTv0_n24_N8S3461C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S3461C16D0Ev,_ZThn32_N8S3461C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C16D1Ev,_ZTv0_n24_N8S3461C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S3461C16D1Ev,_ZThn32_N8S3461C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C27D0Ev,_ZTv0_n24_N8S3461C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S3461C27D0Ev,_ZThn32_N8S3461C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C27D1Ev,_ZTv0_n24_N8S3461C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S3461C27D1Ev,_ZThn32_N8S3461C27D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3461C27 = {  "S3461C27", // class name
  bases_S3461C27, 24,
  &(vtc_S3461C27[0]), // expected_vtbl_contents
  &(vtt_S3461C27[0]), // expected_vtt_contents
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI8S3461C27),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S3461C27),37, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3461C27),28, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names11,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3461C21  : S3461C11 , S3461C22 , virtual S3461C26 , S3461C27 {
  virtual  ~S3461C21(); // _ZN8S3461C21D2Ev
  S3461C21(); // tgen
};
//SIG(-1 S3461C21) C1{ BC2{ VBC3{ m FL} BC4{ VBC3 BC5{ VBC3 BC6{ m} v1} BC6} VBC5 v2} BC7{ VBC8{ VBC5 BC9{ BC3 VBC6 BC10{ BC5} vd v3} vd v4} BC3 VBC11{ VBC5 VBC12{ BC6 VBC5 BC13{ BC3 VBC5 BC6 vd} BC3 vd FL} VBC14{ VBC3 VBC4 BC13 VBC9 BC15{ BC3 BC9 BC16{ m} VBC2 VBC13 vd}} BC17{ VBC18{ VBC10 Fi} BC8 VBC13 VBC14 vd Fp[9]} vd} BC13 BC4 vd v5 Fc} VBC19{ VBC9 BC14 BC8 Fi} BC20{ BC21{ BC2 BC5 VBC22{ BC13 v6} BC4} VBC6 VBC18 Fi} vd}


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

static void Test_S3461C21()
{
  extern Class_Descriptor cd_S3461C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(63,82)];
    init_test(&cd_S3461C21, buf);
    S3461C21 *dp, &lv = *(dp=new (buf) S3461C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(496,324), "sizeof(S3461C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3461C21)");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C11*), ABISELECT(104,64), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C11*), ABISELECT(104,64), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(104,64), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*), ABISELECT(104,64), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(104,64), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C19*), ABISELECT(104,64), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*), ABISELECT(104,64), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*), ABISELECT(104,64), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(104,64), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(104,64), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C11*), ABISELECT(104,64), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C11*), ABISELECT(104,64), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(104,64), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*), ABISELECT(104,64), "S3461C21");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(104,64), "S3461C21");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C22*), ABISELECT(104,64), "S3461C21");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C22*), ABISELECT(104,64), "S3461C21");
    /*is_ambiguous_... S3461C19::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C19*)(S3461C26*), ABISELECT(104,64), "S3461C21");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(104,64), "S3461C21");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C26*), ABISELECT(104,64), "S3461C21");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C11*)(S3461C16*)(S3461C27*), ABISELECT(104,64), "S3461C21");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C27*), ABISELECT(104,64), "S3461C21");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C27*), ABISELECT(104,64), "S3461C21");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C16*)(S3461C27*), ABISELECT(104,64), "S3461C21");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C16*)(S3461C27*), ABISELECT(104,64), "S3461C21");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C16*)(S3461C27*), ABISELECT(104,64), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C11*), 0, "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C11*), 0, "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C11*), ABISELECT(8,4), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C11*), 0, "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*), ABISELECT(224,136), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C11*), ABISELECT(224,136), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C18*), ABISELECT(224,136), "S3461C21");
    /*is_ambiguous_... S3461C23::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C23*), ABISELECT(224,136), "S3461C21");
    check_base_class_offset(lv, (S3461C9*)(S3461C24*), ABISELECT(224,136), "S3461C21");
    check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C24*), ABISELECT(224,136), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C19*), ABISELECT(224,136), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C11*), ABISELECT(224,136), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*), ABISELECT(224,136), "S3461C21");
    /*is_ambiguous_... S3461C18::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(224,136), "S3461C21");
    /*is_ambiguous_... S3461C22::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C22*), ABISELECT(224,136), "S3461C21");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C19*)(S3461C26*), ABISELECT(224,136), "S3461C21");
    /*is_ambiguous_... S3461C18::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C18*)(S3461C26*), ABISELECT(224,136), "S3461C21");
    /*is_ambiguous_... S3461C11::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C11*)(S3461C16*)(S3461C27*), ABISELECT(224,136), "S3461C21");
    check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C17*), ABISELECT(224,136), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C11*), 0, "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C18*), ABISELECT(120,76), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C18 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C18*), ABISELECT(128,84), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*), ABISELECT(128,84), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C19 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(128,84), "S3461C21");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(128,84), "S3461C21");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(128,84), "S3461C21");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C18*)(S3461C26*), ABISELECT(128,84), "S3461C21");
    /*is_ambiguous_... S3461C27::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C27*), ABISELECT(128,84), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C18 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(112,72), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(112,72), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(112,72), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C18*), ABISELECT(112,72), "S3461C21");
    /*is_ambiguous_... S3461C22::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C18*)(S3461C22*), ABISELECT(112,72), "S3461C21");
    /*is_ambiguous_... S3461C22::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C22*), ABISELECT(40,24), "S3461C21");
    /*is_ambiguous_... S3461C24::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C24*), ABISELECT(241,149), "S3461C21");
    /*is_ambiguous_... S3461C13::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C24*), ABISELECT(232,140), "S3461C21");
    /*is_ambiguous_... S3461C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C24*), ABISELECT(240,148), "S3461C21");
    check_base_class_offset(lv, (S3461C13*)(S3461C24*), ABISELECT(224,136), "S3461C21");
    /*is_ambiguous_... S3461C24::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C24*), ABISELECT(248,152), "S3461C21");
    check_base_class_offset(lv, (S3461C24*)(S3461C23*), ABISELECT(224,136), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*), ABISELECT(312,204), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*), ABISELECT(312,204), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*), ABISELECT(320,208), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C19*), ABISELECT(312,204), "S3461C21");
    /*is_ambiguous_... S3461C19::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C19*)(S3461C26*), ABISELECT(312,204), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C19*), ABISELECT(272,172), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C19 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C19*), ABISELECT(280,180), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C13*)(S3461C19*), ABISELECT(264,168), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*), ABISELECT(336,216), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(328,212), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(328,212), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C6*), ABISELECT(328,212), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C19*), ABISELECT(328,212), "S3461C21");
    /*is_ambiguous_... S3461C26::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C26*), ABISELECT(328,212), "S3461C21");
    /*is_ambiguous_... S3461C19::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C19*)(S3461C26*), ABISELECT(328,212), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C4*)(S3461C19*), ABISELECT(304,196), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(296,188), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C19 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(288,184), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(288,184), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(288,184), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(288,184), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C19 */ AMB_check_base_class_offset(lv, (S28C52_nt*)(S3461C4*)(S3461C19*), ABISELECT(288,184), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(344,224), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(344,224), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C11*), ABISELECT(352,228), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C11*), ABISELECT(344,224), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C11*)(S3461C4*)(S3461C19*), ABISELECT(344,224), "S3461C21");
    check_base_class_offset(lv, (S3461C11*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(344,224), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*), ABISELECT(368,236), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*), ABISELECT(376,244), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C13*)(S3461C4*)(S3461C19*), ABISELECT(360,232), "S3461C21");
    /*is_ambiguous_... S3461C25::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C13*)(S3461C25*)(S3461C23*), ABISELECT(360,232), "S3461C21");
    check_base_class_offset(lv, (S3461C13*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(360,232), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C4*)(S3461C19*), ABISELECT(288,184), "S3461C21");
    check_base_class_offset(lv, (S3461C19*)(S3461C23*), ABISELECT(264,168), "S3461C21");
    check_base_class_offset(lv, (S3461C19*)(S3461C25*)(S3461C23*), ABISELECT(264,168), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*), ABISELECT(384,248), "S3461C21");
    /*is_ambiguous_... S3461C21::S3461C8 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*), ABISELECT(384,248), "S3461C21");
    check_base_class_offset(lv, (S3461C8*)(S3461C14*), ABISELECT(384,248), "S3461C21");
    check_base_class_offset(lv, (S3461C14*)(S3461C25*)(S3461C23*), ABISELECT(384,248), "S3461C21");
    check_base_class_offset(lv, (S3461C14*)(S3461C27*), ABISELECT(384,248), "S3461C21");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(144,92), "S3461C21");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(136,88), "S3461C21");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(136,88), "S3461C21");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(136,88), "S3461C21");
    check_base_class_offset(lv, (S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(136,88), "S3461C21");
    check_base_class_offset(lv, (S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(136,88), "S3461C21");
    check_base_class_offset(lv, (S3461C25*)(S3461C23*), ABISELECT(136,88), "S3461C21");
    check_base_class_offset(lv, (S3461C23*)(S3461C22*), ABISELECT(136,88), "S3461C21");
    /*is_ambiguous_... S3461C22::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C22*), ABISELECT(24,12), "S3461C21");
    /*is_ambiguous_... S3461C22::S3461C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C22*), ABISELECT(32,20), "S3461C21");
    /*is_ambiguous_... S3461C22::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C13*)(S3461C22*), ABISELECT(16,8), "S3461C21");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C22*), ABISELECT(48,32), "S3461C21");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C22*), ABISELECT(48,32), "S3461C21");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C22*), ABISELECT(56,36), "S3461C21");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C22*), ABISELECT(48,32), "S3461C21");
    check_base_class_offset(lv, (S3461C22*), ABISELECT(16,8), "S3461C21");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C19*)(S3461C26*), ABISELECT(408,260), "S3461C21");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C19*)(S3461C26*), ABISELECT(416,268), "S3461C21");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C13*)(S3461C19*)(S3461C26*), ABISELECT(400,256), "S3461C21");
    /*is_ambiguous_... S3461C4::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(440,284), "S3461C21");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(432,276), "S3461C21");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(424,272), "S3461C21");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(424,272), "S3461C21");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(424,272), "S3461C21");
    check_base_class_offset(lv, (S3461C6*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(424,272), "S3461C21");
    check_base_class_offset(lv, (S28C52_nt*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(424,272), "S3461C21");
    check_base_class_offset(lv, (S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(424,272), "S3461C21");
    check_base_class_offset(lv, (S3461C19*)(S3461C26*), ABISELECT(400,256), "S3461C21");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C18*)(S3461C26*), ABISELECT(456,296), "S3461C21");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C26*), ABISELECT(448,292), "S3461C21");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C26*), ABISELECT(448,292), "S3461C21");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C18*)(S3461C26*), ABISELECT(448,292), "S3461C21");
    check_base_class_offset(lv, (S3461C6*)(S3461C18*)(S3461C26*), ABISELECT(448,292), "S3461C21");
    check_base_class_offset(lv, (S3461C18*)(S3461C26*), ABISELECT(448,292), "S3461C21");
    check_base_class_offset(lv, (S3461C26*), ABISELECT(400,256), "S3461C21");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C27*), ABISELECT(64,40), "S3461C21");
    check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C27*), ABISELECT(64,40), "S3461C21");
    /*is_ambiguous_... S3461C12::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C27*), ABISELECT(72,44), "S3461C21");
    check_base_class_offset(lv, (S3461C12*)(S3461C11*)(S3461C16*)(S3461C27*), ABISELECT(64,40), "S3461C21");
    check_base_class_offset(lv, (S3461C11*)(S3461C16*)(S3461C27*), ABISELECT(64,40), "S3461C21");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C16*)(S3461C27*), ABISELECT(80,48), "S3461C21");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C16*)(S3461C27*), ABISELECT(80,48), "S3461C21");
    /*is_ambiguous_... S3461C13::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C17*), ABISELECT(480,312), "S3461C21");
    /*is_ambiguous_... S3461C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C17*), ABISELECT(488,320), "S3461C21");
    check_base_class_offset(lv, (S3461C13*)(S3461C17*), ABISELECT(472,308), "S3461C21");
    check_base_class_offset(lv, (S3461C17*)(S3461C16*)(S3461C27*), ABISELECT(472,308), "S3461C21");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C16*)(S3461C27*), ABISELECT(88,52), "S3461C21");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C16*)(S3461C27*), ABISELECT(88,52), "S3461C21");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C16*)(S3461C27*), ABISELECT(96,56), "S3461C21");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C16*)(S3461C27*), ABISELECT(88,52), "S3461C21");
    check_base_class_offset(lv, (S3461C16*)(S3461C27*), ABISELECT(64,40), "S3461C21");
    check_base_class_offset(lv, (S3461C27*), ABISELECT(64,40), "S3461C21");
    test_class_info(&lv, &cd_S3461C21);
    dp->~S3461C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3461C21(Test_S3461C21, "S3461C21", ABISELECT(496,324));

#else // __cplusplus

extern void _ZN8S3461C21C1Ev();
extern void _ZN8S3461C21D2Ev();
Name_Map name_map_S3461C21[] = {
  NSPAIR(_ZN8S3461C21C1Ev),
  NSPAIR(_ZN8S3461C21D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C11;
extern VTBL_ENTRY _ZTI8S3461C11[];
extern  VTBL_ENTRY _ZTV8S3461C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C18;
extern VTBL_ENTRY _ZTI8S3461C18[];
extern  VTBL_ENTRY _ZTV8S3461C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C18[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C24;
extern VTBL_ENTRY _ZTI8S3461C24[];
extern  VTBL_ENTRY _ZTV8S3461C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C24[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C11;
extern VTBL_ENTRY _ZTI8S3461C11[];
extern  VTBL_ENTRY _ZTV8S3461C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C4;
extern VTBL_ENTRY _ZTI7S3461C4[];
extern  VTBL_ENTRY _ZTV7S3461C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C4[];
extern Class_Descriptor cd_S3461C19;
extern VTBL_ENTRY _ZTI8S3461C19[];
extern  VTBL_ENTRY _ZTV8S3461C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C19[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C14;
extern VTBL_ENTRY _ZTI8S3461C14[];
extern  VTBL_ENTRY _ZTV8S3461C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C14[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C18;
extern VTBL_ENTRY _ZTI8S3461C18[];
extern  VTBL_ENTRY _ZTV8S3461C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C18[];
extern Class_Descriptor cd_S3461C25;
extern VTBL_ENTRY _ZTI8S3461C25[];
extern  VTBL_ENTRY _ZTV8S3461C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C25[];
extern Class_Descriptor cd_S3461C23;
extern VTBL_ENTRY _ZTI8S3461C23[];
extern  VTBL_ENTRY _ZTV8S3461C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C23[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C22;
extern VTBL_ENTRY _ZTI8S3461C22[];
extern  VTBL_ENTRY _ZTV8S3461C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C22[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S3461C4;
extern VTBL_ENTRY _ZTI7S3461C4[];
extern  VTBL_ENTRY _ZTV7S3461C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C4[];
extern Class_Descriptor cd_S3461C19;
extern VTBL_ENTRY _ZTI8S3461C19[];
extern  VTBL_ENTRY _ZTV8S3461C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C19[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C18;
extern VTBL_ENTRY _ZTI8S3461C18[];
extern  VTBL_ENTRY _ZTV8S3461C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C18[];
extern Class_Descriptor cd_S3461C26;
extern VTBL_ENTRY _ZTI8S3461C26[];
extern  VTBL_ENTRY _ZTV8S3461C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C26[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C11;
extern VTBL_ENTRY _ZTI8S3461C11[];
extern  VTBL_ENTRY _ZTV8S3461C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C11[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C17;
extern VTBL_ENTRY _ZTI8S3461C17[];
extern  VTBL_ENTRY _ZTV8S3461C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C17[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C16;
extern VTBL_ENTRY _ZTI8S3461C16[];
extern  VTBL_ENTRY _ZTV8S3461C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C16[];
extern Class_Descriptor cd_S3461C27;
extern VTBL_ENTRY _ZTI8S3461C27[];
extern  VTBL_ENTRY _ZTV8S3461C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C27[];
static Base_Class bases_S3461C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    45, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3461C12,    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
    46, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(224,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(224,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3461C11,    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
    47, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_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
    13, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    11, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(112,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(112,72), //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
    3, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(112,72), //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
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S3461C18,    ABISELECT(112,72), //bcp->offset
    65, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    70, //immediately_derived
  0, 1},
  {&cd_S3461C5_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
    70, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(241,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
    21, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    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
    19, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(240,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3461C13,    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
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    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
    21, //immediately_derived
  0, 0},
  {&cd_S3461C24,    ABISELECT(224,136), //bcp->offset
    101, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    62, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(312,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
    23, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(312,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(320,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(312,204), //bcp->offset
    136, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(272,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
    28, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(280,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
    28, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(264,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(336,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
    33, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(328,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
    31, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(328,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(328,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(328,212), //bcp->offset
    141, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(296,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
    39, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(288,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(288,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(288,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(288,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(288,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(344,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
    42, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(344,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(352,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
    44, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(344,224), //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
    14, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S3461C11,    ABISELECT(344,224), //bcp->offset
    152, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    121, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(368,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(376,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(360,232), //bcp->offset
    160, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    125, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S3461C4,    ABISELECT(288,184), //bcp->offset
    125, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S3461C19,    ABISELECT(264,168), //bcp->offset
    110, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    61, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(384,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
    52, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(384,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(384,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    129, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    54, //immediately_derived
  0, 1},
  {&cd_S3461C14,    ABISELECT(384,248), //bcp->offset
    169, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    61, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    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
    59, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    57, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S3461C8,    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
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(136,88), //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
    28, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S3461C18,    ABISELECT(136,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S3461C25,    ABISELECT(136,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S3461C23,    ABISELECT(136,88), //bcp->offset
    79, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    70, //immediately_derived
  0, 1},
  {&cd_S3461C5_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
    65, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    65, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    69, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(48,32), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S3461C22,    ABISELECT(16,8), //bcp->offset
    21, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(408,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
    73, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(416,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(400,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(440,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
    81, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(432,276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(424,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
    77, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(424,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    138, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(424,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    137, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(424,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    136, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    81, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(424,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
    81, //immediately_derived
  0, 0},
  {&cd_S3461C4,    ABISELECT(424,272), //bcp->offset
    191, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    135, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S3461C19,    ABISELECT(400,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    132, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    89, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(456,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    87, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(448,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
    85, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(448,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    151, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    86, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(448,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    150, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    87, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(448,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
    40, //init_seq
    88, //immediately_derived
  0, 0},
  {&cd_S3461C18,    ABISELECT(448,292), //bcp->offset
    202, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    148, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    89, //immediately_derived
  0, 0},
  {&cd_S3461C26,    ABISELECT(400,256), //bcp->offset
    175, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    131, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_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
    91, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    93, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    94, //immediately_derived
  0, 0},
  {&cd_S3461C11,    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
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    54, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    96, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(80,48), //bcp->offset
    57, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(480,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
    99, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(488,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
    99, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(472,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    161, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    100, //immediately_derived
  0, 0},
  {&cd_S3461C17,    ABISELECT(472,308), //bcp->offset
    212, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    160, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    105, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    102, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    104, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    104, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(88,52), //bcp->offset
    61, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    57, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S3461C16,    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
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    58, //init_seq
    106, //immediately_derived
  0, 0},
  {&cd_S3461C27,    ABISELECT(64,40), //bcp->offset
    45, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    59, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3461C21[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN8S3461C21D1Ev();
extern void _ZN8S3461C21D0Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn16_N8S3461C21D1Ev,_ZThn8_N8S3461C21D1Ev)();
extern void ABISELECT(_ZThn16_N8S3461C21D0Ev,_ZThn8_N8S3461C21D0Ev)();
extern void _ZN8S3461C222v6Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void ABISELECT(_ZThn64_N8S3461C21D1Ev,_ZThn40_N8S3461C21D1Ev)();
extern void ABISELECT(_ZThn64_N8S3461C21D0Ev,_ZThn40_N8S3461C21D0Ev)();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S3461C21D1Ev,_ZTv0_n28_N8S3461C21D1Ev)();
extern void ABISELECT(_ZThn112_N8S3461C21D1Ev,_ZThn72_N8S3461C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3461C21D0Ev,_ZTv0_n28_N8S3461C21D0Ev)();
extern void ABISELECT(_ZThn112_N8S3461C21D0Ev,_ZThn72_N8S3461C21D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S3461C21D1Ev,_ZTv0_n60_N8S3461C21D1Ev)();
extern void ABISELECT(_ZThn136_N8S3461C21D1Ev,_ZThn88_N8S3461C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S3461C21D0Ev,_ZTv0_n60_N8S3461C21D0Ev)();
extern void ABISELECT(_ZThn136_N8S3461C21D0Ev,_ZThn88_N8S3461C21D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev)();
extern void ABISELECT(_ZThn224_N8S3461C21D1Ev,_ZThn136_N8S3461C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev)();
extern void ABISELECT(_ZThn224_N8S3461C21D0Ev,_ZThn136_N8S3461C21D0Ev)() __attribute__((weak));
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C21D1Ev,_ZTv0_n44_N8S3461C21D1Ev)();
extern void ABISELECT(_ZThn264_N8S3461C21D1Ev,_ZThn168_N8S3461C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S3461C21D0Ev,_ZTv0_n44_N8S3461C21D0Ev)();
extern void ABISELECT(_ZThn264_N8S3461C21D0Ev,_ZThn168_N8S3461C21D0Ev)() __attribute__((weak));
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C21D1Ev,_ZTvn16_n44_N8S3461C21D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C21D0Ev,_ZTvn16_n44_N8S3461C21D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev)();
extern void ABISELECT(_ZThn328_N8S3461C21D1Ev,_ZThn212_N8S3461C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev)();
extern void ABISELECT(_ZThn328_N8S3461C21D0Ev,_ZThn212_N8S3461C21D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev)();
extern void ABISELECT(_ZThn360_N8S3461C21D1Ev,_ZThn232_N8S3461C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev)();
extern void ABISELECT(_ZThn360_N8S3461C21D0Ev,_ZThn232_N8S3461C21D0Ev)() __attribute__((weak));
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C21D1Ev,_ZTv0_n44_N8S3461C21D1Ev)();
extern void ABISELECT(_ZThn400_N8S3461C21D1Ev,_ZThn256_N8S3461C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S3461C21D0Ev,_ZTv0_n44_N8S3461C21D0Ev)();
extern void ABISELECT(_ZThn400_N8S3461C21D0Ev,_ZThn256_N8S3461C21D0Ev)() __attribute__((weak));
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C21D1Ev,_ZTvn16_n44_N8S3461C21D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C21D0Ev,_ZTvn16_n44_N8S3461C21D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn48_n88_N8S3461C21D1Ev,_ZTvn36_n44_N8S3461C21D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N8S3461C21D0Ev,_ZTvn36_n44_N8S3461C21D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev)();
extern void ABISELECT(_ZThn472_N8S3461C21D1Ev,_ZThn308_N8S3461C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev)();
extern void ABISELECT(_ZThn472_N8S3461C21D0Ev,_ZThn308_N8S3461C21D0Ev)() __attribute__((weak));
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY vtc_S3461C21[] = {
  ABISELECT(472,308),
  ABISELECT(400,256),
  ABISELECT(384,248),
  ABISELECT(384,248),
  ABISELECT(360,232),
  ABISELECT(344,224),
  ABISELECT(328,212),
  ABISELECT(312,204),
  ABISELECT(264,168),
  ABISELECT(224,136),
  ABISELECT(136,88),
  ABISELECT(128,84),
  ABISELECT(112,72),
  ABISELECT(224,136),
  ABISELECT(104,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&_ZN8S3461C21D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C21D0Ev,
  ABISELECT(368,240),
  ABISELECT(368,240),
  ABISELECT(344,224),
  ABISELECT(328,216),
  ABISELECT(312,204),
  ABISELECT(296,196),
  ABISELECT(248,160),
  ABISELECT(208,128),
  ABISELECT(120,80),
  ABISELECT(112,76),
  ABISELECT(96,64),
  ABISELECT(208,128),
  ABISELECT(208,128),
  ABISELECT(88,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3461C21D1Ev,_ZThn8_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3461C21D0Ev,_ZThn8_N8S3461C21D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C222v6Ev,
  ABISELECT(56,32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(320,208),
  ABISELECT(320,208),
  ABISELECT(64,44),
  ABISELECT(408,268),
  ABISELECT(160,96),
  ABISELECT(40,24),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3461C21D1Ev,_ZThn40_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3461C21D0Ev,_ZThn40_N8S3461C21D0Ev),
  ABISELECT(24,16),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(16,12),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  0,
  0,
  ABISELECT(-112,-72),
  0,
  ABISELECT(112,64),
  ABISELECT(16,12),
  -8,
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3461C21D1Ev,_ZTv0_n28_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3461C21D0Ev,_ZTv0_n28_N8S3461C21D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
  0,
  0,
  ABISELECT(-136,-88),
  0,
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-32,-24),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S3461C21D1Ev,_ZTv0_n60_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S3461C21D0Ev,_ZTv0_n60_N8S3461C21D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
  ABISELECT(-224,-136),
  0,
  0,
  ABISELECT(-120,-72),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev),
  ABISELECT(24,16),
  ABISELECT(-264,-168),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-160,-104),
  ABISELECT(-264,-168),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C21D1Ev,_ZTv0_n44_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C21D0Ev,_ZTv0_n44_N8S3461C21D0Ev),
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-184,-120),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C21D1Ev,_ZTvn16_n44_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C21D0Ev,_ZTvn16_n44_N8S3461C21D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  0,
  ABISELECT(-208,-140),
  ABISELECT(-312,-204),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  0,
  ABISELECT(-328,-212),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  ABISELECT(-328,-212),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(-344,-224),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  ABISELECT(-360,-232),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(-360,-232),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev),
  0,
  0,
  ABISELECT(-280,-184),
  ABISELECT(-384,-248),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(48,36),
  ABISELECT(24,16),
  ABISELECT(-400,-256),
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(-272,-172),
  ABISELECT(-72,-44),
  ABISELECT(-88,-52),
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  ABISELECT(-296,-192),
  ABISELECT(-400,-256),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C21D1Ev,_ZTv0_n44_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C21D0Ev,_ZTv0_n44_N8S3461C21D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-200,-136),
  ABISELECT(-80,-48),
  ABISELECT(-296,-188),
  ABISELECT(-320,-208),
  ABISELECT(-424,-272),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C21D1Ev,_ZTvn16_n44_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C21D0Ev,_ZTvn16_n44_N8S3461C21D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  ABISELECT(-224,-156),
  ABISELECT(-320,-208),
  ABISELECT(-344,-228),
  ABISELECT(-448,-292),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S3461C21D1Ev,_ZTvn36_n44_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S3461C21D0Ev,_ZTvn36_n44_N8S3461C21D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
  0,
  ABISELECT(-472,-308),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-368,-244),
  ABISELECT(-472,-308),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern VTBL_ENTRY _ZTV8S3461C21[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__A__8S3461C21[] = {
  ABISELECT(224,136),
  ABISELECT(104,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C11__8S3461C21[] = {
  ABISELECT(104,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C11__8S3461C21[] = {
  ABISELECT(104,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C11__A__8S3461C21[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C22D1Ev();
extern void _ZN8S3461C22D0Ev();
extern void _ZN8S3461C222v6Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C22__8S3461C21[] = {
  ABISELECT(368,240),
  ABISELECT(368,240),
  ABISELECT(344,224),
  ABISELECT(328,216),
  ABISELECT(312,204),
  ABISELECT(296,196),
  ABISELECT(248,160),
  ABISELECT(208,128),
  ABISELECT(120,80),
  ABISELECT(112,76),
  ABISELECT(96,64),
  ABISELECT(208,128),
  ABISELECT(208,128),
  ABISELECT(88,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C22D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C22D0Ev,
  (VTBL_ENTRY)&_ZN8S3461C222v6Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C22__A3__8S3461C21[] = {
  ABISELECT(208,128),
  ABISELECT(208,128),
  ABISELECT(88,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C138S3461C22__A3__8S3461C21[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C22__A3__8S3461C21[] = {
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C22__A9__8S3461C21[] = {
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S3461C22D1Ev,_ZTv0_n28_N8S3461C22D1Ev)();
extern void ABISELECT(_ZThn96_N8S3461C22D1Ev,_ZThn64_N8S3461C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3461C22D0Ev,_ZTv0_n28_N8S3461C22D0Ev)();
extern void ABISELECT(_ZThn96_N8S3461C22D0Ev,_ZThn64_N8S3461C22D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C18__8S3461C22__8S3461C21[] = {
  0,
  0,
  ABISELECT(-96,-64),
  0,
  ABISELECT(112,64),
  ABISELECT(16,12),
  -8,
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3461C22D1Ev,_ZTv0_n28_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3461C22D0Ev,_ZTv0_n28_N8S3461C22D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev)();
extern void ABISELECT(_ZThn208_N8S3461C22D1Ev,_ZThn128_N8S3461C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev)();
extern void ABISELECT(_ZThn208_N8S3461C22D0Ev,_ZThn128_N8S3461C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C24__8S3461C22__8S3461C21[] = {
  ABISELECT(-208,-128),
  0,
  0,
  ABISELECT(-120,-72),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S3461C22D1Ev,_ZTv0_n60_N8S3461C22D1Ev)();
extern void ABISELECT(_ZThn120_N8S3461C22D1Ev,_ZThn80_N8S3461C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S3461C22D0Ev,_ZTv0_n60_N8S3461C22D0Ev)();
extern void ABISELECT(_ZThn120_N8S3461C22D0Ev,_ZThn80_N8S3461C22D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C23__8S3461C22__8S3461C21[] = {
  0,
  0,
  ABISELECT(-120,-80),
  0,
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-32,-24),
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S3461C22D1Ev,_ZTv0_n60_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S3461C22D0Ev,_ZTv0_n60_N8S3461C22D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C22D1Ev,_ZTv0_n44_N8S3461C22D1Ev)();
extern void ABISELECT(_ZThn248_N8S3461C22D1Ev,_ZThn160_N8S3461C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S3461C22D0Ev,_ZTv0_n44_N8S3461C22D0Ev)();
extern void ABISELECT(_ZThn248_N8S3461C22D0Ev,_ZThn160_N8S3461C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C19__8S3461C22__8S3461C21[] = {
  ABISELECT(24,16),
  ABISELECT(-248,-160),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-160,-104),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C22D1Ev,_ZTv0_n44_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C22D0Ev,_ZTv0_n44_N8S3461C22D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C22__8S3461C21[] = {
  0,
  ABISELECT(-208,-140),
  ABISELECT(-296,-196),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev)();
extern void ABISELECT(_ZThn312_N8S3461C22D1Ev,_ZThn204_N8S3461C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev)();
extern void ABISELECT(_ZThn312_N8S3461C22D0Ev,_ZThn204_N8S3461C22D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__A1__8S3461C22__8S3461C21[] = {
  0,
  ABISELECT(-312,-204),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  ABISELECT(-312,-204),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C22D1Ev,_ZTvn16_n44_N8S3461C22D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C22D0Ev,_ZTvn16_n44_N8S3461C22D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__8S3461C22__8S3461C21[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-184,-120),
  ABISELECT(-272,-176),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C22D1Ev,_ZTvn16_n44_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C22D0Ev,_ZTvn16_n44_N8S3461C22D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C22__8S3461C21[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(-328,-216),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev)();
extern void ABISELECT(_ZThn344_N8S3461C22D1Ev,_ZThn224_N8S3461C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev)();
extern void ABISELECT(_ZThn344_N8S3461C22D0Ev,_ZThn224_N8S3461C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__A2__8S3461C22__8S3461C21[] = {
  ABISELECT(-344,-224),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(-344,-224),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C22__8S3461C21[] = {
  0,
  0,
  ABISELECT(-280,-184),
  ABISELECT(-368,-240),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__A__8S3461C22__8S3461C21[] = {
  ABISELECT(56,32),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN8S3461C27D1Ev();
extern void _ZN8S3461C27D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C27__8S3461C21[] = {
  ABISELECT(320,208),
  ABISELECT(320,208),
  ABISELECT(64,44),
  ABISELECT(408,268),
  ABISELECT(160,96),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C27[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&_ZN8S3461C27D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C27D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN8S3461C16D1Ev();
extern void _ZN8S3461C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C168S3461C27__8S3461C21[] = {
  ABISELECT(408,268),
  ABISELECT(160,96),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&_ZN8S3461C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C16D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C118S3461C168S3461C27__A2__8S3461C21[] = {
  ABISELECT(160,96),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C118S3461C168S3461C27__A4__8S3461C21[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C118S3461C168S3461C27__A12__8S3461C21[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C118S3461C168S3461C27__A2__8S3461C21[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C168S3461C27__A13__8S3461C21[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C168S3461C27__A5__8S3461C21[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C168S3461C27__A14__8S3461C21[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C168S3461C27__8S3461C21[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A__8S3461C168S3461C27__8S3461C21[] = {
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C16D1Ev,_ZTv0_n24_N8S3461C16D1Ev)();
extern void ABISELECT(_ZThn408_N8S3461C16D1Ev,_ZThn268_N8S3461C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C16D0Ev,_ZTv0_n24_N8S3461C16D0Ev)();
extern void ABISELECT(_ZThn408_N8S3461C16D0Ev,_ZThn268_N8S3461C16D0Ev)() __attribute__((weak));
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C17__8S3461C168S3461C27__8S3461C21[] = {
  0,
  ABISELECT(-408,-268),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-368,-244),
  ABISELECT(-408,-268),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C16D1Ev,_ZTv0_n24_N8S3461C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C16D0Ev,_ZTv0_n24_N8S3461C16D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__A1__8S3461C168S3461C27__8S3461C21[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C27__8S3461C21[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S3461C27[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C16__A2__8S3461C27__8S3461C21[] = {
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3461C27[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C27D1Ev,_ZTv0_n24_N8S3461C27D1Ev)();
extern void ABISELECT(_ZThn408_N8S3461C27D1Ev,_ZThn268_N8S3461C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C27D0Ev,_ZTv0_n24_N8S3461C27D0Ev)();
extern void ABISELECT(_ZThn408_N8S3461C27D0Ev,_ZThn268_N8S3461C27D0Ev)() __attribute__((weak));
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C17__8S3461C27__8S3461C21[] = {
  0,
  ABISELECT(-408,-268),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-368,-244),
  ABISELECT(-408,-268),
  (VTBL_ENTRY)&(_ZTI8S3461C27[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C27D1Ev,_ZTv0_n24_N8S3461C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C27D0Ev,_ZTv0_n24_N8S3461C27D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C16__A1__8S3461C27__8S3461C21[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3461C27[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C27__8S3461C21[] = {
  0,
  0,
  ABISELECT(-280,-184),
  ABISELECT(-320,-208),
  (VTBL_ENTRY)&(_ZTI8S3461C27[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C21[] = {
  ABISELECT(-120,-72),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C18D1Ev();
extern void _ZN8S3461C18D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C18__8S3461C21[] = {
  ABISELECT(112,64),
  ABISELECT(16,12),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C68S3461C18__8S3461C21[] = {
  ABISELECT(16,12),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C68S3461C18__8S3461C21[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C68S3461C18__A2__8S3461C21[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C18__8S3461C21[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C23D1Ev();
extern void _ZN8S3461C23D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C23__8S3461C21[] = {
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C23D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C23D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C25D1Ev();
extern void _ZN8S3461C25D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C258S3461C23__8S3461C21[] = {
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C25D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C25D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C18D1Ev();
extern void _ZN8S3461C18D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C188S3461C258S3461C23__A1__8S3461C21[] = {
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C68S3461C188S3461C258S3461C23__A3__8S3461C21[] = {
  ABISELECT(-8,-4),
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C68S3461C188S3461C258S3461C23__A4__8S3461C21[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C68S3461C188S3461C258S3461C23__A8__8S3461C21[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C188S3461C258S3461C23__A1__8S3461C21[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C258S3461C23__8S3461C21[] = {
  0,
  0,
  ABISELECT(-280,-184),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C258S3461C23__8S3461C21[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev)();
extern void ABISELECT(_ZThn224_N8S3461C25D1Ev,_ZThn144_N8S3461C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev)();
extern void ABISELECT(_ZThn224_N8S3461C25D0Ev,_ZThn144_N8S3461C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__8S3461C258S3461C23__8S3461C21[] = {
  ABISELECT(-224,-144),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C25D1Ev,_ZTv0_n44_N8S3461C25D1Ev)();
extern void ABISELECT(_ZThn128_N8S3461C25D1Ev,_ZThn80_N8S3461C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S3461C25D0Ev,_ZTv0_n44_N8S3461C25D0Ev)();
extern void ABISELECT(_ZThn128_N8S3461C25D0Ev,_ZThn80_N8S3461C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C19__8S3461C258S3461C23__8S3461C21[] = {
  ABISELECT(24,16),
  ABISELECT(-128,-80),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-160,-104),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C25D1Ev,_ZTv0_n44_N8S3461C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C25D0Ev,_ZTv0_n44_N8S3461C25D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C258S3461C23__8S3461C21[] = {
  0,
  ABISELECT(-208,-140),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev)();
extern void ABISELECT(_ZThn192_N8S3461C25D1Ev,_ZThn124_N8S3461C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev)();
extern void ABISELECT(_ZThn192_N8S3461C25D0Ev,_ZThn124_N8S3461C25D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__A1__8S3461C258S3461C23__8S3461C21[] = {
  0,
  ABISELECT(-192,-124),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C25D1Ev,_ZTvn16_n44_N8S3461C25D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C25D0Ev,_ZTvn16_n44_N8S3461C25D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__8S3461C258S3461C23__8S3461C21[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-184,-120),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C25D1Ev,_ZTvn16_n44_N8S3461C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C25D0Ev,_ZTvn16_n44_N8S3461C25D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C258S3461C23__8S3461C21[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev)();
extern void ABISELECT(_ZThn88_N8S3461C23D1Ev,_ZThn48_N8S3461C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev)();
extern void ABISELECT(_ZThn88_N8S3461C23D0Ev,_ZThn48_N8S3461C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C24__8S3461C23__8S3461C21[] = {
  ABISELECT(-88,-48),
  0,
  0,
  ABISELECT(-120,-72),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C23D1Ev,_ZTv0_n44_N8S3461C23D1Ev)();
extern void ABISELECT(_ZThn128_N8S3461C23D1Ev,_ZThn80_N8S3461C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S3461C23D0Ev,_ZTv0_n44_N8S3461C23D0Ev)();
extern void ABISELECT(_ZThn128_N8S3461C23D0Ev,_ZThn80_N8S3461C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C19__8S3461C23__8S3461C21[] = {
  ABISELECT(24,16),
  ABISELECT(-128,-80),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-160,-104),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C23D1Ev,_ZTv0_n44_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C23D0Ev,_ZTv0_n44_N8S3461C23D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C23__8S3461C21[] = {
  0,
  ABISELECT(-208,-140),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev)();
extern void ABISELECT(_ZThn192_N8S3461C23D1Ev,_ZThn124_N8S3461C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev)();
extern void ABISELECT(_ZThn192_N8S3461C23D0Ev,_ZThn124_N8S3461C23D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__8S3461C23__8S3461C21[] = {
  0,
  ABISELECT(-192,-124),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C23D1Ev,_ZTvn16_n44_N8S3461C23D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C23D0Ev,_ZTvn16_n44_N8S3461C23D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__8S3461C23__8S3461C21[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-184,-120),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C23D1Ev,_ZTvn16_n44_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C23D0Ev,_ZTvn16_n44_N8S3461C23D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C23__8S3461C21[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev)();
extern void ABISELECT(_ZThn224_N8S3461C23D1Ev,_ZThn144_N8S3461C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev)();
extern void ABISELECT(_ZThn224_N8S3461C23D0Ev,_ZThn144_N8S3461C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__A2__8S3461C23__8S3461C21[] = {
  ABISELECT(-224,-144),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C23__8S3461C21[] = {
  0,
  0,
  ABISELECT(-280,-184),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C24D1Ev();
extern void _ZN8S3461C24D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C24__8S3461C21[] = {
  0,
  0,
  ABISELECT(-120,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C24[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C24D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C24D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C24__8S3461C21[] = {
  0,
  0,
  ABISELECT(-120,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C19D1Ev();
extern void _ZN8S3461C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C19__8S3461C21[] = {
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C19D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C19D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C19__A1__8S3461C21[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C138S3461C19__A1__8S3461C21[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C4D1Ev();
extern void _ZN7S3461C4D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__8S3461C21[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-184,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C67S3461C48S3461C19__A2__8S3461C21[] = {
  ABISELECT(-160,-100),
  ABISELECT(-184,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C67S3461C48S3461C19__A2__8S3461C21[] = {
  ABISELECT(-184,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C67S3461C48S3461C19__A5__8S3461C21[] = {
  ABISELECT(-184,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__7S3461C48S3461C19__8S3461C21[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A2__7S3461C48S3461C19__8S3461C21[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(64,48),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev)();
extern void ABISELECT(_ZThn72_N7S3461C4D1Ev,_ZThn48_N7S3461C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev)();
extern void ABISELECT(_ZThn72_N7S3461C4D0Ev,_ZThn48_N7S3461C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__7S3461C48S3461C19__8S3461C21[] = {
  ABISELECT(-72,-48),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C19__8S3461C21[] = {
  0,
  ABISELECT(-208,-140),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C19__8S3461C21[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn64_N8S3461C19D1Ev,_ZThn44_N8S3461C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev)();
extern void ABISELECT(_ZThn64_N8S3461C19D0Ev,_ZThn44_N8S3461C19D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__8S3461C19__8S3461C21[] = {
  0,
  ABISELECT(-64,-44),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn24_N8S3461C19D1Ev,_ZThn16_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn24_N8S3461C19D0Ev,_ZThn16_N8S3461C19D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C4__8S3461C19__8S3461C21[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-184,-120),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C19D1Ev,_ZThn16_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C19D0Ev,_ZThn16_N8S3461C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C19__8S3461C21[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn96_N8S3461C19D1Ev,_ZThn64_N8S3461C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev)();
extern void ABISELECT(_ZThn96_N8S3461C19D0Ev,_ZThn64_N8S3461C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__A1__8S3461C19__8S3461C21[] = {
  ABISELECT(-96,-64),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__A1__8S3461C21[] = {
  ABISELECT(-208,-140),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C12__A3__8S3461C21[] = {
  ABISELECT(-208,-140),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__A1__8S3461C21[] = {
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C6__A1__8S3461C21[] = {
  ABISELECT(-224,-148),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C6__A4__8S3461C21[] = {
  ABISELECT(-224,-148),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__A1__8S3461C21[] = {
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C11__A2__8S3461C21[] = {
  ABISELECT(-240,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C11__A6__8S3461C21[] = {
  ABISELECT(-240,-160),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C11__A1__8S3461C21[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C13__A2__8S3461C21[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C13__A2__8S3461C21[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(136,96),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C21[] = {
  0,
  0,
  ABISELECT(-280,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__A3__8S3461C21[] = {
  ABISELECT(-280,-184),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C8__A7__8S3461C21[] = {
  ABISELECT(-280,-184),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C26D1Ev();
extern void _ZN8S3461C26D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C26__8S3461C21[] = {
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(-272,-172),
  ABISELECT(-72,-44),
  ABISELECT(-88,-52),
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  ABISELECT(-296,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C26D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C26D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C19D1Ev();
extern void _ZN8S3461C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C198S3461C26__A1__8S3461C21[] = {
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(-272,-172),
  ABISELECT(-72,-44),
  ABISELECT(-88,-52),
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  ABISELECT(-296,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C19D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C19D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C198S3461C26__A4__8S3461C21[] = {
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  ABISELECT(-296,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C138S3461C198S3461C26__A4__8S3461C21[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(176,120),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C4D1Ev();
extern void _ZN7S3461C4D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C198S3461C26__A1__8S3461C21[] = {
  ABISELECT(-64,-40),
  ABISELECT(-200,-136),
  ABISELECT(-80,-48),
  ABISELECT(-296,-188),
  ABISELECT(-320,-208),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C67S3461C48S3461C198S3461C26__A4__8S3461C21[] = {
  ABISELECT(-296,-188),
  ABISELECT(-320,-208),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C67S3461C48S3461C198S3461C26__A5__8S3461C21[] = {
  ABISELECT(-320,-208),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C67S3461C48S3461C198S3461C26__A10__8S3461C21[] = {
  ABISELECT(-320,-208),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__7S3461C48S3461C198S3461C26__A1__8S3461C21[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A2__7S3461C48S3461C198S3461C26__A1__8S3461C21[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(200,136),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C13__7S3461C48S3461C198S3461C26__A1__8S3461C21[] = {
  ABISELECT(64,40),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C198S3461C26__A1__8S3461C21[] = {
  0,
  ABISELECT(-208,-140),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C198S3461C26__A1__8S3461C21[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(176,120),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__8S3461C198S3461C26__A1__8S3461C21[] = {
  0,
  ABISELECT(72,44),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn24_N8S3461C19D1Ev,_ZThn16_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn24_N8S3461C19D0Ev,_ZThn16_N8S3461C19D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C4__8S3461C198S3461C26__A1__8S3461C21[] = {
  ABISELECT(-64,-40),
  ABISELECT(-200,-136),
  ABISELECT(-80,-48),
  ABISELECT(-296,-188),
  ABISELECT(-320,-208),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C19D1Ev,_ZThn16_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C19D0Ev,_ZThn16_N8S3461C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C198S3461C26__A1__8S3461C21[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C13__A1__8S3461C198S3461C26__A1__8S3461C21[] = {
  ABISELECT(40,24),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C18D1Ev();
extern void _ZN8S3461C18D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C188S3461C26__A2__8S3461C21[] = {
  ABISELECT(-224,-156),
  ABISELECT(-320,-208),
  ABISELECT(-344,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C68S3461C188S3461C26__A5__8S3461C21[] = {
  ABISELECT(-320,-208),
  ABISELECT(-344,-228),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C68S3461C188S3461C26__A6__8S3461C21[] = {
  ABISELECT(-344,-228),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C68S3461C188S3461C26__A11__8S3461C21[] = {
  ABISELECT(-344,-228),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C188S3461C26__A2__8S3461C21[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(224,156),
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C26D1Ev,_ZTv0_n24_N8S3461C26D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C26D0Ev,_ZTv0_n24_N8S3461C26D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__8S3461C26__8S3461C21[] = {
  0,
  ABISELECT(72,44),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C26D1Ev,_ZTv0_n24_N8S3461C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C26D0Ev,_ZTv0_n24_N8S3461C26D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C26__8S3461C21[] = {
  0,
  ABISELECT(-208,-140),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A2__8S3461C26__8S3461C21[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(176,120),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn24_N8S3461C26D1Ev,_ZThn16_N8S3461C26D1Ev)();
extern void ABISELECT(_ZThn24_N8S3461C26D0Ev,_ZThn16_N8S3461C26D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__8S3461C26__8S3461C21[] = {
  ABISELECT(-64,-40),
  ABISELECT(-200,-136),
  ABISELECT(-80,-48),
  ABISELECT(-296,-188),
  ABISELECT(-320,-208),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C26D1Ev,_ZThn16_N8S3461C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C26D0Ev,_ZThn16_N8S3461C26D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C26__8S3461C21[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C26D1Ev,_ZTv0_n24_N8S3461C26D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C26D0Ev,_ZTv0_n24_N8S3461C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C13__A1__8S3461C26__8S3461C21[] = {
  ABISELECT(40,24),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C26D1Ev,_ZTv0_n24_N8S3461C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C26D0Ev,_ZTv0_n24_N8S3461C26D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn48_N8S3461C26D1Ev,_ZThn36_N8S3461C26D1Ev)();
extern void ABISELECT(_ZThn48_N8S3461C26D0Ev,_ZThn36_N8S3461C26D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C18__8S3461C26__8S3461C21[] = {
  ABISELECT(-224,-156),
  ABISELECT(-320,-208),
  ABISELECT(-344,-228),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S3461C26D1Ev,_ZThn36_N8S3461C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S3461C26D0Ev,_ZThn36_N8S3461C26D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C17D1Ev();
extern void _ZN8S3461C17D0Ev();
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C17__8S3461C21[] = {
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-368,-244),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C17[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C17D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C17D0Ev,
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C17__A5__8S3461C21[] = {
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-368,-244),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C138S3461C17__A5__8S3461C21[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(248,172),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C17__8S3461C21[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(248,172),
  (VTBL_ENTRY)&(_ZTI8S3461C17[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
static  VTT_ENTRY vtt_S3461C21[] = {
  {&(_ZTV8S3461C21[17]),  17,223},
  {&(_tg__ZTV8S3461C11__A__8S3461C21[4]),  4,6},
  {&(_tg__ZTV8S3461C128S3461C11__8S3461C21[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C11__8S3461C21[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C11__A__8S3461C21[4]),  4,5},
  {&(_tg__ZTV8S3461C22__8S3461C21[16]),  16,20},
  {&(_tg__ZTV8S3461C138S3461C22__A3__8S3461C21[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C138S3461C22__A3__8S3461C21[4]),  4,5},
  {&(_tg__ZTV8S3461C128S3461C22__A3__8S3461C21[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C22__A9__8S3461C21[3]),  3,4},
  {&(_tg__ZTV8S3461C18__8S3461C22__8S3461C21[9]),  9,14},
  {&(_tg__ZTV8S3461C24__8S3461C22__8S3461C21[6]),  6,9},
  {&(_tg__ZTV8S3461C23__8S3461C22__8S3461C21[17]),  17,22},
  {&(_tg__ZTV8S3461C24__8S3461C22__8S3461C21[6]),  6,9},
  {&(_tg__ZTV8S3461C19__8S3461C22__8S3461C21[12]),  12,15},
  {&(_tg__ZTV8S3461C12__8S3461C22__8S3461C21[4]),  4,5},
  {&(_tg__ZTV7S3461C6__A1__8S3461C22__8S3461C21[7]),  7,11},
  {&(_tg__ZTV7S3461C48S3461C19__8S3461C22__8S3461C21[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C22__8S3461C21[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A2__8S3461C22__8S3461C21[6]),  6,9},
  {&(_tg__ZTV8S3461C14__8S3461C22__8S3461C21[5]),  5,6},
  {&(_tg__ZTV8S3461C14__8S3461C22__8S3461C21[5]),  5,6},
  {&(_tg__ZTV8S3461C12__A__8S3461C22__8S3461C21[3]),  3,4},
  {&(_tg__ZTV8S3461C27__8S3461C21[8]),  8,12},
  {&(_tg__ZTV8S3461C168S3461C27__8S3461C21[5]),  5,9},
  {&(_tg__ZTV8S3461C118S3461C168S3461C27__A2__8S3461C21[4]),  4,6},
  {&(_tg__ZTV8S3461C128S3461C118S3461C168S3461C27__A4__8S3461C21[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C118S3461C168S3461C27__A12__8S3461C21[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C118S3461C168S3461C27__A2__8S3461C21[4]),  4,5},
  {&(_tg__ZTV7S3461C98S3461C168S3461C27__A13__8S3461C21[3]),  3,4},
  {&(_tg__ZTV8S3461C128S3461C168S3461C27__A5__8S3461C21[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C168S3461C27__A14__8S3461C21[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C168S3461C27__8S3461C21[4]),  4,5},
  {&(_tg__ZTV7S3461C9__A__8S3461C168S3461C27__8S3461C21[3]),  3,4},
  {&(_tg__ZTV8S3461C17__8S3461C168S3461C27__8S3461C21[7]),  7,11},
  {&(_tg__ZTV8S3461C12__A1__8S3461C168S3461C27__8S3461C21[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C27__8S3461C21[4]),  4,5},
  {&(_tg__ZTV7S3461C98S3461C16__A2__8S3461C27__8S3461C21[3]),  3,4},
  {&(_tg__ZTV8S3461C17__8S3461C27__8S3461C21[7]),  7,11},
  {&(_tg__ZTV8S3461C128S3461C16__A1__8S3461C27__8S3461C21[3]),  3,4},
  {&(_tg__ZTV8S3461C14__8S3461C27__8S3461C21[5]),  5,6},
  {&(_tg__ZTV8S3461C14__8S3461C27__8S3461C21[5]),  5,6},
  {&(_ZTV8S3461C21[107]),  107,223},
  {&(_ZTV8S3461C21[37]),  37,223},
  {&(_ZTV8S3461C21[74]),  74,223},
  {&(_ZTV8S3461C21[96]),  96,223},
  {&(_ZTV8S3461C21[107]),  107,223},
  {&(_ZTV8S3461C21[122]),  122,223},
  {&(_ZTV8S3461C21[140]),  140,223},
  {&(_ZTV8S3461C21[148]),  148,223},
  {&(_ZTV8S3461C21[132]),  132,223},
  {&(_ZTV8S3461C21[158]),  158,223},
  {&(_ZTV8S3461C21[166]),  166,223},
  {&(_ZTV8S3461C21[174]),  174,223},
  {&(_ZTV8S3461C21[174]),  174,223},
  {&(_ZTV8S3461C21[44]),  44,223},
  {&(_ZTV8S3461C21[188]),  188,223},
  {&(_ZTV8S3461C21[198]),  198,223},
  {&(_ZTV8S3461C21[207]),  207,223},
  {&(_ZTV8S3461C21[53]),  53,223},
  {&(_ZTV8S3461C21[60]),  60,223},
  {&(_ZTV8S3461C21[219]),  219,223},
  {&(_ZTV8S3461C21[64]),  64,223},
  {&(_tg__ZTV7S3461C9__A1__8S3461C21[3]),  3,4},
  {&(_tg__ZTV8S3461C18__8S3461C21[5]),  5,10},
  {&(_tg__ZTV7S3461C68S3461C18__8S3461C21[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C68S3461C18__8S3461C21[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C68S3461C18__A2__8S3461C21[3]),  3,4},
  {&(_tg__ZTV7S3461C9__8S3461C18__8S3461C21[4]),  4,5},
  {&(_tg__ZTV8S3461C23__8S3461C21[13]),  13,18},
  {&(_tg__ZTV8S3461C258S3461C23__8S3461C21[12]),  12,17},
  {&(_tg__ZTV8S3461C188S3461C258S3461C23__A1__8S3461C21[5]),  5,10},
  {&(_tg__ZTV7S3461C68S3461C188S3461C258S3461C23__A3__8S3461C21[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C68S3461C188S3461C258S3461C23__A4__8S3461C21[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C68S3461C188S3461C258S3461C23__A8__8S3461C21[3]),  3,4},
  {&(_tg__ZTV7S3461C9__8S3461C188S3461C258S3461C23__A1__8S3461C21[4]),  4,5},
  {&(_tg__ZTV8S3461C14__8S3461C258S3461C23__8S3461C21[5]),  5,6},
  {&(_tg__ZTV8S3461C14__8S3461C258S3461C23__8S3461C21[5]),  5,6},
  {&(_tg__ZTV7S3461C9__A1__8S3461C258S3461C23__8S3461C21[4]),  4,5},
  {&(_tg__ZTV8S3461C13__8S3461C258S3461C23__8S3461C21[6]),  6,9},
  {&(_tg__ZTV8S3461C19__8S3461C258S3461C23__8S3461C21[12]),  12,15},
  {&(_tg__ZTV8S3461C12__8S3461C258S3461C23__8S3461C21[4]),  4,5},
  {&(_tg__ZTV7S3461C6__A1__8S3461C258S3461C23__8S3461C21[7]),  7,11},
  {&(_tg__ZTV7S3461C48S3461C19__8S3461C258S3461C23__8S3461C21[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C258S3461C23__8S3461C21[6]),  6,8},
  {&(_tg__ZTV8S3461C24__8S3461C23__8S3461C21[6]),  6,9},
  {&(_tg__ZTV8S3461C24__8S3461C23__8S3461C21[6]),  6,9},
  {&(_tg__ZTV8S3461C19__8S3461C23__8S3461C21[12]),  12,15},
  {&(_tg__ZTV8S3461C12__8S3461C23__8S3461C21[4]),  4,5},
  {&(_tg__ZTV7S3461C6__8S3461C23__8S3461C21[7]),  7,11},
  {&(_tg__ZTV7S3461C48S3461C19__8S3461C23__8S3461C21[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C23__8S3461C21[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A2__8S3461C23__8S3461C21[6]),  6,9},
  {&(_tg__ZTV8S3461C14__8S3461C23__8S3461C21[5]),  5,6},
  {&(_tg__ZTV8S3461C14__8S3461C23__8S3461C21[5]),  5,6},
  {&(_tg__ZTV8S3461C24__8S3461C21[5]),  5,8},
  {&(_tg__ZTV8S3461C138S3461C24__8S3461C21[5]),  5,8},
  {&(_tg__ZTV8S3461C138S3461C24__8S3461C21[5]),  5,8},
  {&(_tg__ZTV8S3461C24__8S3461C21[5]),  5,8},
  {&(_tg__ZTV8S3461C19__8S3461C21[10]),  10,13},
  {&(_tg__ZTV8S3461C138S3461C19__A1__8S3461C21[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C138S3461C19__A1__8S3461C21[4]),  4,5},
  {&(_tg__ZTV7S3461C48S3461C19__8S3461C21[7]),  7,11},
  {&(_tg__ZTV7S3461C67S3461C48S3461C19__A2__8S3461C21[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C67S3461C48S3461C19__A2__8S3461C21[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C67S3461C48S3461C19__A5__8S3461C21[3]),  3,4},
  {&(_tg__ZTV8S3461C11__7S3461C48S3461C19__8S3461C21[6]),  6,8},
  {&(_tg__ZTV7S3461C9__A2__7S3461C48S3461C19__8S3461C21[4]),  4,5},
  {&(_tg__ZTV8S3461C13__7S3461C48S3461C19__8S3461C21[6]),  6,9},
  {&(_tg__ZTV8S3461C12__8S3461C19__8S3461C21[4]),  4,5},
  {&(_tg__ZTV7S3461C9__A1__8S3461C19__8S3461C21[4]),  4,5},
  {&(_tg__ZTV7S3461C6__8S3461C19__8S3461C21[7]),  7,11},
  {&(_tg__ZTV7S3461C4__8S3461C19__8S3461C21[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C19__8S3461C21[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A1__8S3461C19__8S3461C21[6]),  6,9},
  {&(_tg__ZTV8S3461C12__A1__8S3461C21[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C12__A3__8S3461C21[3]),  3,4},
  {&(_tg__ZTV7S3461C6__A1__8S3461C21[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C6__A1__8S3461C21[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C6__A4__8S3461C21[3]),  3,4},
  {&(_tg__ZTV8S3461C11__A1__8S3461C21[4]),  4,6},
  {&(_tg__ZTV8S3461C128S3461C11__A2__8S3461C21[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C11__A6__8S3461C21[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C11__A1__8S3461C21[4]),  4,5},
  {&(_tg__ZTV8S3461C13__A2__8S3461C21[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C13__A2__8S3461C21[4]),  4,5},
  {&(_tg__ZTV8S3461C14__8S3461C21[5]),  5,6},
  {&(_tg__ZTV8S3461C14__8S3461C21[5]),  5,6},
  {&(_tg__ZTV7S3461C8__A3__8S3461C21[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C8__A7__8S3461C21[3]),  3,4},
  {&(_tg__ZTV8S3461C26__8S3461C21[10]),  10,13},
  {&(_tg__ZTV8S3461C198S3461C26__A1__8S3461C21[10]),  10,13},
  {&(_tg__ZTV8S3461C138S3461C198S3461C26__A4__8S3461C21[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C138S3461C198S3461C26__A4__8S3461C21[4]),  4,5},
  {&(_tg__ZTV7S3461C48S3461C198S3461C26__A1__8S3461C21[7]),  7,11},
  {&(_tg__ZTV7S3461C67S3461C48S3461C198S3461C26__A4__8S3461C21[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C67S3461C48S3461C198S3461C26__A5__8S3461C21[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C67S3461C48S3461C198S3461C26__A10__8S3461C21[3]),  3,4},
  {&(_tg__ZTV8S3461C11__7S3461C48S3461C198S3461C26__A1__8S3461C21[6]),  6,8},
  {&(_tg__ZTV7S3461C9__A2__7S3461C48S3461C198S3461C26__A1__8S3461C21[4]),  4,5},
  {&(_tg__ZTV8S3461C13__7S3461C48S3461C198S3461C26__A1__8S3461C21[6]),  6,9},
  {&(_tg__ZTV8S3461C12__8S3461C198S3461C26__A1__8S3461C21[4]),  4,5},
  {&(_tg__ZTV7S3461C9__A1__8S3461C198S3461C26__A1__8S3461C21[4]),  4,5},
  {&(_tg__ZTV7S3461C6__8S3461C198S3461C26__A1__8S3461C21[7]),  7,11},
  {&(_tg__ZTV7S3461C4__8S3461C198S3461C26__A1__8S3461C21[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C198S3461C26__A1__8S3461C21[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A1__8S3461C198S3461C26__A1__8S3461C21[6]),  6,9},
  {&(_tg__ZTV8S3461C188S3461C26__A2__8S3461C21[5]),  5,10},
  {&(_tg__ZTV7S3461C68S3461C188S3461C26__A5__8S3461C21[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C68S3461C188S3461C26__A6__8S3461C21[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C68S3461C188S3461C26__A11__8S3461C21[3]),  3,4},
  {&(_tg__ZTV7S3461C9__8S3461C188S3461C26__A2__8S3461C21[4]),  4,5},
  {&(_tg__ZTV7S3461C6__8S3461C26__8S3461C21[7]),  7,11},
  {&(_tg__ZTV8S3461C12__8S3461C26__8S3461C21[4]),  4,5},
  {&(_tg__ZTV7S3461C9__A2__8S3461C26__8S3461C21[4]),  4,5},
  {&(_tg__ZTV7S3461C48S3461C19__8S3461C26__8S3461C21[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C26__8S3461C21[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A1__8S3461C26__8S3461C21[6]),  6,9},
  {&(_tg__ZTV8S3461C18__8S3461C26__8S3461C21[5]),  5,10},
  {&(_tg__ZTV8S3461C17__8S3461C21[5]),  5,9},
  {&(_tg__ZTV8S3461C138S3461C17__A5__8S3461C21[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C138S3461C17__A5__8S3461C21[4]),  4,5},
  {&(_tg__ZTV7S3461C9__8S3461C17__8S3461C21[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S3461C21[];
extern  VTBL_ENTRY _ZTV8S3461C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C21[];
static VTBL_ENTRY alt_thunk_names12[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3461C19D0Ev,_ZThn64_N8S3461C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3461C19D0Ev,_ZThn44_N8S3461C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3461C19D1Ev,_ZThn64_N8S3461C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3461C19D1Ev,_ZThn44_N8S3461C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S3461C4D0Ev,_ZThn48_N7S3461C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S3461C4D1Ev,_ZThn48_N7S3461C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C23D0Ev,_ZTv0_n44_N8S3461C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3461C23D0Ev,_ZThn80_N8S3461C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C23D1Ev,_ZTv0_n44_N8S3461C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3461C23D1Ev,_ZThn80_N8S3461C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S3461C23D0Ev,_ZThn144_N8S3461C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3461C23D0Ev,_ZThn124_N8S3461C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S3461C23D0Ev,_ZThn48_N8S3461C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S3461C23D1Ev,_ZThn144_N8S3461C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3461C23D1Ev,_ZThn124_N8S3461C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S3461C23D1Ev,_ZThn48_N8S3461C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C25D0Ev,_ZTv0_n44_N8S3461C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3461C25D0Ev,_ZThn80_N8S3461C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C25D1Ev,_ZTv0_n44_N8S3461C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3461C25D1Ev,_ZThn80_N8S3461C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3461C25D0Ev,_ZThn124_N8S3461C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S3461C25D0Ev,_ZThn144_N8S3461C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3461C25D1Ev,_ZThn124_N8S3461C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S3461C25D1Ev,_ZThn144_N8S3461C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C27D0Ev,_ZTv0_n24_N8S3461C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S3461C27D0Ev,_ZThn268_N8S3461C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C27D1Ev,_ZTv0_n24_N8S3461C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S3461C27D1Ev,_ZThn268_N8S3461C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C16D0Ev,_ZTv0_n24_N8S3461C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S3461C16D0Ev,_ZThn268_N8S3461C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C16D1Ev,_ZTv0_n24_N8S3461C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S3461C16D1Ev,_ZThn268_N8S3461C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C22D0Ev,_ZTv0_n44_N8S3461C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S3461C22D0Ev,_ZThn160_N8S3461C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C22D1Ev,_ZTv0_n44_N8S3461C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S3461C22D1Ev,_ZThn160_N8S3461C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S3461C22D0Ev,_ZTv0_n60_N8S3461C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S3461C22D0Ev,_ZThn80_N8S3461C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S3461C22D1Ev,_ZTv0_n60_N8S3461C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S3461C22D1Ev,_ZThn80_N8S3461C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S3461C22D0Ev,_ZThn224_N8S3461C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S3461C22D0Ev,_ZThn204_N8S3461C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3461C22D0Ev,_ZThn128_N8S3461C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S3461C22D1Ev,_ZThn224_N8S3461C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S3461C22D1Ev,_ZThn204_N8S3461C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3461C22D1Ev,_ZThn128_N8S3461C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3461C22D0Ev,_ZTv0_n28_N8S3461C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3461C22D0Ev,_ZThn64_N8S3461C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3461C22D1Ev,_ZTv0_n28_N8S3461C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3461C22D1Ev,_ZThn64_N8S3461C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C21D0Ev,_ZTv0_n44_N8S3461C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S3461C21D0Ev,_ZThn256_N8S3461C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S3461C21D0Ev,_ZThn168_N8S3461C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C21D1Ev,_ZTv0_n44_N8S3461C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S3461C21D1Ev,_ZThn256_N8S3461C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S3461C21D1Ev,_ZThn168_N8S3461C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S3461C21D0Ev,_ZThn308_N8S3461C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn360_N8S3461C21D0Ev,_ZThn232_N8S3461C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S3461C21D0Ev,_ZThn212_N8S3461C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S3461C21D0Ev,_ZThn136_N8S3461C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S3461C21D1Ev,_ZThn308_N8S3461C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn360_N8S3461C21D1Ev,_ZThn232_N8S3461C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S3461C21D1Ev,_ZThn212_N8S3461C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S3461C21D1Ev,_ZThn136_N8S3461C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S3461C21D0Ev,_ZTv0_n60_N8S3461C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S3461C21D0Ev,_ZThn88_N8S3461C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S3461C21D1Ev,_ZTv0_n60_N8S3461C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S3461C21D1Ev,_ZThn88_N8S3461C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3461C21D0Ev,_ZTv0_n28_N8S3461C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S3461C21D0Ev,_ZThn72_N8S3461C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3461C21D1Ev,_ZTv0_n28_N8S3461C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S3461C21D1Ev,_ZThn72_N8S3461C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3461C21 = {  "S3461C21", // class name
  bases_S3461C21, 107,
  &(vtc_S3461C21[0]), // expected_vtbl_contents
  &(vtt_S3461C21[0]), // expected_vtt_contents
  ABISELECT(496,324), // object size
  NSPAIRA(_ZTI8S3461C21),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S3461C21),223, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3461C21),163, //virtual table table var
  59, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names12,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3461C20  : virtual S3461C12 , virtual S3461C19 , virtual S3461C21 , S3461C14 {
  virtual  ~S3461C20(); // _ZN8S3461C20D2Ev
  S3461C20(); // tgen
};
//SIG(-1 S3461C20) C1{ VBC2{ VBC3{ m FL} BC4{ VBC3 BC5{ m} v1} BC5} VBC6{ VBC3 VBC2 BC7{ BC3 VBC4 BC5 vd} VBC8{ BC3 VBC5 BC9{ BC4} vd v2} BC10{ BC3 BC8 BC11{ m} VBC12{ VBC3 BC2 VBC4 v3} VBC7 vd}} VBC13{ BC12 BC14{ VBC15{ VBC4 BC8 vd v4} BC3 VBC16{ VBC4 VBC17{ BC5 VBC4 BC7 BC3 vd FL} VBC6 BC18{ VBC19{ VBC9 Fi} BC15 VBC7 VBC6 vd Fp[9]} vd} BC7 BC2 vd v5 Fc} VBC20{ VBC8 BC6 BC15 Fi} BC21{ BC22{ BC12 BC4 VBC23{ BC7 v6} BC2} VBC5 VBC19 Fi} vd} BC19 vd}


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

static void Test_S3461C20()
{
  extern Class_Descriptor cd_S3461C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(64,83)];
    init_test(&cd_S3461C20, buf);
    S3461C20 *dp, &lv = *(dp=new (buf) S3461C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(504,328), "sizeof(S3461C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3461C20)");
    /*is_ambiguous_... S3461C20::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*), ABISELECT(32,16), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*), ABISELECT(32,16), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C19*), ABISELECT(32,16), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*), ABISELECT(32,16), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(32,16), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(32,16), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C11*), ABISELECT(32,16), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C11*), ABISELECT(32,16), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(32,16), "S3461C20");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C11*)(S3461C21*), ABISELECT(32,16), "S3461C20");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C11*)(S3461C21*), ABISELECT(32,16), "S3461C20");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C11*)(S3461C21*), ABISELECT(32,16), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(32,16), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*), ABISELECT(32,16), "S3461C20");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(32,16), "S3461C20");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C22*)(S3461C21*), ABISELECT(32,16), "S3461C20");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C22*)(S3461C21*), ABISELECT(32,16), "S3461C20");
    /*is_ambiguous_... S3461C19::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C19*)(S3461C26*), ABISELECT(32,16), "S3461C20");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(32,16), "S3461C20");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C26*), ABISELECT(32,16), "S3461C20");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C11*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(32,16), "S3461C20");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(32,16), "S3461C20");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(32,16), "S3461C20");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(32,16), "S3461C20");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(32,16), "S3461C20");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(32,16), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*), ABISELECT(16,8), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*), ABISELECT(16,8), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*), ABISELECT(24,12), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C12*), ABISELECT(16,8), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C19*), ABISELECT(16,8), "S3461C20");
    /*is_ambiguous_... S3461C19::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C19*)(S3461C26*), ABISELECT(16,8), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C19*), ABISELECT(48,28), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*), ABISELECT(40,24), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C19*), ABISELECT(40,24), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C11*), ABISELECT(40,24), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*), ABISELECT(40,24), "S3461C20");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C11*)(S3461C21*), ABISELECT(40,24), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C18*), ABISELECT(40,24), "S3461C20");
    /*is_ambiguous_... S3461C23::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C23*), ABISELECT(40,24), "S3461C20");
    check_base_class_offset(lv, (S3461C9*)(S3461C24*), ABISELECT(40,24), "S3461C20");
    check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C24*), ABISELECT(40,24), "S3461C20");
    /*is_ambiguous_... S3461C18::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(40,24), "S3461C20");
    /*is_ambiguous_... S3461C22::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C22*)(S3461C21*), ABISELECT(40,24), "S3461C20");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C19*)(S3461C26*), ABISELECT(40,24), "S3461C20");
    /*is_ambiguous_... S3461C18::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C18*)(S3461C26*), ABISELECT(40,24), "S3461C20");
    /*is_ambiguous_... S3461C11::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C11*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(40,24), "S3461C20");
    check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C17*), ABISELECT(40,24), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C19 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C19*), ABISELECT(56,36), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C13*)(S3461C19*), ABISELECT(40,24), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*), ABISELECT(96,64), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*), 0, "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C19 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C4*)(S3461C19*), 0, "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C18 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C18*), 0, "S3461C20");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), 0, "S3461C20");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C4*)(S3461C19*)(S3461C26*), 0, "S3461C20");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C18*)(S3461C26*), 0, "S3461C20");
    /*is_ambiguous_... S3461C27::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C27*)(S3461C21*), 0, "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(88,60), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(88,60), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C6*), ABISELECT(88,60), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C19*), ABISELECT(88,60), "S3461C20");
    /*is_ambiguous_... S3461C26::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C26*), ABISELECT(88,60), "S3461C20");
    /*is_ambiguous_... S3461C19::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C19*)(S3461C26*), ABISELECT(88,60), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C4*)(S3461C19*), ABISELECT(80,52), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(72,44), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C19 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(64,40), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(64,40), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(64,40), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(64,40), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C19 */ AMB_check_base_class_offset(lv, (S28C52_nt*)(S3461C4*)(S3461C19*), ABISELECT(64,40), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(104,72), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(104,72), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C11*), ABISELECT(112,76), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C11*), ABISELECT(104,72), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C11*)(S3461C4*)(S3461C19*), ABISELECT(104,72), "S3461C20");
    check_base_class_offset(lv, (S3461C11*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(104,72), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*), ABISELECT(128,84), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*), ABISELECT(136,92), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C13*)(S3461C4*)(S3461C19*), ABISELECT(120,80), "S3461C20");
    /*is_ambiguous_... S3461C25::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C13*)(S3461C25*)(S3461C23*), ABISELECT(120,80), "S3461C20");
    check_base_class_offset(lv, (S3461C13*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(120,80), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C4*)(S3461C19*), ABISELECT(64,40), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C19*), ABISELECT(40,24), "S3461C20");
    check_base_class_offset(lv, (S3461C19*)(S3461C23*), ABISELECT(40,24), "S3461C20");
    check_base_class_offset(lv, (S3461C19*)(S3461C25*)(S3461C23*), ABISELECT(40,24), "S3461C20");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C11*)(S3461C21*), ABISELECT(144,96), "S3461C20");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C11*)(S3461C21*), ABISELECT(144,96), "S3461C20");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C11*)(S3461C21*), ABISELECT(152,100), "S3461C20");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C11*)(S3461C21*), ABISELECT(144,96), "S3461C20");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C11*)(S3461C21*), ABISELECT(144,96), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C18*), ABISELECT(256,164), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C18 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(248,160), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(248,160), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(248,160), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C18*), ABISELECT(248,160), "S3461C20");
    /*is_ambiguous_... S3461C22::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C18*)(S3461C22*)(S3461C21*), ABISELECT(248,160), "S3461C20");
    /*is_ambiguous_... S3461C22::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C22*)(S3461C21*), ABISELECT(184,120), "S3461C20");
    /*is_ambiguous_... S3461C24::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C24*), ABISELECT(369,233), "S3461C20");
    /*is_ambiguous_... S3461C13::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C24*), ABISELECT(360,224), "S3461C20");
    /*is_ambiguous_... S3461C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C24*), ABISELECT(368,232), "S3461C20");
    check_base_class_offset(lv, (S3461C13*)(S3461C24*), ABISELECT(352,220), "S3461C20");
    /*is_ambiguous_... S3461C24::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C24*), ABISELECT(376,236), "S3461C20");
    check_base_class_offset(lv, (S3461C24*)(S3461C23*), ABISELECT(352,220), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*), ABISELECT(392,252), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C8 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*), ABISELECT(392,252), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C14 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C14*), ABISELECT(392,252), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C14 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C14*), ABISELECT(392,252), "S3461C20");
    check_base_class_offset(lv, (S3461C14*)(S3461C25*)(S3461C23*), ABISELECT(392,252), "S3461C20");
    check_base_class_offset(lv, (S3461C14*)(S3461C27*)(S3461C21*), ABISELECT(392,252), "S3461C20");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(272,176), "S3461C20");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(264,172), "S3461C20");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(264,172), "S3461C20");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(264,172), "S3461C20");
    check_base_class_offset(lv, (S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(264,172), "S3461C20");
    check_base_class_offset(lv, (S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(264,172), "S3461C20");
    check_base_class_offset(lv, (S3461C25*)(S3461C23*), ABISELECT(264,172), "S3461C20");
    check_base_class_offset(lv, (S3461C23*)(S3461C22*)(S3461C21*), ABISELECT(264,172), "S3461C20");
    /*is_ambiguous_... S3461C22::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C22*)(S3461C21*), ABISELECT(168,108), "S3461C20");
    /*is_ambiguous_... S3461C22::S3461C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C22*)(S3461C21*), ABISELECT(176,116), "S3461C20");
    /*is_ambiguous_... S3461C22::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C13*)(S3461C22*)(S3461C21*), ABISELECT(160,104), "S3461C20");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C22*)(S3461C21*), ABISELECT(192,128), "S3461C20");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C22*)(S3461C21*), ABISELECT(192,128), "S3461C20");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C22*)(S3461C21*), ABISELECT(200,132), "S3461C20");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C22*)(S3461C21*), ABISELECT(192,128), "S3461C20");
    check_base_class_offset(lv, (S3461C22*)(S3461C21*), ABISELECT(160,104), "S3461C20");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C19*)(S3461C26*), ABISELECT(416,264), "S3461C20");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C19*)(S3461C26*), ABISELECT(424,272), "S3461C20");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C13*)(S3461C19*)(S3461C26*), ABISELECT(408,260), "S3461C20");
    /*is_ambiguous_... S3461C4::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(448,288), "S3461C20");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(440,280), "S3461C20");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(432,276), "S3461C20");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(432,276), "S3461C20");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(432,276), "S3461C20");
    check_base_class_offset(lv, (S3461C6*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(432,276), "S3461C20");
    check_base_class_offset(lv, (S28C52_nt*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(432,276), "S3461C20");
    check_base_class_offset(lv, (S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(432,276), "S3461C20");
    check_base_class_offset(lv, (S3461C19*)(S3461C26*), ABISELECT(408,260), "S3461C20");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C18*)(S3461C26*), ABISELECT(464,300), "S3461C20");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C26*), ABISELECT(456,296), "S3461C20");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C26*), ABISELECT(456,296), "S3461C20");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C18*)(S3461C26*), ABISELECT(456,296), "S3461C20");
    check_base_class_offset(lv, (S3461C6*)(S3461C18*)(S3461C26*), ABISELECT(456,296), "S3461C20");
    check_base_class_offset(lv, (S3461C18*)(S3461C26*), ABISELECT(456,296), "S3461C20");
    check_base_class_offset(lv, (S3461C26*)(S3461C21*), ABISELECT(408,260), "S3461C20");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(208,136), "S3461C20");
    check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(208,136), "S3461C20");
    /*is_ambiguous_... S3461C12::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(216,140), "S3461C20");
    check_base_class_offset(lv, (S3461C12*)(S3461C11*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(208,136), "S3461C20");
    check_base_class_offset(lv, (S3461C11*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(208,136), "S3461C20");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(224,144), "S3461C20");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(224,144), "S3461C20");
    /*is_ambiguous_... S3461C13::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C17*), ABISELECT(488,316), "S3461C20");
    /*is_ambiguous_... S3461C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C17*), ABISELECT(496,324), "S3461C20");
    check_base_class_offset(lv, (S3461C13*)(S3461C17*), ABISELECT(480,312), "S3461C20");
    check_base_class_offset(lv, (S3461C17*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(480,312), "S3461C20");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(232,148), "S3461C20");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(232,148), "S3461C20");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(240,152), "S3461C20");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(232,148), "S3461C20");
    check_base_class_offset(lv, (S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(208,136), "S3461C20");
    check_base_class_offset(lv, (S3461C27*)(S3461C21*), ABISELECT(208,136), "S3461C20");
    check_base_class_offset(lv, (S3461C21*), ABISELECT(144,96), "S3461C20");
    /*is_ambiguous_... S3461C20::S3461C14 */ AMB_check_base_class_offset(lv, (S3461C14*), 0, "S3461C20");
    test_class_info(&lv, &cd_S3461C20);
    dp->~S3461C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3461C20(Test_S3461C20, "S3461C20", ABISELECT(504,328));

#else // __cplusplus

extern void _ZN8S3461C20C1Ev();
extern void _ZN8S3461C20D2Ev();
Name_Map name_map_S3461C20[] = {
  NSPAIR(_ZN8S3461C20C1Ev),
  NSPAIR(_ZN8S3461C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C11;
extern VTBL_ENTRY _ZTI8S3461C11[];
extern  VTBL_ENTRY _ZTV8S3461C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C4;
extern VTBL_ENTRY _ZTI7S3461C4[];
extern  VTBL_ENTRY _ZTV7S3461C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C4[];
extern Class_Descriptor cd_S3461C19;
extern VTBL_ENTRY _ZTI8S3461C19[];
extern  VTBL_ENTRY _ZTV8S3461C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C19[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C11;
extern VTBL_ENTRY _ZTI8S3461C11[];
extern  VTBL_ENTRY _ZTV8S3461C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C18;
extern VTBL_ENTRY _ZTI8S3461C18[];
extern  VTBL_ENTRY _ZTV8S3461C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C18[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C24;
extern VTBL_ENTRY _ZTI8S3461C24[];
extern  VTBL_ENTRY _ZTV8S3461C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C24[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C14;
extern VTBL_ENTRY _ZTI8S3461C14[];
extern  VTBL_ENTRY _ZTV8S3461C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C14[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C18;
extern VTBL_ENTRY _ZTI8S3461C18[];
extern  VTBL_ENTRY _ZTV8S3461C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C18[];
extern Class_Descriptor cd_S3461C25;
extern VTBL_ENTRY _ZTI8S3461C25[];
extern  VTBL_ENTRY _ZTV8S3461C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C25[];
extern Class_Descriptor cd_S3461C23;
extern VTBL_ENTRY _ZTI8S3461C23[];
extern  VTBL_ENTRY _ZTV8S3461C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C23[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C22;
extern VTBL_ENTRY _ZTI8S3461C22[];
extern  VTBL_ENTRY _ZTV8S3461C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C22[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S3461C4;
extern VTBL_ENTRY _ZTI7S3461C4[];
extern  VTBL_ENTRY _ZTV7S3461C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C4[];
extern Class_Descriptor cd_S3461C19;
extern VTBL_ENTRY _ZTI8S3461C19[];
extern  VTBL_ENTRY _ZTV8S3461C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C19[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C18;
extern VTBL_ENTRY _ZTI8S3461C18[];
extern  VTBL_ENTRY _ZTV8S3461C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C18[];
extern Class_Descriptor cd_S3461C26;
extern VTBL_ENTRY _ZTI8S3461C26[];
extern  VTBL_ENTRY _ZTV8S3461C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C26[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C11;
extern VTBL_ENTRY _ZTI8S3461C11[];
extern  VTBL_ENTRY _ZTV8S3461C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C11[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C17;
extern VTBL_ENTRY _ZTI8S3461C17[];
extern  VTBL_ENTRY _ZTV8S3461C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C17[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C16;
extern VTBL_ENTRY _ZTI8S3461C16[];
extern  VTBL_ENTRY _ZTV8S3461C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C16[];
extern Class_Descriptor cd_S3461C27;
extern VTBL_ENTRY _ZTI8S3461C27[];
extern  VTBL_ENTRY _ZTV8S3461C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C27[];
extern Class_Descriptor cd_S3461C21;
extern VTBL_ENTRY _ZTI8S3461C21[];
extern  VTBL_ENTRY _ZTV8S3461C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C21[];
extern Class_Descriptor cd_S3461C14;
extern VTBL_ENTRY _ZTI8S3461C14[];
extern  VTBL_ENTRY _ZTV8S3461C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C14[];
static Base_Class bases_S3461C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    2, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S731C17_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_S3461C12,    ABISELECT(16,8), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    7, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    9, //immediately_derived
  0, 0},
  {&cd_S3461C13,    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
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_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
    13, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(88,60), //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
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(88,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(88,60), //bcp->offset
    53, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S3461C5_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
    31, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    19, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3461C6,    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
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S28C52_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
    31, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(104,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(104,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(112,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(104,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3461C11,    ABISELECT(104,72), //bcp->offset
    64, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(136,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(120,80), //bcp->offset
    72, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3461C4,    ABISELECT(64,40), //bcp->offset
    42, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3461C19,    ABISELECT(40,24), //bcp->offset
    27, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S3461C11,    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
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(256,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
    42, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(248,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(248,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(248,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(248,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S3461C18,    ABISELECT(248,160), //bcp->offset
    150, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    70, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(184,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
    70, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(369,233), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3461C5_nt,    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
    48, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(368,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(352,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    149, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(376,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S3461C24,    ABISELECT(352,220), //bcp->offset
    186, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    148, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    62, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(392,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
    52, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(392,252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    155, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(392,252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    154, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    54, //immediately_derived
  0, 1},
  {&cd_S3461C14,    ABISELECT(392,252), //bcp->offset
    195, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    152, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    61, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(272,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
    59, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(264,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
    57, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(264,172), //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
    26, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(264,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(264,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    125, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S3461C18,    ABISELECT(264,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S3461C25,    ABISELECT(264,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S3461C23,    ABISELECT(264,172), //bcp->offset
    164, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    70, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(168,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(176,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
    65, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(192,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
    67, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(192,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    69, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(192,128), //bcp->offset
    126, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S3461C22,    ABISELECT(160,104), //bcp->offset
    106, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(416,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
    73, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(424,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
    73, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(408,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    158, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(448,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    81, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(440,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(432,276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    77, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(432,276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    163, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(432,276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    162, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(432,276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    161, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    81, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(432,276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    81, //immediately_derived
  0, 0},
  {&cd_S3461C4,    ABISELECT(432,276), //bcp->offset
    217, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    160, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S3461C19,    ABISELECT(408,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    157, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    89, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(464,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    87, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(456,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    85, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(456,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    176, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    86, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(456,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    175, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    87, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(456,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    174, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    88, //immediately_derived
  0, 0},
  {&cd_S3461C18,    ABISELECT(456,296), //bcp->offset
    228, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    173, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    89, //immediately_derived
  0, 0},
  {&cd_S3461C26,    ABISELECT(408,260), //bcp->offset
    201, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    156, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    107, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(208,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    91, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(208,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(216,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
    93, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(208,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    94, //immediately_derived
  0, 0},
  {&cd_S3461C11,    ABISELECT(208,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    54, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(224,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    96, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(224,144), //bcp->offset
    142, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(488,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
    99, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(496,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
    99, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(480,312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    186, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    100, //immediately_derived
  0, 0},
  {&cd_S3461C17,    ABISELECT(480,312), //bcp->offset
    238, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    185, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    105, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    102, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    104, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(240,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
    104, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(232,148), //bcp->offset
    146, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    57, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S3461C16,    ABISELECT(208,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    58, //init_seq
    106, //immediately_derived
  0, 0},
  {&cd_S3461C27,    ABISELECT(208,136), //bcp->offset
    130, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    59, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S3461C21,    ABISELECT(144,96), //bcp->offset
    81, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    60, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C14,    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
    61, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3461C20[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C20D1Ev();
extern void _ZN8S3461C20D0Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C20D1Ev,_ZTv0_n44_N8S3461C20D1Ev)();
extern void ABISELECT(_ZThn40_N8S3461C20D1Ev,_ZThn24_N8S3461C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S3461C20D0Ev,_ZTv0_n44_N8S3461C20D0Ev)();
extern void ABISELECT(_ZThn40_N8S3461C20D0Ev,_ZThn24_N8S3461C20D0Ev)() __attribute__((weak));
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C20D1Ev,_ZTvn16_n44_N8S3461C20D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C20D0Ev,_ZTvn16_n44_N8S3461C20D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C20D1Ev,_ZTv0_n24_N8S3461C20D1Ev)();
extern void ABISELECT(_ZThn88_N8S3461C20D1Ev,_ZThn60_N8S3461C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C20D0Ev,_ZTv0_n24_N8S3461C20D0Ev)();
extern void ABISELECT(_ZThn88_N8S3461C20D0Ev,_ZThn60_N8S3461C20D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C20D1Ev,_ZTv0_n24_N8S3461C20D1Ev)();
extern void ABISELECT(_ZThn120_N8S3461C20D1Ev,_ZThn80_N8S3461C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C20D0Ev,_ZTv0_n24_N8S3461C20D0Ev)();
extern void ABISELECT(_ZThn120_N8S3461C20D0Ev,_ZThn80_N8S3461C20D0Ev)() __attribute__((weak));
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void ABISELECT(_ZTv0_n160_N8S3461C20D1Ev,_ZTv0_n80_N8S3461C20D1Ev)();
extern void ABISELECT(_ZThn144_N8S3461C20D1Ev,_ZThn96_N8S3461C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n160_N8S3461C20D0Ev,_ZTv0_n80_N8S3461C20D0Ev)();
extern void ABISELECT(_ZThn144_N8S3461C20D0Ev,_ZThn96_N8S3461C20D0Ev)() __attribute__((weak));
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn16_n160_N8S3461C20D1Ev,_ZTvn8_n80_N8S3461C20D1Ev)();
extern void ABISELECT(_ZTvn16_n160_N8S3461C20D0Ev,_ZTvn8_n80_N8S3461C20D0Ev)();
extern void _ZN8S3461C222v6Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void ABISELECT(_ZTvn64_n160_N8S3461C20D1Ev,_ZTvn40_n80_N8S3461C20D1Ev)();
extern void ABISELECT(_ZTvn64_n160_N8S3461C20D0Ev,_ZTvn40_n80_N8S3461C20D0Ev)();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S3461C20D1Ev,_ZTv0_n28_N8S3461C20D1Ev)();
extern void ABISELECT(_ZThn248_N8S3461C20D1Ev,_ZThn160_N8S3461C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3461C20D0Ev,_ZTv0_n28_N8S3461C20D0Ev)();
extern void ABISELECT(_ZThn248_N8S3461C20D0Ev,_ZThn160_N8S3461C20D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S3461C20D1Ev,_ZTv0_n60_N8S3461C20D1Ev)();
extern void ABISELECT(_ZThn264_N8S3461C20D1Ev,_ZThn172_N8S3461C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S3461C20D0Ev,_ZTv0_n60_N8S3461C20D0Ev)();
extern void ABISELECT(_ZThn264_N8S3461C20D0Ev,_ZThn172_N8S3461C20D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C20D1Ev,_ZTv0_n24_N8S3461C20D1Ev)();
extern void ABISELECT(_ZThn352_N8S3461C20D1Ev,_ZThn220_N8S3461C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C20D0Ev,_ZTv0_n24_N8S3461C20D0Ev)();
extern void ABISELECT(_ZThn352_N8S3461C20D0Ev,_ZThn220_N8S3461C20D0Ev)() __attribute__((weak));
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C20D1Ev,_ZTv0_n44_N8S3461C20D1Ev)();
extern void ABISELECT(_ZThn408_N8S3461C20D1Ev,_ZThn260_N8S3461C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S3461C20D0Ev,_ZTv0_n44_N8S3461C20D0Ev)();
extern void ABISELECT(_ZThn408_N8S3461C20D0Ev,_ZThn260_N8S3461C20D0Ev)() __attribute__((weak));
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C20D1Ev,_ZTvn16_n44_N8S3461C20D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C20D0Ev,_ZTvn16_n44_N8S3461C20D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn48_n88_N8S3461C20D1Ev,_ZTvn36_n44_N8S3461C20D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N8S3461C20D0Ev,_ZTvn36_n44_N8S3461C20D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C20D1Ev,_ZTv0_n24_N8S3461C20D1Ev)();
extern void ABISELECT(_ZThn480_N8S3461C20D1Ev,_ZThn312_N8S3461C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C20D0Ev,_ZTv0_n24_N8S3461C20D0Ev)();
extern void ABISELECT(_ZThn480_N8S3461C20D0Ev,_ZThn312_N8S3461C20D0Ev)() __attribute__((weak));
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY vtc_S3461C20[] = {
  ABISELECT(480,312),
  ABISELECT(408,260),
  ABISELECT(392,252),
  ABISELECT(352,220),
  ABISELECT(264,172),
  ABISELECT(248,160),
  ABISELECT(144,96),
  ABISELECT(120,80),
  ABISELECT(104,72),
  0,
  ABISELECT(88,60),
  ABISELECT(40,24),
  ABISELECT(40,24),
  ABISELECT(16,8),
  ABISELECT(392,252),
  ABISELECT(392,252),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C20D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C20D0Ev,
  0,
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(24,16),
  ABISELECT(-40,-24),
  ABISELECT(80,56),
  ABISELECT(64,48),
  ABISELECT(-40,-24),
  ABISELECT(48,36),
  ABISELECT(-24,-16),
  0,
  0,
  -8,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C20D1Ev,_ZTv0_n44_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C20D0Ev,_ZTv0_n44_N8S3461C20D0Ev),
  ABISELECT(56,40),
  ABISELECT(-24,-16),
  ABISELECT(40,32),
  ABISELECT(-64,-40),
  ABISELECT(-32,-24),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C20D1Ev,_ZTvn16_n44_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C20D0Ev,_ZTvn16_n44_N8S3461C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  0,
  ABISELECT(-88,-60),
  0,
  ABISELECT(-88,-60),
  ABISELECT(-56,-44),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C20D1Ev,_ZTv0_n24_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C20D0Ev,_ZTv0_n24_N8S3461C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  0,
  0,
  ABISELECT(-64,-48),
  ABISELECT(-72,-56),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  ABISELECT(-120,-80),
  ABISELECT(-80,-56),
  ABISELECT(-80,-56),
  ABISELECT(-88,-64),
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C20D1Ev,_ZTv0_n24_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C20D0Ev,_ZTv0_n24_N8S3461C20D0Ev),
  ABISELECT(16,8),
  ABISELECT(-144,-96),
  0,
  0,
  ABISELECT(336,216),
  ABISELECT(264,164),
  ABISELECT(248,156),
  ABISELECT(248,156),
  ABISELECT(-24,-16),
  ABISELECT(-40,-24),
  ABISELECT(-56,-36),
  ABISELECT(-128,-88),
  ABISELECT(-104,-72),
  ABISELECT(208,124),
  ABISELECT(120,76),
  ABISELECT(-144,-96),
  ABISELECT(104,64),
  ABISELECT(-104,-72),
  ABISELECT(-112,-80),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n160_N8S3461C20D1Ev,_ZTv0_n80_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n160_N8S3461C20D0Ev,_ZTv0_n80_N8S3461C20D0Ev),
  ABISELECT(232,148),
  ABISELECT(232,148),
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(-72,-44),
  ABISELECT(-144,-96),
  ABISELECT(-120,-80),
  ABISELECT(192,116),
  ABISELECT(104,68),
  ABISELECT(-160,-104),
  ABISELECT(88,56),
  ABISELECT(-120,-80),
  ABISELECT(-120,-80),
  ABISELECT(-128,-88),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n160_N8S3461C20D1Ev,_ZTvn8_n80_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n160_N8S3461C20D0Ev,_ZTvn8_n80_N8S3461C20D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C222v6Ev,
  ABISELECT(-160,-112),
  ABISELECT(-192,-128),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(184,116),
  ABISELECT(184,116),
  ABISELECT(-208,-136),
  ABISELECT(272,176),
  ABISELECT(-168,-112),
  ABISELECT(-176,-120),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n160_N8S3461C20D1Ev,_ZTvn40_n80_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n160_N8S3461C20D0Ev,_ZTvn40_n80_N8S3461C20D0Ev),
  ABISELECT(-192,-128),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(-200,-132),
  ABISELECT(-232,-148),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  0,
  0,
  ABISELECT(-248,-160),
  0,
  ABISELECT(-208,-136),
  ABISELECT(-248,-160),
  ABISELECT(-216,-144),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3461C20D1Ev,_ZTv0_n28_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3461C20D0Ev,_ZTv0_n28_N8S3461C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
  0,
  0,
  ABISELECT(-264,-172),
  0,
  ABISELECT(88,48),
  ABISELECT(-160,-100),
  ABISELECT(-176,-112),
  ABISELECT(-248,-164),
  ABISELECT(-224,-148),
  ABISELECT(-144,-92),
  ABISELECT(128,80),
  ABISELECT(128,80),
  ABISELECT(-224,-148),
  ABISELECT(-264,-172),
  ABISELECT(-232,-156),
  ABISELECT(-264,-172),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S3461C20D1Ev,_ZTv0_n60_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S3461C20D0Ev,_ZTv0_n60_N8S3461C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
  ABISELECT(-352,-220),
  ABISELECT(-312,-196),
  ABISELECT(-312,-196),
  ABISELECT(-320,-204),
  ABISELECT(-352,-220),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C20D1Ev,_ZTv0_n24_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C20D0Ev,_ZTv0_n24_N8S3461C20D0Ev),
  0,
  0,
  ABISELECT(-360,-236),
  ABISELECT(-392,-252),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(48,36),
  ABISELECT(24,16),
  ABISELECT(-408,-260),
  ABISELECT(-288,-180),
  ABISELECT(-304,-188),
  ABISELECT(-408,-260),
  ABISELECT(-320,-200),
  ABISELECT(-392,-252),
  ABISELECT(-368,-236),
  ABISELECT(-368,-236),
  ABISELECT(-376,-244),
  ABISELECT(-408,-260),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C20D1Ev,_ZTv0_n44_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C20D0Ev,_ZTv0_n44_N8S3461C20D0Ev),
  ABISELECT(-312,-196),
  ABISELECT(-392,-252),
  ABISELECT(-328,-204),
  ABISELECT(-432,-276),
  ABISELECT(-400,-260),
  ABISELECT(-432,-276),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C20D1Ev,_ZTvn16_n44_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C20D0Ev,_ZTvn16_n44_N8S3461C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  ABISELECT(-416,-272),
  ABISELECT(-456,-296),
  ABISELECT(-424,-280),
  ABISELECT(-456,-296),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S3461C20D1Ev,_ZTvn36_n44_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S3461C20D0Ev,_ZTvn36_n44_N8S3461C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
  0,
  ABISELECT(-480,-312),
  ABISELECT(-440,-288),
  ABISELECT(-440,-288),
  ABISELECT(-448,-296),
  ABISELECT(-480,-312),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C20D1Ev,_ZTv0_n24_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C20D0Ev,_ZTv0_n24_N8S3461C20D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern VTBL_ENTRY _ZTV8S3461C20[];
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__A__8S3461C20[] = {
  ABISELECT(392,252),
  ABISELECT(392,252),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__8S3461C14__A__8S3461C20[] = {
  0,
  ABISELECT(-360,-236),
  ABISELECT(-392,-252),
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C20[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C12__8S3461C20[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C19D1Ev();
extern void _ZN8S3461C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C19__8S3461C20[] = {
  ABISELECT(80,56),
  ABISELECT(64,48),
  ABISELECT(-40,-24),
  ABISELECT(48,36),
  ABISELECT(-24,-16),
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C19D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C19D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C19__8S3461C20[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C4D1Ev();
extern void _ZN7S3461C4D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__8S3461C20[] = {
  ABISELECT(56,40),
  ABISELECT(-24,-16),
  ABISELECT(40,32),
  ABISELECT(-64,-40),
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C67S3461C48S3461C19__A1__8S3461C20[] = {
  ABISELECT(-64,-40),
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C67S3461C48S3461C19__A1__8S3461C20[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C67S3461C48S3461C19__A3__8S3461C20[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__7S3461C48S3461C19__8S3461C20[] = {
  0,
  0,
  ABISELECT(-64,-48),
  ABISELECT(-72,-56),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A2__7S3461C48S3461C19__8S3461C20[] = {
  0,
  -8,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev)();
extern void ABISELECT(_ZThn56_N7S3461C4D1Ev,_ZThn40_N7S3461C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev)();
extern void ABISELECT(_ZThn56_N7S3461C4D0Ev,_ZThn40_N7S3461C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__7S3461C48S3461C19__8S3461C20[] = {
  ABISELECT(-56,-40),
  ABISELECT(-80,-56),
  ABISELECT(-80,-56),
  ABISELECT(-88,-64),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C19__8S3461C20[] = {
  0,
  ABISELECT(16,8),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn48_N8S3461C19D1Ev,_ZThn36_N8S3461C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev)();
extern void ABISELECT(_ZThn48_N8S3461C19D0Ev,_ZThn36_N8S3461C19D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__8S3461C19__8S3461C20[] = {
  0,
  ABISELECT(-48,-36),
  0,
  ABISELECT(-88,-60),
  ABISELECT(-56,-44),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn24_N8S3461C19D1Ev,_ZThn16_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn24_N8S3461C19D0Ev,_ZThn16_N8S3461C19D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C4__8S3461C19__8S3461C20[] = {
  ABISELECT(56,40),
  ABISELECT(-24,-16),
  ABISELECT(40,32),
  ABISELECT(-64,-40),
  ABISELECT(-32,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C19D1Ev,_ZThn16_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C19D0Ev,_ZThn16_N8S3461C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C19__8S3461C20[] = {
  0,
  0,
  ABISELECT(-64,-48),
  ABISELECT(-72,-56),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn80_N8S3461C19D1Ev,_ZThn56_N8S3461C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev)();
extern void ABISELECT(_ZThn80_N8S3461C19D0Ev,_ZThn56_N8S3461C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__A1__8S3461C19__8S3461C20[] = {
  ABISELECT(-80,-56),
  ABISELECT(-80,-56),
  ABISELECT(-80,-56),
  ABISELECT(-88,-64),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C20[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__8S3461C20[] = {
  ABISELECT(-88,-60),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C6__8S3461C20[] = {
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C6__A2__8S3461C20[] = {
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C20[] = {
  ABISELECT(-64,-48),
  ABISELECT(-72,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C11__A1__8S3461C20[] = {
  ABISELECT(-72,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C11__A4__8S3461C20[] = {
  ABISELECT(-72,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C11__8S3461C20[] = {
  0,
  -8,
  ABISELECT(64,48),
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C13__A1__8S3461C20[] = {
  ABISELECT(-80,-56),
  ABISELECT(-80,-56),
  ABISELECT(-88,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C13__A1__8S3461C20[] = {
  0,
  -8,
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN8S3461C21D1Ev();
extern void _ZN8S3461C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C21__8S3461C20[] = {
  ABISELECT(336,216),
  ABISELECT(264,164),
  ABISELECT(248,156),
  ABISELECT(248,156),
  ABISELECT(-24,-16),
  ABISELECT(-40,-24),
  ABISELECT(-56,-36),
  ABISELECT(-128,-88),
  ABISELECT(-104,-72),
  ABISELECT(208,124),
  ABISELECT(120,76),
  ABISELECT(-144,-96),
  ABISELECT(104,64),
  ABISELECT(-104,-72),
  ABISELECT(-112,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&_ZN8S3461C21D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C21D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C118S3461C21__A1__8S3461C20[] = {
  ABISELECT(-104,-72),
  ABISELECT(-112,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C118S3461C21__A2__8S3461C20[] = {
  ABISELECT(-112,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C118S3461C21__A5__8S3461C20[] = {
  ABISELECT(-112,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C118S3461C21__A1__8S3461C20[] = {
  0,
  -8,
  ABISELECT(104,72),
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C22D1Ev();
extern void _ZN8S3461C22D0Ev();
extern void _ZN8S3461C222v6Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C228S3461C21__8S3461C20[] = {
  ABISELECT(232,148),
  ABISELECT(232,148),
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(-72,-44),
  ABISELECT(-144,-96),
  ABISELECT(-120,-80),
  ABISELECT(192,116),
  ABISELECT(104,68),
  ABISELECT(-160,-104),
  ABISELECT(88,56),
  ABISELECT(-120,-80),
  ABISELECT(-120,-80),
  ABISELECT(-128,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C22D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C22D0Ev,
  (VTBL_ENTRY)&_ZN8S3461C222v6Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C228S3461C21__A3__8S3461C20[] = {
  ABISELECT(-120,-80),
  ABISELECT(-120,-80),
  ABISELECT(-128,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C138S3461C228S3461C21__A3__8S3461C20[] = {
  0,
  -8,
  ABISELECT(120,80),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C228S3461C21__A3__8S3461C20[] = {
  ABISELECT(-160,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C228S3461C21__A9__8S3461C20[] = {
  ABISELECT(-160,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S3461C22D1Ev,_ZTv0_n28_N8S3461C22D1Ev)();
extern void ABISELECT(_ZThn88_N8S3461C22D1Ev,_ZThn56_N8S3461C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3461C22D0Ev,_ZTv0_n28_N8S3461C22D0Ev)();
extern void ABISELECT(_ZThn88_N8S3461C22D0Ev,_ZThn56_N8S3461C22D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C18__8S3461C228S3461C21__8S3461C20[] = {
  0,
  0,
  ABISELECT(-88,-56),
  0,
  ABISELECT(-208,-136),
  ABISELECT(-248,-160),
  ABISELECT(-216,-144),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3461C22D1Ev,_ZTv0_n28_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3461C22D0Ev,_ZTv0_n28_N8S3461C22D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C22D1Ev,_ZTv0_n44_N8S3461C22D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S3461C22D0Ev,_ZTv0_n44_N8S3461C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C19__8S3461C228S3461C21__8S3461C20[] = {
  ABISELECT(24,16),
  ABISELECT(120,80),
  ABISELECT(80,56),
  ABISELECT(64,48),
  ABISELECT(-40,-24),
  ABISELECT(48,36),
  ABISELECT(-24,-16),
  0,
  0,
  -8,
  ABISELECT(120,80),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C22D1Ev,_ZTv0_n44_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C22D0Ev,_ZTv0_n44_N8S3461C22D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S3461C22D1Ev,_ZTv0_n60_N8S3461C22D1Ev)();
extern void ABISELECT(_ZThn104_N8S3461C22D1Ev,_ZThn68_N8S3461C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S3461C22D0Ev,_ZTv0_n60_N8S3461C22D0Ev)();
extern void ABISELECT(_ZThn104_N8S3461C22D0Ev,_ZThn68_N8S3461C22D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C23__8S3461C228S3461C21__8S3461C20[] = {
  0,
  0,
  ABISELECT(-104,-68),
  0,
  ABISELECT(88,48),
  ABISELECT(-160,-100),
  ABISELECT(-176,-112),
  ABISELECT(-248,-164),
  ABISELECT(-224,-148),
  ABISELECT(-144,-92),
  ABISELECT(128,80),
  ABISELECT(128,80),
  ABISELECT(-224,-148),
  ABISELECT(-264,-172),
  ABISELECT(-232,-156),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S3461C22D1Ev,_ZTv0_n60_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S3461C22D0Ev,_ZTv0_n60_N8S3461C22D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev)();
extern void ABISELECT(_ZThn192_N8S3461C22D1Ev,_ZThn116_N8S3461C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev)();
extern void ABISELECT(_ZThn192_N8S3461C22D0Ev,_ZThn116_N8S3461C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C24__8S3461C228S3461C21__8S3461C20[] = {
  ABISELECT(-192,-116),
  ABISELECT(-312,-196),
  ABISELECT(-312,-196),
  ABISELECT(-320,-204),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C228S3461C21__8S3461C20[] = {
  0,
  ABISELECT(16,8),
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__A1__8S3461C228S3461C21__8S3461C20[] = {
  0,
  ABISELECT(72,44),
  0,
  ABISELECT(-88,-60),
  ABISELECT(-56,-44),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C22D1Ev,_ZTvn16_n44_N8S3461C22D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C22D0Ev,_ZTvn16_n44_N8S3461C22D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__8S3461C228S3461C21__8S3461C20[] = {
  ABISELECT(56,40),
  ABISELECT(-24,-16),
  ABISELECT(40,32),
  ABISELECT(-64,-40),
  ABISELECT(-32,-24),
  ABISELECT(96,64),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C22D1Ev,_ZTvn16_n44_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C22D0Ev,_ZTvn16_n44_N8S3461C22D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C228S3461C21__8S3461C20[] = {
  0,
  0,
  ABISELECT(-64,-48),
  ABISELECT(-72,-56),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C13__A2__8S3461C228S3461C21__8S3461C20[] = {
  ABISELECT(40,24),
  ABISELECT(-80,-56),
  ABISELECT(-80,-56),
  ABISELECT(-88,-64),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C228S3461C21__8S3461C20[] = {
  0,
  0,
  ABISELECT(-360,-236),
  ABISELECT(-232,-148),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__A__8S3461C228S3461C21__8S3461C20[] = {
  ABISELECT(-160,-112),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN8S3461C27D1Ev();
extern void _ZN8S3461C27D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C278S3461C21__8S3461C20[] = {
  ABISELECT(184,116),
  ABISELECT(184,116),
  ABISELECT(-208,-136),
  ABISELECT(272,176),
  ABISELECT(-168,-112),
  ABISELECT(-176,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C27[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&_ZN8S3461C27D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C27D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN8S3461C16D1Ev();
extern void _ZN8S3461C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C168S3461C278S3461C21__8S3461C20[] = {
  ABISELECT(272,176),
  ABISELECT(-168,-112),
  ABISELECT(-176,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&_ZN8S3461C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C16D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C118S3461C168S3461C278S3461C21__A2__8S3461C20[] = {
  ABISELECT(-168,-112),
  ABISELECT(-176,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C118S3461C168S3461C278S3461C21__A4__8S3461C20[] = {
  ABISELECT(-176,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C118S3461C168S3461C278S3461C21__A12__8S3461C20[] = {
  ABISELECT(-176,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C118S3461C168S3461C278S3461C21__A2__8S3461C20[] = {
  0,
  -8,
  ABISELECT(168,112),
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C168S3461C278S3461C21__A13__8S3461C20[] = {
  ABISELECT(-192,-128),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C168S3461C278S3461C21__A5__8S3461C20[] = {
  ABISELECT(-200,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C168S3461C278S3461C21__A14__8S3461C20[] = {
  ABISELECT(-200,-132),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C168S3461C278S3461C21__8S3461C20[] = {
  0,
  -8,
  ABISELECT(168,112),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A__8S3461C168S3461C278S3461C21__8S3461C20[] = {
  ABISELECT(-192,-128),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C16D1Ev,_ZTv0_n24_N8S3461C16D1Ev)();
extern void ABISELECT(_ZThn272_N8S3461C16D1Ev,_ZThn176_N8S3461C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C16D0Ev,_ZTv0_n24_N8S3461C16D0Ev)();
extern void ABISELECT(_ZThn272_N8S3461C16D0Ev,_ZThn176_N8S3461C16D0Ev)() __attribute__((weak));
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C17__8S3461C168S3461C278S3461C21__8S3461C20[] = {
  0,
  ABISELECT(-272,-176),
  ABISELECT(-440,-288),
  ABISELECT(-440,-288),
  ABISELECT(-448,-296),
  ABISELECT(-272,-176),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C16D1Ev,_ZTv0_n24_N8S3461C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C16D0Ev,_ZTv0_n24_N8S3461C16D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__A1__8S3461C168S3461C278S3461C21__8S3461C20[] = {
  ABISELECT(-200,-132),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C278S3461C21__8S3461C20[] = {
  0,
  -8,
  ABISELECT(168,112),
  (VTBL_ENTRY)&(_ZTI8S3461C27[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C16__A2__8S3461C278S3461C21__8S3461C20[] = {
  ABISELECT(-192,-128),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3461C27[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C27D1Ev,_ZTv0_n24_N8S3461C27D1Ev)();
extern void ABISELECT(_ZThn272_N8S3461C27D1Ev,_ZThn176_N8S3461C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C27D0Ev,_ZTv0_n24_N8S3461C27D0Ev)();
extern void ABISELECT(_ZThn272_N8S3461C27D0Ev,_ZThn176_N8S3461C27D0Ev)() __attribute__((weak));
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C17__8S3461C278S3461C21__8S3461C20[] = {
  0,
  ABISELECT(-272,-176),
  ABISELECT(-440,-288),
  ABISELECT(-440,-288),
  ABISELECT(-448,-296),
  ABISELECT(-272,-176),
  (VTBL_ENTRY)&(_ZTI8S3461C27[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C27D1Ev,_ZTv0_n24_N8S3461C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C27D0Ev,_ZTv0_n24_N8S3461C27D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C16__A1__8S3461C278S3461C21__8S3461C20[] = {
  ABISELECT(-200,-132),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3461C27[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C278S3461C21__8S3461C20[] = {
  0,
  0,
  ABISELECT(-360,-236),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI8S3461C27[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C21D1Ev,_ZTv0_n44_N8S3461C21D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S3461C21D0Ev,_ZTv0_n44_N8S3461C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C19__8S3461C21__8S3461C20[] = {
  ABISELECT(24,16),
  ABISELECT(104,72),
  ABISELECT(80,56),
  ABISELECT(64,48),
  ABISELECT(-40,-24),
  ABISELECT(48,36),
  ABISELECT(-24,-16),
  0,
  0,
  -8,
  ABISELECT(104,72),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C21D1Ev,_ZTv0_n44_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C21D0Ev,_ZTv0_n44_N8S3461C21D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn16_N8S3461C21D1Ev,_ZThn8_N8S3461C21D1Ev)();
extern void ABISELECT(_ZThn16_N8S3461C21D0Ev,_ZThn8_N8S3461C21D0Ev)();
extern void _ZN8S3461C222v6Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C22__8S3461C21__8S3461C20[] = {
  ABISELECT(232,148),
  ABISELECT(232,148),
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(-72,-44),
  ABISELECT(-144,-96),
  ABISELECT(-120,-80),
  ABISELECT(192,116),
  ABISELECT(104,68),
  ABISELECT(-160,-104),
  ABISELECT(88,56),
  ABISELECT(-120,-80),
  ABISELECT(-120,-80),
  ABISELECT(-128,-88),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3461C21D1Ev,_ZThn8_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3461C21D0Ev,_ZThn8_N8S3461C21D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C222v6Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S3461C21D1Ev,_ZTv0_n28_N8S3461C21D1Ev)();
extern void ABISELECT(_ZThn104_N8S3461C21D1Ev,_ZThn64_N8S3461C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3461C21D0Ev,_ZTv0_n28_N8S3461C21D0Ev)();
extern void ABISELECT(_ZThn104_N8S3461C21D0Ev,_ZThn64_N8S3461C21D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C18__8S3461C21__8S3461C20[] = {
  0,
  0,
  ABISELECT(-104,-64),
  0,
  ABISELECT(-208,-136),
  ABISELECT(-248,-160),
  ABISELECT(-216,-144),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3461C21D1Ev,_ZTv0_n28_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3461C21D0Ev,_ZTv0_n28_N8S3461C21D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S3461C21D1Ev,_ZTv0_n60_N8S3461C21D1Ev)();
extern void ABISELECT(_ZThn120_N8S3461C21D1Ev,_ZThn76_N8S3461C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S3461C21D0Ev,_ZTv0_n60_N8S3461C21D0Ev)();
extern void ABISELECT(_ZThn120_N8S3461C21D0Ev,_ZThn76_N8S3461C21D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C23__8S3461C21__8S3461C20[] = {
  0,
  0,
  ABISELECT(-120,-76),
  0,
  ABISELECT(88,48),
  ABISELECT(-160,-100),
  ABISELECT(-176,-112),
  ABISELECT(-248,-164),
  ABISELECT(-224,-148),
  ABISELECT(-144,-92),
  ABISELECT(128,80),
  ABISELECT(128,80),
  ABISELECT(-224,-148),
  ABISELECT(-264,-172),
  ABISELECT(-232,-156),
  ABISELECT(-120,-76),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S3461C21D1Ev,_ZTv0_n60_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S3461C21D0Ev,_ZTv0_n60_N8S3461C21D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev)();
extern void ABISELECT(_ZThn208_N8S3461C21D1Ev,_ZThn124_N8S3461C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev)();
extern void ABISELECT(_ZThn208_N8S3461C21D0Ev,_ZThn124_N8S3461C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C24__8S3461C21__8S3461C20[] = {
  ABISELECT(-208,-124),
  ABISELECT(-312,-196),
  ABISELECT(-312,-196),
  ABISELECT(-320,-204),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__A1__8S3461C21__8S3461C20[] = {
  0,
  ABISELECT(16,8),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__A1__8S3461C21__8S3461C20[] = {
  0,
  ABISELECT(56,36),
  0,
  ABISELECT(-88,-60),
  ABISELECT(-56,-44),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C21D1Ev,_ZTvn16_n44_N8S3461C21D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C21D0Ev,_ZTvn16_n44_N8S3461C21D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__8S3461C21__8S3461C20[] = {
  ABISELECT(56,40),
  ABISELECT(-24,-16),
  ABISELECT(40,32),
  ABISELECT(-64,-40),
  ABISELECT(-32,-24),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C21D1Ev,_ZTvn16_n44_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C21D0Ev,_ZTvn16_n44_N8S3461C21D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__A1__8S3461C21__8S3461C20[] = {
  0,
  0,
  ABISELECT(-64,-48),
  ABISELECT(-72,-56),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C13__A2__8S3461C21__8S3461C20[] = {
  ABISELECT(24,16),
  ABISELECT(-80,-56),
  ABISELECT(-80,-56),
  ABISELECT(-88,-64),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C21__8S3461C20[] = {
  0,
  0,
  ABISELECT(-360,-236),
  ABISELECT(-248,-156),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C22__A3__8S3461C21__8S3461C20[] = {
  ABISELECT(-160,-112),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C21D1Ev,_ZTv0_n44_N8S3461C21D1Ev)();
extern void ABISELECT(_ZThn264_N8S3461C21D1Ev,_ZThn164_N8S3461C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S3461C21D0Ev,_ZTv0_n44_N8S3461C21D0Ev)();
extern void ABISELECT(_ZThn264_N8S3461C21D0Ev,_ZThn164_N8S3461C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C26__8S3461C21__8S3461C20[] = {
  ABISELECT(48,36),
  ABISELECT(24,16),
  ABISELECT(-264,-164),
  ABISELECT(-288,-180),
  ABISELECT(-304,-188),
  ABISELECT(-408,-260),
  ABISELECT(-320,-200),
  ABISELECT(-392,-252),
  ABISELECT(-368,-236),
  ABISELECT(-368,-236),
  ABISELECT(-376,-244),
  ABISELECT(-264,-164),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C21D1Ev,_ZTv0_n44_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C21D0Ev,_ZTv0_n44_N8S3461C21D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C21D1Ev,_ZTvn16_n44_N8S3461C21D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C21D0Ev,_ZTvn16_n44_N8S3461C21D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C198S3461C26__A1__8S3461C21__8S3461C20[] = {
  ABISELECT(-312,-196),
  ABISELECT(-392,-252),
  ABISELECT(-328,-204),
  ABISELECT(-432,-276),
  ABISELECT(-400,-260),
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C21D1Ev,_ZTvn16_n44_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C21D0Ev,_ZTvn16_n44_N8S3461C21D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn48_n88_N8S3461C21D1Ev,_ZTvn36_n44_N8S3461C21D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N8S3461C21D0Ev,_ZTvn36_n44_N8S3461C21D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C188S3461C26__A2__8S3461C21__8S3461C20[] = {
  ABISELECT(-416,-272),
  ABISELECT(-456,-296),
  ABISELECT(-424,-280),
  ABISELECT(-312,-200),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S3461C21D1Ev,_ZTvn36_n44_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S3461C21D0Ev,_ZTvn36_n44_N8S3461C21D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void ABISELECT(_ZThn64_N8S3461C21D1Ev,_ZThn40_N8S3461C21D1Ev)();
extern void ABISELECT(_ZThn64_N8S3461C21D0Ev,_ZThn40_N8S3461C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C27__8S3461C21__8S3461C20[] = {
  ABISELECT(184,116),
  ABISELECT(184,116),
  ABISELECT(-208,-136),
  ABISELECT(272,176),
  ABISELECT(-168,-112),
  ABISELECT(-176,-120),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3461C21D1Ev,_ZThn40_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3461C21D0Ev,_ZThn40_N8S3461C21D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C168S3461C27__A13__8S3461C21__8S3461C20[] = {
  ABISELECT(-192,-128),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev)();
extern void ABISELECT(_ZThn336_N8S3461C21D1Ev,_ZThn216_N8S3461C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev)();
extern void ABISELECT(_ZThn336_N8S3461C21D0Ev,_ZThn216_N8S3461C21D0Ev)() __attribute__((weak));
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C17__8S3461C21__8S3461C20[] = {
  0,
  ABISELECT(-336,-216),
  ABISELECT(-440,-288),
  ABISELECT(-440,-288),
  ABISELECT(-448,-296),
  ABISELECT(-336,-216),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C168S3461C27__A5__8S3461C21__8S3461C20[] = {
  ABISELECT(-200,-132),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C18D1Ev();
extern void _ZN8S3461C18D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C18__8S3461C20[] = {
  ABISELECT(-208,-136),
  ABISELECT(-248,-160),
  ABISELECT(-216,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C68S3461C18__A2__8S3461C20[] = {
  ABISELECT(-248,-160),
  ABISELECT(-216,-144),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C68S3461C18__A2__8S3461C20[] = {
  ABISELECT(-216,-144),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C68S3461C18__A6__8S3461C20[] = {
  ABISELECT(-216,-144),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C18__8S3461C20[] = {
  0,
  -8,
  ABISELECT(208,136),
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C23D1Ev();
extern void _ZN8S3461C23D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C23__8S3461C20[] = {
  ABISELECT(88,48),
  ABISELECT(-160,-100),
  ABISELECT(-176,-112),
  ABISELECT(-248,-164),
  ABISELECT(-224,-148),
  ABISELECT(-144,-92),
  ABISELECT(128,80),
  ABISELECT(128,80),
  ABISELECT(-224,-148),
  ABISELECT(-264,-172),
  ABISELECT(-232,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C23D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C23D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C25D1Ev();
extern void _ZN8S3461C25D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C258S3461C23__8S3461C20[] = {
  ABISELECT(-160,-100),
  ABISELECT(-176,-112),
  ABISELECT(-248,-164),
  ABISELECT(-224,-148),
  ABISELECT(-144,-92),
  ABISELECT(128,80),
  ABISELECT(128,80),
  ABISELECT(-224,-148),
  ABISELECT(-264,-172),
  ABISELECT(-232,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C25D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C25D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C18D1Ev();
extern void _ZN8S3461C18D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C188S3461C258S3461C23__A1__8S3461C20[] = {
  ABISELECT(-224,-148),
  ABISELECT(-264,-172),
  ABISELECT(-232,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C68S3461C188S3461C258S3461C23__A3__8S3461C20[] = {
  ABISELECT(-264,-172),
  ABISELECT(-232,-156),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C68S3461C188S3461C258S3461C23__A4__8S3461C20[] = {
  ABISELECT(-232,-156),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C68S3461C188S3461C258S3461C23__A8__8S3461C20[] = {
  ABISELECT(-232,-156),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C188S3461C258S3461C23__A1__8S3461C20[] = {
  0,
  -8,
  ABISELECT(224,148),
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C258S3461C23__8S3461C20[] = {
  0,
  0,
  ABISELECT(-360,-236),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C25D1Ev,_ZTv0_n44_N8S3461C25D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S3461C25D0Ev,_ZTv0_n44_N8S3461C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C19__8S3461C258S3461C23__8S3461C20[] = {
  ABISELECT(24,16),
  ABISELECT(224,148),
  ABISELECT(80,56),
  ABISELECT(64,48),
  ABISELECT(-40,-24),
  ABISELECT(48,36),
  ABISELECT(-24,-16),
  0,
  0,
  -8,
  ABISELECT(224,148),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C25D1Ev,_ZTv0_n44_N8S3461C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C25D0Ev,_ZTv0_n44_N8S3461C25D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C13__8S3461C258S3461C23__8S3461C20[] = {
  ABISELECT(144,92),
  ABISELECT(-80,-56),
  ABISELECT(-80,-56),
  ABISELECT(-88,-64),
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C258S3461C23__8S3461C20[] = {
  0,
  ABISELECT(16,8),
  ABISELECT(248,164),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__A1__8S3461C258S3461C23__8S3461C20[] = {
  0,
  ABISELECT(176,112),
  0,
  ABISELECT(-88,-60),
  ABISELECT(-56,-44),
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C25D1Ev,_ZTvn16_n44_N8S3461C25D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C25D0Ev,_ZTvn16_n44_N8S3461C25D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__8S3461C258S3461C23__8S3461C20[] = {
  ABISELECT(56,40),
  ABISELECT(-24,-16),
  ABISELECT(40,32),
  ABISELECT(-64,-40),
  ABISELECT(-32,-24),
  ABISELECT(200,132),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C25D1Ev,_ZTvn16_n44_N8S3461C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C25D0Ev,_ZTvn16_n44_N8S3461C25D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C258S3461C23__8S3461C20[] = {
  0,
  0,
  ABISELECT(-64,-48),
  ABISELECT(-72,-56),
  ABISELECT(160,100),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C23D1Ev,_ZTv0_n44_N8S3461C23D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S3461C23D0Ev,_ZTv0_n44_N8S3461C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C19__8S3461C23__8S3461C20[] = {
  ABISELECT(24,16),
  ABISELECT(224,148),
  ABISELECT(80,56),
  ABISELECT(64,48),
  ABISELECT(-40,-24),
  ABISELECT(48,36),
  ABISELECT(-24,-16),
  0,
  0,
  -8,
  ABISELECT(224,148),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C23D1Ev,_ZTv0_n44_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C23D0Ev,_ZTv0_n44_N8S3461C23D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev)();
extern void ABISELECT(_ZThn88_N8S3461C23D1Ev,_ZThn48_N8S3461C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev)();
extern void ABISELECT(_ZThn88_N8S3461C23D0Ev,_ZThn48_N8S3461C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C24__8S3461C23__8S3461C20[] = {
  ABISELECT(-88,-48),
  ABISELECT(-312,-196),
  ABISELECT(-312,-196),
  ABISELECT(-320,-204),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C23__8S3461C20[] = {
  0,
  ABISELECT(16,8),
  ABISELECT(248,164),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__8S3461C23__8S3461C20[] = {
  0,
  ABISELECT(176,112),
  0,
  ABISELECT(-88,-60),
  ABISELECT(-56,-44),
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C23D1Ev,_ZTvn16_n44_N8S3461C23D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C23D0Ev,_ZTvn16_n44_N8S3461C23D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__8S3461C23__8S3461C20[] = {
  ABISELECT(56,40),
  ABISELECT(-24,-16),
  ABISELECT(40,32),
  ABISELECT(-64,-40),
  ABISELECT(-32,-24),
  ABISELECT(200,132),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C23D1Ev,_ZTvn16_n44_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C23D0Ev,_ZTvn16_n44_N8S3461C23D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C23__8S3461C20[] = {
  0,
  0,
  ABISELECT(-64,-48),
  ABISELECT(-72,-56),
  ABISELECT(160,100),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C13__A2__8S3461C23__8S3461C20[] = {
  ABISELECT(144,92),
  ABISELECT(-80,-56),
  ABISELECT(-80,-56),
  ABISELECT(-88,-64),
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C23__8S3461C20[] = {
  0,
  0,
  ABISELECT(-360,-236),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C24D1Ev();
extern void _ZN8S3461C24D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C24__8S3461C20[] = {
  ABISELECT(-312,-196),
  ABISELECT(-312,-196),
  ABISELECT(-320,-204),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C24[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C24D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C24D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C24__A2__8S3461C20[] = {
  ABISELECT(-312,-196),
  ABISELECT(-312,-196),
  ABISELECT(-320,-204),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C138S3461C24__A2__8S3461C20[] = {
  0,
  -8,
  ABISELECT(312,196),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C24__8S3461C20[] = {
  0,
  -8,
  ABISELECT(312,196),
  (VTBL_ENTRY)&(_ZTI8S3461C24[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C20[] = {
  0,
  0,
  ABISELECT(-360,-236),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__A3__8S3461C20[] = {
  ABISELECT(-360,-236),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C8__A7__8S3461C20[] = {
  ABISELECT(-360,-236),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C26D1Ev();
extern void _ZN8S3461C26D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C26__8S3461C20[] = {
  ABISELECT(-288,-180),
  ABISELECT(-304,-188),
  ABISELECT(-408,-260),
  ABISELECT(-320,-200),
  ABISELECT(-392,-252),
  ABISELECT(-368,-236),
  ABISELECT(-368,-236),
  ABISELECT(-376,-244),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C26D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C26D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C19D1Ev();
extern void _ZN8S3461C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C198S3461C26__A1__8S3461C20[] = {
  ABISELECT(-288,-180),
  ABISELECT(-304,-188),
  ABISELECT(-408,-260),
  ABISELECT(-320,-200),
  ABISELECT(-392,-252),
  ABISELECT(-368,-236),
  ABISELECT(-368,-236),
  ABISELECT(-376,-244),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C19D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C19D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C198S3461C26__A4__8S3461C20[] = {
  ABISELECT(-368,-236),
  ABISELECT(-368,-236),
  ABISELECT(-376,-244),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C138S3461C198S3461C26__A4__8S3461C20[] = {
  0,
  -8,
  ABISELECT(368,236),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C4D1Ev();
extern void _ZN7S3461C4D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C198S3461C26__A1__8S3461C20[] = {
  ABISELECT(-312,-196),
  ABISELECT(-392,-252),
  ABISELECT(-328,-204),
  ABISELECT(-432,-276),
  ABISELECT(-400,-260),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C67S3461C48S3461C198S3461C26__A4__8S3461C20[] = {
  ABISELECT(-432,-276),
  ABISELECT(-400,-260),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C67S3461C48S3461C198S3461C26__A5__8S3461C20[] = {
  ABISELECT(-400,-260),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C67S3461C48S3461C198S3461C26__A10__8S3461C20[] = {
  ABISELECT(-400,-260),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__7S3461C48S3461C198S3461C26__A1__8S3461C20[] = {
  0,
  0,
  ABISELECT(-64,-48),
  ABISELECT(-72,-56),
  ABISELECT(328,204),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A2__7S3461C48S3461C198S3461C26__A1__8S3461C20[] = {
  0,
  -8,
  ABISELECT(392,252),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C13__7S3461C48S3461C198S3461C26__A1__8S3461C20[] = {
  ABISELECT(312,196),
  ABISELECT(-80,-56),
  ABISELECT(-80,-56),
  ABISELECT(-88,-64),
  ABISELECT(312,196),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C198S3461C26__A1__8S3461C20[] = {
  0,
  ABISELECT(16,8),
  ABISELECT(392,252),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C198S3461C26__A1__8S3461C20[] = {
  0,
  -8,
  ABISELECT(368,236),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__8S3461C198S3461C26__A1__8S3461C20[] = {
  0,
  ABISELECT(320,200),
  0,
  ABISELECT(-88,-60),
  ABISELECT(-56,-44),
  ABISELECT(320,200),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn24_N8S3461C19D1Ev,_ZThn16_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn24_N8S3461C19D0Ev,_ZThn16_N8S3461C19D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C4__8S3461C198S3461C26__A1__8S3461C20[] = {
  ABISELECT(-312,-196),
  ABISELECT(-392,-252),
  ABISELECT(-328,-204),
  ABISELECT(-432,-276),
  ABISELECT(-400,-260),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C19D1Ev,_ZThn16_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C19D0Ev,_ZThn16_N8S3461C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C198S3461C26__A1__8S3461C20[] = {
  0,
  0,
  ABISELECT(-64,-48),
  ABISELECT(-72,-56),
  ABISELECT(304,188),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C13__A1__8S3461C198S3461C26__A1__8S3461C20[] = {
  ABISELECT(288,180),
  ABISELECT(-80,-56),
  ABISELECT(-80,-56),
  ABISELECT(-88,-64),
  ABISELECT(288,180),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C18D1Ev();
extern void _ZN8S3461C18D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C188S3461C26__A2__8S3461C20[] = {
  ABISELECT(-416,-272),
  ABISELECT(-456,-296),
  ABISELECT(-424,-280),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C68S3461C188S3461C26__A5__8S3461C20[] = {
  ABISELECT(-456,-296),
  ABISELECT(-424,-280),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C68S3461C188S3461C26__A6__8S3461C20[] = {
  ABISELECT(-424,-280),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C68S3461C188S3461C26__A11__8S3461C20[] = {
  ABISELECT(-424,-280),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C188S3461C26__A2__8S3461C20[] = {
  0,
  -8,
  ABISELECT(416,272),
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C26D1Ev,_ZTv0_n24_N8S3461C26D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C26D0Ev,_ZTv0_n24_N8S3461C26D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__8S3461C26__8S3461C20[] = {
  0,
  ABISELECT(320,200),
  0,
  ABISELECT(-88,-60),
  ABISELECT(-56,-44),
  ABISELECT(320,200),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C26D1Ev,_ZTv0_n24_N8S3461C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C26D0Ev,_ZTv0_n24_N8S3461C26D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C26__8S3461C20[] = {
  0,
  ABISELECT(16,8),
  ABISELECT(392,252),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A2__8S3461C26__8S3461C20[] = {
  0,
  -8,
  ABISELECT(368,236),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn24_N8S3461C26D1Ev,_ZThn16_N8S3461C26D1Ev)();
extern void ABISELECT(_ZThn24_N8S3461C26D0Ev,_ZThn16_N8S3461C26D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__8S3461C26__8S3461C20[] = {
  ABISELECT(-312,-196),
  ABISELECT(-392,-252),
  ABISELECT(-328,-204),
  ABISELECT(-432,-276),
  ABISELECT(-400,-260),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C26D1Ev,_ZThn16_N8S3461C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C26D0Ev,_ZThn16_N8S3461C26D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C26__8S3461C20[] = {
  0,
  0,
  ABISELECT(-64,-48),
  ABISELECT(-72,-56),
  ABISELECT(304,188),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C26D1Ev,_ZTv0_n24_N8S3461C26D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C26D0Ev,_ZTv0_n24_N8S3461C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C13__A1__8S3461C26__8S3461C20[] = {
  ABISELECT(288,180),
  ABISELECT(-80,-56),
  ABISELECT(-80,-56),
  ABISELECT(-88,-64),
  ABISELECT(288,180),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C26D1Ev,_ZTv0_n24_N8S3461C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C26D0Ev,_ZTv0_n24_N8S3461C26D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn48_N8S3461C26D1Ev,_ZThn36_N8S3461C26D1Ev)();
extern void ABISELECT(_ZThn48_N8S3461C26D0Ev,_ZThn36_N8S3461C26D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C18__8S3461C26__8S3461C20[] = {
  ABISELECT(-416,-272),
  ABISELECT(-456,-296),
  ABISELECT(-424,-280),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S3461C26D1Ev,_ZThn36_N8S3461C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S3461C26D0Ev,_ZThn36_N8S3461C26D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C17D1Ev();
extern void _ZN8S3461C17D0Ev();
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C17__8S3461C20[] = {
  ABISELECT(-440,-288),
  ABISELECT(-440,-288),
  ABISELECT(-448,-296),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C17[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C17D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C17D0Ev,
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C17__A5__8S3461C20[] = {
  ABISELECT(-440,-288),
  ABISELECT(-440,-288),
  ABISELECT(-448,-296),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C138S3461C17__A5__8S3461C20[] = {
  0,
  -8,
  ABISELECT(440,288),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C17__8S3461C20[] = {
  0,
  -8,
  ABISELECT(440,288),
  (VTBL_ENTRY)&(_ZTI8S3461C17[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
static  VTT_ENTRY vtt_S3461C20[] = {
  {&(_ZTV8S3461C20[19]),  19,249},
  {&(_tg__ZTV8S3461C14__A__8S3461C20[5]),  5,6},
  {&(_tg__ZTV7S3461C8__8S3461C14__A__8S3461C20[4]),  4,5},
  {&(_ZTV8S3461C20[26]),  26,249},
  {&(_ZTV8S3461C20[39]),  39,249},
  {&(_ZTV8S3461C20[39]),  39,249},
  {&(_ZTV8S3461C20[60]),  60,249},
  {&(_ZTV8S3461C20[49]),  49,249},
  {&(_ZTV8S3461C20[70]),  70,249},
  {&(_ZTV8S3461C20[78]),  78,249},
  {&(_ZTV8S3461C20[102]),  102,249},
  {&(_ZTV8S3461C20[122]),  122,249},
  {&(_ZTV8S3461C20[159]),  159,249},
  {&(_ZTV8S3461C20[181]),  181,249},
  {&(_ZTV8S3461C20[192]),  192,249},
  {&(_ZTV8S3461C20[200]),  200,249},
  {&(_ZTV8S3461C20[200]),  200,249},
  {&(_ZTV8S3461C20[129]),  129,249},
  {&(_ZTV8S3461C20[214]),  214,249},
  {&(_ZTV8S3461C20[224]),  224,249},
  {&(_ZTV8S3461C20[233]),  233,249},
  {&(_ZTV8S3461C20[138]),  138,249},
  {&(_ZTV8S3461C20[145]),  145,249},
  {&(_ZTV8S3461C20[245]),  245,249},
  {&(_ZTV8S3461C20[149]),  149,249},
  {&(_tg__ZTV8S3461C12__8S3461C20[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C12__8S3461C20[3]),  3,4},
  {&(_tg__ZTV8S3461C19__8S3461C20[10]),  10,13},
  {&(_tg__ZTV8S3461C138S3461C19__8S3461C20[5]),  5,8},
  {&(_tg__ZTV8S3461C138S3461C19__8S3461C20[5]),  5,8},
  {&(_tg__ZTV7S3461C48S3461C19__8S3461C20[7]),  7,11},
  {&(_tg__ZTV7S3461C67S3461C48S3461C19__A1__8S3461C20[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C67S3461C48S3461C19__A1__8S3461C20[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C67S3461C48S3461C19__A3__8S3461C20[3]),  3,4},
  {&(_tg__ZTV8S3461C11__7S3461C48S3461C19__8S3461C20[6]),  6,8},
  {&(_tg__ZTV7S3461C9__A2__7S3461C48S3461C19__8S3461C20[4]),  4,5},
  {&(_tg__ZTV8S3461C13__7S3461C48S3461C19__8S3461C20[6]),  6,9},
  {&(_tg__ZTV8S3461C12__8S3461C19__8S3461C20[4]),  4,5},
  {&(_tg__ZTV8S3461C19__8S3461C20[10]),  10,13},
  {&(_tg__ZTV7S3461C6__8S3461C19__8S3461C20[7]),  7,11},
  {&(_tg__ZTV7S3461C4__8S3461C19__8S3461C20[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C19__8S3461C20[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A1__8S3461C19__8S3461C20[6]),  6,9},
  {&(_tg__ZTV7S3461C9__A1__8S3461C20[3]),  3,4},
  {&(_tg__ZTV7S3461C6__8S3461C20[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C6__8S3461C20[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C6__A2__8S3461C20[3]),  3,4},
  {&(_tg__ZTV8S3461C11__8S3461C20[4]),  4,6},
  {&(_tg__ZTV8S3461C128S3461C11__A1__8S3461C20[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C11__A4__8S3461C20[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C11__8S3461C20[4]),  4,5},
  {&(_tg__ZTV8S3461C13__A1__8S3461C20[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C13__A1__8S3461C20[4]),  4,5},
  {&(_tg__ZTV8S3461C21__8S3461C20[17]),  17,21},
  {&(_tg__ZTV8S3461C118S3461C21__A1__8S3461C20[4]),  4,6},
  {&(_tg__ZTV8S3461C128S3461C118S3461C21__A2__8S3461C20[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C118S3461C21__A5__8S3461C20[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C118S3461C21__A1__8S3461C20[4]),  4,5},
  {&(_tg__ZTV8S3461C228S3461C21__8S3461C20[16]),  16,20},
  {&(_tg__ZTV8S3461C138S3461C228S3461C21__A3__8S3461C20[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C138S3461C228S3461C21__A3__8S3461C20[4]),  4,5},
  {&(_tg__ZTV8S3461C128S3461C228S3461C21__A3__8S3461C20[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C228S3461C21__A9__8S3461C20[3]),  3,4},
  {&(_tg__ZTV8S3461C18__8S3461C228S3461C21__8S3461C20[9]),  9,14},
  {&(_tg__ZTV8S3461C19__8S3461C228S3461C21__8S3461C20[12]),  12,15},
  {&(_tg__ZTV8S3461C23__8S3461C228S3461C21__8S3461C20[17]),  17,22},
  {&(_tg__ZTV8S3461C24__8S3461C228S3461C21__8S3461C20[6]),  6,9},
  {&(_tg__ZTV8S3461C19__8S3461C228S3461C21__8S3461C20[12]),  12,15},
  {&(_tg__ZTV8S3461C12__8S3461C228S3461C21__8S3461C20[4]),  4,5},
  {&(_tg__ZTV7S3461C6__A1__8S3461C228S3461C21__8S3461C20[7]),  7,11},
  {&(_tg__ZTV7S3461C48S3461C19__8S3461C228S3461C21__8S3461C20[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C228S3461C21__8S3461C20[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A2__8S3461C228S3461C21__8S3461C20[6]),  6,9},
  {&(_tg__ZTV8S3461C14__8S3461C228S3461C21__8S3461C20[5]),  5,6},
  {&(_tg__ZTV8S3461C14__8S3461C228S3461C21__8S3461C20[5]),  5,6},
  {&(_tg__ZTV8S3461C12__A__8S3461C228S3461C21__8S3461C20[3]),  3,4},
  {&(_tg__ZTV8S3461C278S3461C21__8S3461C20[8]),  8,12},
  {&(_tg__ZTV8S3461C168S3461C278S3461C21__8S3461C20[5]),  5,9},
  {&(_tg__ZTV8S3461C118S3461C168S3461C278S3461C21__A2__8S3461C20[4]),  4,6},
  {&(_tg__ZTV8S3461C128S3461C118S3461C168S3461C278S3461C21__A4__8S3461C20[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C118S3461C168S3461C278S3461C21__A12__8S3461C20[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C118S3461C168S3461C278S3461C21__A2__8S3461C20[4]),  4,5},
  {&(_tg__ZTV7S3461C98S3461C168S3461C278S3461C21__A13__8S3461C20[3]),  3,4},
  {&(_tg__ZTV8S3461C128S3461C168S3461C278S3461C21__A5__8S3461C20[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C168S3461C278S3461C21__A14__8S3461C20[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C168S3461C278S3461C21__8S3461C20[4]),  4,5},
  {&(_tg__ZTV7S3461C9__A__8S3461C168S3461C278S3461C21__8S3461C20[3]),  3,4},
  {&(_tg__ZTV8S3461C17__8S3461C168S3461C278S3461C21__8S3461C20[7]),  7,11},
  {&(_tg__ZTV8S3461C12__A1__8S3461C168S3461C278S3461C21__8S3461C20[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C278S3461C21__8S3461C20[4]),  4,5},
  {&(_tg__ZTV7S3461C98S3461C16__A2__8S3461C278S3461C21__8S3461C20[3]),  3,4},
  {&(_tg__ZTV8S3461C17__8S3461C278S3461C21__8S3461C20[7]),  7,11},
  {&(_tg__ZTV8S3461C128S3461C16__A1__8S3461C278S3461C21__8S3461C20[3]),  3,4},
  {&(_tg__ZTV8S3461C14__8S3461C278S3461C21__8S3461C20[5]),  5,6},
  {&(_tg__ZTV8S3461C14__8S3461C278S3461C21__8S3461C20[5]),  5,6},
  {&(_tg__ZTV8S3461C19__8S3461C21__8S3461C20[12]),  12,15},
  {&(_tg__ZTV8S3461C22__8S3461C21__8S3461C20[16]),  16,20},
  {&(_tg__ZTV8S3461C18__8S3461C21__8S3461C20[9]),  9,14},
  {&(_tg__ZTV8S3461C23__8S3461C21__8S3461C20[17]),  17,22},
  {&(_tg__ZTV8S3461C24__8S3461C21__8S3461C20[6]),  6,9},
  {&(_tg__ZTV8S3461C19__8S3461C21__8S3461C20[12]),  12,15},
  {&(_tg__ZTV8S3461C12__A1__8S3461C21__8S3461C20[4]),  4,5},
  {&(_tg__ZTV7S3461C6__A1__8S3461C21__8S3461C20[7]),  7,11},
  {&(_tg__ZTV7S3461C48S3461C19__8S3461C21__8S3461C20[7]),  7,11},
  {&(_tg__ZTV8S3461C11__A1__8S3461C21__8S3461C20[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A2__8S3461C21__8S3461C20[6]),  6,9},
  {&(_tg__ZTV8S3461C14__8S3461C21__8S3461C20[5]),  5,6},
  {&(_tg__ZTV8S3461C14__8S3461C21__8S3461C20[5]),  5,6},
  {&(_tg__ZTV8S3461C128S3461C22__A3__8S3461C21__8S3461C20[3]),  3,4},
  {&(_tg__ZTV8S3461C26__8S3461C21__8S3461C20[13]),  13,16},
  {&(_tg__ZTV7S3461C48S3461C198S3461C26__A1__8S3461C21__8S3461C20[7]),  7,11},
  {&(_tg__ZTV8S3461C188S3461C26__A2__8S3461C21__8S3461C20[5]),  5,10},
  {&(_tg__ZTV8S3461C27__8S3461C21__8S3461C20[8]),  8,12},
  {&(_tg__ZTV7S3461C98S3461C168S3461C27__A13__8S3461C21__8S3461C20[3]),  3,4},
  {&(_tg__ZTV8S3461C17__8S3461C21__8S3461C20[7]),  7,11},
  {&(_tg__ZTV8S3461C128S3461C168S3461C27__A5__8S3461C21__8S3461C20[3]),  3,4},
  {&(_tg__ZTV8S3461C18__8S3461C20[5]),  5,10},
  {&(_tg__ZTV7S3461C68S3461C18__A2__8S3461C20[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C68S3461C18__A2__8S3461C20[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C68S3461C18__A6__8S3461C20[3]),  3,4},
  {&(_tg__ZTV7S3461C9__8S3461C18__8S3461C20[4]),  4,5},
  {&(_tg__ZTV8S3461C23__8S3461C20[13]),  13,18},
  {&(_tg__ZTV8S3461C258S3461C23__8S3461C20[12]),  12,17},
  {&(_tg__ZTV8S3461C188S3461C258S3461C23__A1__8S3461C20[5]),  5,10},
  {&(_tg__ZTV7S3461C68S3461C188S3461C258S3461C23__A3__8S3461C20[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C68S3461C188S3461C258S3461C23__A4__8S3461C20[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C68S3461C188S3461C258S3461C23__A8__8S3461C20[3]),  3,4},
  {&(_tg__ZTV7S3461C9__8S3461C188S3461C258S3461C23__A1__8S3461C20[4]),  4,5},
  {&(_tg__ZTV8S3461C14__8S3461C258S3461C23__8S3461C20[5]),  5,6},
  {&(_tg__ZTV8S3461C14__8S3461C258S3461C23__8S3461C20[5]),  5,6},
  {&(_tg__ZTV8S3461C19__8S3461C258S3461C23__8S3461C20[12]),  12,15},
  {&(_tg__ZTV8S3461C13__8S3461C258S3461C23__8S3461C20[6]),  6,9},
  {&(_tg__ZTV8S3461C19__8S3461C258S3461C23__8S3461C20[12]),  12,15},
  {&(_tg__ZTV8S3461C12__8S3461C258S3461C23__8S3461C20[4]),  4,5},
  {&(_tg__ZTV7S3461C6__A1__8S3461C258S3461C23__8S3461C20[7]),  7,11},
  {&(_tg__ZTV7S3461C48S3461C19__8S3461C258S3461C23__8S3461C20[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C258S3461C23__8S3461C20[6]),  6,8},
  {&(_tg__ZTV8S3461C19__8S3461C23__8S3461C20[12]),  12,15},
  {&(_tg__ZTV8S3461C24__8S3461C23__8S3461C20[6]),  6,9},
  {&(_tg__ZTV8S3461C19__8S3461C23__8S3461C20[12]),  12,15},
  {&(_tg__ZTV8S3461C12__8S3461C23__8S3461C20[4]),  4,5},
  {&(_tg__ZTV7S3461C6__8S3461C23__8S3461C20[7]),  7,11},
  {&(_tg__ZTV7S3461C48S3461C19__8S3461C23__8S3461C20[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C23__8S3461C20[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A2__8S3461C23__8S3461C20[6]),  6,9},
  {&(_tg__ZTV8S3461C14__8S3461C23__8S3461C20[5]),  5,6},
  {&(_tg__ZTV8S3461C14__8S3461C23__8S3461C20[5]),  5,6},
  {&(_tg__ZTV8S3461C24__8S3461C20[5]),  5,8},
  {&(_tg__ZTV8S3461C138S3461C24__A2__8S3461C20[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C138S3461C24__A2__8S3461C20[4]),  4,5},
  {&(_tg__ZTV7S3461C9__8S3461C24__8S3461C20[4]),  4,5},
  {&(_tg__ZTV8S3461C14__8S3461C20[5]),  5,6},
  {&(_tg__ZTV8S3461C14__8S3461C20[5]),  5,6},
  {&(_tg__ZTV7S3461C8__A3__8S3461C20[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C8__A7__8S3461C20[3]),  3,4},
  {&(_tg__ZTV8S3461C26__8S3461C20[10]),  10,13},
  {&(_tg__ZTV8S3461C198S3461C26__A1__8S3461C20[10]),  10,13},
  {&(_tg__ZTV8S3461C138S3461C198S3461C26__A4__8S3461C20[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C138S3461C198S3461C26__A4__8S3461C20[4]),  4,5},
  {&(_tg__ZTV7S3461C48S3461C198S3461C26__A1__8S3461C20[7]),  7,11},
  {&(_tg__ZTV7S3461C67S3461C48S3461C198S3461C26__A4__8S3461C20[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C67S3461C48S3461C198S3461C26__A5__8S3461C20[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C67S3461C48S3461C198S3461C26__A10__8S3461C20[3]),  3,4},
  {&(_tg__ZTV8S3461C11__7S3461C48S3461C198S3461C26__A1__8S3461C20[6]),  6,8},
  {&(_tg__ZTV7S3461C9__A2__7S3461C48S3461C198S3461C26__A1__8S3461C20[4]),  4,5},
  {&(_tg__ZTV8S3461C13__7S3461C48S3461C198S3461C26__A1__8S3461C20[6]),  6,9},
  {&(_tg__ZTV8S3461C12__8S3461C198S3461C26__A1__8S3461C20[4]),  4,5},
  {&(_tg__ZTV7S3461C9__A1__8S3461C198S3461C26__A1__8S3461C20[4]),  4,5},
  {&(_tg__ZTV7S3461C6__8S3461C198S3461C26__A1__8S3461C20[7]),  7,11},
  {&(_tg__ZTV7S3461C4__8S3461C198S3461C26__A1__8S3461C20[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C198S3461C26__A1__8S3461C20[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A1__8S3461C198S3461C26__A1__8S3461C20[6]),  6,9},
  {&(_tg__ZTV8S3461C188S3461C26__A2__8S3461C20[5]),  5,10},
  {&(_tg__ZTV7S3461C68S3461C188S3461C26__A5__8S3461C20[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C68S3461C188S3461C26__A6__8S3461C20[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C68S3461C188S3461C26__A11__8S3461C20[3]),  3,4},
  {&(_tg__ZTV7S3461C9__8S3461C188S3461C26__A2__8S3461C20[4]),  4,5},
  {&(_tg__ZTV7S3461C6__8S3461C26__8S3461C20[7]),  7,11},
  {&(_tg__ZTV8S3461C12__8S3461C26__8S3461C20[4]),  4,5},
  {&(_tg__ZTV7S3461C9__A2__8S3461C26__8S3461C20[4]),  4,5},
  {&(_tg__ZTV7S3461C48S3461C19__8S3461C26__8S3461C20[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C26__8S3461C20[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A1__8S3461C26__8S3461C20[6]),  6,9},
  {&(_tg__ZTV8S3461C18__8S3461C26__8S3461C20[5]),  5,10},
  {&(_tg__ZTV8S3461C17__8S3461C20[5]),  5,9},
  {&(_tg__ZTV8S3461C138S3461C17__A5__8S3461C20[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C138S3461C17__A5__8S3461C20[4]),  4,5},
  {&(_tg__ZTV7S3461C9__8S3461C17__8S3461C20[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S3461C20[];
extern  VTBL_ENTRY _ZTV8S3461C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C20[];
static VTBL_ENTRY alt_thunk_names13[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S3461C23D0Ev,_ZThn48_N8S3461C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S3461C23D1Ev,_ZThn48_N8S3461C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C21D0Ev,_ZTv0_n44_N8S3461C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S3461C21D0Ev,_ZThn164_N8S3461C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C21D1Ev,_ZTv0_n44_N8S3461C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S3461C21D1Ev,_ZThn164_N8S3461C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S3461C21D0Ev,_ZThn216_N8S3461C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3461C21D0Ev,_ZThn124_N8S3461C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S3461C21D1Ev,_ZThn216_N8S3461C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3461C21D1Ev,_ZThn124_N8S3461C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S3461C21D0Ev,_ZTv0_n60_N8S3461C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S3461C21D0Ev,_ZThn76_N8S3461C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S3461C21D1Ev,_ZTv0_n60_N8S3461C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S3461C21D1Ev,_ZThn76_N8S3461C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3461C21D0Ev,_ZTv0_n28_N8S3461C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S3461C21D0Ev,_ZThn64_N8S3461C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3461C21D1Ev,_ZTv0_n28_N8S3461C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S3461C21D1Ev,_ZThn64_N8S3461C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C27D0Ev,_ZTv0_n24_N8S3461C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S3461C27D0Ev,_ZThn176_N8S3461C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C27D1Ev,_ZTv0_n24_N8S3461C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S3461C27D1Ev,_ZThn176_N8S3461C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C16D0Ev,_ZTv0_n24_N8S3461C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S3461C16D0Ev,_ZThn176_N8S3461C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C16D1Ev,_ZTv0_n24_N8S3461C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S3461C16D1Ev,_ZThn176_N8S3461C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3461C22D0Ev,_ZThn116_N8S3461C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3461C22D1Ev,_ZThn116_N8S3461C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S3461C22D0Ev,_ZTv0_n60_N8S3461C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S3461C22D0Ev,_ZThn68_N8S3461C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S3461C22D1Ev,_ZTv0_n60_N8S3461C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S3461C22D1Ev,_ZThn68_N8S3461C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3461C22D0Ev,_ZTv0_n28_N8S3461C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S3461C22D0Ev,_ZThn56_N8S3461C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3461C22D1Ev,_ZTv0_n28_N8S3461C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S3461C22D1Ev,_ZThn56_N8S3461C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S3461C19D0Ev,_ZThn56_N8S3461C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S3461C19D0Ev,_ZThn36_N8S3461C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S3461C19D1Ev,_ZThn56_N8S3461C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S3461C19D1Ev,_ZThn36_N8S3461C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S3461C4D0Ev,_ZThn40_N7S3461C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S3461C4D1Ev,_ZThn40_N7S3461C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S3461C20D0Ev,_ZTv0_n60_N8S3461C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S3461C20D0Ev,_ZThn172_N8S3461C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S3461C20D1Ev,_ZTv0_n60_N8S3461C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S3461C20D1Ev,_ZThn172_N8S3461C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3461C20D0Ev,_ZTv0_n28_N8S3461C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S3461C20D0Ev,_ZThn160_N8S3461C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3461C20D1Ev,_ZTv0_n28_N8S3461C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S3461C20D1Ev,_ZThn160_N8S3461C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n160_N8S3461C20D0Ev,_ZTv0_n80_N8S3461C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S3461C20D0Ev,_ZThn96_N8S3461C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n160_N8S3461C20D1Ev,_ZTv0_n80_N8S3461C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S3461C20D1Ev,_ZThn96_N8S3461C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C20D0Ev,_ZTv0_n24_N8S3461C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S3461C20D0Ev,_ZThn312_N8S3461C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S3461C20D0Ev,_ZThn220_N8S3461C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S3461C20D0Ev,_ZThn80_N8S3461C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S3461C20D0Ev,_ZThn60_N8S3461C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C20D1Ev,_ZTv0_n24_N8S3461C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S3461C20D1Ev,_ZThn312_N8S3461C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S3461C20D1Ev,_ZThn220_N8S3461C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S3461C20D1Ev,_ZThn80_N8S3461C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S3461C20D1Ev,_ZThn60_N8S3461C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C20D0Ev,_ZTv0_n44_N8S3461C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S3461C20D0Ev,_ZThn260_N8S3461C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S3461C20D0Ev,_ZThn24_N8S3461C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C20D1Ev,_ZTv0_n44_N8S3461C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S3461C20D1Ev,_ZThn260_N8S3461C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S3461C20D1Ev,_ZThn24_N8S3461C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3461C20 = {  "S3461C20", // class name
  bases_S3461C20, 109,
  &(vtc_S3461C20[0]), // expected_vtbl_contents
  &(vtt_S3461C20[0]), // expected_vtt_contents
  ABISELECT(504,328), // object size
  NSPAIRA(_ZTI8S3461C20),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S3461C20),249, //virtual function table var
  19, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3461C20),188, //virtual table table var
  61, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names13,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3461C1  : S3461C2 , S3461C19 , S3461C20 {
  virtual  ~S3461C1(); // _ZN7S3461C1D2Ev
  S3461C1(); // tgen
};
//SIG(1 S3461C1) C1{ BC2{ BC3{ VBC4{ BC5{ m FL} BC6{ BC5 VBC7{ m} BC8{ BC9{ VBC5 BC7 v1}} vd v2} BC10{ m} VBC11{ VBC5 BC12{ VBC5 BC9 BC7} VBC9 v3} VBC13{ BC5 VBC9 BC7 vd} vd} BC6 BC14{ VBC8 Fi} vd FD} VBC12 BC14 BC15{ BC16{ BC11 BC9 VBC17{ BC13 v4} BC12} BC14 BC18{ VBC9 BC6 vd v5} BC6 vd Fp} Fs:6} BC19{ VBC5 VBC12 BC13 VBC6 BC4} BC20{ VBC12 VBC19 VBC21{ BC11 BC22{ VBC18 BC5 VBC23{ VBC9 VBC24{ BC7 VBC9 BC13 BC5 vd FL} VBC19 BC25{ VBC14 BC18 VBC13 VBC19 vd Fp[9]} vd} BC13 BC12 vd v6 Fc} VBC26{ VBC6 BC19 BC18 Fi} BC27{ BC16 VBC7 VBC14 Fi} vd} BC14 vd} vd}


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

static void Test_S3461C1()
{
  extern Class_Descriptor cd_S3461C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(48,122)];
    init_test(&cd_S3461C1, buf);
    S3461C1 *dp, &lv = *(dp=new (buf) S3461C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(752,484), "sizeof(S3461C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3461C1)");
    /*is_ambiguous_... S3461C1::S3461C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C4*), ABISELECT(248,156), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C4*), ABISELECT(240,148), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C4*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C3::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C3*)(S3461C2*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C18*)(S3461C15*)(S3461C2*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C15::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C15*)(S3461C2*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C18 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C18*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C6*)(S3461C18*)(S3461C26*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C27::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C27*)(S3461C21*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C11*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C11*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C3::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C3*)(S3461C2*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*), ABISELECT(256,164), "S3461C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C11*)(S3461C16*)(S3461C15*)(S3461C2*), ABISELECT(256,164), "S3461C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C15*)(S3461C2*), ABISELECT(256,164), "S3461C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C15*)(S3461C2*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C16*)(S3461C15*)(S3461C2*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C16*)(S3461C15*)(S3461C2*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C16*)(S3461C15*)(S3461C2*), ABISELECT(256,164), "S3461C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C15*)(S3461C2*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C15::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C15*)(S3461C2*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C19*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C19*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C11*)(S3461C21*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C11*)(S3461C21*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C11*)(S3461C21*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(256,164), "S3461C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C22*)(S3461C21*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C22*)(S3461C21*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C19::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C19*)(S3461C26*), ABISELECT(256,164), "S3461C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(256,164), "S3461C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C26*), ABISELECT(256,164), "S3461C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C11*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(256,164), "S3461C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(256,164), "S3461C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C12*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C9*)(S3461C12*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(256,164), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*), ABISELECT(232,144), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C4 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*), ABISELECT(232,144), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C4 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C4*), ABISELECT(232,144), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C4 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C4*), ABISELECT(232,144), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C4 */ AMB_check_base_class_offset(lv, (S28C52_nt*)(S3461C4*), ABISELECT(232,144), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(264,172), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C11*), ABISELECT(264,172), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C11*), ABISELECT(272,176), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C11*), ABISELECT(264,172), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*), ABISELECT(280,180), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C11*), ABISELECT(280,180), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*), ABISELECT(280,180), "S3461C1");
    /*is_ambiguous_... S3461C11::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C11*)(S3461C16*)(S3461C15*)(S3461C2*), ABISELECT(280,180), "S3461C1");
    check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C17*), ABISELECT(280,180), "S3461C1");
    /*is_ambiguous_... S3461C18::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C18*)(S3461C15*)(S3461C2*), ABISELECT(280,180), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C19*), ABISELECT(280,180), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C19*), ABISELECT(280,180), "S3461C1");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C11*)(S3461C21*), ABISELECT(280,180), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C18*), ABISELECT(280,180), "S3461C1");
    /*is_ambiguous_... S3461C23::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C23*), ABISELECT(280,180), "S3461C1");
    check_base_class_offset(lv, (S3461C9*)(S3461C24*), ABISELECT(280,180), "S3461C1");
    check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C24*), ABISELECT(280,180), "S3461C1");
    /*is_ambiguous_... S3461C18::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(280,180), "S3461C1");
    /*is_ambiguous_... S3461C22::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C22*)(S3461C21*), ABISELECT(280,180), "S3461C1");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C13*)(S3461C19*)(S3461C26*), ABISELECT(280,180), "S3461C1");
    /*is_ambiguous_... S3461C18::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C18*)(S3461C26*), ABISELECT(280,180), "S3461C1");
    /*is_ambiguous_... S3461C11::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C11*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(280,180), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C4 */ AMB_check_base_class_offset(lv, (S3461C11*)(S3461C4*), ABISELECT(264,172), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C11*)(S3461C4*)(S3461C19*), ABISELECT(264,172), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C11*)(S3461C4*)(S3461C19*), ABISELECT(264,172), "S3461C1");
    check_base_class_offset(lv, (S3461C11*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(264,172), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*), ABISELECT(288,184), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*), ABISELECT(296,192), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C4 */ AMB_check_base_class_offset(lv, (S3461C13*)(S3461C4*), ABISELECT(280,180), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C13*)(S3461C4*)(S3461C19*), ABISELECT(280,180), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C13*)(S3461C4*)(S3461C19*), ABISELECT(280,180), "S3461C1");
    /*is_ambiguous_... S3461C25::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C13*)(S3461C25*)(S3461C23*), ABISELECT(280,180), "S3461C1");
    check_base_class_offset(lv, (S3461C13*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(280,180), "S3461C1");
    check_base_class_offset(lv, (S3461C4*)(S3461C3*)(S3461C2*), ABISELECT(232,144), "S3461C1");
    /*is_ambiguous_... S3461C3::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C3*)(S3461C2*), ABISELECT(8,4), "S3461C1");
    /*is_ambiguous_... S3461C3::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C3*)(S3461C2*), 0, "S3461C1");
    /*is_ambiguous_... S3461C3::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C3*)(S3461C2*), 0, "S3461C1");
    /*is_ambiguous_... S3461C3::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C3*)(S3461C2*), 0, "S3461C1");
    /*is_ambiguous_... S3461C3::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C3*)(S3461C2*), 0, "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*), ABISELECT(16,12), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C8 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*), ABISELECT(16,12), "S3461C1");
    check_base_class_offset(lv, (S3461C8*)(S3461C14*)(S3461C3*)(S3461C2*), ABISELECT(16,12), "S3461C1");
    /*is_ambiguous_... S3461C2::S3461C14 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C14*)(S3461C2*), ABISELECT(16,12), "S3461C1");
    check_base_class_offset(lv, (S3461C8*)(S3461C14*)(S3461C15*)(S3461C2*), ABISELECT(16,12), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C14 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C14*), ABISELECT(16,12), "S3461C1");
    /*is_ambiguous_... S3461C20::S3461C14 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C14*)(S3461C20*), ABISELECT(16,12), "S3461C1");
    check_base_class_offset(lv, (S3461C14*)(S3461C3*)(S3461C2*), ABISELECT(16,12), "S3461C1");
    check_base_class_offset(lv, (S3461C3*)(S3461C2*), 0, "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*), ABISELECT(304,196), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*), ABISELECT(304,196), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*), ABISELECT(312,200), "S3461C1");
    /*is_ambiguous_... S3461C2::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C2*), ABISELECT(304,196), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C19*), ABISELECT(304,196), "S3461C1");
    /*is_ambiguous_... S3461C20::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C20*), ABISELECT(304,196), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C19*), ABISELECT(304,196), "S3461C1");
    /*is_ambiguous_... S3461C19::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C19*)(S3461C26*), ABISELECT(304,196), "S3461C1");
    /*is_ambiguous_... S3461C2::S3461C14 */ AMB_check_base_class_offset(lv, (S3461C14*)(S3461C2*), ABISELECT(48,32), "S3461C1");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C15*)(S3461C2*), ABISELECT(64,40), "S3461C1");
    check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C15*)(S3461C2*), ABISELECT(64,40), "S3461C1");
    /*is_ambiguous_... S3461C12::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C15*)(S3461C2*), ABISELECT(72,44), "S3461C1");
    check_base_class_offset(lv, (S3461C12*)(S3461C11*)(S3461C16*)(S3461C15*)(S3461C2*), ABISELECT(64,40), "S3461C1");
    check_base_class_offset(lv, (S3461C11*)(S3461C16*)(S3461C15*)(S3461C2*), ABISELECT(64,40), "S3461C1");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C16*)(S3461C15*)(S3461C2*), ABISELECT(80,48), "S3461C1");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C16*)(S3461C15*)(S3461C2*), ABISELECT(80,48), "S3461C1");
    /*is_ambiguous_... S3461C13::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C17*), ABISELECT(328,208), "S3461C1");
    /*is_ambiguous_... S3461C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C17*), ABISELECT(336,216), "S3461C1");
    check_base_class_offset(lv, (S3461C13*)(S3461C17*), ABISELECT(320,204), "S3461C1");
    check_base_class_offset(lv, (S3461C17*)(S3461C16*)(S3461C15*)(S3461C2*), ABISELECT(320,204), "S3461C1");
    check_base_class_offset(lv, (S3461C17*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(320,204), "S3461C1");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C16*)(S3461C15*)(S3461C2*), ABISELECT(88,52), "S3461C1");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C16*)(S3461C15*)(S3461C2*), ABISELECT(88,52), "S3461C1");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C16*)(S3461C15*)(S3461C2*), ABISELECT(96,56), "S3461C1");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C16*)(S3461C15*)(S3461C2*), ABISELECT(88,52), "S3461C1");
    check_base_class_offset(lv, (S3461C16*)(S3461C15*)(S3461C2*), ABISELECT(64,40), "S3461C1");
    check_base_class_offset(lv, (S3461C14*)(S3461C15*)(S3461C2*), ABISELECT(104,60), "S3461C1");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C18*)(S3461C15*)(S3461C2*), ABISELECT(128,72), "S3461C1");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C15*)(S3461C2*), ABISELECT(120,68), "S3461C1");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C15*)(S3461C2*), ABISELECT(120,68), "S3461C1");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C18*)(S3461C15*)(S3461C2*), ABISELECT(120,68), "S3461C1");
    check_base_class_offset(lv, (S3461C6*)(S3461C18*)(S3461C15*)(S3461C2*), ABISELECT(120,68), "S3461C1");
    check_base_class_offset(lv, (S3461C18*)(S3461C15*)(S3461C2*), ABISELECT(120,68), "S3461C1");
    /*is_ambiguous_... S3461C15::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C15*)(S3461C2*), ABISELECT(144,84), "S3461C1");
    /*is_ambiguous_... S3461C15::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C15*)(S3461C2*), ABISELECT(136,80), "S3461C1");
    /*is_ambiguous_... S3461C15::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C15*)(S3461C2*), ABISELECT(136,80), "S3461C1");
    /*is_ambiguous_... S3461C15::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C15*)(S3461C2*), ABISELECT(136,80), "S3461C1");
    /*is_ambiguous_... S3461C15::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C15*)(S3461C2*), ABISELECT(136,80), "S3461C1");
    check_base_class_offset(lv, (S3461C15*)(S3461C2*), ABISELECT(64,40), "S3461C1");
    check_base_class_offset(lv, (S3461C2*), 0, "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C19*), ABISELECT(176,104), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C19*), ABISELECT(184,112), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C13*)(S3461C19*), ABISELECT(168,100), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*), ABISELECT(352,224), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(344,220), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*), ABISELECT(344,220), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C6*), ABISELECT(344,220), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C19*), ABISELECT(344,220), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C19*), ABISELECT(344,220), "S3461C1");
    /*is_ambiguous_... S3461C26::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C26*), ABISELECT(344,220), "S3461C1");
    /*is_ambiguous_... S3461C19::S3461C6 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C19*)(S3461C26*), ABISELECT(344,220), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C4*)(S3461C19*), ABISELECT(208,128), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(200,120), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(192,116), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(192,116), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(192,116), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(192,116), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S28C52_nt*)(S3461C4*)(S3461C19*), ABISELECT(192,116), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C4*)(S3461C19*), ABISELECT(192,116), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C19*), ABISELECT(168,100), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C19*), ABISELECT(368,236), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C19*), ABISELECT(376,244), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C13*)(S3461C19*), ABISELECT(360,232), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C4*)(S3461C19*), ABISELECT(400,260), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(392,252), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(384,248), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(384,248), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(384,248), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C4*)(S3461C19*), ABISELECT(384,248), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S28C52_nt*)(S3461C4*)(S3461C19*), ABISELECT(384,248), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C4*)(S3461C19*), ABISELECT(384,248), "S3461C1");
    /*is_ambiguous_... S3461C20::S3461C19 */ AMB_check_base_class_offset(lv, (S3461C19*)(S3461C20*), ABISELECT(360,232), "S3461C1");
    check_base_class_offset(lv, (S3461C19*)(S3461C23*), ABISELECT(360,232), "S3461C1");
    check_base_class_offset(lv, (S3461C19*)(S3461C25*)(S3461C23*), ABISELECT(360,232), "S3461C1");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C11*)(S3461C21*), ABISELECT(408,268), "S3461C1");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C11*)(S3461C21*), ABISELECT(408,268), "S3461C1");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C11*)(S3461C21*), ABISELECT(416,272), "S3461C1");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C11*)(S3461C21*), ABISELECT(408,268), "S3461C1");
    /*is_ambiguous_... S3461C21::S3461C11 */ AMB_check_base_class_offset(lv, (S3461C11*)(S3461C21*), ABISELECT(408,268), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C18*), ABISELECT(520,336), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C18 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(512,332), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(512,332), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C18*), ABISELECT(512,332), "S3461C1");
    /*is_ambiguous_... S3461C1::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C6*)(S3461C18*), ABISELECT(512,332), "S3461C1");
    /*is_ambiguous_... S3461C22::S3461C18 */ AMB_check_base_class_offset(lv, (S3461C18*)(S3461C22*)(S3461C21*), ABISELECT(512,332), "S3461C1");
    /*is_ambiguous_... S3461C22::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C22*)(S3461C21*), ABISELECT(448,292), "S3461C1");
    /*is_ambiguous_... S3461C24::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C24*), ABISELECT(633,405), "S3461C1");
    /*is_ambiguous_... S3461C13::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C24*), ABISELECT(624,396), "S3461C1");
    /*is_ambiguous_... S3461C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C24*), ABISELECT(632,404), "S3461C1");
    check_base_class_offset(lv, (S3461C13*)(S3461C24*), ABISELECT(616,392), "S3461C1");
    /*is_ambiguous_... S3461C24::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C24*), ABISELECT(640,408), "S3461C1");
    check_base_class_offset(lv, (S3461C24*)(S3461C23*), ABISELECT(616,392), "S3461C1");
    check_base_class_offset(lv, (S3461C14*)(S3461C25*)(S3461C23*), ABISELECT(656,424), "S3461C1");
    check_base_class_offset(lv, (S3461C14*)(S3461C27*)(S3461C21*), ABISELECT(656,424), "S3461C1");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(536,348), "S3461C1");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(528,344), "S3461C1");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(528,344), "S3461C1");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(528,344), "S3461C1");
    check_base_class_offset(lv, (S3461C6*)(S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(528,344), "S3461C1");
    check_base_class_offset(lv, (S3461C18*)(S3461C25*)(S3461C23*), ABISELECT(528,344), "S3461C1");
    check_base_class_offset(lv, (S3461C25*)(S3461C23*), ABISELECT(528,344), "S3461C1");
    check_base_class_offset(lv, (S3461C23*)(S3461C22*)(S3461C21*), ABISELECT(528,344), "S3461C1");
    /*is_ambiguous_... S3461C22::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C22*)(S3461C21*), ABISELECT(432,280), "S3461C1");
    /*is_ambiguous_... S3461C22::S3461C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C22*)(S3461C21*), ABISELECT(440,288), "S3461C1");
    /*is_ambiguous_... S3461C22::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C13*)(S3461C22*)(S3461C21*), ABISELECT(424,276), "S3461C1");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C22*)(S3461C21*), ABISELECT(456,300), "S3461C1");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C22*)(S3461C21*), ABISELECT(456,300), "S3461C1");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C22*)(S3461C21*), ABISELECT(464,304), "S3461C1");
    /*is_ambiguous_... S3461C22::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C22*)(S3461C21*), ABISELECT(456,300), "S3461C1");
    check_base_class_offset(lv, (S3461C22*)(S3461C21*), ABISELECT(424,276), "S3461C1");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C13*)(S3461C19*)(S3461C26*), ABISELECT(680,436), "S3461C1");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C13*)(S3461C19*)(S3461C26*), ABISELECT(688,444), "S3461C1");
    /*is_ambiguous_... S3461C19::S3461C13 */ AMB_check_base_class_offset(lv, (S3461C13*)(S3461C19*)(S3461C26*), ABISELECT(672,432), "S3461C1");
    /*is_ambiguous_... S3461C4::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(712,460), "S3461C1");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(704,452), "S3461C1");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(696,448), "S3461C1");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(696,448), "S3461C1");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(696,448), "S3461C1");
    check_base_class_offset(lv, (S3461C6*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(696,448), "S3461C1");
    check_base_class_offset(lv, (S28C52_nt*)(S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(696,448), "S3461C1");
    check_base_class_offset(lv, (S3461C4*)(S3461C19*)(S3461C26*), ABISELECT(696,448), "S3461C1");
    check_base_class_offset(lv, (S3461C19*)(S3461C26*), ABISELECT(672,432), "S3461C1");
    /*is_ambiguous_... S3461C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S3461C6*)(S3461C18*)(S3461C26*), ABISELECT(728,472), "S3461C1");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C26*), ABISELECT(720,468), "S3461C1");
    check_base_class_offset(lv, (S3461C9*)(S3461C8*)(S3461C6*)(S3461C18*)(S3461C26*), ABISELECT(720,468), "S3461C1");
    check_base_class_offset(lv, (S3461C8*)(S3461C6*)(S3461C18*)(S3461C26*), ABISELECT(720,468), "S3461C1");
    check_base_class_offset(lv, (S3461C6*)(S3461C18*)(S3461C26*), ABISELECT(720,468), "S3461C1");
    check_base_class_offset(lv, (S3461C18*)(S3461C26*), ABISELECT(720,468), "S3461C1");
    check_base_class_offset(lv, (S3461C26*)(S3461C21*), ABISELECT(672,432), "S3461C1");
    check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(472,308), "S3461C1");
    check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(472,308), "S3461C1");
    /*is_ambiguous_... S3461C12::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C11*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(480,312), "S3461C1");
    check_base_class_offset(lv, (S3461C12*)(S3461C11*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(472,308), "S3461C1");
    check_base_class_offset(lv, (S3461C11*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(472,308), "S3461C1");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(488,316), "S3461C1");
    /*is_ambiguous_... S3461C16::S3461C9 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(488,316), "S3461C1");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C9*)(S3461C12*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(496,320), "S3461C1");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C9*)(S3461C12*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(496,320), "S3461C1");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3461C12*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(504,324), "S3461C1");
    /*is_ambiguous_... S3461C16::S3461C12 */ AMB_check_base_class_offset(lv, (S3461C12*)(S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(496,320), "S3461C1");
    check_base_class_offset(lv, (S3461C16*)(S3461C27*)(S3461C21*), ABISELECT(472,308), "S3461C1");
    check_base_class_offset(lv, (S3461C27*)(S3461C21*), ABISELECT(472,308), "S3461C1");
    check_base_class_offset(lv, (S3461C21*)(S3461C20*), ABISELECT(408,268), "S3461C1");
    /*is_ambiguous_... S3461C20::S3461C14 */ AMB_check_base_class_offset(lv, (S3461C14*)(S3461C20*), ABISELECT(216,136), "S3461C1");
    check_base_class_offset(lv, (S3461C20*), ABISELECT(216,136), "S3461C1");
    test_class_info(&lv, &cd_S3461C1);
    dp->~S3461C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3461C1(Test_S3461C1, "S3461C1", ABISELECT(752,484));

#else // __cplusplus

extern void _ZN7S3461C1C1Ev();
extern void _ZN7S3461C1D2Ev();
Name_Map name_map_S3461C1[] = {
  NSPAIR(_ZN7S3461C1C1Ev),
  NSPAIR(_ZN7S3461C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C11;
extern VTBL_ENTRY _ZTI8S3461C11[];
extern  VTBL_ENTRY _ZTV8S3461C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C4;
extern VTBL_ENTRY _ZTI7S3461C4[];
extern  VTBL_ENTRY _ZTV7S3461C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C14;
extern VTBL_ENTRY _ZTI8S3461C14[];
extern  VTBL_ENTRY _ZTV8S3461C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C14[];
extern Class_Descriptor cd_S3461C3;
extern VTBL_ENTRY _ZTI7S3461C3[];
extern  VTBL_ENTRY _ZTV7S3461C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C14;
extern VTBL_ENTRY _ZTI8S3461C14[];
extern  VTBL_ENTRY _ZTV8S3461C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C14[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C11;
extern VTBL_ENTRY _ZTI8S3461C11[];
extern  VTBL_ENTRY _ZTV8S3461C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C11[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C17;
extern VTBL_ENTRY _ZTI8S3461C17[];
extern  VTBL_ENTRY _ZTV8S3461C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C17[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C16;
extern VTBL_ENTRY _ZTI8S3461C16[];
extern  VTBL_ENTRY _ZTV8S3461C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C16[];
extern Class_Descriptor cd_S3461C14;
extern VTBL_ENTRY _ZTI8S3461C14[];
extern  VTBL_ENTRY _ZTV8S3461C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C14[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C18;
extern VTBL_ENTRY _ZTI8S3461C18[];
extern  VTBL_ENTRY _ZTV8S3461C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C18[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C15;
extern VTBL_ENTRY _ZTI8S3461C15[];
extern  VTBL_ENTRY _ZTV8S3461C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C15[];
extern Class_Descriptor cd_S3461C2;
extern VTBL_ENTRY _ZTI7S3461C2[];
extern  VTBL_ENTRY _ZTV7S3461C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C2[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S3461C4;
extern VTBL_ENTRY _ZTI7S3461C4[];
extern  VTBL_ENTRY _ZTV7S3461C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C4[];
extern Class_Descriptor cd_S3461C19;
extern VTBL_ENTRY _ZTI8S3461C19[];
extern  VTBL_ENTRY _ZTV8S3461C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C19[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S3461C4;
extern VTBL_ENTRY _ZTI7S3461C4[];
extern  VTBL_ENTRY _ZTV7S3461C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C4[];
extern Class_Descriptor cd_S3461C19;
extern VTBL_ENTRY _ZTI8S3461C19[];
extern  VTBL_ENTRY _ZTV8S3461C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C19[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C11;
extern VTBL_ENTRY _ZTI8S3461C11[];
extern  VTBL_ENTRY _ZTV8S3461C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C18;
extern VTBL_ENTRY _ZTI8S3461C18[];
extern  VTBL_ENTRY _ZTV8S3461C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C18[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C24;
extern VTBL_ENTRY _ZTI8S3461C24[];
extern  VTBL_ENTRY _ZTV8S3461C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C24[];
extern Class_Descriptor cd_S3461C14;
extern VTBL_ENTRY _ZTI8S3461C14[];
extern  VTBL_ENTRY _ZTV8S3461C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C14[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C18;
extern VTBL_ENTRY _ZTI8S3461C18[];
extern  VTBL_ENTRY _ZTV8S3461C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C18[];
extern Class_Descriptor cd_S3461C25;
extern VTBL_ENTRY _ZTI8S3461C25[];
extern  VTBL_ENTRY _ZTV8S3461C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C25[];
extern Class_Descriptor cd_S3461C23;
extern VTBL_ENTRY _ZTI8S3461C23[];
extern  VTBL_ENTRY _ZTV8S3461C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C23[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C22;
extern VTBL_ENTRY _ZTI8S3461C22[];
extern  VTBL_ENTRY _ZTV8S3461C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C22[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C13;
extern VTBL_ENTRY _ZTI8S3461C13[];
extern  VTBL_ENTRY _ZTV8S3461C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S3461C4;
extern VTBL_ENTRY _ZTI7S3461C4[];
extern  VTBL_ENTRY _ZTV7S3461C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C4[];
extern Class_Descriptor cd_S3461C19;
extern VTBL_ENTRY _ZTI8S3461C19[];
extern  VTBL_ENTRY _ZTV8S3461C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C19[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S3461C8;
extern VTBL_ENTRY _ZTI7S3461C8[];
extern  VTBL_ENTRY _ZTV7S3461C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C8[];
extern Class_Descriptor cd_S3461C6;
extern VTBL_ENTRY _ZTI7S3461C6[];
extern  VTBL_ENTRY _ZTV7S3461C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C6[];
extern Class_Descriptor cd_S3461C18;
extern VTBL_ENTRY _ZTI8S3461C18[];
extern  VTBL_ENTRY _ZTV8S3461C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C18[];
extern Class_Descriptor cd_S3461C26;
extern VTBL_ENTRY _ZTI8S3461C26[];
extern  VTBL_ENTRY _ZTV8S3461C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C26[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C11;
extern VTBL_ENTRY _ZTI8S3461C11[];
extern  VTBL_ENTRY _ZTV8S3461C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C11[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C9;
extern VTBL_ENTRY _ZTI7S3461C9[];
extern  VTBL_ENTRY _ZTV7S3461C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C12;
extern VTBL_ENTRY _ZTI8S3461C12[];
extern  VTBL_ENTRY _ZTV8S3461C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C12[];
extern Class_Descriptor cd_S3461C16;
extern VTBL_ENTRY _ZTI8S3461C16[];
extern  VTBL_ENTRY _ZTV8S3461C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C16[];
extern Class_Descriptor cd_S3461C27;
extern VTBL_ENTRY _ZTI8S3461C27[];
extern  VTBL_ENTRY _ZTV8S3461C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C27[];
extern Class_Descriptor cd_S3461C21;
extern VTBL_ENTRY _ZTI8S3461C21[];
extern  VTBL_ENTRY _ZTV8S3461C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C21[];
extern Class_Descriptor cd_S3461C14;
extern VTBL_ENTRY _ZTI8S3461C14[];
extern  VTBL_ENTRY _ZTV8S3461C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C14[];
extern Class_Descriptor cd_S3461C20;
extern VTBL_ENTRY _ZTI8S3461C20[];
extern  VTBL_ENTRY _ZTV8S3461C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3461C20[];
static Base_Class bases_S3461C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(248,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(240,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(256,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
    7, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(256,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
    5, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(232,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(232,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(232,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    140, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(232,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    139, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(232,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(264,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
    10, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(264,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(272,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
    12, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(264,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    146, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(280,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
    14, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(280,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    106, //bcp->index_in_construction_vtbl_array
    149, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S3461C11,    ABISELECT(264,172), //bcp->offset
    138, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    105, //bcp->index_in_construction_vtbl_array
    145, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(288,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(296,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
    18, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(280,180), //bcp->offset
    146, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    107, //bcp->index_in_construction_vtbl_array
    150, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3461C4,    ABISELECT(232,144), //bcp->offset
    124, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    104, //bcp->index_in_construction_vtbl_array
    138, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3461C9,    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
    65, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S3461C8,    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
    66, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3461C6,    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
    67, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    26, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    153, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    109, //bcp->index_in_construction_vtbl_array
    152, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S3461C14,    ABISELECT(16,12), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    108, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    68, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S3461C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    69, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    155, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(312,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
    33, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(304,196), //bcp->offset
    155, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    110, //bcp->index_in_construction_vtbl_array
    154, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    64, //immediately_derived
  0, 1},
  {&cd_S3461C14,    ABISELECT(48,32), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    111, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    70, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    36, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    71, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    38, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    72, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S3461C11,    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
    73, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(80,48), //bcp->offset
    46, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    113, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    74, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(328,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_S731C17_nt,    ABISELECT(336,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(320,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    157, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S3461C17,    ABISELECT(320,204), //bcp->offset
    160, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    114, //bcp->index_in_construction_vtbl_array
    156, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    47, //immediately_derived
  0, 0},
  {&cd_S3461C9,    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
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    75, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    49, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(88,52), //bcp->offset
    50, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    115, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    76, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S3461C16,    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
    77, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S3461C14,    ABISELECT(104,60), //bcp->offset
    54, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    116, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    78, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    79, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    80, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    81, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S3461C18,    ABISELECT(120,68), //bcp->offset
    60, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    117, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    82, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    60, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    83, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    84, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(136,80), //bcp->offset
    70, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    118, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    85, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S3461C15,    ABISELECT(64,40), //bcp->offset
    35, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    112, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    86, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S3461C2,    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
    87, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(176,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
    67, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    -1, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    88, //init_seq
    81, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(352,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
    72, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(344,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
    70, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(344,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    162, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(344,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    161, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    72, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(344,220), //bcp->offset
    171, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    120, //bcp->index_in_construction_vtbl_array
    160, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    81, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    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
    80, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(200,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    76, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(192,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    89, //init_seq
    77, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(192,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    90, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S3461C6,    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
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    91, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    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
    80, //immediately_derived
  0, 0},
  {&cd_S3461C4,    ABISELECT(192,116), //bcp->offset
    91, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    121, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    92, //init_seq
    81, //immediately_derived
  0, 0},
  {&cd_S3461C19,    ABISELECT(168,100), //bcp->offset
    78, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    119, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    93, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(368,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
    84, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(376,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(360,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    164, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(400,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    92, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(392,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
    90, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(384,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
    88, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(384,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    169, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    89, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(384,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    168, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    90, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(384,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    167, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    92, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(384,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
    92, //immediately_derived
  0, 0},
  {&cd_S3461C4,    ABISELECT(384,248), //bcp->offset
    197, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    124, //bcp->index_in_construction_vtbl_array
    166, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S3461C19,    ABISELECT(360,232), //bcp->offset
    182, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    123, //bcp->index_in_construction_vtbl_array
    163, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    119, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(408,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
    95, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(408,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    182, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    97, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(416,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    97, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(408,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    181, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    98, //immediately_derived
  0, 0},
  {&cd_S3461C11,    ABISELECT(408,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    180, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    161, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(520,336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    103, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(512,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
    -1, //init_seq
    101, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(512,332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    245, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    102, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(512,332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    244, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    103, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(512,332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    243, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    104, //immediately_derived
  0, 0},
  {&cd_S3461C18,    ABISELECT(512,332), //bcp->offset
    277, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    127, //bcp->index_in_construction_vtbl_array
    242, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    128, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(448,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
    128, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(633,405), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3461C5_nt,    ABISELECT(624,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    109, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(632,404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    109, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(616,392), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    274, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    111, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(640,408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    111, //immediately_derived
  0, 0},
  {&cd_S3461C24,    ABISELECT(616,392), //bcp->offset
    313, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    129, //bcp->index_in_construction_vtbl_array
    273, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    120, //immediately_derived
  0, 1},
  {&cd_S3461C14,    ABISELECT(656,424), //bcp->offset
    322, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    130, //bcp->index_in_construction_vtbl_array
    277, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    119, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(536,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    117, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(528,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    115, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(528,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    252, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    116, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(528,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    251, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    117, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(528,344), //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
    34, //init_seq
    118, //immediately_derived
  0, 0},
  {&cd_S3461C18,    ABISELECT(528,344), //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
    35, //init_seq
    119, //immediately_derived
  0, 0},
  {&cd_S3461C25,    ABISELECT(528,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    248, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    120, //immediately_derived
  0, 0},
  {&cd_S3461C23,    ABISELECT(528,344), //bcp->offset
    291, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    128, //bcp->index_in_construction_vtbl_array
    247, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    128, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(432,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    123, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(440,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    123, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(424,276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    185, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    128, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(456,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    125, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(456,300), //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
    53, //init_seq
    127, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(464,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
    127, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(456,300), //bcp->offset
    253, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    131, //bcp->index_in_construction_vtbl_array
    187, //bcp->base_subarray_index_in_construction_vtbl_array
    54, //init_seq
    128, //immediately_derived
  0, 0},
  {&cd_S3461C22,    ABISELECT(424,276), //bcp->offset
    233, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    126, //bcp->index_in_construction_vtbl_array
    184, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    161, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(680,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
    131, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(688,444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    131, //immediately_derived
  0, 0},
  {&cd_S3461C13,    ABISELECT(672,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    281, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    140, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(712,460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    139, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(704,452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    137, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(696,448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    135, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(696,448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    286, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    136, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(696,448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    285, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    137, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(696,448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    284, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    139, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(696,448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    139, //immediately_derived
  0, 0},
  {&cd_S3461C4,    ABISELECT(696,448), //bcp->offset
    344, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    133, //bcp->index_in_construction_vtbl_array
    283, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    140, //immediately_derived
  0, 0},
  {&cd_S3461C19,    ABISELECT(672,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    280, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    147, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(728,472), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    145, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(720,468), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    143, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(720,468), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    299, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    144, //immediately_derived
  0, 0},
  {&cd_S3461C8,    ABISELECT(720,468), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    298, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    145, //immediately_derived
  0, 0},
  {&cd_S3461C6,    ABISELECT(720,468), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    297, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    146, //immediately_derived
  0, 0},
  {&cd_S3461C18,    ABISELECT(720,468), //bcp->offset
    355, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    134, //bcp->index_in_construction_vtbl_array
    296, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    147, //immediately_derived
  0, 0},
  {&cd_S3461C26,    ABISELECT(672,432), //bcp->offset
    328, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    132, //bcp->index_in_construction_vtbl_array
    279, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    161, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(472,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
    149, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(472,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    206, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    151, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(480,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
    151, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(472,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    205, //bcp->base_subarray_index_in_construction_vtbl_array
    57, //init_seq
    152, //immediately_derived
  0, 0},
  {&cd_S3461C11,    ABISELECT(472,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    204, //bcp->base_subarray_index_in_construction_vtbl_array
    58, //init_seq
    159, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(488,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
    154, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(488,316), //bcp->offset
    269, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    136, //bcp->index_in_construction_vtbl_array
    208, //bcp->base_subarray_index_in_construction_vtbl_array
    59, //init_seq
    159, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(496,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
    156, //immediately_derived
  0, 0},
  {&cd_S3461C9,    ABISELECT(496,320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    210, //bcp->base_subarray_index_in_construction_vtbl_array
    60, //init_seq
    158, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(504,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
    158, //immediately_derived
  0, 0},
  {&cd_S3461C12,    ABISELECT(496,320), //bcp->offset
    273, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    137, //bcp->index_in_construction_vtbl_array
    209, //bcp->base_subarray_index_in_construction_vtbl_array
    61, //init_seq
    159, //immediately_derived
  0, 0},
  {&cd_S3461C16,    ABISELECT(472,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    203, //bcp->base_subarray_index_in_construction_vtbl_array
    62, //init_seq
    160, //immediately_derived
  0, 0},
  {&cd_S3461C27,    ABISELECT(472,308), //bcp->offset
    257, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    135, //bcp->index_in_construction_vtbl_array
    202, //bcp->base_subarray_index_in_construction_vtbl_array
    63, //init_seq
    161, //immediately_derived
  0, 0},
  {&cd_S3461C21,    ABISELECT(408,268), //bcp->offset
    208, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    125, //bcp->index_in_construction_vtbl_array
    179, //bcp->base_subarray_index_in_construction_vtbl_array
    64, //init_seq
    163, //immediately_derived
  0, 1},
  {&cd_S3461C14,    ABISELECT(216,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    94, //init_seq
    163, //immediately_derived
  0, 0},
  {&cd_S3461C20,    ABISELECT(216,136), //bcp->offset
    102, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    122, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    95, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3461C1[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C1D1Ev();
extern void _ZN7S3461C1D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void ABISELECT(_ZThn64_N7S3461C1D1Ev,_ZThn40_N7S3461C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S3461C1D0Ev,_ZThn40_N7S3461C1D0Ev)();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn120_N7S3461C1D1Ev,_ZThn68_N7S3461C1D1Ev)();
extern void ABISELECT(_ZThn120_N7S3461C1D0Ev,_ZThn68_N7S3461C1D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn136_N7S3461C1D1Ev,_ZThn80_N7S3461C1D1Ev)();
extern void ABISELECT(_ZThn136_N7S3461C1D0Ev,_ZThn80_N7S3461C1D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn168_N7S3461C1D1Ev,_ZThn100_N7S3461C1D1Ev)();
extern void ABISELECT(_ZThn168_N7S3461C1D0Ev,_ZThn100_N7S3461C1D0Ev)();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn192_N7S3461C1D1Ev,_ZThn116_N7S3461C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S3461C1D0Ev,_ZThn116_N7S3461C1D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn216_N7S3461C1D1Ev,_ZThn136_N7S3461C1D1Ev)();
extern void ABISELECT(_ZThn216_N7S3461C1D0Ev,_ZThn136_N7S3461C1D0Ev)();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n72_N7S3461C1D1Ev,_ZTv0_n36_N7S3461C1D1Ev)();
extern void ABISELECT(_ZThn232_N7S3461C1D1Ev,_ZThn144_N7S3461C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S3461C1D0Ev,_ZTv0_n36_N7S3461C1D0Ev)();
extern void ABISELECT(_ZThn232_N7S3461C1D0Ev,_ZThn144_N7S3461C1D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C1D1Ev,_ZTv0_n24_N7S3461C1D1Ev)();
extern void ABISELECT(_ZThn280_N7S3461C1D1Ev,_ZThn180_N7S3461C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3461C1D0Ev,_ZTv0_n24_N7S3461C1D0Ev)();
extern void ABISELECT(_ZThn280_N7S3461C1D0Ev,_ZThn180_N7S3461C1D0Ev)() __attribute__((weak));
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C1D1Ev,_ZTv0_n24_N7S3461C1D1Ev)();
extern void ABISELECT(_ZThn320_N7S3461C1D1Ev,_ZThn204_N7S3461C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3461C1D0Ev,_ZTv0_n24_N7S3461C1D0Ev)();
extern void ABISELECT(_ZThn320_N7S3461C1D0Ev,_ZThn204_N7S3461C1D0Ev)() __attribute__((weak));
extern void _ZN8S3461C172v4Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C1D1Ev,_ZTv0_n24_N7S3461C1D1Ev)();
extern void ABISELECT(_ZThn344_N7S3461C1D1Ev,_ZThn220_N7S3461C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3461C1D0Ev,_ZTv0_n24_N7S3461C1D0Ev)();
extern void ABISELECT(_ZThn344_N7S3461C1D0Ev,_ZThn220_N7S3461C1D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S3461C1D1Ev,_ZTv0_n44_N7S3461C1D1Ev)();
extern void ABISELECT(_ZThn360_N7S3461C1D1Ev,_ZThn232_N7S3461C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S3461C1D0Ev,_ZTv0_n44_N7S3461C1D0Ev)();
extern void ABISELECT(_ZThn360_N7S3461C1D0Ev,_ZThn232_N7S3461C1D0Ev)() __attribute__((weak));
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N7S3461C1D1Ev,_ZTvn16_n44_N7S3461C1D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N7S3461C1D0Ev,_ZTvn16_n44_N7S3461C1D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void ABISELECT(_ZTv0_n160_N7S3461C1D1Ev,_ZTv0_n80_N7S3461C1D1Ev)();
extern void ABISELECT(_ZThn408_N7S3461C1D1Ev,_ZThn268_N7S3461C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n160_N7S3461C1D0Ev,_ZTv0_n80_N7S3461C1D0Ev)();
extern void ABISELECT(_ZThn408_N7S3461C1D0Ev,_ZThn268_N7S3461C1D0Ev)() __attribute__((weak));
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn16_n160_N7S3461C1D1Ev,_ZTvn8_n80_N7S3461C1D1Ev)();
extern void ABISELECT(_ZTvn16_n160_N7S3461C1D0Ev,_ZTvn8_n80_N7S3461C1D0Ev)();
extern void _ZN8S3461C222v6Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void ABISELECT(_ZTvn64_n160_N7S3461C1D1Ev,_ZTvn40_n80_N7S3461C1D1Ev)();
extern void ABISELECT(_ZTvn64_n160_N7S3461C1D0Ev,_ZTvn40_n80_N7S3461C1D0Ev)();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N7S3461C1D1Ev,_ZTv0_n28_N7S3461C1D1Ev)();
extern void ABISELECT(_ZThn512_N7S3461C1D1Ev,_ZThn332_N7S3461C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3461C1D0Ev,_ZTv0_n28_N7S3461C1D0Ev)();
extern void ABISELECT(_ZThn512_N7S3461C1D0Ev,_ZThn332_N7S3461C1D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S3461C1D1Ev,_ZTv0_n60_N7S3461C1D1Ev)();
extern void ABISELECT(_ZThn528_N7S3461C1D1Ev,_ZThn344_N7S3461C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S3461C1D0Ev,_ZTv0_n60_N7S3461C1D0Ev)();
extern void ABISELECT(_ZThn528_N7S3461C1D0Ev,_ZThn344_N7S3461C1D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C1D1Ev,_ZTv0_n24_N7S3461C1D1Ev)();
extern void ABISELECT(_ZThn616_N7S3461C1D1Ev,_ZThn392_N7S3461C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3461C1D0Ev,_ZTv0_n24_N7S3461C1D0Ev)();
extern void ABISELECT(_ZThn616_N7S3461C1D0Ev,_ZThn392_N7S3461C1D0Ev)() __attribute__((weak));
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S3461C1D1Ev,_ZTv0_n44_N7S3461C1D1Ev)();
extern void ABISELECT(_ZThn672_N7S3461C1D1Ev,_ZThn432_N7S3461C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S3461C1D0Ev,_ZTv0_n44_N7S3461C1D0Ev)();
extern void ABISELECT(_ZThn672_N7S3461C1D0Ev,_ZThn432_N7S3461C1D0Ev)() __attribute__((weak));
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N7S3461C1D1Ev,_ZTvn16_n44_N7S3461C1D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N7S3461C1D0Ev,_ZTvn16_n44_N7S3461C1D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn48_n88_N7S3461C1D1Ev,_ZTvn36_n44_N7S3461C1D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N7S3461C1D0Ev,_ZTvn36_n44_N7S3461C1D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY vtc_S3461C1[] = {
  ABISELECT(672,432),
  ABISELECT(656,424),
  ABISELECT(616,392),
  ABISELECT(528,344),
  ABISELECT(512,332),
  ABISELECT(408,268),
  ABISELECT(360,232),
  ABISELECT(344,220),
  ABISELECT(320,204),
  ABISELECT(304,196),
  ABISELECT(16,12),
  ABISELECT(280,180),
  ABISELECT(280,180),
  ABISELECT(264,172),
  ABISELECT(232,144),
  ABISELECT(256,164),
  ABISELECT(256,164),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  0,
  0,
  ABISELECT(240,152),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(208,132),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(192,124),
  ABISELECT(-48,-28),
  ABISELECT(256,164),
  ABISELECT(216,140),
  ABISELECT(192,124),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S3461C1D1Ev,_ZThn40_N7S3461C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S3461C1D0Ev,_ZThn40_N7S3461C1D0Ev),
  ABISELECT(176,116),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(168,112),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(152,104),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(136,96),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S3461C1D1Ev,_ZThn68_N7S3461C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S3461C1D0Ev,_ZThn68_N7S3461C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
  ABISELECT(120,84),
  ABISELECT(120,84),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N7S3461C1D1Ev,_ZThn80_N7S3461C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N7S3461C1D0Ev,_ZThn80_N7S3461C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  ABISELECT(112,80),
  ABISELECT(96,72),
  ABISELECT(88,64),
  ABISELECT(176,120),
  ABISELECT(136,96),
  ABISELECT(112,80),
  ABISELECT(112,80),
  ABISELECT(88,64),
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn168_N7S3461C1D1Ev,_ZThn100_N7S3461C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn168_N7S3461C1D0Ev,_ZThn100_N7S3461C1D0Ev),
  ABISELECT(88,64),
  ABISELECT(88,64),
  ABISELECT(72,56),
  ABISELECT(64,48),
  ABISELECT(64,48),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N7S3461C1D1Ev,_ZThn116_N7S3461C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N7S3461C1D0Ev,_ZThn116_N7S3461C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  ABISELECT(104,68),
  ABISELECT(456,296),
  ABISELECT(440,288),
  ABISELECT(400,256),
  ABISELECT(312,208),
  ABISELECT(296,196),
  ABISELECT(192,132),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(40,28),
  ABISELECT(128,84),
  ABISELECT(64,44),
  ABISELECT(144,96),
  ABISELECT(88,60),
  ABISELECT(-200,-124),
  ABISELECT(-200,-124),
  ABISELECT(40,28),
  ABISELECT(-216,-136),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn216_N7S3461C1D1Ev,_ZThn136_N7S3461C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn216_N7S3461C1D0Ev,_ZThn136_N7S3461C1D0Ev),
  0,
  ABISELECT(-232,-144),
  0,
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3461C1D1Ev,_ZTv0_n36_N7S3461C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3461C1D0Ev,_ZTv0_n36_N7S3461C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-264,-172),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  ABISELECT(-280,-180),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-280,-180),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C1D1Ev,_ZTv0_n24_N7S3461C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C1D0Ev,_ZTv0_n24_N7S3461C1D0Ev),
  0,
  ABISELECT(-48,-32),
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  0,
  ABISELECT(-320,-204),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-320,-204),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C1D1Ev,_ZTv0_n24_N7S3461C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C1D0Ev,_ZTv0_n24_N7S3461C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
  0,
  ABISELECT(-344,-220),
  0,
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-344,-220),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C1D1Ev,_ZTv0_n24_N7S3461C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C1D0Ev,_ZTv0_n24_N7S3461C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  ABISELECT(24,16),
  ABISELECT(-360,-232),
  ABISELECT(-80,-52),
  ABISELECT(-96,-60),
  ABISELECT(-104,-68),
  ABISELECT(-16,-12),
  ABISELECT(-56,-36),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  ABISELECT(-104,-68),
  ABISELECT(-360,-232),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S3461C1D1Ev,_ZTv0_n44_N7S3461C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S3461C1D0Ev,_ZTv0_n44_N7S3461C1D0Ev),
  ABISELECT(-104,-68),
  ABISELECT(-104,-68),
  ABISELECT(-120,-76),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  ABISELECT(-384,-248),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N7S3461C1D1Ev,_ZTvn16_n44_N7S3461C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N7S3461C1D0Ev,_ZTvn16_n44_N7S3461C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  ABISELECT(16,8),
  ABISELECT(-408,-268),
  0,
  0,
  ABISELECT(-88,-64),
  ABISELECT(264,164),
  ABISELECT(-392,-256),
  ABISELECT(248,156),
  ABISELECT(-128,-88),
  ABISELECT(-144,-96),
  ABISELECT(-64,-48),
  ABISELECT(-104,-72),
  ABISELECT(-48,-36),
  ABISELECT(208,124),
  ABISELECT(120,76),
  ABISELECT(-152,-104),
  ABISELECT(104,64),
  ABISELECT(-128,-88),
  ABISELECT(-152,-104),
  ABISELECT(-408,-268),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n160_N7S3461C1D1Ev,_ZTv0_n80_N7S3461C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n160_N7S3461C1D0Ev,_ZTv0_n80_N7S3461C1D0Ev),
  ABISELECT(-408,-264),
  ABISELECT(232,148),
  ABISELECT(-144,-96),
  ABISELECT(-160,-104),
  ABISELECT(-80,-56),
  ABISELECT(-120,-80),
  ABISELECT(-64,-44),
  ABISELECT(192,116),
  ABISELECT(104,68),
  ABISELECT(-168,-112),
  ABISELECT(88,56),
  ABISELECT(-144,-96),
  ABISELECT(-144,-96),
  ABISELECT(-168,-112),
  ABISELECT(-424,-276),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n160_N7S3461C1D1Ev,_ZTvn8_n80_N7S3461C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n160_N7S3461C1D0Ev,_ZTvn8_n80_N7S3461C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C222v6Ev,
  ABISELECT(-200,-136),
  ABISELECT(-456,-300),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(-456,-296),
  ABISELECT(184,116),
  ABISELECT(-216,-144),
  ABISELECT(-152,-104),
  ABISELECT(-192,-128),
  ABISELECT(-216,-144),
  ABISELECT(-472,-308),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n160_N7S3461C1D1Ev,_ZTvn40_n80_N7S3461C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n160_N7S3461C1D0Ev,_ZTvn40_n80_N7S3461C1D0Ev),
  ABISELECT(-232,-152),
  ABISELECT(-488,-316),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(-240,-156),
  ABISELECT(-496,-320),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  0,
  0,
  ABISELECT(-512,-332),
  0,
  ABISELECT(-232,-152),
  ABISELECT(-256,-168),
  ABISELECT(-256,-168),
  ABISELECT(-512,-332),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3461C1D1Ev,_ZTv0_n28_N7S3461C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3461C1D0Ev,_ZTv0_n28_N7S3461C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
  0,
  0,
  ABISELECT(-528,-344),
  0,
  ABISELECT(88,48),
  ABISELECT(-264,-172),
  ABISELECT(-184,-124),
  ABISELECT(-224,-148),
  ABISELECT(-168,-112),
  ABISELECT(-248,-164),
  ABISELECT(-512,-332),
  ABISELECT(128,80),
  ABISELECT(-248,-164),
  ABISELECT(-272,-180),
  ABISELECT(-272,-180),
  ABISELECT(-528,-344),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S3461C1D1Ev,_ZTv0_n60_N7S3461C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S3461C1D0Ev,_ZTv0_n60_N7S3461C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
  ABISELECT(-616,-392),
  ABISELECT(-336,-212),
  ABISELECT(-336,-212),
  ABISELECT(-360,-228),
  ABISELECT(-616,-392),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C1D1Ev,_ZTv0_n24_N7S3461C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C1D0Ev,_ZTv0_n24_N7S3461C1D0Ev),
  ABISELECT(-640,-412),
  ABISELECT(-640,-412),
  ABISELECT(-400,-260),
  ABISELECT(-656,-424),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  ABISELECT(48,36),
  ABISELECT(24,16),
  ABISELECT(-672,-432),
  ABISELECT(-392,-252),
  ABISELECT(-408,-260),
  ABISELECT(-416,-268),
  ABISELECT(-328,-212),
  ABISELECT(-368,-236),
  ABISELECT(-392,-252),
  ABISELECT(-392,-252),
  ABISELECT(-416,-268),
  ABISELECT(-672,-432),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S3461C1D1Ev,_ZTv0_n44_N7S3461C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S3461C1D0Ev,_ZTv0_n44_N7S3461C1D0Ev),
  ABISELECT(-416,-268),
  ABISELECT(-416,-268),
  ABISELECT(-432,-276),
  ABISELECT(-440,-284),
  ABISELECT(-440,-284),
  ABISELECT(-696,-448),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N7S3461C1D1Ev,_ZTvn16_n44_N7S3461C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N7S3461C1D0Ev,_ZTvn16_n44_N7S3461C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  ABISELECT(-440,-288),
  ABISELECT(-464,-304),
  ABISELECT(-464,-304),
  ABISELECT(-720,-468),
  (VTBL_ENTRY)&(_ZTI7S3461C1[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N7S3461C1D1Ev,_ZTvn36_n44_N7S3461C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N7S3461C1D0Ev,_ZTvn36_n44_N7S3461C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern VTBL_ENTRY _ZTV7S3461C1[];
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C2D1Ev();
extern void _ZN7S3461C2D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C2__7S3461C1[] = {
  ABISELECT(320,204),
  ABISELECT(304,196),
  ABISELECT(16,12),
  ABISELECT(280,180),
  ABISELECT(280,180),
  ABISELECT(264,172),
  ABISELECT(232,144),
  ABISELECT(256,164),
  ABISELECT(256,164),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C3D1Ev();
extern void _ZN7S3461C3D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C37S3461C2__7S3461C1[] = {
  ABISELECT(16,12),
  ABISELECT(280,180),
  ABISELECT(280,180),
  ABISELECT(264,172),
  ABISELECT(232,144),
  ABISELECT(256,164),
  ABISELECT(256,164),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C3[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C67S3461C37S3461C2__A1__7S3461C1[] = {
  ABISELECT(256,164),
  ABISELECT(256,164),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C67S3461C37S3461C2__A1__7S3461C1[] = {
  ABISELECT(256,164),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C67S3461C37S3461C2__A3__7S3461C1[] = {
  ABISELECT(256,164),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C147S3461C37S3461C2__7S3461C1[] = {
  0,
  0,
  ABISELECT(240,152),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n72_N7S3461C3D1Ev,_ZTv0_n36_N7S3461C3D1Ev)();
extern void ABISELECT(_ZThn232_N7S3461C3D1Ev,_ZThn144_N7S3461C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S3461C3D0Ev,_ZTv0_n36_N7S3461C3D0Ev)();
extern void ABISELECT(_ZThn232_N7S3461C3D0Ev,_ZThn144_N7S3461C3D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C4__7S3461C37S3461C2__7S3461C1[] = {
  0,
  ABISELECT(-232,-144),
  0,
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI7S3461C3[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3461C3D1Ev,_ZTv0_n36_N7S3461C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3461C3D0Ev,_ZTv0_n36_N7S3461C3D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__7S3461C37S3461C2__7S3461C1[] = {
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-264,-172),
  (VTBL_ENTRY)&(_ZTI7S3461C3[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C3D1Ev,_ZTv0_n24_N7S3461C3D1Ev)();
extern void ABISELECT(_ZThn280_N7S3461C3D1Ev,_ZThn180_N7S3461C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3461C3D0Ev,_ZTv0_n24_N7S3461C3D0Ev)();
extern void ABISELECT(_ZThn280_N7S3461C3D0Ev,_ZThn180_N7S3461C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__7S3461C37S3461C2__7S3461C1[] = {
  ABISELECT(-280,-180),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-280,-180),
  (VTBL_ENTRY)&(_ZTI7S3461C3[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C3D1Ev,_ZTv0_n24_N7S3461C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C3D0Ev,_ZTv0_n24_N7S3461C3D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__7S3461C37S3461C2__7S3461C1[] = {
  0,
  0,
  ABISELECT(240,152),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S3461C3[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C147S3461C2__A1__7S3461C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(208,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__8S3461C147S3461C2__A1__7S3461C1[] = {
  0,
  ABISELECT(240,152),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN8S3461C15D1Ev();
extern void _ZN8S3461C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C157S3461C2__7S3461C1[] = {
  ABISELECT(192,124),
  ABISELECT(-48,-28),
  ABISELECT(256,164),
  ABISELECT(216,140),
  ABISELECT(192,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&_ZN8S3461C15D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C15D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN8S3461C16D1Ev();
extern void _ZN8S3461C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C168S3461C157S3461C2__7S3461C1[] = {
  ABISELECT(256,164),
  ABISELECT(216,140),
  ABISELECT(192,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&_ZN8S3461C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C16D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C118S3461C168S3461C157S3461C2__A1__7S3461C1[] = {
  ABISELECT(216,140),
  ABISELECT(192,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C118S3461C168S3461C157S3461C2__A2__7S3461C1[] = {
  ABISELECT(192,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C118S3461C168S3461C157S3461C2__A6__7S3461C1[] = {
  ABISELECT(192,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C118S3461C168S3461C157S3461C2__A1__7S3461C1[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-216,-140),
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C168S3461C157S3461C2__A7__7S3461C1[] = {
  ABISELECT(176,116),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C168S3461C157S3461C2__A3__7S3461C1[] = {
  ABISELECT(168,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C168S3461C157S3461C2__A8__7S3461C1[] = {
  ABISELECT(168,112),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C168S3461C157S3461C2__7S3461C1[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-216,-140),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A__8S3461C168S3461C157S3461C2__7S3461C1[] = {
  ABISELECT(176,116),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C16D1Ev,_ZTv0_n24_N8S3461C16D1Ev)();
extern void ABISELECT(_ZThn256_N8S3461C16D1Ev,_ZThn164_N8S3461C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C16D0Ev,_ZTv0_n24_N8S3461C16D0Ev)();
extern void ABISELECT(_ZThn256_N8S3461C16D0Ev,_ZThn164_N8S3461C16D0Ev)() __attribute__((weak));
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C17__8S3461C168S3461C157S3461C2__7S3461C1[] = {
  0,
  ABISELECT(-256,-164),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-256,-164),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C16D1Ev,_ZTv0_n24_N8S3461C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C16D0Ev,_ZTv0_n24_N8S3461C16D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__A1__8S3461C168S3461C157S3461C2__7S3461C1[] = {
  ABISELECT(168,112),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C148S3461C157S3461C2__A2__7S3461C1[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(152,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__8S3461C148S3461C157S3461C2__A2__7S3461C1[] = {
  0,
  ABISELECT(240,152),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C18D1Ev();
extern void _ZN8S3461C18D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C188S3461C157S3461C2__7S3461C1[] = {
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(136,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C68S3461C188S3461C157S3461C2__A2__7S3461C1[] = {
  ABISELECT(136,96),
  ABISELECT(136,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C68S3461C188S3461C157S3461C2__A3__7S3461C1[] = {
  ABISELECT(136,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C68S3461C188S3461C157S3461C2__A9__7S3461C1[] = {
  ABISELECT(136,96),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C188S3461C157S3461C2__7S3461C1[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C68S3461C157S3461C2__A3__7S3461C1[] = {
  ABISELECT(120,84),
  ABISELECT(120,84),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C68S3461C157S3461C2__A4__7S3461C1[] = {
  ABISELECT(120,84),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C68S3461C157S3461C2__A10__7S3461C1[] = {
  ABISELECT(120,84),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C157S3461C2__7S3461C1[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-216,-140),
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C16__A2__8S3461C157S3461C2__7S3461C1[] = {
  ABISELECT(176,116),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C15D1Ev,_ZTv0_n24_N8S3461C15D1Ev)();
extern void ABISELECT(_ZThn256_N8S3461C15D1Ev,_ZThn164_N8S3461C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C15D0Ev,_ZTv0_n24_N8S3461C15D0Ev)();
extern void ABISELECT(_ZThn256_N8S3461C15D0Ev,_ZThn164_N8S3461C15D0Ev)() __attribute__((weak));
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C17__8S3461C157S3461C2__7S3461C1[] = {
  0,
  ABISELECT(-256,-164),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-256,-164),
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C15D1Ev,_ZTv0_n24_N8S3461C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C15D0Ev,_ZTv0_n24_N8S3461C15D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C16__A1__8S3461C157S3461C2__7S3461C1[] = {
  ABISELECT(168,112),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C157S3461C2__7S3461C1[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(152,104),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__8S3461C157S3461C2__7S3461C1[] = {
  0,
  ABISELECT(240,152),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn56_N8S3461C15D1Ev,_ZThn28_N8S3461C15D1Ev)();
extern void ABISELECT(_ZThn56_N8S3461C15D0Ev,_ZThn28_N8S3461C15D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C18__8S3461C157S3461C2__7S3461C1[] = {
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(136,96),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S3461C15D1Ev,_ZThn28_N8S3461C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S3461C15D0Ev,_ZThn28_N8S3461C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn72_N8S3461C15D1Ev,_ZThn40_N8S3461C15D1Ev)();
extern void ABISELECT(_ZThn72_N8S3461C15D0Ev,_ZThn40_N8S3461C15D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__A1__8S3461C157S3461C2__7S3461C1[] = {
  ABISELECT(120,84),
  ABISELECT(120,84),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S3461C15[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S3461C15D1Ev,_ZThn40_N8S3461C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S3461C15D0Ev,_ZThn40_N8S3461C15D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n72_N7S3461C2D1Ev,_ZTv0_n36_N7S3461C2D1Ev)();
extern void ABISELECT(_ZThn232_N7S3461C2D1Ev,_ZThn144_N7S3461C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S3461C2D0Ev,_ZTv0_n36_N7S3461C2D0Ev)();
extern void ABISELECT(_ZThn232_N7S3461C2D0Ev,_ZThn144_N7S3461C2D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C4__7S3461C2__7S3461C1[] = {
  0,
  ABISELECT(-232,-144),
  0,
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3461C2D1Ev,_ZTv0_n36_N7S3461C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3461C2D0Ev,_ZTv0_n36_N7S3461C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__7S3461C2__7S3461C1[] = {
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-264,-172),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C2D1Ev,_ZTv0_n24_N7S3461C2D1Ev)();
extern void ABISELECT(_ZThn280_N7S3461C2D1Ev,_ZThn180_N7S3461C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3461C2D0Ev,_ZTv0_n24_N7S3461C2D0Ev)();
extern void ABISELECT(_ZThn280_N7S3461C2D0Ev,_ZThn180_N7S3461C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__7S3461C2__7S3461C1[] = {
  ABISELECT(-280,-180),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-280,-180),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C2D1Ev,_ZTv0_n24_N7S3461C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C2D0Ev,_ZTv0_n24_N7S3461C2D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C147S3461C3__7S3461C2__7S3461C1[] = {
  0,
  0,
  ABISELECT(240,152),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__A1__7S3461C2__7S3461C1[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__A1__7S3461C2__7S3461C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(208,132),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void ABISELECT(_ZThn64_N7S3461C2D1Ev,_ZThn40_N7S3461C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S3461C2D0Ev,_ZThn40_N7S3461C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C15__7S3461C2__7S3461C1[] = {
  ABISELECT(192,124),
  ABISELECT(-48,-28),
  ABISELECT(256,164),
  ABISELECT(216,140),
  ABISELECT(192,124),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S3461C2D1Ev,_ZThn40_N7S3461C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S3461C2D0Ev,_ZThn40_N7S3461C2D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C168S3461C15__A7__7S3461C2__7S3461C1[] = {
  ABISELECT(176,116),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C2D1Ev,_ZTv0_n24_N7S3461C2D1Ev)();
extern void ABISELECT(_ZThn320_N7S3461C2D1Ev,_ZThn204_N7S3461C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3461C2D0Ev,_ZTv0_n24_N7S3461C2D0Ev)();
extern void ABISELECT(_ZThn320_N7S3461C2D0Ev,_ZThn204_N7S3461C2D0Ev)() __attribute__((weak));
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C17__7S3461C2__7S3461C1[] = {
  0,
  ABISELECT(-320,-204),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-320,-204),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C2D1Ev,_ZTv0_n24_N7S3461C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C2D0Ev,_ZTv0_n24_N7S3461C2D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C168S3461C15__A3__7S3461C2__7S3461C1[] = {
  ABISELECT(168,112),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C148S3461C15__A2__7S3461C2__7S3461C1[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(152,104),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn120_N7S3461C2D1Ev,_ZThn68_N7S3461C2D1Ev)();
extern void ABISELECT(_ZThn120_N7S3461C2D0Ev,_ZThn68_N7S3461C2D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C188S3461C15__7S3461C2__7S3461C1[] = {
  ABISELECT(160,112),
  ABISELECT(136,96),
  ABISELECT(136,96),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S3461C2D1Ev,_ZThn68_N7S3461C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S3461C2D0Ev,_ZThn68_N7S3461C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn136_N7S3461C2D1Ev,_ZThn80_N7S3461C2D1Ev)();
extern void ABISELECT(_ZThn136_N7S3461C2D0Ev,_ZThn80_N7S3461C2D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C68S3461C15__A3__7S3461C2__7S3461C1[] = {
  ABISELECT(120,84),
  ABISELECT(120,84),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI7S3461C2[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N7S3461C2D1Ev,_ZThn80_N7S3461C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N7S3461C2D0Ev,_ZThn80_N7S3461C2D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C19D1Ev();
extern void _ZN8S3461C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C19__A__7S3461C1[] = {
  ABISELECT(112,80),
  ABISELECT(96,72),
  ABISELECT(88,64),
  ABISELECT(176,120),
  ABISELECT(136,96),
  ABISELECT(112,80),
  ABISELECT(112,80),
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C19D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C19D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C19__A2__7S3461C1[] = {
  ABISELECT(112,80),
  ABISELECT(112,80),
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C138S3461C19__A2__7S3461C1[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C4D1Ev();
extern void _ZN7S3461C4D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__A1__7S3461C1[] = {
  ABISELECT(88,64),
  ABISELECT(88,64),
  ABISELECT(72,56),
  ABISELECT(64,48),
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C67S3461C48S3461C19__A5__7S3461C1[] = {
  ABISELECT(64,48),
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C67S3461C48S3461C19__A6__7S3461C1[] = {
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C67S3461C48S3461C19__A12__7S3461C1[] = {
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__7S3461C48S3461C19__A1__7S3461C1[] = {
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-72,-56),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev)();
extern void ABISELECT(_ZThn88_N7S3461C4D1Ev,_ZThn64_N7S3461C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev)();
extern void ABISELECT(_ZThn88_N7S3461C4D0Ev,_ZThn64_N7S3461C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__7S3461C48S3461C19__A1__7S3461C1[] = {
  ABISELECT(-88,-64),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C19__A__7S3461C1[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn112_N8S3461C19D1Ev,_ZThn80_N8S3461C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev)();
extern void ABISELECT(_ZThn112_N8S3461C19D0Ev,_ZThn80_N8S3461C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__A1__8S3461C19__A__7S3461C1[] = {
  ABISELECT(-112,-80),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn176_N8S3461C19D1Ev,_ZThn120_N8S3461C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev)();
extern void ABISELECT(_ZThn176_N8S3461C19D0Ev,_ZThn120_N8S3461C19D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__8S3461C19__A__7S3461C1[] = {
  0,
  ABISELECT(-176,-120),
  0,
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn24_N8S3461C19D1Ev,_ZThn16_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn24_N8S3461C19D0Ev,_ZThn16_N8S3461C19D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C4__8S3461C19__A__7S3461C1[] = {
  ABISELECT(88,64),
  ABISELECT(88,64),
  ABISELECT(72,56),
  ABISELECT(64,48),
  ABISELECT(64,48),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C19D1Ev,_ZThn16_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C19D0Ev,_ZThn16_N8S3461C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C19__A__7S3461C1[] = {
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C20D1Ev();
extern void _ZN8S3461C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C20__7S3461C1[] = {
  ABISELECT(104,68),
  ABISELECT(456,296),
  ABISELECT(440,288),
  ABISELECT(400,256),
  ABISELECT(312,208),
  ABISELECT(296,196),
  ABISELECT(192,132),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(40,28),
  ABISELECT(128,84),
  ABISELECT(64,44),
  ABISELECT(144,96),
  ABISELECT(88,60),
  ABISELECT(-200,-124),
  ABISELECT(-200,-124),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C20D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C20D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C148S3461C20__A4__7S3461C1[] = {
  ABISELECT(-200,-124),
  ABISELECT(-200,-124),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__8S3461C148S3461C20__A4__7S3461C1[] = {
  0,
  ABISELECT(240,152),
  ABISELECT(200,124),
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C20__7S3461C1[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C20D1Ev,_ZTv0_n44_N8S3461C20D1Ev)();
extern void ABISELECT(_ZThn144_N8S3461C20D1Ev,_ZThn96_N8S3461C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S3461C20D0Ev,_ZTv0_n44_N8S3461C20D0Ev)();
extern void ABISELECT(_ZThn144_N8S3461C20D0Ev,_ZThn96_N8S3461C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C19__8S3461C20__7S3461C1[] = {
  ABISELECT(24,16),
  ABISELECT(-144,-96),
  ABISELECT(-80,-52),
  ABISELECT(-96,-60),
  ABISELECT(-104,-68),
  ABISELECT(-16,-12),
  ABISELECT(-56,-36),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  ABISELECT(-104,-68),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C20D1Ev,_ZTv0_n44_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C20D0Ev,_ZTv0_n44_N8S3461C20D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C20D1Ev,_ZTv0_n24_N8S3461C20D1Ev)();
extern void ABISELECT(_ZThn64_N8S3461C20D1Ev,_ZThn44_N8S3461C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C20D0Ev,_ZTv0_n24_N8S3461C20D0Ev)();
extern void ABISELECT(_ZThn64_N8S3461C20D0Ev,_ZThn44_N8S3461C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__A1__8S3461C20__7S3461C1[] = {
  ABISELECT(-64,-44),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C20D1Ev,_ZTv0_n24_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C20D0Ev,_ZTv0_n24_N8S3461C20D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C20D1Ev,_ZTv0_n24_N8S3461C20D1Ev)();
extern void ABISELECT(_ZThn128_N8S3461C20D1Ev,_ZThn84_N8S3461C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C20D0Ev,_ZTv0_n24_N8S3461C20D0Ev)();
extern void ABISELECT(_ZThn128_N8S3461C20D0Ev,_ZThn84_N8S3461C20D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__8S3461C20__7S3461C1[] = {
  0,
  ABISELECT(-128,-84),
  0,
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C20D1Ev,_ZTv0_n24_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C20D0Ev,_ZTv0_n24_N8S3461C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C20D1Ev,_ZTvn16_n44_N8S3461C20D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C20D0Ev,_ZTvn16_n44_N8S3461C20D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__8S3461C20__7S3461C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-104,-68),
  ABISELECT(-120,-76),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  ABISELECT(-168,-112),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C20D1Ev,_ZTvn16_n44_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C20D0Ev,_ZTvn16_n44_N8S3461C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C20__7S3461C1[] = {
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void ABISELECT(_ZTv0_n160_N8S3461C20D1Ev,_ZTv0_n80_N8S3461C20D1Ev)();
extern void ABISELECT(_ZThn192_N8S3461C20D1Ev,_ZThn132_N8S3461C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n160_N8S3461C20D0Ev,_ZTv0_n80_N8S3461C20D0Ev)();
extern void ABISELECT(_ZThn192_N8S3461C20D0Ev,_ZThn132_N8S3461C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C21__8S3461C20__7S3461C1[] = {
  ABISELECT(16,8),
  ABISELECT(-192,-132),
  0,
  0,
  ABISELECT(-88,-64),
  ABISELECT(264,164),
  ABISELECT(-392,-256),
  ABISELECT(248,156),
  ABISELECT(-128,-88),
  ABISELECT(-144,-96),
  ABISELECT(-64,-48),
  ABISELECT(-104,-72),
  ABISELECT(-48,-36),
  ABISELECT(208,124),
  ABISELECT(120,76),
  ABISELECT(-152,-104),
  ABISELECT(104,64),
  ABISELECT(-128,-88),
  ABISELECT(-152,-104),
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n160_N8S3461C20D1Ev,_ZTv0_n80_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n160_N8S3461C20D0Ev,_ZTv0_n80_N8S3461C20D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn16_n160_N8S3461C20D1Ev,_ZTvn8_n80_N8S3461C20D1Ev)();
extern void ABISELECT(_ZTvn16_n160_N8S3461C20D0Ev,_ZTvn8_n80_N8S3461C20D0Ev)();
extern void _ZN8S3461C222v6Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C228S3461C21__8S3461C20__7S3461C1[] = {
  ABISELECT(-408,-264),
  ABISELECT(232,148),
  ABISELECT(-144,-96),
  ABISELECT(-160,-104),
  ABISELECT(-80,-56),
  ABISELECT(-120,-80),
  ABISELECT(-64,-44),
  ABISELECT(192,116),
  ABISELECT(104,68),
  ABISELECT(-168,-112),
  ABISELECT(88,56),
  ABISELECT(-144,-96),
  ABISELECT(-144,-96),
  ABISELECT(-168,-112),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n160_N8S3461C20D1Ev,_ZTvn8_n80_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n160_N8S3461C20D0Ev,_ZTvn8_n80_N8S3461C20D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C222v6Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S3461C20D1Ev,_ZTv0_n28_N8S3461C20D1Ev)();
extern void ABISELECT(_ZThn296_N8S3461C20D1Ev,_ZThn196_N8S3461C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3461C20D0Ev,_ZTv0_n28_N8S3461C20D0Ev)();
extern void ABISELECT(_ZThn296_N8S3461C20D0Ev,_ZThn196_N8S3461C20D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C18__8S3461C20__7S3461C1[] = {
  0,
  0,
  ABISELECT(-296,-196),
  0,
  ABISELECT(-232,-152),
  ABISELECT(-256,-168),
  ABISELECT(-256,-168),
  ABISELECT(-296,-196),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3461C20D1Ev,_ZTv0_n28_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3461C20D0Ev,_ZTv0_n28_N8S3461C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S3461C20D1Ev,_ZTv0_n60_N8S3461C20D1Ev)();
extern void ABISELECT(_ZThn312_N8S3461C20D1Ev,_ZThn208_N8S3461C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S3461C20D0Ev,_ZTv0_n60_N8S3461C20D0Ev)();
extern void ABISELECT(_ZThn312_N8S3461C20D0Ev,_ZThn208_N8S3461C20D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C23__8S3461C20__7S3461C1[] = {
  0,
  0,
  ABISELECT(-312,-208),
  0,
  ABISELECT(88,48),
  ABISELECT(-264,-172),
  ABISELECT(-184,-124),
  ABISELECT(-224,-148),
  ABISELECT(-168,-112),
  ABISELECT(-248,-164),
  ABISELECT(-512,-332),
  ABISELECT(128,80),
  ABISELECT(-248,-164),
  ABISELECT(-272,-180),
  ABISELECT(-272,-180),
  ABISELECT(-312,-208),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S3461C20D1Ev,_ZTv0_n60_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S3461C20D0Ev,_ZTv0_n60_N8S3461C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C20D1Ev,_ZTv0_n24_N8S3461C20D1Ev)();
extern void ABISELECT(_ZThn400_N8S3461C20D1Ev,_ZThn256_N8S3461C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C20D0Ev,_ZTv0_n24_N8S3461C20D0Ev)();
extern void ABISELECT(_ZThn400_N8S3461C20D0Ev,_ZThn256_N8S3461C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C24__8S3461C20__7S3461C1[] = {
  ABISELECT(-400,-256),
  ABISELECT(-336,-212),
  ABISELECT(-336,-212),
  ABISELECT(-360,-228),
  ABISELECT(-400,-256),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C20D1Ev,_ZTv0_n24_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C20D0Ev,_ZTv0_n24_N8S3461C20D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C20__7S3461C1[] = {
  ABISELECT(-640,-412),
  ABISELECT(-640,-412),
  ABISELECT(-400,-260),
  ABISELECT(-440,-288),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__A3__8S3461C20__7S3461C1[] = {
  0,
  ABISELECT(240,152),
  ABISELECT(200,124),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C228S3461C21__A3__8S3461C20__7S3461C1[] = {
  ABISELECT(-200,-136),
  ABISELECT(-240,-164),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C20D1Ev,_ZTv0_n44_N8S3461C20D1Ev)();
extern void ABISELECT(_ZThn456_N8S3461C20D1Ev,_ZThn296_N8S3461C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S3461C20D0Ev,_ZTv0_n44_N8S3461C20D0Ev)();
extern void ABISELECT(_ZThn456_N8S3461C20D0Ev,_ZThn296_N8S3461C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C26__8S3461C20__7S3461C1[] = {
  ABISELECT(48,36),
  ABISELECT(24,16),
  ABISELECT(-456,-296),
  ABISELECT(-392,-252),
  ABISELECT(-408,-260),
  ABISELECT(-416,-268),
  ABISELECT(-328,-212),
  ABISELECT(-368,-236),
  ABISELECT(-392,-252),
  ABISELECT(-392,-252),
  ABISELECT(-416,-268),
  ABISELECT(-456,-296),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C20D1Ev,_ZTv0_n44_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C20D0Ev,_ZTv0_n44_N8S3461C20D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C20D1Ev,_ZTvn16_n44_N8S3461C20D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C20D0Ev,_ZTvn16_n44_N8S3461C20D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C198S3461C26__A1__8S3461C20__7S3461C1[] = {
  ABISELECT(-416,-268),
  ABISELECT(-416,-268),
  ABISELECT(-432,-276),
  ABISELECT(-440,-284),
  ABISELECT(-440,-284),
  ABISELECT(-480,-312),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C20D1Ev,_ZTvn16_n44_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C20D0Ev,_ZTvn16_n44_N8S3461C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn48_n88_N8S3461C20D1Ev,_ZTvn36_n44_N8S3461C20D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N8S3461C20D0Ev,_ZTvn36_n44_N8S3461C20D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C188S3461C26__A2__8S3461C20__7S3461C1[] = {
  ABISELECT(-440,-288),
  ABISELECT(-464,-304),
  ABISELECT(-464,-304),
  ABISELECT(-504,-332),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S3461C20D1Ev,_ZTvn36_n44_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S3461C20D0Ev,_ZTvn36_n44_N8S3461C20D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void ABISELECT(_ZTvn64_n160_N8S3461C20D1Ev,_ZTvn40_n80_N8S3461C20D1Ev)();
extern void ABISELECT(_ZTvn64_n160_N8S3461C20D0Ev,_ZTvn40_n80_N8S3461C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C278S3461C21__8S3461C20__7S3461C1[] = {
  ABISELECT(-456,-296),
  ABISELECT(184,116),
  ABISELECT(-216,-144),
  ABISELECT(-152,-104),
  ABISELECT(-192,-128),
  ABISELECT(-216,-144),
  ABISELECT(-256,-172),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n160_N8S3461C20D1Ev,_ZTvn40_n80_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n160_N8S3461C20D0Ev,_ZTvn40_n80_N8S3461C20D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C168S3461C278S3461C21__A13__8S3461C20__7S3461C1[] = {
  ABISELECT(-232,-152),
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C20D1Ev,_ZTv0_n24_N8S3461C20D1Ev)();
extern void ABISELECT(_ZThn104_N8S3461C20D1Ev,_ZThn68_N8S3461C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C20D0Ev,_ZTv0_n24_N8S3461C20D0Ev)();
extern void ABISELECT(_ZThn104_N8S3461C20D0Ev,_ZThn68_N8S3461C20D0Ev)() __attribute__((weak));
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C17__8S3461C20__7S3461C1[] = {
  0,
  ABISELECT(-104,-68),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C20D1Ev,_ZTv0_n24_N8S3461C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C20D0Ev,_ZTv0_n24_N8S3461C20D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C168S3461C278S3461C21__A5__8S3461C20__7S3461C1[] = {
  ABISELECT(-240,-156),
  ABISELECT(-280,-184),
  (VTBL_ENTRY)&(_ZTI8S3461C20[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C4D1Ev();
extern void _ZN7S3461C4D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C4__7S3461C1[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C67S3461C4__7S3461C1[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C67S3461C4__7S3461C1[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C67S3461C4__7S3461C1[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__7S3461C4__7S3461C1[] = {
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S3461C4D1Ev,_ZThn36_N7S3461C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S3461C4D0Ev,_ZThn36_N7S3461C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C13__7S3461C4__7S3461C1[] = {
  ABISELECT(-48,-36),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__7S3461C1[] = {
  ABISELECT(16,8),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C11__7S3461C1[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C11__A1__7S3461C1[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C11__7S3461C1[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A2__7S3461C1[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C13__7S3461C1[] = {
  0,
  0,
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__A2__7S3461C1[] = {
  ABISELECT(240,152),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C8__A4__7S3461C1[] = {
  ABISELECT(240,152),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__A1__7S3461C1[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C12__A5__7S3461C1[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C17D1Ev();
extern void _ZN8S3461C17D0Ev();
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C17__7S3461C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C17[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C17D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C17D0Ev,
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C17__A1__7S3461C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C138S3461C17__A1__7S3461C1[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C17__7S3461C1[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S3461C17[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__A4__7S3461C1[] = {
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C6__A5__7S3461C1[] = {
  ABISELECT(-88,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C6__A11__7S3461C1[] = {
  ABISELECT(-88,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C19D1Ev();
extern void _ZN8S3461C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C19__A1__7S3461C1[] = {
  ABISELECT(-80,-52),
  ABISELECT(-96,-60),
  ABISELECT(-104,-68),
  ABISELECT(-16,-12),
  ABISELECT(-56,-36),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  ABISELECT(-104,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C19D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C19D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C19__A3__7S3461C1[] = {
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  ABISELECT(-104,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C138S3461C19__A3__7S3461C1[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C4D1Ev();
extern void _ZN7S3461C4D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__A2__7S3461C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-104,-68),
  ABISELECT(-120,-76),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C67S3461C48S3461C19__A6__7S3461C1[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C67S3461C48S3461C19__A7__7S3461C1[] = {
  ABISELECT(-128,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C67S3461C48S3461C19__A13__7S3461C1[] = {
  ABISELECT(-128,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__7S3461C48S3461C19__A2__7S3461C1[] = {
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(120,76),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C13__7S3461C48S3461C19__A2__7S3461C1[] = {
  ABISELECT(104,68),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(104,68),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C19__A1__7S3461C1[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C13__A1__8S3461C19__A1__7S3461C1[] = {
  ABISELECT(80,52),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__8S3461C19__A1__7S3461C1[] = {
  0,
  ABISELECT(16,12),
  0,
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn24_N8S3461C19D1Ev,_ZThn16_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn24_N8S3461C19D0Ev,_ZThn16_N8S3461C19D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C4__8S3461C19__A1__7S3461C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-104,-68),
  ABISELECT(-120,-76),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C19D1Ev,_ZThn16_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C19D0Ev,_ZThn16_N8S3461C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C19__A1__7S3461C1[] = {
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(96,60),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN8S3461C21D1Ev();
extern void _ZN8S3461C21D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C21__7S3461C1[] = {
  ABISELECT(-88,-64),
  ABISELECT(264,164),
  ABISELECT(-392,-256),
  ABISELECT(248,156),
  ABISELECT(-128,-88),
  ABISELECT(-144,-96),
  ABISELECT(-64,-48),
  ABISELECT(-104,-72),
  ABISELECT(-48,-36),
  ABISELECT(208,124),
  ABISELECT(120,76),
  ABISELECT(-152,-104),
  ABISELECT(104,64),
  ABISELECT(-128,-88),
  ABISELECT(-152,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&_ZN8S3461C21D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C21D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C118S3461C21__A2__7S3461C1[] = {
  ABISELECT(-128,-88),
  ABISELECT(-152,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C118S3461C21__A4__7S3461C1[] = {
  ABISELECT(-152,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C118S3461C21__A14__7S3461C1[] = {
  ABISELECT(-152,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C118S3461C21__A2__7S3461C1[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C22D1Ev();
extern void _ZN8S3461C22D0Ev();
extern void _ZN8S3461C222v6Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C228S3461C21__7S3461C1[] = {
  ABISELECT(-408,-264),
  ABISELECT(232,148),
  ABISELECT(-144,-96),
  ABISELECT(-160,-104),
  ABISELECT(-80,-56),
  ABISELECT(-120,-80),
  ABISELECT(-64,-44),
  ABISELECT(192,116),
  ABISELECT(104,68),
  ABISELECT(-168,-112),
  ABISELECT(88,56),
  ABISELECT(-144,-96),
  ABISELECT(-144,-96),
  ABISELECT(-168,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C22D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C22D0Ev,
  (VTBL_ENTRY)&_ZN8S3461C222v6Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C228S3461C21__A5__7S3461C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(-144,-96),
  ABISELECT(-168,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C138S3461C228S3461C21__A5__7S3461C1[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C228S3461C21__A5__7S3461C1[] = {
  ABISELECT(-200,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C228S3461C21__A17__7S3461C1[] = {
  ABISELECT(-200,-136),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S3461C22D1Ev,_ZTv0_n28_N8S3461C22D1Ev)();
extern void ABISELECT(_ZThn88_N8S3461C22D1Ev,_ZThn56_N8S3461C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3461C22D0Ev,_ZTv0_n28_N8S3461C22D0Ev)();
extern void ABISELECT(_ZThn88_N8S3461C22D0Ev,_ZThn56_N8S3461C22D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C18__8S3461C228S3461C21__7S3461C1[] = {
  0,
  0,
  ABISELECT(-88,-56),
  0,
  ABISELECT(-232,-152),
  ABISELECT(-256,-168),
  ABISELECT(-256,-168),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3461C22D1Ev,_ZTv0_n28_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3461C22D0Ev,_ZTv0_n28_N8S3461C22D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C13__A2__8S3461C228S3461C21__7S3461C1[] = {
  ABISELECT(144,96),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S3461C22D1Ev,_ZTv0_n60_N8S3461C22D1Ev)();
extern void ABISELECT(_ZThn104_N8S3461C22D1Ev,_ZThn68_N8S3461C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S3461C22D0Ev,_ZTv0_n60_N8S3461C22D0Ev)();
extern void ABISELECT(_ZThn104_N8S3461C22D0Ev,_ZThn68_N8S3461C22D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C23__8S3461C228S3461C21__7S3461C1[] = {
  0,
  0,
  ABISELECT(-104,-68),
  0,
  ABISELECT(88,48),
  ABISELECT(-264,-172),
  ABISELECT(-184,-124),
  ABISELECT(-224,-148),
  ABISELECT(-168,-112),
  ABISELECT(-248,-164),
  ABISELECT(-512,-332),
  ABISELECT(128,80),
  ABISELECT(-248,-164),
  ABISELECT(-272,-180),
  ABISELECT(-272,-180),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S3461C22D1Ev,_ZTv0_n60_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S3461C22D0Ev,_ZTv0_n60_N8S3461C22D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev)();
extern void ABISELECT(_ZThn192_N8S3461C22D1Ev,_ZThn116_N8S3461C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev)();
extern void ABISELECT(_ZThn192_N8S3461C22D0Ev,_ZThn116_N8S3461C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C24__8S3461C228S3461C21__7S3461C1[] = {
  ABISELECT(-192,-116),
  ABISELECT(-336,-212),
  ABISELECT(-336,-212),
  ABISELECT(-360,-228),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C22D1Ev,_ZTv0_n44_N8S3461C22D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S3461C22D0Ev,_ZTv0_n44_N8S3461C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C19__8S3461C228S3461C21__7S3461C1[] = {
  ABISELECT(24,16),
  ABISELECT(64,44),
  ABISELECT(-80,-52),
  ABISELECT(-96,-60),
  ABISELECT(-104,-68),
  ABISELECT(-16,-12),
  ABISELECT(-56,-36),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  ABISELECT(-104,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C22D1Ev,_ZTv0_n44_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C22D0Ev,_ZTv0_n44_N8S3461C22D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C228S3461C21__7S3461C1[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(120,80),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__A1__8S3461C228S3461C21__7S3461C1[] = {
  0,
  ABISELECT(80,56),
  0,
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C22D1Ev,_ZTvn16_n44_N8S3461C22D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C22D0Ev,_ZTvn16_n44_N8S3461C22D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__8S3461C228S3461C21__7S3461C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-104,-68),
  ABISELECT(-120,-76),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C22D1Ev,_ZTvn16_n44_N8S3461C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C22D0Ev,_ZTvn16_n44_N8S3461C22D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C228S3461C21__7S3461C1[] = {
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C228S3461C21__7S3461C1[] = {
  ABISELECT(-640,-412),
  ABISELECT(-640,-412),
  ABISELECT(-400,-260),
  ABISELECT(-232,-148),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__A3__8S3461C228S3461C21__7S3461C1[] = {
  0,
  ABISELECT(240,152),
  ABISELECT(408,264),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__A__8S3461C228S3461C21__7S3461C1[] = {
  ABISELECT(-200,-136),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S3461C22[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN8S3461C27D1Ev();
extern void _ZN8S3461C27D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C278S3461C21__7S3461C1[] = {
  ABISELECT(-456,-296),
  ABISELECT(184,116),
  ABISELECT(-216,-144),
  ABISELECT(-152,-104),
  ABISELECT(-192,-128),
  ABISELECT(-216,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C27[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&_ZN8S3461C27D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C27D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void _ZN8S3461C16D1Ev();
extern void _ZN8S3461C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C168S3461C278S3461C21__A1__7S3461C1[] = {
  ABISELECT(-152,-104),
  ABISELECT(-192,-128),
  ABISELECT(-216,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&_ZN8S3461C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C16D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C118S3461C168S3461C278S3461C21__A3__7S3461C1[] = {
  ABISELECT(-192,-128),
  ABISELECT(-216,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C118S3461C168S3461C278S3461C21__A6__7S3461C1[] = {
  ABISELECT(-216,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C118S3461C168S3461C278S3461C21__A20__7S3461C1[] = {
  ABISELECT(-216,-144),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C118S3461C168S3461C278S3461C21__A3__7S3461C1[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(192,128),
  (VTBL_ENTRY)&(_ZTI8S3461C11[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C168S3461C278S3461C21__A21__7S3461C1[] = {
  ABISELECT(-232,-152),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C168S3461C278S3461C21__A7__7S3461C1[] = {
  ABISELECT(-240,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C12[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C128S3461C168S3461C278S3461C21__A22__7S3461C1[] = {
  ABISELECT(-240,-156),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C168S3461C278S3461C21__A1__7S3461C1[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(192,128),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A__8S3461C168S3461C278S3461C21__A1__7S3461C1[] = {
  ABISELECT(-232,-152),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C16D1Ev,_ZTv0_n24_N8S3461C16D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C16D0Ev,_ZTv0_n24_N8S3461C16D0Ev)();
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C17__8S3461C168S3461C278S3461C21__A1__7S3461C1[] = {
  0,
  ABISELECT(152,104),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(152,104),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C16D1Ev,_ZTv0_n24_N8S3461C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C16D0Ev,_ZTv0_n24_N8S3461C16D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__A1__8S3461C168S3461C278S3461C21__A1__7S3461C1[] = {
  ABISELECT(-240,-156),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3461C16[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__A1__8S3461C278S3461C21__7S3461C1[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(192,128),
  (VTBL_ENTRY)&(_ZTI8S3461C27[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C16__A2__8S3461C278S3461C21__7S3461C1[] = {
  ABISELECT(-232,-152),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3461C27[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C27D1Ev,_ZTv0_n24_N8S3461C27D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C27D0Ev,_ZTv0_n24_N8S3461C27D0Ev)();
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C17__8S3461C278S3461C21__7S3461C1[] = {
  0,
  ABISELECT(152,104),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(152,104),
  (VTBL_ENTRY)&(_ZTI8S3461C27[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C27D1Ev,_ZTv0_n24_N8S3461C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C27D0Ev,_ZTv0_n24_N8S3461C27D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C16__A1__8S3461C278S3461C21__7S3461C1[] = {
  ABISELECT(-240,-156),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3461C27[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C278S3461C21__7S3461C1[] = {
  ABISELECT(-640,-412),
  ABISELECT(-640,-412),
  ABISELECT(-400,-260),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI8S3461C27[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__8S3461C278S3461C21__7S3461C1[] = {
  0,
  ABISELECT(240,152),
  ABISELECT(456,296),
  (VTBL_ENTRY)&(_ZTI8S3461C27[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C13__A2__8S3461C21__7S3461C1[] = {
  ABISELECT(128,88),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn16_N8S3461C21D1Ev,_ZThn8_N8S3461C21D1Ev)();
extern void ABISELECT(_ZThn16_N8S3461C21D0Ev,_ZThn8_N8S3461C21D0Ev)();
extern void _ZN8S3461C222v6Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C22__8S3461C21__7S3461C1[] = {
  ABISELECT(-408,-264),
  ABISELECT(232,148),
  ABISELECT(-144,-96),
  ABISELECT(-160,-104),
  ABISELECT(-80,-56),
  ABISELECT(-120,-80),
  ABISELECT(-64,-44),
  ABISELECT(192,116),
  ABISELECT(104,68),
  ABISELECT(-168,-112),
  ABISELECT(88,56),
  ABISELECT(-144,-96),
  ABISELECT(-144,-96),
  ABISELECT(-168,-112),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3461C21D1Ev,_ZThn8_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3461C21D0Ev,_ZThn8_N8S3461C21D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C222v6Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S3461C21D1Ev,_ZTv0_n28_N8S3461C21D1Ev)();
extern void ABISELECT(_ZThn104_N8S3461C21D1Ev,_ZThn64_N8S3461C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3461C21D0Ev,_ZTv0_n28_N8S3461C21D0Ev)();
extern void ABISELECT(_ZThn104_N8S3461C21D0Ev,_ZThn64_N8S3461C21D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C18__8S3461C21__7S3461C1[] = {
  0,
  0,
  ABISELECT(-104,-64),
  0,
  ABISELECT(-232,-152),
  ABISELECT(-256,-168),
  ABISELECT(-256,-168),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3461C21D1Ev,_ZTv0_n28_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3461C21D0Ev,_ZTv0_n28_N8S3461C21D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S3461C21D1Ev,_ZTv0_n60_N8S3461C21D1Ev)();
extern void ABISELECT(_ZThn120_N8S3461C21D1Ev,_ZThn76_N8S3461C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S3461C21D0Ev,_ZTv0_n60_N8S3461C21D0Ev)();
extern void ABISELECT(_ZThn120_N8S3461C21D0Ev,_ZThn76_N8S3461C21D0Ev)() __attribute__((weak));
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C23__8S3461C21__7S3461C1[] = {
  0,
  0,
  ABISELECT(-120,-76),
  0,
  ABISELECT(88,48),
  ABISELECT(-264,-172),
  ABISELECT(-184,-124),
  ABISELECT(-224,-148),
  ABISELECT(-168,-112),
  ABISELECT(-248,-164),
  ABISELECT(-512,-332),
  ABISELECT(128,80),
  ABISELECT(-248,-164),
  ABISELECT(-272,-180),
  ABISELECT(-272,-180),
  ABISELECT(-120,-76),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S3461C21D1Ev,_ZTv0_n60_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S3461C21D0Ev,_ZTv0_n60_N8S3461C21D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev)();
extern void ABISELECT(_ZThn208_N8S3461C21D1Ev,_ZThn124_N8S3461C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev)();
extern void ABISELECT(_ZThn208_N8S3461C21D0Ev,_ZThn124_N8S3461C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C24__8S3461C21__7S3461C1[] = {
  ABISELECT(-208,-124),
  ABISELECT(-336,-212),
  ABISELECT(-336,-212),
  ABISELECT(-360,-228),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C21D1Ev,_ZTv0_n44_N8S3461C21D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S3461C21D0Ev,_ZTv0_n44_N8S3461C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C19__8S3461C21__7S3461C1[] = {
  ABISELECT(24,16),
  ABISELECT(48,36),
  ABISELECT(-80,-52),
  ABISELECT(-96,-60),
  ABISELECT(-104,-68),
  ABISELECT(-16,-12),
  ABISELECT(-56,-36),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  ABISELECT(-104,-68),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C21D1Ev,_ZTv0_n44_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C21D0Ev,_ZTv0_n44_N8S3461C21D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__A1__8S3461C21__7S3461C1[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(104,72),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__A1__8S3461C21__7S3461C1[] = {
  0,
  ABISELECT(64,48),
  0,
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(64,48),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C21D1Ev,_ZTvn16_n44_N8S3461C21D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C21D0Ev,_ZTvn16_n44_N8S3461C21D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__8S3461C21__7S3461C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-104,-68),
  ABISELECT(-120,-76),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  ABISELECT(24,20),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C21D1Ev,_ZTvn16_n44_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C21D0Ev,_ZTvn16_n44_N8S3461C21D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__A1__8S3461C21__7S3461C1[] = {
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C21__7S3461C1[] = {
  ABISELECT(-640,-412),
  ABISELECT(-640,-412),
  ABISELECT(-400,-260),
  ABISELECT(-248,-156),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__A3__8S3461C21__7S3461C1[] = {
  0,
  ABISELECT(240,152),
  ABISELECT(392,256),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C22__A3__8S3461C21__7S3461C1[] = {
  ABISELECT(-200,-136),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C21D1Ev,_ZTv0_n44_N8S3461C21D1Ev)();
extern void ABISELECT(_ZThn264_N8S3461C21D1Ev,_ZThn164_N8S3461C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S3461C21D0Ev,_ZTv0_n44_N8S3461C21D0Ev)();
extern void ABISELECT(_ZThn264_N8S3461C21D0Ev,_ZThn164_N8S3461C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C26__8S3461C21__7S3461C1[] = {
  ABISELECT(48,36),
  ABISELECT(24,16),
  ABISELECT(-264,-164),
  ABISELECT(-392,-252),
  ABISELECT(-408,-260),
  ABISELECT(-416,-268),
  ABISELECT(-328,-212),
  ABISELECT(-368,-236),
  ABISELECT(-392,-252),
  ABISELECT(-392,-252),
  ABISELECT(-416,-268),
  ABISELECT(-264,-164),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C21D1Ev,_ZTv0_n44_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C21D0Ev,_ZTv0_n44_N8S3461C21D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C21D1Ev,_ZTvn16_n44_N8S3461C21D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C21D0Ev,_ZTvn16_n44_N8S3461C21D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C198S3461C26__A1__8S3461C21__7S3461C1[] = {
  ABISELECT(-416,-268),
  ABISELECT(-416,-268),
  ABISELECT(-432,-276),
  ABISELECT(-440,-284),
  ABISELECT(-440,-284),
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C21D1Ev,_ZTvn16_n44_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C21D0Ev,_ZTvn16_n44_N8S3461C21D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn48_n88_N8S3461C21D1Ev,_ZTvn36_n44_N8S3461C21D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N8S3461C21D0Ev,_ZTvn36_n44_N8S3461C21D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C188S3461C26__A2__8S3461C21__7S3461C1[] = {
  ABISELECT(-440,-288),
  ABISELECT(-464,-304),
  ABISELECT(-464,-304),
  ABISELECT(-312,-200),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S3461C21D1Ev,_ZTvn36_n44_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S3461C21D0Ev,_ZTvn36_n44_N8S3461C21D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
extern void ABISELECT(_ZThn64_N8S3461C21D1Ev,_ZThn40_N8S3461C21D1Ev)();
extern void ABISELECT(_ZThn64_N8S3461C21D0Ev,_ZThn40_N8S3461C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C27__8S3461C21__7S3461C1[] = {
  ABISELECT(-456,-296),
  ABISELECT(184,116),
  ABISELECT(-216,-144),
  ABISELECT(-152,-104),
  ABISELECT(-192,-128),
  ABISELECT(-216,-144),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3461C21D1Ev,_ZThn40_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S3461C21D0Ev,_ZThn40_N8S3461C21D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C98S3461C168S3461C27__A13__8S3461C21__7S3461C1[] = {
  ABISELECT(-232,-152),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev)();
extern void _ZN8S3461C172v4Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C17__8S3461C21__7S3461C1[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(88,64),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev),
  (VTBL_ENTRY)&_ZN8S3461C172v4Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C128S3461C168S3461C27__A5__8S3461C21__7S3461C1[] = {
  ABISELECT(-240,-156),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S3461C21[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C18D1Ev();
extern void _ZN8S3461C18D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C18__A1__7S3461C1[] = {
  ABISELECT(-232,-152),
  ABISELECT(-256,-168),
  ABISELECT(-256,-168),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C68S3461C18__A7__7S3461C1[] = {
  ABISELECT(-256,-168),
  ABISELECT(-256,-168),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C68S3461C18__A8__7S3461C1[] = {
  ABISELECT(-256,-168),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C68S3461C18__A15__7S3461C1[] = {
  ABISELECT(-256,-168),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C18__A1__7S3461C1[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(232,152),
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C23D1Ev();
extern void _ZN8S3461C23D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C23__7S3461C1[] = {
  ABISELECT(88,48),
  ABISELECT(-264,-172),
  ABISELECT(-184,-124),
  ABISELECT(-224,-148),
  ABISELECT(-168,-112),
  ABISELECT(-248,-164),
  ABISELECT(-512,-332),
  ABISELECT(128,80),
  ABISELECT(-248,-164),
  ABISELECT(-272,-180),
  ABISELECT(-272,-180),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C23D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C23D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C25D1Ev();
extern void _ZN8S3461C25D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C258S3461C23__7S3461C1[] = {
  ABISELECT(-264,-172),
  ABISELECT(-184,-124),
  ABISELECT(-224,-148),
  ABISELECT(-168,-112),
  ABISELECT(-248,-164),
  ABISELECT(-512,-332),
  ABISELECT(128,80),
  ABISELECT(-248,-164),
  ABISELECT(-272,-180),
  ABISELECT(-272,-180),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C25D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C25D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C18D1Ev();
extern void _ZN8S3461C18D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C188S3461C258S3461C23__A2__7S3461C1[] = {
  ABISELECT(-248,-164),
  ABISELECT(-272,-180),
  ABISELECT(-272,-180),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C68S3461C188S3461C258S3461C23__A8__7S3461C1[] = {
  ABISELECT(-272,-180),
  ABISELECT(-272,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C68S3461C188S3461C258S3461C23__A9__7S3461C1[] = {
  ABISELECT(-272,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C68S3461C188S3461C258S3461C23__A16__7S3461C1[] = {
  ABISELECT(-272,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C188S3461C258S3461C23__A2__7S3461C1[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(248,164),
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C258S3461C23__7S3461C1[] = {
  ABISELECT(-640,-412),
  ABISELECT(-640,-412),
  ABISELECT(-400,-260),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__8S3461C258S3461C23__7S3461C1[] = {
  0,
  ABISELECT(240,152),
  ABISELECT(512,332),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C13__8S3461C258S3461C23__7S3461C1[] = {
  ABISELECT(248,164),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(248,164),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C25D1Ev,_ZTv0_n44_N8S3461C25D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S3461C25D0Ev,_ZTv0_n44_N8S3461C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C19__8S3461C258S3461C23__7S3461C1[] = {
  ABISELECT(24,16),
  ABISELECT(168,112),
  ABISELECT(-80,-52),
  ABISELECT(-96,-60),
  ABISELECT(-104,-68),
  ABISELECT(-16,-12),
  ABISELECT(-56,-36),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  ABISELECT(-104,-68),
  ABISELECT(168,112),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C25D1Ev,_ZTv0_n44_N8S3461C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C25D0Ev,_ZTv0_n44_N8S3461C25D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C258S3461C23__7S3461C1[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(224,148),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__A1__8S3461C258S3461C23__7S3461C1[] = {
  0,
  ABISELECT(184,124),
  0,
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(184,124),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C25D1Ev,_ZTv0_n24_N8S3461C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C25D0Ev,_ZTv0_n24_N8S3461C25D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C25D1Ev,_ZTvn16_n44_N8S3461C25D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C25D0Ev,_ZTvn16_n44_N8S3461C25D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__8S3461C258S3461C23__7S3461C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-104,-68),
  ABISELECT(-120,-76),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C25D1Ev,_ZTvn16_n44_N8S3461C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C25D0Ev,_ZTvn16_n44_N8S3461C25D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C258S3461C23__7S3461C1[] = {
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(264,172),
  (VTBL_ENTRY)&(_ZTI8S3461C25[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C13__A2__8S3461C23__7S3461C1[] = {
  ABISELECT(248,164),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(248,164),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev)();
extern void ABISELECT(_ZThn88_N8S3461C23D1Ev,_ZThn48_N8S3461C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev)();
extern void ABISELECT(_ZThn88_N8S3461C23D0Ev,_ZThn48_N8S3461C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3461C24__8S3461C23__7S3461C1[] = {
  ABISELECT(-88,-48),
  ABISELECT(-336,-212),
  ABISELECT(-336,-212),
  ABISELECT(-360,-228),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S3461C23D1Ev,_ZTv0_n44_N8S3461C23D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S3461C23D0Ev,_ZTv0_n44_N8S3461C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C19__8S3461C23__7S3461C1[] = {
  ABISELECT(24,16),
  ABISELECT(168,112),
  ABISELECT(-80,-52),
  ABISELECT(-96,-60),
  ABISELECT(-104,-68),
  ABISELECT(-16,-12),
  ABISELECT(-56,-36),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  ABISELECT(-104,-68),
  ABISELECT(168,112),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C23D1Ev,_ZTv0_n44_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S3461C23D0Ev,_ZTv0_n44_N8S3461C23D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C23__7S3461C1[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(224,148),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__8S3461C23__7S3461C1[] = {
  0,
  ABISELECT(184,124),
  0,
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(184,124),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S3461C23D1Ev,_ZTvn16_n44_N8S3461C23D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S3461C23D0Ev,_ZTvn16_n44_N8S3461C23D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__8S3461C23__7S3461C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-104,-68),
  ABISELECT(-120,-76),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C23D1Ev,_ZTvn16_n44_N8S3461C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S3461C23D0Ev,_ZTvn16_n44_N8S3461C23D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C23__7S3461C1[] = {
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(264,172),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__8S3461C23__7S3461C1[] = {
  ABISELECT(-640,-412),
  ABISELECT(-640,-412),
  ABISELECT(-400,-260),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__A2__8S3461C23__7S3461C1[] = {
  0,
  ABISELECT(240,152),
  ABISELECT(512,332),
  (VTBL_ENTRY)&(_ZTI8S3461C23[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C24D1Ev();
extern void _ZN8S3461C24D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C24__7S3461C1[] = {
  ABISELECT(-336,-212),
  ABISELECT(-336,-212),
  ABISELECT(-360,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C24[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C24D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C24D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C24__A4__7S3461C1[] = {
  ABISELECT(-336,-212),
  ABISELECT(-336,-212),
  ABISELECT(-360,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C138S3461C24__A4__7S3461C1[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(336,212),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C24__7S3461C1[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(336,212),
  (VTBL_ENTRY)&(_ZTI8S3461C24[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C14__A3__7S3461C1[] = {
  ABISELECT(-640,-412),
  ABISELECT(-640,-412),
  ABISELECT(-400,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C8__8S3461C14__A3__7S3461C1[] = {
  0,
  ABISELECT(240,152),
  ABISELECT(640,412),
  (VTBL_ENTRY)&(_ZTI8S3461C14[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C26D1Ev();
extern void _ZN8S3461C26D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C26__7S3461C1[] = {
  ABISELECT(-392,-252),
  ABISELECT(-408,-260),
  ABISELECT(-416,-268),
  ABISELECT(-328,-212),
  ABISELECT(-368,-236),
  ABISELECT(-392,-252),
  ABISELECT(-392,-252),
  ABISELECT(-416,-268),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C26D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C26D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C19D1Ev();
extern void _ZN8S3461C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C198S3461C26__A2__7S3461C1[] = {
  ABISELECT(-392,-252),
  ABISELECT(-408,-260),
  ABISELECT(-416,-268),
  ABISELECT(-328,-212),
  ABISELECT(-368,-236),
  ABISELECT(-392,-252),
  ABISELECT(-392,-252),
  ABISELECT(-416,-268),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C19D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C19D0Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C13D1Ev();
extern void _ZN8S3461C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C138S3461C198S3461C26__A6__7S3461C1[] = {
  ABISELECT(-392,-252),
  ABISELECT(-392,-252),
  ABISELECT(-416,-268),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C13D0Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C138S3461C198S3461C26__A6__7S3461C1[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(392,252),
  (VTBL_ENTRY)&(_ZTI8S3461C13[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C4D1Ev();
extern void _ZN7S3461C4D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C198S3461C26__A3__7S3461C1[] = {
  ABISELECT(-416,-268),
  ABISELECT(-416,-268),
  ABISELECT(-432,-276),
  ABISELECT(-440,-284),
  ABISELECT(-440,-284),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C67S3461C48S3461C198S3461C26__A9__7S3461C1[] = {
  ABISELECT(-440,-284),
  ABISELECT(-440,-284),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C67S3461C48S3461C198S3461C26__A10__7S3461C1[] = {
  ABISELECT(-440,-284),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C67S3461C48S3461C198S3461C26__A18__7S3461C1[] = {
  ABISELECT(-440,-284),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__7S3461C48S3461C198S3461C26__A3__7S3461C1[] = {
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(432,276),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C13__7S3461C48S3461C198S3461C26__A3__7S3461C1[] = {
  ABISELECT(416,268),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(416,268),
  (VTBL_ENTRY)&(_ZTI7S3461C4[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev),
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C198S3461C26__A2__7S3461C1[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(368,236),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C13__A1__8S3461C198S3461C26__A2__7S3461C1[] = {
  ABISELECT(392,252),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(392,252),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__8S3461C198S3461C26__A2__7S3461C1[] = {
  0,
  ABISELECT(328,212),
  0,
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(328,212),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn24_N8S3461C19D1Ev,_ZThn16_N8S3461C19D1Ev)();
extern void ABISELECT(_ZThn24_N8S3461C19D0Ev,_ZThn16_N8S3461C19D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C4__8S3461C198S3461C26__A2__7S3461C1[] = {
  ABISELECT(-416,-268),
  ABISELECT(-416,-268),
  ABISELECT(-432,-276),
  ABISELECT(-440,-284),
  ABISELECT(-440,-284),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C19D1Ev,_ZThn16_N8S3461C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C19D0Ev,_ZThn16_N8S3461C19D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C198S3461C26__A2__7S3461C1[] = {
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(408,260),
  (VTBL_ENTRY)&(_ZTI8S3461C19[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C18D1Ev();
extern void _ZN8S3461C18D0Ev();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C188S3461C26__A3__7S3461C1[] = {
  ABISELECT(-440,-288),
  ABISELECT(-464,-304),
  ABISELECT(-464,-304),
  0,
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3461C18D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN7S3461C6D1Ev();
extern void _ZN7S3461C6D0Ev();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C68S3461C188S3461C26__A10__7S3461C1[] = {
  ABISELECT(-464,-304),
  ABISELECT(-464,-304),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C6[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D1Ev,
  (VTBL_ENTRY)&_ZN7S3461C6D0Ev,
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C87S3461C68S3461C188S3461C26__A11__7S3461C1[] = {
  ABISELECT(-464,-304),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C8[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C97S3461C87S3461C68S3461C188S3461C26__A19__7S3461C1[] = {
  ABISELECT(-464,-304),
  0,
  (VTBL_ENTRY)&(_ZTI7S3461C9[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C9__8S3461C188S3461C26__A3__7S3461C1[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(440,288),
  (VTBL_ENTRY)&(_ZTI8S3461C18[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C26D1Ev,_ZTv0_n24_N8S3461C26D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C26D0Ev,_ZTv0_n24_N8S3461C26D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C6__8S3461C26__7S3461C1[] = {
  0,
  ABISELECT(328,212),
  0,
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(328,212),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C26D1Ev,_ZTv0_n24_N8S3461C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C26D0Ev,_ZTv0_n24_N8S3461C26D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C12__8S3461C26__7S3461C1[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(368,236),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S3461C26D1Ev,_ZTv0_n24_N8S3461C26D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3461C26D0Ev,_ZTv0_n24_N8S3461C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3461C13__A1__8S3461C26__7S3461C1[] = {
  ABISELECT(392,252),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(392,252),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C26D1Ev,_ZTv0_n24_N8S3461C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3461C26D0Ev,_ZTv0_n24_N8S3461C26D0Ev),
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn24_N8S3461C26D1Ev,_ZThn16_N8S3461C26D1Ev)();
extern void ABISELECT(_ZThn24_N8S3461C26D0Ev,_ZThn16_N8S3461C26D0Ev)();
extern void _ZN7S3461C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3461C48S3461C19__8S3461C26__7S3461C1[] = {
  ABISELECT(-416,-268),
  ABISELECT(-416,-268),
  ABISELECT(-432,-276),
  ABISELECT(-440,-284),
  ABISELECT(-440,-284),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C26D1Ev,_ZThn16_N8S3461C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S3461C26D0Ev,_ZThn16_N8S3461C26D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void _ZN8S3461C112v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C11__8S3461C26__7S3461C1[] = {
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(408,260),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&_ZN8S3461C112v3Ev,
};
extern void _ZN7S3461C92v1Ev();
extern void ABISELECT(_ZThn48_N8S3461C26D1Ev,_ZThn36_N8S3461C26D1Ev)();
extern void ABISELECT(_ZThn48_N8S3461C26D0Ev,_ZThn36_N8S3461C26D0Ev)();
extern void _ZN7S3461C62v2Ev();
extern void _ZN8S3461C182v5Ev();
static  VTBL_ENTRY _tg__ZTV8S3461C18__8S3461C26__7S3461C1[] = {
  ABISELECT(-440,-288),
  ABISELECT(-464,-304),
  ABISELECT(-464,-304),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S3461C26[0]),
  (VTBL_ENTRY)&_ZN7S3461C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S3461C26D1Ev,_ZThn36_N8S3461C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S3461C26D0Ev,_ZThn36_N8S3461C26D0Ev),
  (VTBL_ENTRY)&_ZN7S3461C62v2Ev,
  (VTBL_ENTRY)&_ZN8S3461C182v5Ev,
};
static  VTT_ENTRY vtt_S3461C1[] = {
  {&(_ZTV7S3461C1[19]),  19,365},
  {&(_tg__ZTV7S3461C2__7S3461C1[11]),  11,15},
  {&(_tg__ZTV7S3461C37S3461C2__7S3461C1[9]),  9,13},
  {&(_tg__ZTV7S3461C67S3461C37S3461C2__A1__7S3461C1[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C67S3461C37S3461C2__A1__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C67S3461C37S3461C2__A3__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C147S3461C37S3461C2__7S3461C1[5]),  5,6},
  {&(_tg__ZTV8S3461C147S3461C37S3461C2__7S3461C1[5]),  5,6},
  {&(_tg__ZTV7S3461C4__7S3461C37S3461C2__7S3461C1[10]),  10,14},
  {&(_tg__ZTV8S3461C11__7S3461C37S3461C2__7S3461C1[6]),  6,8},
  {&(_tg__ZTV8S3461C13__7S3461C37S3461C2__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C13__7S3461C37S3461C2__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C14__7S3461C37S3461C2__7S3461C1[5]),  5,6},
  {&(_tg__ZTV8S3461C14__7S3461C37S3461C2__7S3461C1[5]),  5,6},
  {&(_tg__ZTV8S3461C147S3461C2__A1__7S3461C1[5]),  5,6},
  {&(_tg__ZTV7S3461C8__8S3461C147S3461C2__A1__7S3461C1[4]),  4,5},
  {&(_tg__ZTV8S3461C157S3461C2__7S3461C1[7]),  7,11},
  {&(_tg__ZTV8S3461C168S3461C157S3461C2__7S3461C1[5]),  5,9},
  {&(_tg__ZTV8S3461C118S3461C168S3461C157S3461C2__A1__7S3461C1[4]),  4,6},
  {&(_tg__ZTV8S3461C128S3461C118S3461C168S3461C157S3461C2__A2__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C118S3461C168S3461C157S3461C2__A6__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C118S3461C168S3461C157S3461C2__A1__7S3461C1[4]),  4,5},
  {&(_tg__ZTV7S3461C98S3461C168S3461C157S3461C2__A7__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C128S3461C168S3461C157S3461C2__A3__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C168S3461C157S3461C2__A8__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C168S3461C157S3461C2__7S3461C1[4]),  4,5},
  {&(_tg__ZTV7S3461C9__A__8S3461C168S3461C157S3461C2__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C17__8S3461C168S3461C157S3461C2__7S3461C1[7]),  7,11},
  {&(_tg__ZTV8S3461C12__A1__8S3461C168S3461C157S3461C2__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C148S3461C157S3461C2__A2__7S3461C1[5]),  5,6},
  {&(_tg__ZTV7S3461C8__8S3461C148S3461C157S3461C2__A2__7S3461C1[4]),  4,5},
  {&(_tg__ZTV8S3461C188S3461C157S3461C2__7S3461C1[5]),  5,10},
  {&(_tg__ZTV7S3461C68S3461C188S3461C157S3461C2__A2__7S3461C1[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C68S3461C188S3461C157S3461C2__A3__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C68S3461C188S3461C157S3461C2__A9__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C9__8S3461C188S3461C157S3461C2__7S3461C1[4]),  4,5},
  {&(_tg__ZTV7S3461C68S3461C157S3461C2__A3__7S3461C1[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C68S3461C157S3461C2__A4__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C68S3461C157S3461C2__A10__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C157S3461C2__7S3461C1[4]),  4,5},
  {&(_tg__ZTV7S3461C98S3461C16__A2__8S3461C157S3461C2__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C17__8S3461C157S3461C2__7S3461C1[7]),  7,11},
  {&(_tg__ZTV8S3461C128S3461C16__A1__8S3461C157S3461C2__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C14__8S3461C157S3461C2__7S3461C1[5]),  5,6},
  {&(_tg__ZTV7S3461C8__8S3461C157S3461C2__7S3461C1[4]),  4,5},
  {&(_tg__ZTV8S3461C18__8S3461C157S3461C2__7S3461C1[5]),  5,10},
  {&(_tg__ZTV7S3461C6__A1__8S3461C157S3461C2__7S3461C1[4]),  4,8},
  {&(_tg__ZTV7S3461C4__7S3461C2__7S3461C1[10]),  10,14},
  {&(_tg__ZTV8S3461C11__7S3461C2__7S3461C1[6]),  6,8},
  {&(_tg__ZTV8S3461C13__7S3461C2__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C13__7S3461C2__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C147S3461C3__7S3461C2__7S3461C1[5]),  5,6},
  {&(_tg__ZTV8S3461C147S3461C3__7S3461C2__7S3461C1[5]),  5,6},
  {&(_tg__ZTV8S3461C12__A1__7S3461C2__7S3461C1[4]),  4,5},
  {&(_tg__ZTV8S3461C14__A1__7S3461C2__7S3461C1[5]),  5,6},
  {&(_tg__ZTV8S3461C15__7S3461C2__7S3461C1[7]),  7,11},
  {&(_tg__ZTV7S3461C98S3461C168S3461C15__A7__7S3461C2__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C17__7S3461C2__7S3461C1[7]),  7,11},
  {&(_tg__ZTV8S3461C128S3461C168S3461C15__A3__7S3461C2__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C148S3461C15__A2__7S3461C2__7S3461C1[5]),  5,6},
  {&(_tg__ZTV8S3461C188S3461C15__7S3461C2__7S3461C1[5]),  5,10},
  {&(_tg__ZTV7S3461C68S3461C15__A3__7S3461C2__7S3461C1[4]),  4,8},
  {&(_tg__ZTV8S3461C19__A__7S3461C1[10]),  10,13},
  {&(_tg__ZTV8S3461C138S3461C19__A2__7S3461C1[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C138S3461C19__A2__7S3461C1[4]),  4,5},
  {&(_tg__ZTV7S3461C48S3461C19__A1__7S3461C1[7]),  7,11},
  {&(_tg__ZTV7S3461C67S3461C48S3461C19__A5__7S3461C1[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C67S3461C48S3461C19__A6__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C67S3461C48S3461C19__A12__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C11__7S3461C48S3461C19__A1__7S3461C1[6]),  6,8},
  {&(_tg__ZTV8S3461C13__7S3461C48S3461C19__A1__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C13__7S3461C48S3461C19__A1__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C12__8S3461C19__A__7S3461C1[4]),  4,5},
  {&(_tg__ZTV8S3461C13__A1__8S3461C19__A__7S3461C1[6]),  6,9},
  {&(_tg__ZTV7S3461C6__8S3461C19__A__7S3461C1[7]),  7,11},
  {&(_tg__ZTV7S3461C4__8S3461C19__A__7S3461C1[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C19__A__7S3461C1[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A1__8S3461C19__A__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C20__7S3461C1[19]),  19,22},
  {&(_tg__ZTV8S3461C148S3461C20__A4__7S3461C1[5]),  5,6},
  {&(_tg__ZTV7S3461C8__8S3461C148S3461C20__A4__7S3461C1[4]),  4,5},
  {&(_tg__ZTV8S3461C12__8S3461C20__7S3461C1[4]),  4,5},
  {&(_tg__ZTV8S3461C19__8S3461C20__7S3461C1[12]),  12,15},
  {&(_tg__ZTV8S3461C13__A1__8S3461C20__7S3461C1[6]),  6,9},
  {&(_tg__ZTV7S3461C6__8S3461C20__7S3461C1[7]),  7,11},
  {&(_tg__ZTV7S3461C48S3461C19__8S3461C20__7S3461C1[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C20__7S3461C1[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A1__8S3461C20__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C21__8S3461C20__7S3461C1[21]),  21,25},
  {&(_tg__ZTV8S3461C228S3461C21__8S3461C20__7S3461C1[16]),  16,20},
  {&(_tg__ZTV8S3461C18__8S3461C20__7S3461C1[9]),  9,14},
  {&(_tg__ZTV8S3461C23__8S3461C20__7S3461C1[17]),  17,22},
  {&(_tg__ZTV8S3461C24__8S3461C20__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C14__8S3461C20__7S3461C1[5]),  5,6},
  {&(_tg__ZTV7S3461C8__A3__8S3461C20__7S3461C1[4]),  4,5},
  {&(_tg__ZTV8S3461C128S3461C228S3461C21__A3__8S3461C20__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C26__8S3461C20__7S3461C1[13]),  13,16},
  {&(_tg__ZTV7S3461C48S3461C198S3461C26__A1__8S3461C20__7S3461C1[7]),  7,11},
  {&(_tg__ZTV8S3461C188S3461C26__A2__8S3461C20__7S3461C1[5]),  5,10},
  {&(_tg__ZTV8S3461C278S3461C21__8S3461C20__7S3461C1[8]),  8,12},
  {&(_tg__ZTV7S3461C98S3461C168S3461C278S3461C21__A13__8S3461C20__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C17__8S3461C20__7S3461C1[7]),  7,11},
  {&(_tg__ZTV8S3461C128S3461C168S3461C278S3461C21__A5__8S3461C20__7S3461C1[3]),  3,4},
  {&(_ZTV7S3461C1[134]),  134,365},
  {&(_ZTV7S3461C1[144]),  144,365},
  {&(_ZTV7S3461C1[152]),  152,365},
  {&(_ZTV7S3461C1[152]),  152,365},
  {&(_ZTV7S3461C1[28]),  28,365},
  {&(_ZTV7S3461C1[28]),  28,365},
  {&(_ZTV7S3461C1[159]),  159,365},
  {&(_ZTV7S3461C1[34]),  34,365},
  {&(_ZTV7S3461C1[42]),  42,365},
  {&(_ZTV7S3461C1[49]),  49,365},
  {&(_ZTV7S3461C1[167]),  167,365},
  {&(_ZTV7S3461C1[53]),  53,365},
  {&(_ZTV7S3461C1[59]),  59,365},
  {&(_ZTV7S3461C1[65]),  65,365},
  {&(_ZTV7S3461C1[74]),  74,365},
  {&(_ZTV7S3461C1[88]),  88,365},
  {&(_ZTV7S3461C1[178]),  178,365},
  {&(_ZTV7S3461C1[98]),  98,365},
  {&(_ZTV7S3461C1[121]),  121,365},
  {&(_ZTV7S3461C1[194]),  194,365},
  {&(_ZTV7S3461C1[204]),  204,365},
  {&(_ZTV7S3461C1[229]),  229,365},
  {&(_ZTV7S3461C1[249]),  249,365},
  {&(_ZTV7S3461C1[286]),  286,365},
  {&(_ZTV7S3461C1[308]),  308,365},
  {&(_ZTV7S3461C1[319]),  319,365},
  {&(_ZTV7S3461C1[327]),  327,365},
  {&(_ZTV7S3461C1[256]),  256,365},
  {&(_ZTV7S3461C1[341]),  341,365},
  {&(_ZTV7S3461C1[351]),  351,365},
  {&(_ZTV7S3461C1[360]),  360,365},
  {&(_ZTV7S3461C1[265]),  265,365},
  {&(_ZTV7S3461C1[272]),  272,365},
  {&(_ZTV7S3461C1[276]),  276,365},
  {&(_tg__ZTV7S3461C4__7S3461C1[7]),  7,11},
  {&(_tg__ZTV7S3461C67S3461C4__7S3461C1[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C67S3461C4__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C67S3461C4__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C11__7S3461C4__7S3461C1[6]),  6,8},
  {&(_tg__ZTV8S3461C13__7S3461C4__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C13__7S3461C4__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C11__7S3461C1[4]),  4,6},
  {&(_tg__ZTV8S3461C128S3461C11__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C11__A1__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C11__7S3461C1[4]),  4,5},
  {&(_tg__ZTV7S3461C9__A2__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C13__7S3461C1[5]),  5,8},
  {&(_tg__ZTV8S3461C13__7S3461C1[5]),  5,8},
  {&(_tg__ZTV7S3461C8__A2__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C8__A4__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C12__A1__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C12__A5__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C17__7S3461C1[5]),  5,9},
  {&(_tg__ZTV8S3461C138S3461C17__A1__7S3461C1[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C138S3461C17__A1__7S3461C1[4]),  4,5},
  {&(_tg__ZTV7S3461C9__8S3461C17__7S3461C1[4]),  4,5},
  {&(_tg__ZTV7S3461C6__A4__7S3461C1[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C6__A5__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C6__A11__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C19__A1__7S3461C1[10]),  10,13},
  {&(_tg__ZTV8S3461C138S3461C19__A3__7S3461C1[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C138S3461C19__A3__7S3461C1[4]),  4,5},
  {&(_tg__ZTV7S3461C48S3461C19__A2__7S3461C1[7]),  7,11},
  {&(_tg__ZTV7S3461C67S3461C48S3461C19__A6__7S3461C1[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C67S3461C48S3461C19__A7__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C67S3461C48S3461C19__A13__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C11__7S3461C48S3461C19__A2__7S3461C1[6]),  6,8},
  {&(_tg__ZTV8S3461C13__7S3461C48S3461C19__A2__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C13__7S3461C48S3461C19__A2__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C12__8S3461C19__A1__7S3461C1[4]),  4,5},
  {&(_tg__ZTV8S3461C13__A1__8S3461C19__A1__7S3461C1[6]),  6,9},
  {&(_tg__ZTV7S3461C6__8S3461C19__A1__7S3461C1[7]),  7,11},
  {&(_tg__ZTV7S3461C4__8S3461C19__A1__7S3461C1[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C19__A1__7S3461C1[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A1__8S3461C19__A1__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C21__7S3461C1[17]),  17,21},
  {&(_tg__ZTV8S3461C118S3461C21__A2__7S3461C1[4]),  4,6},
  {&(_tg__ZTV8S3461C128S3461C118S3461C21__A4__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C118S3461C21__A14__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C118S3461C21__A2__7S3461C1[4]),  4,5},
  {&(_tg__ZTV8S3461C228S3461C21__7S3461C1[16]),  16,20},
  {&(_tg__ZTV8S3461C138S3461C228S3461C21__A5__7S3461C1[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C138S3461C228S3461C21__A5__7S3461C1[4]),  4,5},
  {&(_tg__ZTV8S3461C128S3461C228S3461C21__A5__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C228S3461C21__A17__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C18__8S3461C228S3461C21__7S3461C1[9]),  9,14},
  {&(_tg__ZTV8S3461C13__A2__8S3461C228S3461C21__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C23__8S3461C228S3461C21__7S3461C1[17]),  17,22},
  {&(_tg__ZTV8S3461C24__8S3461C228S3461C21__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C19__8S3461C228S3461C21__7S3461C1[12]),  12,15},
  {&(_tg__ZTV8S3461C12__8S3461C228S3461C21__7S3461C1[4]),  4,5},
  {&(_tg__ZTV7S3461C6__A1__8S3461C228S3461C21__7S3461C1[7]),  7,11},
  {&(_tg__ZTV7S3461C48S3461C19__8S3461C228S3461C21__7S3461C1[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C228S3461C21__7S3461C1[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A2__8S3461C228S3461C21__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C14__8S3461C228S3461C21__7S3461C1[5]),  5,6},
  {&(_tg__ZTV7S3461C8__A3__8S3461C228S3461C21__7S3461C1[4]),  4,5},
  {&(_tg__ZTV8S3461C12__A__8S3461C228S3461C21__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C278S3461C21__7S3461C1[8]),  8,12},
  {&(_tg__ZTV8S3461C168S3461C278S3461C21__A1__7S3461C1[5]),  5,9},
  {&(_tg__ZTV8S3461C118S3461C168S3461C278S3461C21__A3__7S3461C1[4]),  4,6},
  {&(_tg__ZTV8S3461C128S3461C118S3461C168S3461C278S3461C21__A6__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C118S3461C168S3461C278S3461C21__A20__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C118S3461C168S3461C278S3461C21__A3__7S3461C1[4]),  4,5},
  {&(_tg__ZTV7S3461C98S3461C168S3461C278S3461C21__A21__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C128S3461C168S3461C278S3461C21__A7__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C98S3461C128S3461C168S3461C278S3461C21__A22__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C168S3461C278S3461C21__A1__7S3461C1[4]),  4,5},
  {&(_tg__ZTV7S3461C9__A__8S3461C168S3461C278S3461C21__A1__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C17__8S3461C168S3461C278S3461C21__A1__7S3461C1[7]),  7,11},
  {&(_tg__ZTV8S3461C12__A1__8S3461C168S3461C278S3461C21__A1__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C9__A1__8S3461C278S3461C21__7S3461C1[4]),  4,5},
  {&(_tg__ZTV7S3461C98S3461C16__A2__8S3461C278S3461C21__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C17__8S3461C278S3461C21__7S3461C1[7]),  7,11},
  {&(_tg__ZTV8S3461C128S3461C16__A1__8S3461C278S3461C21__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C14__8S3461C278S3461C21__7S3461C1[5]),  5,6},
  {&(_tg__ZTV7S3461C8__8S3461C278S3461C21__7S3461C1[4]),  4,5},
  {&(_tg__ZTV8S3461C13__A2__8S3461C21__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C22__8S3461C21__7S3461C1[16]),  16,20},
  {&(_tg__ZTV8S3461C18__8S3461C21__7S3461C1[9]),  9,14},
  {&(_tg__ZTV8S3461C23__8S3461C21__7S3461C1[17]),  17,22},
  {&(_tg__ZTV8S3461C24__8S3461C21__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C19__8S3461C21__7S3461C1[12]),  12,15},
  {&(_tg__ZTV8S3461C12__A1__8S3461C21__7S3461C1[4]),  4,5},
  {&(_tg__ZTV7S3461C6__A1__8S3461C21__7S3461C1[7]),  7,11},
  {&(_tg__ZTV7S3461C48S3461C19__8S3461C21__7S3461C1[7]),  7,11},
  {&(_tg__ZTV8S3461C11__A1__8S3461C21__7S3461C1[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A2__8S3461C21__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C14__8S3461C21__7S3461C1[5]),  5,6},
  {&(_tg__ZTV7S3461C8__A3__8S3461C21__7S3461C1[4]),  4,5},
  {&(_tg__ZTV8S3461C128S3461C22__A3__8S3461C21__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C26__8S3461C21__7S3461C1[13]),  13,16},
  {&(_tg__ZTV7S3461C48S3461C198S3461C26__A1__8S3461C21__7S3461C1[7]),  7,11},
  {&(_tg__ZTV8S3461C188S3461C26__A2__8S3461C21__7S3461C1[5]),  5,10},
  {&(_tg__ZTV8S3461C27__8S3461C21__7S3461C1[8]),  8,12},
  {&(_tg__ZTV7S3461C98S3461C168S3461C27__A13__8S3461C21__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C17__8S3461C21__7S3461C1[7]),  7,11},
  {&(_tg__ZTV8S3461C128S3461C168S3461C27__A5__8S3461C21__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C18__A1__7S3461C1[5]),  5,10},
  {&(_tg__ZTV7S3461C68S3461C18__A7__7S3461C1[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C68S3461C18__A8__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C68S3461C18__A15__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C9__8S3461C18__A1__7S3461C1[4]),  4,5},
  {&(_tg__ZTV8S3461C23__7S3461C1[13]),  13,18},
  {&(_tg__ZTV8S3461C258S3461C23__7S3461C1[12]),  12,17},
  {&(_tg__ZTV8S3461C188S3461C258S3461C23__A2__7S3461C1[5]),  5,10},
  {&(_tg__ZTV7S3461C68S3461C188S3461C258S3461C23__A8__7S3461C1[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C68S3461C188S3461C258S3461C23__A9__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C68S3461C188S3461C258S3461C23__A16__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C9__8S3461C188S3461C258S3461C23__A2__7S3461C1[4]),  4,5},
  {&(_tg__ZTV8S3461C14__8S3461C258S3461C23__7S3461C1[5]),  5,6},
  {&(_tg__ZTV7S3461C8__8S3461C258S3461C23__7S3461C1[4]),  4,5},
  {&(_tg__ZTV8S3461C13__8S3461C258S3461C23__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C13__8S3461C258S3461C23__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C19__8S3461C258S3461C23__7S3461C1[12]),  12,15},
  {&(_tg__ZTV8S3461C12__8S3461C258S3461C23__7S3461C1[4]),  4,5},
  {&(_tg__ZTV7S3461C6__A1__8S3461C258S3461C23__7S3461C1[7]),  7,11},
  {&(_tg__ZTV7S3461C48S3461C19__8S3461C258S3461C23__7S3461C1[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C258S3461C23__7S3461C1[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A2__8S3461C23__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C24__8S3461C23__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C19__8S3461C23__7S3461C1[12]),  12,15},
  {&(_tg__ZTV8S3461C12__8S3461C23__7S3461C1[4]),  4,5},
  {&(_tg__ZTV7S3461C6__8S3461C23__7S3461C1[7]),  7,11},
  {&(_tg__ZTV7S3461C48S3461C19__8S3461C23__7S3461C1[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C23__7S3461C1[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A2__8S3461C23__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C14__8S3461C23__7S3461C1[5]),  5,6},
  {&(_tg__ZTV7S3461C8__A2__8S3461C23__7S3461C1[4]),  4,5},
  {&(_tg__ZTV8S3461C24__7S3461C1[5]),  5,8},
  {&(_tg__ZTV8S3461C138S3461C24__A4__7S3461C1[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C138S3461C24__A4__7S3461C1[4]),  4,5},
  {&(_tg__ZTV7S3461C9__8S3461C24__7S3461C1[4]),  4,5},
  {&(_tg__ZTV8S3461C14__A3__7S3461C1[5]),  5,6},
  {&(_tg__ZTV7S3461C8__8S3461C14__A3__7S3461C1[4]),  4,5},
  {&(_tg__ZTV8S3461C26__7S3461C1[10]),  10,13},
  {&(_tg__ZTV8S3461C198S3461C26__A2__7S3461C1[10]),  10,13},
  {&(_tg__ZTV8S3461C138S3461C198S3461C26__A6__7S3461C1[5]),  5,8},
  {&(_tg__ZTV7S3461C9__8S3461C138S3461C198S3461C26__A6__7S3461C1[4]),  4,5},
  {&(_tg__ZTV7S3461C48S3461C198S3461C26__A3__7S3461C1[7]),  7,11},
  {&(_tg__ZTV7S3461C67S3461C48S3461C198S3461C26__A9__7S3461C1[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C67S3461C48S3461C198S3461C26__A10__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C67S3461C48S3461C198S3461C26__A18__7S3461C1[3]),  3,4},
  {&(_tg__ZTV8S3461C11__7S3461C48S3461C198S3461C26__A3__7S3461C1[6]),  6,8},
  {&(_tg__ZTV8S3461C13__7S3461C48S3461C198S3461C26__A3__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C13__7S3461C48S3461C198S3461C26__A3__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C12__8S3461C198S3461C26__A2__7S3461C1[4]),  4,5},
  {&(_tg__ZTV8S3461C13__A1__8S3461C198S3461C26__A2__7S3461C1[6]),  6,9},
  {&(_tg__ZTV7S3461C6__8S3461C198S3461C26__A2__7S3461C1[7]),  7,11},
  {&(_tg__ZTV7S3461C4__8S3461C198S3461C26__A2__7S3461C1[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C198S3461C26__A2__7S3461C1[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A1__8S3461C198S3461C26__A2__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C188S3461C26__A3__7S3461C1[5]),  5,10},
  {&(_tg__ZTV7S3461C68S3461C188S3461C26__A10__7S3461C1[4]),  4,8},
  {&(_tg__ZTV7S3461C87S3461C68S3461C188S3461C26__A11__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C97S3461C87S3461C68S3461C188S3461C26__A19__7S3461C1[3]),  3,4},
  {&(_tg__ZTV7S3461C9__8S3461C188S3461C26__A3__7S3461C1[4]),  4,5},
  {&(_tg__ZTV7S3461C6__8S3461C26__7S3461C1[7]),  7,11},
  {&(_tg__ZTV8S3461C12__8S3461C26__7S3461C1[4]),  4,5},
  {&(_tg__ZTV8S3461C13__A1__8S3461C26__7S3461C1[6]),  6,9},
  {&(_tg__ZTV7S3461C48S3461C19__8S3461C26__7S3461C1[7]),  7,11},
  {&(_tg__ZTV8S3461C11__8S3461C26__7S3461C1[6]),  6,8},
  {&(_tg__ZTV8S3461C13__A1__8S3461C26__7S3461C1[6]),  6,9},
  {&(_tg__ZTV8S3461C18__8S3461C26__7S3461C1[5]),  5,10},
};
extern VTBL_ENTRY _ZTI7S3461C1[];
extern  VTBL_ENTRY _ZTV7S3461C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3461C1[];
static VTBL_ENTRY alt_thunk_names14[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C23D0Ev,_ZTv0_n24_N8S3461C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S3461C23D0Ev,_ZThn48_N8S3461C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C23D1Ev,_ZTv0_n24_N8S3461C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S3461C23D1Ev,_ZThn48_N8S3461C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C21D0Ev,_ZTv0_n44_N8S3461C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S3461C21D0Ev,_ZThn164_N8S3461C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C21D1Ev,_ZTv0_n44_N8S3461C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S3461C21D1Ev,_ZThn164_N8S3461C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C21D0Ev,_ZTv0_n24_N8S3461C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3461C21D0Ev,_ZThn124_N8S3461C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C21D1Ev,_ZTv0_n24_N8S3461C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3461C21D1Ev,_ZThn124_N8S3461C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S3461C21D0Ev,_ZTv0_n60_N8S3461C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S3461C21D0Ev,_ZThn76_N8S3461C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S3461C21D1Ev,_ZTv0_n60_N8S3461C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S3461C21D1Ev,_ZThn76_N8S3461C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3461C21D0Ev,_ZTv0_n28_N8S3461C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S3461C21D0Ev,_ZThn64_N8S3461C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3461C21D1Ev,_ZTv0_n28_N8S3461C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S3461C21D1Ev,_ZThn64_N8S3461C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C22D0Ev,_ZTv0_n24_N8S3461C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3461C22D0Ev,_ZThn116_N8S3461C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C22D1Ev,_ZTv0_n24_N8S3461C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3461C22D1Ev,_ZThn116_N8S3461C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S3461C22D0Ev,_ZTv0_n60_N8S3461C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S3461C22D0Ev,_ZThn68_N8S3461C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S3461C22D1Ev,_ZTv0_n60_N8S3461C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S3461C22D1Ev,_ZThn68_N8S3461C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3461C22D0Ev,_ZTv0_n28_N8S3461C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S3461C22D0Ev,_ZThn56_N8S3461C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3461C22D1Ev,_ZTv0_n28_N8S3461C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S3461C22D1Ev,_ZThn56_N8S3461C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S3461C20D0Ev,_ZTv0_n60_N8S3461C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S3461C20D0Ev,_ZThn208_N8S3461C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S3461C20D1Ev,_ZTv0_n60_N8S3461C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S3461C20D1Ev,_ZThn208_N8S3461C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3461C20D0Ev,_ZTv0_n28_N8S3461C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S3461C20D0Ev,_ZThn196_N8S3461C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3461C20D1Ev,_ZTv0_n28_N8S3461C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S3461C20D1Ev,_ZThn196_N8S3461C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n160_N8S3461C20D0Ev,_ZTv0_n80_N8S3461C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3461C20D0Ev,_ZThn132_N8S3461C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n160_N8S3461C20D1Ev,_ZTv0_n80_N8S3461C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3461C20D1Ev,_ZThn132_N8S3461C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C20D0Ev,_ZTv0_n24_N8S3461C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S3461C20D0Ev,_ZThn68_N8S3461C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S3461C20D0Ev,_ZThn256_N8S3461C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3461C20D0Ev,_ZThn84_N8S3461C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3461C20D0Ev,_ZThn44_N8S3461C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C20D1Ev,_ZTv0_n24_N8S3461C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S3461C20D1Ev,_ZThn68_N8S3461C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S3461C20D1Ev,_ZThn256_N8S3461C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3461C20D1Ev,_ZThn84_N8S3461C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3461C20D1Ev,_ZThn44_N8S3461C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C20D0Ev,_ZTv0_n44_N8S3461C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S3461C20D0Ev,_ZThn296_N8S3461C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S3461C20D0Ev,_ZThn96_N8S3461C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S3461C20D1Ev,_ZTv0_n44_N8S3461C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S3461C20D1Ev,_ZThn296_N8S3461C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S3461C20D1Ev,_ZThn96_N8S3461C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C19D0Ev,_ZTv0_n24_N8S3461C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S3461C19D0Ev,_ZThn120_N8S3461C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S3461C19D0Ev,_ZThn80_N8S3461C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C19D1Ev,_ZTv0_n24_N8S3461C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S3461C19D1Ev,_ZThn120_N8S3461C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S3461C19D1Ev,_ZThn80_N8S3461C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C4D0Ev,_ZTv0_n24_N7S3461C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3461C4D0Ev,_ZThn36_N7S3461C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S3461C4D0Ev,_ZThn64_N7S3461C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C4D1Ev,_ZTv0_n24_N7S3461C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3461C4D1Ev,_ZThn36_N7S3461C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S3461C4D1Ev,_ZThn64_N7S3461C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C2D0Ev,_ZTv0_n24_N7S3461C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S3461C2D0Ev,_ZThn204_N7S3461C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S3461C2D0Ev,_ZThn180_N7S3461C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C2D1Ev,_ZTv0_n24_N7S3461C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S3461C2D1Ev,_ZThn204_N7S3461C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S3461C2D1Ev,_ZThn180_N7S3461C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3461C2D0Ev,_ZTv0_n36_N7S3461C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S3461C2D0Ev,_ZThn144_N7S3461C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3461C2D1Ev,_ZTv0_n36_N7S3461C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S3461C2D1Ev,_ZThn144_N7S3461C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C15D0Ev,_ZTv0_n24_N8S3461C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S3461C15D0Ev,_ZThn164_N8S3461C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C15D1Ev,_ZTv0_n24_N8S3461C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S3461C15D1Ev,_ZThn164_N8S3461C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C16D0Ev,_ZTv0_n24_N8S3461C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S3461C16D0Ev,_ZThn164_N8S3461C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3461C16D1Ev,_ZTv0_n24_N8S3461C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S3461C16D1Ev,_ZThn164_N8S3461C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C3D0Ev,_ZTv0_n24_N7S3461C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S3461C3D0Ev,_ZThn180_N7S3461C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C3D1Ev,_ZTv0_n24_N7S3461C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S3461C3D1Ev,_ZThn180_N7S3461C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3461C3D0Ev,_ZTv0_n36_N7S3461C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S3461C3D0Ev,_ZThn144_N7S3461C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3461C3D1Ev,_ZTv0_n36_N7S3461C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S3461C3D1Ev,_ZThn144_N7S3461C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S3461C1D0Ev,_ZTv0_n60_N7S3461C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S3461C1D0Ev,_ZThn344_N7S3461C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S3461C1D1Ev,_ZTv0_n60_N7S3461C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S3461C1D1Ev,_ZThn344_N7S3461C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3461C1D0Ev,_ZTv0_n28_N7S3461C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N7S3461C1D0Ev,_ZThn332_N7S3461C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3461C1D1Ev,_ZTv0_n28_N7S3461C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N7S3461C1D1Ev,_ZThn332_N7S3461C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n160_N7S3461C1D0Ev,_ZTv0_n80_N7S3461C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S3461C1D0Ev,_ZThn268_N7S3461C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n160_N7S3461C1D1Ev,_ZTv0_n80_N7S3461C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S3461C1D1Ev,_ZThn268_N7S3461C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S3461C1D0Ev,_ZTv0_n44_N7S3461C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N7S3461C1D0Ev,_ZThn432_N7S3461C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn360_N7S3461C1D0Ev,_ZThn232_N7S3461C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S3461C1D1Ev,_ZTv0_n44_N7S3461C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N7S3461C1D1Ev,_ZThn432_N7S3461C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn360_N7S3461C1D1Ev,_ZThn232_N7S3461C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C1D0Ev,_ZTv0_n24_N7S3461C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn616_N7S3461C1D0Ev,_ZThn392_N7S3461C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S3461C1D0Ev,_ZThn220_N7S3461C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S3461C1D0Ev,_ZThn204_N7S3461C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S3461C1D0Ev,_ZThn180_N7S3461C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3461C1D1Ev,_ZTv0_n24_N7S3461C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn616_N7S3461C1D1Ev,_ZThn392_N7S3461C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S3461C1D1Ev,_ZThn220_N7S3461C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S3461C1D1Ev,_ZThn204_N7S3461C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S3461C1D1Ev,_ZThn180_N7S3461C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3461C1D0Ev,_ZTv0_n36_N7S3461C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S3461C1D0Ev,_ZThn144_N7S3461C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3461C1D1Ev,_ZTv0_n36_N7S3461C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S3461C1D1Ev,_ZThn144_N7S3461C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3461C1 = {  "S3461C1", // class name
  bases_S3461C1, 164,
  &(vtc_S3461C1[0]), // expected_vtbl_contents
  &(vtt_S3461C1[0]), // expected_vtt_contents
  ABISELECT(752,484), // object size
  NSPAIRA(_ZTI7S3461C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3461C1),365, //virtual function table var
  19, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3461C1),307, //virtual table table var
  95, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names14,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1421C4  {
  int s1421c4f0;
  __tsi64 s1421c4f1;
  void *s1421c4f2[4];
  int s1421c4f3[2];
  void *s1421c4f4;
  ::S28C9_nt s1421c4f5;
  void *s1421c4f6[2];
  virtual  ~S1421C4(); // _ZN7S1421C4D1Ev
  virtual void  v4(); // _ZN7S1421C42v4Ev
  virtual void  v5(); // _ZN7S1421C42v5Ev
  virtual void  v6(); // _ZN7S1421C42v6Ev
  virtual void  v7(); // _ZN7S1421C42v7Ev
  virtual void  v8(); // _ZN7S1421C42v8Ev
  virtual void  v9(); // _ZN7S1421C42v9Ev
  virtual void  v10(); // _ZN7S1421C43v10Ev
  virtual void  v11(); // _ZN7S1421C43v11Ev
  virtual void  v12(); // _ZN7S1421C43v12Ev
  virtual void  v13(); // _ZN7S1421C43v13Ev
  virtual void  v14(); // _ZN7S1421C43v14Ev
  virtual void  v15(); // _ZN7S1421C43v15Ev
  virtual void  v16(); // _ZN7S1421C43v16Ev
  virtual void  v17(); // _ZN7S1421C43v17Ev
  virtual void  v18(); // _ZN7S1421C43v18Ev
  virtual void  v19(); // _ZN7S1421C43v19Ev
  virtual void  v20(); // _ZN7S1421C43v20Ev
  virtual void  v21(); // _ZN7S1421C43v21Ev
  virtual void  v22(); // _ZN7S1421C43v22Ev
  virtual void  v23(); // _ZN7S1421C43v23Ev
  virtual void  v24(); // _ZN7S1421C43v24Ev
  virtual void  v25(); // _ZN7S1421C43v25Ev
  virtual void  v26(); // _ZN7S1421C43v26Ev
  virtual void  v27(); // _ZN7S1421C43v27Ev
  virtual void  v28(); // _ZN7S1421C43v28Ev
  virtual void  v29(); // _ZN7S1421C43v29Ev
  virtual void  v30(); // _ZN7S1421C43v30Ev
  virtual void  v31(); // _ZN7S1421C43v31Ev
  virtual void  v32(); // _ZN7S1421C43v32Ev
  virtual void  v33(); // _ZN7S1421C43v33Ev
  virtual void  v34(); // _ZN7S1421C43v34Ev
  virtual void  v35(); // _ZN7S1421C43v35Ev
  virtual void  v36(); // _ZN7S1421C43v36Ev
  virtual void  v37(); // _ZN7S1421C43v37Ev
  virtual void  v38(); // _ZN7S1421C43v38Ev
  virtual void  v39(); // _ZN7S1421C43v39Ev
  virtual void  v40(); // _ZN7S1421C43v40Ev
  virtual void  v41(); // _ZN7S1421C43v41Ev
  virtual void  v42(); // _ZN7S1421C43v42Ev
  virtual void  v43(); // _ZN7S1421C43v43Ev
  virtual void  v44(); // _ZN7S1421C43v44Ev
  virtual void  v45(); // _ZN7S1421C43v45Ev
  virtual void  v46(); // _ZN7S1421C43v46Ev
  virtual void  v47(); // _ZN7S1421C43v47Ev
  virtual void  v48(); // _ZN7S1421C43v48Ev
  virtual void  v49(); // _ZN7S1421C43v49Ev
  virtual void  v50(); // _ZN7S1421C43v50Ev
  virtual void  v51(); // _ZN7S1421C43v51Ev
  virtual void  v52(); // _ZN7S1421C43v52Ev
  virtual void  v53(); // _ZN7S1421C43v53Ev
  virtual void  v54(); // _ZN7S1421C43v54Ev
  virtual void  v55(); // _ZN7S1421C43v55Ev
  virtual void  v56(); // _ZN7S1421C43v56Ev
  virtual void  v57(); // _ZN7S1421C43v57Ev
  virtual void  v58(); // _ZN7S1421C43v58Ev
  virtual void  v59(); // _ZN7S1421C43v59Ev
  virtual void  v60(); // _ZN7S1421C43v60Ev
  virtual void  v61(); // _ZN7S1421C43v61Ev
  virtual void  v62(); // _ZN7S1421C43v62Ev
  virtual void  v63(); // _ZN7S1421C43v63Ev
  virtual void  v64(); // _ZN7S1421C43v64Ev
  virtual void  v65(); // _ZN7S1421C43v65Ev
  virtual void  v66(); // _ZN7S1421C43v66Ev
  virtual void  v67(); // _ZN7S1421C43v67Ev
  S1421C4(); // tgen
};
//SIG(-1 S1421C4) 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]}


 S1421C4 ::~S1421C4(){ note_dtor("S1421C4", this);}
void  S1421C4 ::v4(){vfunc_called(this, "_ZN7S1421C42v4Ev");}
void  S1421C4 ::v5(){vfunc_called(this, "_ZN7S1421C42v5Ev");}
void  S1421C4 ::v6(){vfunc_called(this, "_ZN7S1421C42v6Ev");}
void  S1421C4 ::v7(){vfunc_called(this, "_ZN7S1421C42v7Ev");}
void  S1421C4 ::v8(){vfunc_called(this, "_ZN7S1421C42v8Ev");}
void  S1421C4 ::v9(){vfunc_called(this, "_ZN7S1421C42v9Ev");}
void  S1421C4 ::v10(){vfunc_called(this, "_ZN7S1421C43v10Ev");}
void  S1421C4 ::v11(){vfunc_called(this, "_ZN7S1421C43v11Ev");}
void  S1421C4 ::v12(){vfunc_called(this, "_ZN7S1421C43v12Ev");}
void  S1421C4 ::v13(){vfunc_called(this, "_ZN7S1421C43v13Ev");}
void  S1421C4 ::v14(){vfunc_called(this, "_ZN7S1421C43v14Ev");}
void  S1421C4 ::v15(){vfunc_called(this, "_ZN7S1421C43v15Ev");}
void  S1421C4 ::v16(){vfunc_called(this, "_ZN7S1421C43v16Ev");}
void  S1421C4 ::v17(){vfunc_called(this, "_ZN7S1421C43v17Ev");}
void  S1421C4 ::v18(){vfunc_called(this, "_ZN7S1421C43v18Ev");}
void  S1421C4 ::v19(){vfunc_called(this, "_ZN7S1421C43v19Ev");}
void  S1421C4 ::v20(){vfunc_called(this, "_ZN7S1421C43v20Ev");}
void  S1421C4 ::v21(){vfunc_called(this, "_ZN7S1421C43v21Ev");}
void  S1421C4 ::v22(){vfunc_called(this, "_ZN7S1421C43v22Ev");}
void  S1421C4 ::v23(){vfunc_called(this, "_ZN7S1421C43v23Ev");}
void  S1421C4 ::v24(){vfunc_called(this, "_ZN7S1421C43v24Ev");}
void  S1421C4 ::v25(){vfunc_called(this, "_ZN7S1421C43v25Ev");}
void  S1421C4 ::v26(){vfunc_called(this, "_ZN7S1421C43v26Ev");}
void  S1421C4 ::v27(){vfunc_called(this, "_ZN7S1421C43v27Ev");}
void  S1421C4 ::v28(){vfunc_called(this, "_ZN7S1421C43v28Ev");}
void  S1421C4 ::v29(){vfunc_called(this, "_ZN7S1421C43v29Ev");}
void  S1421C4 ::v30(){vfunc_called(this, "_ZN7S1421C43v30Ev");}
void  S1421C4 ::v31(){vfunc_called(this, "_ZN7S1421C43v31Ev");}
void  S1421C4 ::v32(){vfunc_called(this, "_ZN7S1421C43v32Ev");}
void  S1421C4 ::v33(){vfunc_called(this, "_ZN7S1421C43v33Ev");}
void  S1421C4 ::v34(){vfunc_called(this, "_ZN7S1421C43v34Ev");}
void  S1421C4 ::v35(){vfunc_called(this, "_ZN7S1421C43v35Ev");}
void  S1421C4 ::v36(){vfunc_called(this, "_ZN7S1421C43v36Ev");}
void  S1421C4 ::v37(){vfunc_called(this, "_ZN7S1421C43v37Ev");}
void  S1421C4 ::v38(){vfunc_called(this, "_ZN7S1421C43v38Ev");}
void  S1421C4 ::v39(){vfunc_called(this, "_ZN7S1421C43v39Ev");}
void  S1421C4 ::v40(){vfunc_called(this, "_ZN7S1421C43v40Ev");}
void  S1421C4 ::v41(){vfunc_called(this, "_ZN7S1421C43v41Ev");}
void  S1421C4 ::v42(){vfunc_called(this, "_ZN7S1421C43v42Ev");}
void  S1421C4 ::v43(){vfunc_called(this, "_ZN7S1421C43v43Ev");}
void  S1421C4 ::v44(){vfunc_called(this, "_ZN7S1421C43v44Ev");}
void  S1421C4 ::v45(){vfunc_called(this, "_ZN7S1421C43v45Ev");}
void  S1421C4 ::v46(){vfunc_called(this, "_ZN7S1421C43v46Ev");}
void  S1421C4 ::v47(){vfunc_called(this, "_ZN7S1421C43v47Ev");}
void  S1421C4 ::v48(){vfunc_called(this, "_ZN7S1421C43v48Ev");}
void  S1421C4 ::v49(){vfunc_called(this, "_ZN7S1421C43v49Ev");}
void  S1421C4 ::v50(){vfunc_called(this, "_ZN7S1421C43v50Ev");}
void  S1421C4 ::v51(){vfunc_called(this, "_ZN7S1421C43v51Ev");}
void  S1421C4 ::v52(){vfunc_called(this, "_ZN7S1421C43v52Ev");}
void  S1421C4 ::v53(){vfunc_called(this, "_ZN7S1421C43v53Ev");}
void  S1421C4 ::v54(){vfunc_called(this, "_ZN7S1421C43v54Ev");}
void  S1421C4 ::v55(){vfunc_called(this, "_ZN7S1421C43v55Ev");}
void  S1421C4 ::v56(){vfunc_called(this, "_ZN7S1421C43v56Ev");}
void  S1421C4 ::v57(){vfunc_called(this, "_ZN7S1421C43v57Ev");}
void  S1421C4 ::v58(){vfunc_called(this, "_ZN7S1421C43v58Ev");}
void  S1421C4 ::v59(){vfunc_called(this, "_ZN7S1421C43v59Ev");}
void  S1421C4 ::v60(){vfunc_called(this, "_ZN7S1421C43v60Ev");}
void  S1421C4 ::v61(){vfunc_called(this, "_ZN7S1421C43v61Ev");}
void  S1421C4 ::v62(){vfunc_called(this, "_ZN7S1421C43v62Ev");}
void  S1421C4 ::v63(){vfunc_called(this, "_ZN7S1421C43v63Ev");}
void  S1421C4 ::v64(){vfunc_called(this, "_ZN7S1421C43v64Ev");}
void  S1421C4 ::v65(){vfunc_called(this, "_ZN7S1421C43v65Ev");}
void  S1421C4 ::v66(){vfunc_called(this, "_ZN7S1421C43v66Ev");}
void  S1421C4 ::v67(){vfunc_called(this, "_ZN7S1421C43v67Ev");}
S1421C4 ::S1421C4(){ note_ctor("S1421C4", this);} // tgen

static void Test_S1421C4()
{
  extern Class_Descriptor cd_S1421C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1421C4, buf);
    S1421C4 *dp, &lv = *(dp=new (buf) S1421C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1421C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1421C4)");
    check_field_offset(lv, s1421c4f0, ABISELECT(8,4), "S1421C4.s1421c4f0");
    check_field_offset(lv, s1421c4f1, ABISELECT(16,8), "S1421C4.s1421c4f1");
    check_field_offset(lv, s1421c4f2, ABISELECT(24,16), "S1421C4.s1421c4f2");
    check_field_offset(lv, s1421c4f3, ABISELECT(56,32), "S1421C4.s1421c4f3");
    check_field_offset(lv, s1421c4f4, ABISELECT(64,40), "S1421C4.s1421c4f4");
    check_field_offset(lv, s1421c4f5, ABISELECT(72,44), "S1421C4.s1421c4f5");
    check_field_offset(lv, s1421c4f6, ABISELECT(80,52), "S1421C4.s1421c4f6");
    test_class_info(&lv, &cd_S1421C4);
    dp->~S1421C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1421C4(Test_S1421C4, "S1421C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1421C4C1Ev();
extern void _ZN7S1421C4D1Ev();
Name_Map name_map_S1421C4[] = {
  NSPAIR(_ZN7S1421C4C1Ev),
  NSPAIR(_ZN7S1421C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1421C4[];
extern void _ZN7S1421C4D1Ev();
extern void _ZN7S1421C4D0Ev();
extern void _ZN7S1421C42v4Ev();
extern void _ZN7S1421C42v5Ev();
extern void _ZN7S1421C42v6Ev();
extern void _ZN7S1421C42v7Ev();
extern void _ZN7S1421C42v8Ev();
extern void _ZN7S1421C42v9Ev();
extern void _ZN7S1421C43v10Ev();
extern void _ZN7S1421C43v11Ev();
extern void _ZN7S1421C43v12Ev();
extern void _ZN7S1421C43v13Ev();
extern void _ZN7S1421C43v14Ev();
extern void _ZN7S1421C43v15Ev();
extern void _ZN7S1421C43v16Ev();
extern void _ZN7S1421C43v17Ev();
extern void _ZN7S1421C43v18Ev();
extern void _ZN7S1421C43v19Ev();
extern void _ZN7S1421C43v20Ev();
extern void _ZN7S1421C43v21Ev();
extern void _ZN7S1421C43v22Ev();
extern void _ZN7S1421C43v23Ev();
extern void _ZN7S1421C43v24Ev();
extern void _ZN7S1421C43v25Ev();
extern void _ZN7S1421C43v26Ev();
extern void _ZN7S1421C43v27Ev();
extern void _ZN7S1421C43v28Ev();
extern void _ZN7S1421C43v29Ev();
extern void _ZN7S1421C43v30Ev();
extern void _ZN7S1421C43v31Ev();
extern void _ZN7S1421C43v32Ev();
extern void _ZN7S1421C43v33Ev();
extern void _ZN7S1421C43v34Ev();
extern void _ZN7S1421C43v35Ev();
extern void _ZN7S1421C43v36Ev();
extern void _ZN7S1421C43v37Ev();
extern void _ZN7S1421C43v38Ev();
extern void _ZN7S1421C43v39Ev();
extern void _ZN7S1421C43v40Ev();
extern void _ZN7S1421C43v41Ev();
extern void _ZN7S1421C43v42Ev();
extern void _ZN7S1421C43v43Ev();
extern void _ZN7S1421C43v44Ev();
extern void _ZN7S1421C43v45Ev();
extern void _ZN7S1421C43v46Ev();
extern void _ZN7S1421C43v47Ev();
extern void _ZN7S1421C43v48Ev();
extern void _ZN7S1421C43v49Ev();
extern void _ZN7S1421C43v50Ev();
extern void _ZN7S1421C43v51Ev();
extern void _ZN7S1421C43v52Ev();
extern void _ZN7S1421C43v53Ev();
extern void _ZN7S1421C43v54Ev();
extern void _ZN7S1421C43v55Ev();
extern void _ZN7S1421C43v56Ev();
extern void _ZN7S1421C43v57Ev();
extern void _ZN7S1421C43v58Ev();
extern void _ZN7S1421C43v59Ev();
extern void _ZN7S1421C43v60Ev();
extern void _ZN7S1421C43v61Ev();
extern void _ZN7S1421C43v62Ev();
extern void _ZN7S1421C43v63Ev();
extern void _ZN7S1421C43v64Ev();
extern void _ZN7S1421C43v65Ev();
extern void _ZN7S1421C43v66Ev();
extern void _ZN7S1421C43v67Ev();
static  VTBL_ENTRY vtc_S1421C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1421C4[0]),
  (VTBL_ENTRY)&_ZN7S1421C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1421C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1421C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1421C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1421C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1421C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1421C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1421C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v67Ev,
};
extern VTBL_ENTRY _ZTI7S1421C4[];
extern  VTBL_ENTRY _ZTV7S1421C4[];
Class_Descriptor cd_S1421C4 = {  "S1421C4", // class name
  0,0,//no base classes
  &(vtc_S1421C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1421C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1421C4),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  S1421C3  : S1421C4 {
  void *s1421c3f0;
  ::S28C31_nt s1421c3f1;
  int s1421c3f2;
  void *s1421c3f3;
  unsigned int s1421c3f4:1;
  ::S28C31_nt s1421c3f5;
  virtual  ~S1421C3(); // _ZN7S1421C3D1Ev
  virtual void  v68(); // _ZN7S1421C33v68Ev
  virtual void  v69(); // _ZN7S1421C33v69Ev
  virtual void  v70(); // _ZN7S1421C33v70Ev
  virtual void  v71(); // _ZN7S1421C33v71Ev
  virtual void  v72(); // _ZN7S1421C33v72Ev
  virtual void  v73(); // _ZN7S1421C33v73Ev
  virtual void  v74(); // _ZN7S1421C33v74Ev
  virtual void  v75(); // _ZN7S1421C33v75Ev
  S1421C3(); // tgen
};
//SIG(-1 S1421C3) C1{ BC2{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 Fp FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC4}


 S1421C3 ::~S1421C3(){ note_dtor("S1421C3", this);}
void  S1421C3 ::v68(){vfunc_called(this, "_ZN7S1421C33v68Ev");}
void  S1421C3 ::v69(){vfunc_called(this, "_ZN7S1421C33v69Ev");}
void  S1421C3 ::v70(){vfunc_called(this, "_ZN7S1421C33v70Ev");}
void  S1421C3 ::v71(){vfunc_called(this, "_ZN7S1421C33v71Ev");}
void  S1421C3 ::v72(){vfunc_called(this, "_ZN7S1421C33v72Ev");}
void  S1421C3 ::v73(){vfunc_called(this, "_ZN7S1421C33v73Ev");}
void  S1421C3 ::v74(){vfunc_called(this, "_ZN7S1421C33v74Ev");}
void  S1421C3 ::v75(){vfunc_called(this, "_ZN7S1421C33v75Ev");}
S1421C3 ::S1421C3(){ note_ctor("S1421C3", this);} // tgen

static void Test_S1421C3()
{
  extern Class_Descriptor cd_S1421C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,26)];
    init_test(&cd_S1421C3, buf);
    S1421C3 *dp, &lv = *(dp=new (buf) S1421C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,100), "sizeof(S1421C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1421C3)");
    check_base_class_offset(lv, (S1421C4*), 0, "S1421C3");
    check_field_offset(lv, s1421c3f0, ABISELECT(96,60), "S1421C3.s1421c3f0");
    check_field_offset(lv, s1421c3f1, ABISELECT(104,64), "S1421C3.s1421c3f1");
    check_field_offset(lv, s1421c3f2, ABISELECT(120,76), "S1421C3.s1421c3f2");
    check_field_offset(lv, s1421c3f3, ABISELECT(128,80), "S1421C3.s1421c3f3");
    set_bf_and_test(lv, s1421c3f4, ABISELECT(136,84), 0, 1, 1, "S1421C3");
    check_field_offset(lv, s1421c3f5, ABISELECT(144,88), "S1421C3.s1421c3f5");
    test_class_info(&lv, &cd_S1421C3);
    dp->~S1421C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1421C3(Test_S1421C3, "S1421C3", ABISELECT(160,100));

#else // __cplusplus

extern void _ZN7S1421C3C1Ev();
extern void _ZN7S1421C3D1Ev();
Name_Map name_map_S1421C3[] = {
  NSPAIR(_ZN7S1421C3C1Ev),
  NSPAIR(_ZN7S1421C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1421C4;
extern VTBL_ENTRY _ZTI7S1421C4[];
extern  VTBL_ENTRY _ZTV7S1421C4[];
static Base_Class bases_S1421C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1421C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1421C3[];
extern void _ZN7S1421C3D1Ev();
extern void _ZN7S1421C3D0Ev();
extern void _ZN7S1421C42v4Ev();
extern void _ZN7S1421C42v5Ev();
extern void _ZN7S1421C42v6Ev();
extern void _ZN7S1421C42v7Ev();
extern void _ZN7S1421C42v8Ev();
extern void _ZN7S1421C42v9Ev();
extern void _ZN7S1421C43v10Ev();
extern void _ZN7S1421C43v11Ev();
extern void _ZN7S1421C43v12Ev();
extern void _ZN7S1421C43v13Ev();
extern void _ZN7S1421C43v14Ev();
extern void _ZN7S1421C43v15Ev();
extern void _ZN7S1421C43v16Ev();
extern void _ZN7S1421C43v17Ev();
extern void _ZN7S1421C43v18Ev();
extern void _ZN7S1421C43v19Ev();
extern void _ZN7S1421C43v20Ev();
extern void _ZN7S1421C43v21Ev();
extern void _ZN7S1421C43v22Ev();
extern void _ZN7S1421C43v23Ev();
extern void _ZN7S1421C43v24Ev();
extern void _ZN7S1421C43v25Ev();
extern void _ZN7S1421C43v26Ev();
extern void _ZN7S1421C43v27Ev();
extern void _ZN7S1421C43v28Ev();
extern void _ZN7S1421C43v29Ev();
extern void _ZN7S1421C43v30Ev();
extern void _ZN7S1421C43v31Ev();
extern void _ZN7S1421C43v32Ev();
extern void _ZN7S1421C43v33Ev();
extern void _ZN7S1421C43v34Ev();
extern void _ZN7S1421C43v35Ev();
extern void _ZN7S1421C43v36Ev();
extern void _ZN7S1421C43v37Ev();
extern void _ZN7S1421C43v38Ev();
extern void _ZN7S1421C43v39Ev();
extern void _ZN7S1421C43v40Ev();
extern void _ZN7S1421C43v41Ev();
extern void _ZN7S1421C43v42Ev();
extern void _ZN7S1421C43v43Ev();
extern void _ZN7S1421C43v44Ev();
extern void _ZN7S1421C43v45Ev();
extern void _ZN7S1421C43v46Ev();
extern void _ZN7S1421C43v47Ev();
extern void _ZN7S1421C43v48Ev();
extern void _ZN7S1421C43v49Ev();
extern void _ZN7S1421C43v50Ev();
extern void _ZN7S1421C43v51Ev();
extern void _ZN7S1421C43v52Ev();
extern void _ZN7S1421C43v53Ev();
extern void _ZN7S1421C43v54Ev();
extern void _ZN7S1421C43v55Ev();
extern void _ZN7S1421C43v56Ev();
extern void _ZN7S1421C43v57Ev();
extern void _ZN7S1421C43v58Ev();
extern void _ZN7S1421C43v59Ev();
extern void _ZN7S1421C43v60Ev();
extern void _ZN7S1421C43v61Ev();
extern void _ZN7S1421C43v62Ev();
extern void _ZN7S1421C43v63Ev();
extern void _ZN7S1421C43v64Ev();
extern void _ZN7S1421C43v65Ev();
extern void _ZN7S1421C43v66Ev();
extern void _ZN7S1421C43v67Ev();
extern void _ZN7S1421C33v68Ev();
extern void _ZN7S1421C33v69Ev();
extern void _ZN7S1421C33v70Ev();
extern void _ZN7S1421C33v71Ev();
extern void _ZN7S1421C33v72Ev();
extern void _ZN7S1421C33v73Ev();
extern void _ZN7S1421C33v74Ev();
extern void _ZN7S1421C33v75Ev();
static  VTBL_ENTRY vtc_S1421C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1421C3[0]),
  (VTBL_ENTRY)&_ZN7S1421C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1421C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1421C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1421C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1421C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1421C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1421C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1421C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1421C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1421C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1421C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1421C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1421C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1421C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1421C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1421C33v75Ev,
};
extern VTBL_ENTRY _ZTI7S1421C3[];
extern  VTBL_ENTRY _ZTV7S1421C3[];
Class_Descriptor cd_S1421C3 = {  "S1421C3", // class name
  bases_S1421C3, 1,
  &(vtc_S1421C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,100), // object size
  NSPAIRA(_ZTI7S1421C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1421C3),76, //virtual function table var
  2, // 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  S1421C2  : S1421C3 {
  void *s1421c2f0;
  ::S48C18 s1421c2f1;
  unsigned int s1421c2f2:1;
  unsigned int s1421c2f3:1;
  unsigned int s1421c2f4:1;
  unsigned int s1421c2f5:1;
  char s1421c2f6;
  virtual  ~S1421C2(); // _ZN7S1421C2D1Ev
  virtual void  v76(); // _ZN7S1421C23v76Ev
  virtual void  v77(); // _ZN7S1421C23v77Ev
  virtual void  v78(); // _ZN7S1421C23v78Ev
  virtual void  v79(); // _ZN7S1421C23v79Ev
  virtual void  v80(); // _ZN7S1421C23v80Ev
  virtual void  v81(); // _ZN7S1421C23v81Ev
  virtual void  v82(); // _ZN7S1421C23v82Ev
  S1421C2(); // tgen
};
//SIG(-1 S1421C2) C1{ BC2{ BC3{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v72 v73 v74 v75 v76 v77 v78 v79 Fp FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC5} vd v1 v2 v3 v4 v5 v6 v7 Fp FC9{ m Fi[3]} Fi:1 Fi:1 Fi:1 Fi:1 Fc}


 S1421C2 ::~S1421C2(){ note_dtor("S1421C2", this);}
void  S1421C2 ::v76(){vfunc_called(this, "_ZN7S1421C23v76Ev");}
void  S1421C2 ::v77(){vfunc_called(this, "_ZN7S1421C23v77Ev");}
void  S1421C2 ::v78(){vfunc_called(this, "_ZN7S1421C23v78Ev");}
void  S1421C2 ::v79(){vfunc_called(this, "_ZN7S1421C23v79Ev");}
void  S1421C2 ::v80(){vfunc_called(this, "_ZN7S1421C23v80Ev");}
void  S1421C2 ::v81(){vfunc_called(this, "_ZN7S1421C23v81Ev");}
void  S1421C2 ::v82(){vfunc_called(this, "_ZN7S1421C23v82Ev");}
S1421C2 ::S1421C2(){ note_ctor("S1421C2", this);} // tgen

static void Test_S1421C2()
{
  extern Class_Descriptor cd_S1421C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,31)];
    init_test(&cd_S1421C2, buf);
    S1421C2 *dp, &lv = *(dp=new (buf) S1421C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,120), "sizeof(S1421C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1421C2)");
    check_base_class_offset(lv, (S1421C4*)(S1421C3*), 0, "S1421C2");
    check_base_class_offset(lv, (S1421C3*), 0, "S1421C2");
    check_field_offset(lv, s1421c2f0, ABISELECT(160,100), "S1421C2.s1421c2f0");
    check_field_offset(lv, s1421c2f1, ABISELECT(168,104), "S1421C2.s1421c2f1");
    set_bf_and_test(lv, s1421c2f2, ABISELECT(180,116), 0, 1, 1, "S1421C2");
    set_bf_and_test(lv, s1421c2f3, ABISELECT(180,116), 1, 1, 1, "S1421C2");
    set_bf_and_test(lv, s1421c2f4, ABISELECT(180,116), 2, 1, 1, "S1421C2");
    set_bf_and_test(lv, s1421c2f5, ABISELECT(180,116), 3, 1, 1, "S1421C2");
    check_field_offset(lv, s1421c2f6, ABISELECT(181,117), "S1421C2.s1421c2f6");
    test_class_info(&lv, &cd_S1421C2);
    dp->~S1421C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1421C2(Test_S1421C2, "S1421C2", ABISELECT(184,120));

#else // __cplusplus

extern void _ZN7S1421C2C1Ev();
extern void _ZN7S1421C2D1Ev();
Name_Map name_map_S1421C2[] = {
  NSPAIR(_ZN7S1421C2C1Ev),
  NSPAIR(_ZN7S1421C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1421C4;
extern VTBL_ENTRY _ZTI7S1421C4[];
extern  VTBL_ENTRY _ZTV7S1421C4[];
extern Class_Descriptor cd_S1421C3;
extern VTBL_ENTRY _ZTI7S1421C3[];
extern  VTBL_ENTRY _ZTV7S1421C3[];
static Base_Class bases_S1421C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1421C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1421C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1421C2[];
extern void _ZN7S1421C2D1Ev();
extern void _ZN7S1421C2D0Ev();
extern void _ZN7S1421C42v4Ev();
extern void _ZN7S1421C42v5Ev();
extern void _ZN7S1421C42v6Ev();
extern void _ZN7S1421C42v7Ev();
extern void _ZN7S1421C42v8Ev();
extern void _ZN7S1421C42v9Ev();
extern void _ZN7S1421C43v10Ev();
extern void _ZN7S1421C43v11Ev();
extern void _ZN7S1421C43v12Ev();
extern void _ZN7S1421C43v13Ev();
extern void _ZN7S1421C43v14Ev();
extern void _ZN7S1421C43v15Ev();
extern void _ZN7S1421C43v16Ev();
extern void _ZN7S1421C43v17Ev();
extern void _ZN7S1421C43v18Ev();
extern void _ZN7S1421C43v19Ev();
extern void _ZN7S1421C43v20Ev();
extern void _ZN7S1421C43v21Ev();
extern void _ZN7S1421C43v22Ev();
extern void _ZN7S1421C43v23Ev();
extern void _ZN7S1421C43v24Ev();
extern void _ZN7S1421C43v25Ev();
extern void _ZN7S1421C43v26Ev();
extern void _ZN7S1421C43v27Ev();
extern void _ZN7S1421C43v28Ev();
extern void _ZN7S1421C43v29Ev();
extern void _ZN7S1421C43v30Ev();
extern void _ZN7S1421C43v31Ev();
extern void _ZN7S1421C43v32Ev();
extern void _ZN7S1421C43v33Ev();
extern void _ZN7S1421C43v34Ev();
extern void _ZN7S1421C43v35Ev();
extern void _ZN7S1421C43v36Ev();
extern void _ZN7S1421C43v37Ev();
extern void _ZN7S1421C43v38Ev();
extern void _ZN7S1421C43v39Ev();
extern void _ZN7S1421C43v40Ev();
extern void _ZN7S1421C43v41Ev();
extern void _ZN7S1421C43v42Ev();
extern void _ZN7S1421C43v43Ev();
extern void _ZN7S1421C43v44Ev();
extern void _ZN7S1421C43v45Ev();
extern void _ZN7S1421C43v46Ev();
extern void _ZN7S1421C43v47Ev();
extern void _ZN7S1421C43v48Ev();
extern void _ZN7S1421C43v49Ev();
extern void _ZN7S1421C43v50Ev();
extern void _ZN7S1421C43v51Ev();
extern void _ZN7S1421C43v52Ev();
extern void _ZN7S1421C43v53Ev();
extern void _ZN7S1421C43v54Ev();
extern void _ZN7S1421C43v55Ev();
extern void _ZN7S1421C43v56Ev();
extern void _ZN7S1421C43v57Ev();
extern void _ZN7S1421C43v58Ev();
extern void _ZN7S1421C43v59Ev();
extern void _ZN7S1421C43v60Ev();
extern void _ZN7S1421C43v61Ev();
extern void _ZN7S1421C43v62Ev();
extern void _ZN7S1421C43v63Ev();
extern void _ZN7S1421C43v64Ev();
extern void _ZN7S1421C43v65Ev();
extern void _ZN7S1421C43v66Ev();
extern void _ZN7S1421C43v67Ev();
extern void _ZN7S1421C33v68Ev();
extern void _ZN7S1421C33v69Ev();
extern void _ZN7S1421C33v70Ev();
extern void _ZN7S1421C33v71Ev();
extern void _ZN7S1421C33v72Ev();
extern void _ZN7S1421C33v73Ev();
extern void _ZN7S1421C33v74Ev();
extern void _ZN7S1421C33v75Ev();
extern void _ZN7S1421C23v76Ev();
extern void _ZN7S1421C23v77Ev();
extern void _ZN7S1421C23v78Ev();
extern void _ZN7S1421C23v79Ev();
extern void _ZN7S1421C23v80Ev();
extern void _ZN7S1421C23v81Ev();
extern void _ZN7S1421C23v82Ev();
static  VTBL_ENTRY vtc_S1421C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1421C2[0]),
  (VTBL_ENTRY)&_ZN7S1421C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1421C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1421C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1421C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1421C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1421C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1421C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1421C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1421C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1421C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1421C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1421C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1421C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1421C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1421C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1421C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1421C23v76Ev,
  (VTBL_ENTRY)&_ZN7S1421C23v77Ev,
  (VTBL_ENTRY)&_ZN7S1421C23v78Ev,
  (VTBL_ENTRY)&_ZN7S1421C23v79Ev,
  (VTBL_ENTRY)&_ZN7S1421C23v80Ev,
  (VTBL_ENTRY)&_ZN7S1421C23v81Ev,
  (VTBL_ENTRY)&_ZN7S1421C23v82Ev,
};
extern VTBL_ENTRY _ZTI7S1421C2[];
extern  VTBL_ENTRY _ZTV7S1421C2[];
Class_Descriptor cd_S1421C2 = {  "S1421C2", // class name
  bases_S1421C2, 2,
  &(vtc_S1421C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,120), // object size
  NSPAIRA(_ZTI7S1421C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1421C2),83, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1421C1  : S1421C2 {
  unsigned int s1421c1f0:1;
  void *s1421c1f1;
  virtual  ~S1421C1(); // _ZN7S1421C1D1Ev
  virtual void  v1(); // _ZN7S1421C12v1Ev
  virtual void  v2(); // _ZN7S1421C12v2Ev
  virtual void  v3(); // _ZN7S1421C12v3Ev
  S1421C1(); // tgen
};
//SIG(1 S1421C1) C1{ BC2{ BC3{ BC4{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v68 v69 v70 v71 v72 v73 v74 v75 Fp FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC6} vd v76 v77 v78 v79 v80 v81 v82 Fp FC10{ m Fi[3]} Fi:1 Fi:1 Fi:1 Fi:1 Fc} vd v1 v2 v3 Fi:1 Fp}


 S1421C1 ::~S1421C1(){ note_dtor("S1421C1", this);}
void  S1421C1 ::v1(){vfunc_called(this, "_ZN7S1421C12v1Ev");}
void  S1421C1 ::v2(){vfunc_called(this, "_ZN7S1421C12v2Ev");}
void  S1421C1 ::v3(){vfunc_called(this, "_ZN7S1421C12v3Ev");}
S1421C1 ::S1421C1(){ note_ctor("S1421C1", this);} // tgen

static void Test_S1421C1()
{
  extern Class_Descriptor cd_S1421C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,32)];
    init_test(&cd_S1421C1, buf);
    S1421C1 *dp, &lv = *(dp=new (buf) S1421C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,124), "sizeof(S1421C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1421C1)");
    check_base_class_offset(lv, (S1421C4*)(S1421C3*)(S1421C2*), 0, "S1421C1");
    check_base_class_offset(lv, (S1421C3*)(S1421C2*), 0, "S1421C1");
    check_base_class_offset(lv, (S1421C2*), 0, "S1421C1");
    set_bf_and_test(lv, s1421c1f0, ABISELECT(182,118), 0, 1, 1, "S1421C1");
    check_field_offset(lv, s1421c1f1, ABISELECT(184,120), "S1421C1.s1421c1f1");
    test_class_info(&lv, &cd_S1421C1);
    dp->~S1421C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1421C1(Test_S1421C1, "S1421C1", ABISELECT(192,124));

#else // __cplusplus

extern void _ZN7S1421C1C1Ev();
extern void _ZN7S1421C1D1Ev();
Name_Map name_map_S1421C1[] = {
  NSPAIR(_ZN7S1421C1C1Ev),
  NSPAIR(_ZN7S1421C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1421C4;
extern VTBL_ENTRY _ZTI7S1421C4[];
extern  VTBL_ENTRY _ZTV7S1421C4[];
extern Class_Descriptor cd_S1421C3;
extern VTBL_ENTRY _ZTI7S1421C3[];
extern  VTBL_ENTRY _ZTV7S1421C3[];
extern Class_Descriptor cd_S1421C2;
extern VTBL_ENTRY _ZTI7S1421C2[];
extern  VTBL_ENTRY _ZTV7S1421C2[];
static Base_Class bases_S1421C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1421C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1421C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1421C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1421C1[];
extern void _ZN7S1421C1D1Ev();
extern void _ZN7S1421C1D0Ev();
extern void _ZN7S1421C42v4Ev();
extern void _ZN7S1421C42v5Ev();
extern void _ZN7S1421C42v6Ev();
extern void _ZN7S1421C42v7Ev();
extern void _ZN7S1421C42v8Ev();
extern void _ZN7S1421C42v9Ev();
extern void _ZN7S1421C43v10Ev();
extern void _ZN7S1421C43v11Ev();
extern void _ZN7S1421C43v12Ev();
extern void _ZN7S1421C43v13Ev();
extern void _ZN7S1421C43v14Ev();
extern void _ZN7S1421C43v15Ev();
extern void _ZN7S1421C43v16Ev();
extern void _ZN7S1421C43v17Ev();
extern void _ZN7S1421C43v18Ev();
extern void _ZN7S1421C43v19Ev();
extern void _ZN7S1421C43v20Ev();
extern void _ZN7S1421C43v21Ev();
extern void _ZN7S1421C43v22Ev();
extern void _ZN7S1421C43v23Ev();
extern void _ZN7S1421C43v24Ev();
extern void _ZN7S1421C43v25Ev();
extern void _ZN7S1421C43v26Ev();
extern void _ZN7S1421C43v27Ev();
extern void _ZN7S1421C43v28Ev();
extern void _ZN7S1421C43v29Ev();
extern void _ZN7S1421C43v30Ev();
extern void _ZN7S1421C43v31Ev();
extern void _ZN7S1421C43v32Ev();
extern void _ZN7S1421C43v33Ev();
extern void _ZN7S1421C43v34Ev();
extern void _ZN7S1421C43v35Ev();
extern void _ZN7S1421C43v36Ev();
extern void _ZN7S1421C43v37Ev();
extern void _ZN7S1421C43v38Ev();
extern void _ZN7S1421C43v39Ev();
extern void _ZN7S1421C43v40Ev();
extern void _ZN7S1421C43v41Ev();
extern void _ZN7S1421C43v42Ev();
extern void _ZN7S1421C43v43Ev();
extern void _ZN7S1421C43v44Ev();
extern void _ZN7S1421C43v45Ev();
extern void _ZN7S1421C43v46Ev();
extern void _ZN7S1421C43v47Ev();
extern void _ZN7S1421C43v48Ev();
extern void _ZN7S1421C43v49Ev();
extern void _ZN7S1421C43v50Ev();
extern void _ZN7S1421C43v51Ev();
extern void _ZN7S1421C43v52Ev();
extern void _ZN7S1421C43v53Ev();
extern void _ZN7S1421C43v54Ev();
extern void _ZN7S1421C43v55Ev();
extern void _ZN7S1421C43v56Ev();
extern void _ZN7S1421C43v57Ev();
extern void _ZN7S1421C43v58Ev();
extern void _ZN7S1421C43v59Ev();
extern void _ZN7S1421C43v60Ev();
extern void _ZN7S1421C43v61Ev();
extern void _ZN7S1421C43v62Ev();
extern void _ZN7S1421C43v63Ev();
extern void _ZN7S1421C43v64Ev();
extern void _ZN7S1421C43v65Ev();
extern void _ZN7S1421C43v66Ev();
extern void _ZN7S1421C43v67Ev();
extern void _ZN7S1421C33v68Ev();
extern void _ZN7S1421C33v69Ev();
extern void _ZN7S1421C33v70Ev();
extern void _ZN7S1421C33v71Ev();
extern void _ZN7S1421C33v72Ev();
extern void _ZN7S1421C33v73Ev();
extern void _ZN7S1421C33v74Ev();
extern void _ZN7S1421C33v75Ev();
extern void _ZN7S1421C23v76Ev();
extern void _ZN7S1421C23v77Ev();
extern void _ZN7S1421C23v78Ev();
extern void _ZN7S1421C23v79Ev();
extern void _ZN7S1421C23v80Ev();
extern void _ZN7S1421C23v81Ev();
extern void _ZN7S1421C23v82Ev();
extern void _ZN7S1421C12v1Ev();
extern void _ZN7S1421C12v2Ev();
extern void _ZN7S1421C12v3Ev();
static  VTBL_ENTRY vtc_S1421C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1421C1[0]),
  (VTBL_ENTRY)&_ZN7S1421C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1421C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1421C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1421C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1421C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1421C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1421C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1421C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1421C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1421C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1421C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1421C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1421C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1421C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1421C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1421C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1421C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1421C23v76Ev,
  (VTBL_ENTRY)&_ZN7S1421C23v77Ev,
  (VTBL_ENTRY)&_ZN7S1421C23v78Ev,
  (VTBL_ENTRY)&_ZN7S1421C23v79Ev,
  (VTBL_ENTRY)&_ZN7S1421C23v80Ev,
  (VTBL_ENTRY)&_ZN7S1421C23v81Ev,
  (VTBL_ENTRY)&_ZN7S1421C23v82Ev,
  (VTBL_ENTRY)&_ZN7S1421C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1421C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1421C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S1421C1[];
extern  VTBL_ENTRY _ZTV7S1421C1[];
Class_Descriptor cd_S1421C1 = {  "S1421C1", // class name
  bases_S1421C1, 3,
  &(vtc_S1421C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,124), // object size
  NSPAIRA(_ZTI7S1421C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1421C1),86, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1380C4  {
  int s1380c4f0;
  __tsi64 s1380c4f1;
  void *s1380c4f2[4];
  int s1380c4f3[2];
  void *s1380c4f4;
  ::S28C9_nt s1380c4f5;
  void *s1380c4f6[2];
  virtual  ~S1380C4(); // _ZN7S1380C4D1Ev
  virtual void  v3(); // _ZN7S1380C42v3Ev
  virtual void  v4(); // _ZN7S1380C42v4Ev
  virtual void  v5(); // _ZN7S1380C42v5Ev
  virtual void  v6(); // _ZN7S1380C42v6Ev
  virtual void  v7(); // _ZN7S1380C42v7Ev
  virtual void  v8(); // _ZN7S1380C42v8Ev
  virtual void  v9(); // _ZN7S1380C42v9Ev
  virtual void  v10(); // _ZN7S1380C43v10Ev
  virtual void  v11(); // _ZN7S1380C43v11Ev
  virtual void  v12(); // _ZN7S1380C43v12Ev
  virtual void  v13(); // _ZN7S1380C43v13Ev
  virtual void  v14(); // _ZN7S1380C43v14Ev
  virtual void  v15(); // _ZN7S1380C43v15Ev
  virtual void  v16(); // _ZN7S1380C43v16Ev
  virtual void  v17(); // _ZN7S1380C43v17Ev
  virtual void  v18(); // _ZN7S1380C43v18Ev
  virtual void  v19(); // _ZN7S1380C43v19Ev
  virtual void  v20(); // _ZN7S1380C43v20Ev
  virtual void  v21(); // _ZN7S1380C43v21Ev
  virtual void  v22(); // _ZN7S1380C43v22Ev
  virtual void  v23(); // _ZN7S1380C43v23Ev
  virtual void  v24(); // _ZN7S1380C43v24Ev
  virtual void  v25(); // _ZN7S1380C43v25Ev
  virtual void  v26(); // _ZN7S1380C43v26Ev
  virtual void  v27(); // _ZN7S1380C43v27Ev
  virtual void  v28(); // _ZN7S1380C43v28Ev
  virtual void  v29(); // _ZN7S1380C43v29Ev
  virtual void  v30(); // _ZN7S1380C43v30Ev
  virtual void  v31(); // _ZN7S1380C43v31Ev
  virtual void  v32(); // _ZN7S1380C43v32Ev
  virtual void  v33(); // _ZN7S1380C43v33Ev
  virtual void  v34(); // _ZN7S1380C43v34Ev
  virtual void  v35(); // _ZN7S1380C43v35Ev
  virtual void  v36(); // _ZN7S1380C43v36Ev
  virtual void  v37(); // _ZN7S1380C43v37Ev
  virtual void  v38(); // _ZN7S1380C43v38Ev
  virtual void  v39(); // _ZN7S1380C43v39Ev
  virtual void  v40(); // _ZN7S1380C43v40Ev
  virtual void  v41(); // _ZN7S1380C43v41Ev
  virtual void  v42(); // _ZN7S1380C43v42Ev
  virtual void  v43(); // _ZN7S1380C43v43Ev
  virtual void  v44(); // _ZN7S1380C43v44Ev
  virtual void  v45(); // _ZN7S1380C43v45Ev
  virtual void  v46(); // _ZN7S1380C43v46Ev
  virtual void  v47(); // _ZN7S1380C43v47Ev
  virtual void  v48(); // _ZN7S1380C43v48Ev
  virtual void  v49(); // _ZN7S1380C43v49Ev
  virtual void  v50(); // _ZN7S1380C43v50Ev
  virtual void  v51(); // _ZN7S1380C43v51Ev
  virtual void  v52(); // _ZN7S1380C43v52Ev
  virtual void  v53(); // _ZN7S1380C43v53Ev
  virtual void  v54(); // _ZN7S1380C43v54Ev
  virtual void  v55(); // _ZN7S1380C43v55Ev
  virtual void  v56(); // _ZN7S1380C43v56Ev
  virtual void  v57(); // _ZN7S1380C43v57Ev
  virtual void  v58(); // _ZN7S1380C43v58Ev
  virtual void  v59(); // _ZN7S1380C43v59Ev
  virtual void  v60(); // _ZN7S1380C43v60Ev
  virtual void  v61(); // _ZN7S1380C43v61Ev
  virtual void  v62(); // _ZN7S1380C43v62Ev
  virtual void  v63(); // _ZN7S1380C43v63Ev
  virtual void  v64(); // _ZN7S1380C43v64Ev
  virtual void  v65(); // _ZN7S1380C43v65Ev
  virtual void  v66(); // _ZN7S1380C43v66Ev
  S1380C4(); // tgen
};
//SIG(-1 S1380C4) 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]}


 S1380C4 ::~S1380C4(){ note_dtor("S1380C4", this);}
void  S1380C4 ::v3(){vfunc_called(this, "_ZN7S1380C42v3Ev");}
void  S1380C4 ::v4(){vfunc_called(this, "_ZN7S1380C42v4Ev");}
void  S1380C4 ::v5(){vfunc_called(this, "_ZN7S1380C42v5Ev");}
void  S1380C4 ::v6(){vfunc_called(this, "_ZN7S1380C42v6Ev");}
void  S1380C4 ::v7(){vfunc_called(this, "_ZN7S1380C42v7Ev");}
void  S1380C4 ::v8(){vfunc_called(this, "_ZN7S1380C42v8Ev");}
void  S1380C4 ::v9(){vfunc_called(this, "_ZN7S1380C42v9Ev");}
void  S1380C4 ::v10(){vfunc_called(this, "_ZN7S1380C43v10Ev");}
void  S1380C4 ::v11(){vfunc_called(this, "_ZN7S1380C43v11Ev");}
void  S1380C4 ::v12(){vfunc_called(this, "_ZN7S1380C43v12Ev");}
void  S1380C4 ::v13(){vfunc_called(this, "_ZN7S1380C43v13Ev");}
void  S1380C4 ::v14(){vfunc_called(this, "_ZN7S1380C43v14Ev");}
void  S1380C4 ::v15(){vfunc_called(this, "_ZN7S1380C43v15Ev");}
void  S1380C4 ::v16(){vfunc_called(this, "_ZN7S1380C43v16Ev");}
void  S1380C4 ::v17(){vfunc_called(this, "_ZN7S1380C43v17Ev");}
void  S1380C4 ::v18(){vfunc_called(this, "_ZN7S1380C43v18Ev");}
void  S1380C4 ::v19(){vfunc_called(this, "_ZN7S1380C43v19Ev");}
void  S1380C4 ::v20(){vfunc_called(this, "_ZN7S1380C43v20Ev");}
void  S1380C4 ::v21(){vfunc_called(this, "_ZN7S1380C43v21Ev");}
void  S1380C4 ::v22(){vfunc_called(this, "_ZN7S1380C43v22Ev");}
void  S1380C4 ::v23(){vfunc_called(this, "_ZN7S1380C43v23Ev");}
void  S1380C4 ::v24(){vfunc_called(this, "_ZN7S1380C43v24Ev");}
void  S1380C4 ::v25(){vfunc_called(this, "_ZN7S1380C43v25Ev");}
void  S1380C4 ::v26(){vfunc_called(this, "_ZN7S1380C43v26Ev");}
void  S1380C4 ::v27(){vfunc_called(this, "_ZN7S1380C43v27Ev");}
void  S1380C4 ::v28(){vfunc_called(this, "_ZN7S1380C43v28Ev");}
void  S1380C4 ::v29(){vfunc_called(this, "_ZN7S1380C43v29Ev");}
void  S1380C4 ::v30(){vfunc_called(this, "_ZN7S1380C43v30Ev");}
void  S1380C4 ::v31(){vfunc_called(this, "_ZN7S1380C43v31Ev");}
void  S1380C4 ::v32(){vfunc_called(this, "_ZN7S1380C43v32Ev");}
void  S1380C4 ::v33(){vfunc_called(this, "_ZN7S1380C43v33Ev");}
void  S1380C4 ::v34(){vfunc_called(this, "_ZN7S1380C43v34Ev");}
void  S1380C4 ::v35(){vfunc_called(this, "_ZN7S1380C43v35Ev");}
void  S1380C4 ::v36(){vfunc_called(this, "_ZN7S1380C43v36Ev");}
void  S1380C4 ::v37(){vfunc_called(this, "_ZN7S1380C43v37Ev");}
void  S1380C4 ::v38(){vfunc_called(this, "_ZN7S1380C43v38Ev");}
void  S1380C4 ::v39(){vfunc_called(this, "_ZN7S1380C43v39Ev");}
void  S1380C4 ::v40(){vfunc_called(this, "_ZN7S1380C43v40Ev");}
void  S1380C4 ::v41(){vfunc_called(this, "_ZN7S1380C43v41Ev");}
void  S1380C4 ::v42(){vfunc_called(this, "_ZN7S1380C43v42Ev");}
void  S1380C4 ::v43(){vfunc_called(this, "_ZN7S1380C43v43Ev");}
void  S1380C4 ::v44(){vfunc_called(this, "_ZN7S1380C43v44Ev");}
void  S1380C4 ::v45(){vfunc_called(this, "_ZN7S1380C43v45Ev");}
void  S1380C4 ::v46(){vfunc_called(this, "_ZN7S1380C43v46Ev");}
void  S1380C4 ::v47(){vfunc_called(this, "_ZN7S1380C43v47Ev");}
void  S1380C4 ::v48(){vfunc_called(this, "_ZN7S1380C43v48Ev");}
void  S1380C4 ::v49(){vfunc_called(this, "_ZN7S1380C43v49Ev");}
void  S1380C4 ::v50(){vfunc_called(this, "_ZN7S1380C43v50Ev");}
void  S1380C4 ::v51(){vfunc_called(this, "_ZN7S1380C43v51Ev");}
void  S1380C4 ::v52(){vfunc_called(this, "_ZN7S1380C43v52Ev");}
void  S1380C4 ::v53(){vfunc_called(this, "_ZN7S1380C43v53Ev");}
void  S1380C4 ::v54(){vfunc_called(this, "_ZN7S1380C43v54Ev");}
void  S1380C4 ::v55(){vfunc_called(this, "_ZN7S1380C43v55Ev");}
void  S1380C4 ::v56(){vfunc_called(this, "_ZN7S1380C43v56Ev");}
void  S1380C4 ::v57(){vfunc_called(this, "_ZN7S1380C43v57Ev");}
void  S1380C4 ::v58(){vfunc_called(this, "_ZN7S1380C43v58Ev");}
void  S1380C4 ::v59(){vfunc_called(this, "_ZN7S1380C43v59Ev");}
void  S1380C4 ::v60(){vfunc_called(this, "_ZN7S1380C43v60Ev");}
void  S1380C4 ::v61(){vfunc_called(this, "_ZN7S1380C43v61Ev");}
void  S1380C4 ::v62(){vfunc_called(this, "_ZN7S1380C43v62Ev");}
void  S1380C4 ::v63(){vfunc_called(this, "_ZN7S1380C43v63Ev");}
void  S1380C4 ::v64(){vfunc_called(this, "_ZN7S1380C43v64Ev");}
void  S1380C4 ::v65(){vfunc_called(this, "_ZN7S1380C43v65Ev");}
void  S1380C4 ::v66(){vfunc_called(this, "_ZN7S1380C43v66Ev");}
S1380C4 ::S1380C4(){ note_ctor("S1380C4", this);} // tgen

static void Test_S1380C4()
{
  extern Class_Descriptor cd_S1380C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1380C4, buf);
    S1380C4 *dp, &lv = *(dp=new (buf) S1380C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1380C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1380C4)");
    check_field_offset(lv, s1380c4f0, ABISELECT(8,4), "S1380C4.s1380c4f0");
    check_field_offset(lv, s1380c4f1, ABISELECT(16,8), "S1380C4.s1380c4f1");
    check_field_offset(lv, s1380c4f2, ABISELECT(24,16), "S1380C4.s1380c4f2");
    check_field_offset(lv, s1380c4f3, ABISELECT(56,32), "S1380C4.s1380c4f3");
    check_field_offset(lv, s1380c4f4, ABISELECT(64,40), "S1380C4.s1380c4f4");
    check_field_offset(lv, s1380c4f5, ABISELECT(72,44), "S1380C4.s1380c4f5");
    check_field_offset(lv, s1380c4f6, ABISELECT(80,52), "S1380C4.s1380c4f6");
    test_class_info(&lv, &cd_S1380C4);
    dp->~S1380C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1380C4(Test_S1380C4, "S1380C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1380C4C1Ev();
extern void _ZN7S1380C4D1Ev();
Name_Map name_map_S1380C4[] = {
  NSPAIR(_ZN7S1380C4C1Ev),
  NSPAIR(_ZN7S1380C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1380C4[];
extern void _ZN7S1380C4D1Ev();
extern void _ZN7S1380C4D0Ev();
extern void _ZN7S1380C42v3Ev();
extern void _ZN7S1380C42v4Ev();
extern void _ZN7S1380C42v5Ev();
extern void _ZN7S1380C42v6Ev();
extern void _ZN7S1380C42v7Ev();
extern void _ZN7S1380C42v8Ev();
extern void _ZN7S1380C42v9Ev();
extern void _ZN7S1380C43v10Ev();
extern void _ZN7S1380C43v11Ev();
extern void _ZN7S1380C43v12Ev();
extern void _ZN7S1380C43v13Ev();
extern void _ZN7S1380C43v14Ev();
extern void _ZN7S1380C43v15Ev();
extern void _ZN7S1380C43v16Ev();
extern void _ZN7S1380C43v17Ev();
extern void _ZN7S1380C43v18Ev();
extern void _ZN7S1380C43v19Ev();
extern void _ZN7S1380C43v20Ev();
extern void _ZN7S1380C43v21Ev();
extern void _ZN7S1380C43v22Ev();
extern void _ZN7S1380C43v23Ev();
extern void _ZN7S1380C43v24Ev();
extern void _ZN7S1380C43v25Ev();
extern void _ZN7S1380C43v26Ev();
extern void _ZN7S1380C43v27Ev();
extern void _ZN7S1380C43v28Ev();
extern void _ZN7S1380C43v29Ev();
extern void _ZN7S1380C43v30Ev();
extern void _ZN7S1380C43v31Ev();
extern void _ZN7S1380C43v32Ev();
extern void _ZN7S1380C43v33Ev();
extern void _ZN7S1380C43v34Ev();
extern void _ZN7S1380C43v35Ev();
extern void _ZN7S1380C43v36Ev();
extern void _ZN7S1380C43v37Ev();
extern void _ZN7S1380C43v38Ev();
extern void _ZN7S1380C43v39Ev();
extern void _ZN7S1380C43v40Ev();
extern void _ZN7S1380C43v41Ev();
extern void _ZN7S1380C43v42Ev();
extern void _ZN7S1380C43v43Ev();
extern void _ZN7S1380C43v44Ev();
extern void _ZN7S1380C43v45Ev();
extern void _ZN7S1380C43v46Ev();
extern void _ZN7S1380C43v47Ev();
extern void _ZN7S1380C43v48Ev();
extern void _ZN7S1380C43v49Ev();
extern void _ZN7S1380C43v50Ev();
extern void _ZN7S1380C43v51Ev();
extern void _ZN7S1380C43v52Ev();
extern void _ZN7S1380C43v53Ev();
extern void _ZN7S1380C43v54Ev();
extern void _ZN7S1380C43v55Ev();
extern void _ZN7S1380C43v56Ev();
extern void _ZN7S1380C43v57Ev();
extern void _ZN7S1380C43v58Ev();
extern void _ZN7S1380C43v59Ev();
extern void _ZN7S1380C43v60Ev();
extern void _ZN7S1380C43v61Ev();
extern void _ZN7S1380C43v62Ev();
extern void _ZN7S1380C43v63Ev();
extern void _ZN7S1380C43v64Ev();
extern void _ZN7S1380C43v65Ev();
extern void _ZN7S1380C43v66Ev();
static  VTBL_ENTRY vtc_S1380C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1380C4[0]),
  (VTBL_ENTRY)&_ZN7S1380C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1380C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v66Ev,
};
extern VTBL_ENTRY _ZTI7S1380C4[];
extern  VTBL_ENTRY _ZTV7S1380C4[];
Class_Descriptor cd_S1380C4 = {  "S1380C4", // class name
  0,0,//no base classes
  &(vtc_S1380C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1380C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1380C4),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  S1380C3  : S1380C4 {
  void *s1380c3f0;
  ::S28C31_nt s1380c3f1;
  int s1380c3f2;
  void *s1380c3f3;
  unsigned int s1380c3f4:1;
  ::S28C31_nt s1380c3f5;
  virtual  ~S1380C3(); // _ZN7S1380C3D1Ev
  virtual void  v67(); // _ZN7S1380C33v67Ev
  virtual void  v68(); // _ZN7S1380C33v68Ev
  virtual void  v69(); // _ZN7S1380C33v69Ev
  virtual void  v70(); // _ZN7S1380C33v70Ev
  virtual void  v71(); // _ZN7S1380C33v71Ev
  virtual void  v72(); // _ZN7S1380C33v72Ev
  virtual void  v73(); // _ZN7S1380C33v73Ev
  virtual void  v74(); // _ZN7S1380C33v74Ev
  S1380C3(); // tgen
};
//SIG(-1 S1380C3) C1{ BC2{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 Fp FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC4}


 S1380C3 ::~S1380C3(){ note_dtor("S1380C3", this);}
void  S1380C3 ::v67(){vfunc_called(this, "_ZN7S1380C33v67Ev");}
void  S1380C3 ::v68(){vfunc_called(this, "_ZN7S1380C33v68Ev");}
void  S1380C3 ::v69(){vfunc_called(this, "_ZN7S1380C33v69Ev");}
void  S1380C3 ::v70(){vfunc_called(this, "_ZN7S1380C33v70Ev");}
void  S1380C3 ::v71(){vfunc_called(this, "_ZN7S1380C33v71Ev");}
void  S1380C3 ::v72(){vfunc_called(this, "_ZN7S1380C33v72Ev");}
void  S1380C3 ::v73(){vfunc_called(this, "_ZN7S1380C33v73Ev");}
void  S1380C3 ::v74(){vfunc_called(this, "_ZN7S1380C33v74Ev");}
S1380C3 ::S1380C3(){ note_ctor("S1380C3", this);} // tgen

static void Test_S1380C3()
{
  extern Class_Descriptor cd_S1380C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,26)];
    init_test(&cd_S1380C3, buf);
    S1380C3 *dp, &lv = *(dp=new (buf) S1380C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,100), "sizeof(S1380C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1380C3)");
    check_base_class_offset(lv, (S1380C4*), 0, "S1380C3");
    check_field_offset(lv, s1380c3f0, ABISELECT(96,60), "S1380C3.s1380c3f0");
    check_field_offset(lv, s1380c3f1, ABISELECT(104,64), "S1380C3.s1380c3f1");
    check_field_offset(lv, s1380c3f2, ABISELECT(120,76), "S1380C3.s1380c3f2");
    check_field_offset(lv, s1380c3f3, ABISELECT(128,80), "S1380C3.s1380c3f3");
    set_bf_and_test(lv, s1380c3f4, ABISELECT(136,84), 0, 1, 1, "S1380C3");
    check_field_offset(lv, s1380c3f5, ABISELECT(144,88), "S1380C3.s1380c3f5");
    test_class_info(&lv, &cd_S1380C3);
    dp->~S1380C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1380C3(Test_S1380C3, "S1380C3", ABISELECT(160,100));

#else // __cplusplus

extern void _ZN7S1380C3C1Ev();
extern void _ZN7S1380C3D1Ev();
Name_Map name_map_S1380C3[] = {
  NSPAIR(_ZN7S1380C3C1Ev),
  NSPAIR(_ZN7S1380C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1380C4;
extern VTBL_ENTRY _ZTI7S1380C4[];
extern  VTBL_ENTRY _ZTV7S1380C4[];
static Base_Class bases_S1380C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1380C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1380C3[];
extern void _ZN7S1380C3D1Ev();
extern void _ZN7S1380C3D0Ev();
extern void _ZN7S1380C42v3Ev();
extern void _ZN7S1380C42v4Ev();
extern void _ZN7S1380C42v5Ev();
extern void _ZN7S1380C42v6Ev();
extern void _ZN7S1380C42v7Ev();
extern void _ZN7S1380C42v8Ev();
extern void _ZN7S1380C42v9Ev();
extern void _ZN7S1380C43v10Ev();
extern void _ZN7S1380C43v11Ev();
extern void _ZN7S1380C43v12Ev();
extern void _ZN7S1380C43v13Ev();
extern void _ZN7S1380C43v14Ev();
extern void _ZN7S1380C43v15Ev();
extern void _ZN7S1380C43v16Ev();
extern void _ZN7S1380C43v17Ev();
extern void _ZN7S1380C43v18Ev();
extern void _ZN7S1380C43v19Ev();
extern void _ZN7S1380C43v20Ev();
extern void _ZN7S1380C43v21Ev();
extern void _ZN7S1380C43v22Ev();
extern void _ZN7S1380C43v23Ev();
extern void _ZN7S1380C43v24Ev();
extern void _ZN7S1380C43v25Ev();
extern void _ZN7S1380C43v26Ev();
extern void _ZN7S1380C43v27Ev();
extern void _ZN7S1380C43v28Ev();
extern void _ZN7S1380C43v29Ev();
extern void _ZN7S1380C43v30Ev();
extern void _ZN7S1380C43v31Ev();
extern void _ZN7S1380C43v32Ev();
extern void _ZN7S1380C43v33Ev();
extern void _ZN7S1380C43v34Ev();
extern void _ZN7S1380C43v35Ev();
extern void _ZN7S1380C43v36Ev();
extern void _ZN7S1380C43v37Ev();
extern void _ZN7S1380C43v38Ev();
extern void _ZN7S1380C43v39Ev();
extern void _ZN7S1380C43v40Ev();
extern void _ZN7S1380C43v41Ev();
extern void _ZN7S1380C43v42Ev();
extern void _ZN7S1380C43v43Ev();
extern void _ZN7S1380C43v44Ev();
extern void _ZN7S1380C43v45Ev();
extern void _ZN7S1380C43v46Ev();
extern void _ZN7S1380C43v47Ev();
extern void _ZN7S1380C43v48Ev();
extern void _ZN7S1380C43v49Ev();
extern void _ZN7S1380C43v50Ev();
extern void _ZN7S1380C43v51Ev();
extern void _ZN7S1380C43v52Ev();
extern void _ZN7S1380C43v53Ev();
extern void _ZN7S1380C43v54Ev();
extern void _ZN7S1380C43v55Ev();
extern void _ZN7S1380C43v56Ev();
extern void _ZN7S1380C43v57Ev();
extern void _ZN7S1380C43v58Ev();
extern void _ZN7S1380C43v59Ev();
extern void _ZN7S1380C43v60Ev();
extern void _ZN7S1380C43v61Ev();
extern void _ZN7S1380C43v62Ev();
extern void _ZN7S1380C43v63Ev();
extern void _ZN7S1380C43v64Ev();
extern void _ZN7S1380C43v65Ev();
extern void _ZN7S1380C43v66Ev();
extern void _ZN7S1380C33v67Ev();
extern void _ZN7S1380C33v68Ev();
extern void _ZN7S1380C33v69Ev();
extern void _ZN7S1380C33v70Ev();
extern void _ZN7S1380C33v71Ev();
extern void _ZN7S1380C33v72Ev();
extern void _ZN7S1380C33v73Ev();
extern void _ZN7S1380C33v74Ev();
static  VTBL_ENTRY vtc_S1380C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1380C3[0]),
  (VTBL_ENTRY)&_ZN7S1380C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1380C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1380C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1380C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1380C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1380C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1380C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1380C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1380C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1380C33v74Ev,
};
extern VTBL_ENTRY _ZTI7S1380C3[];
extern  VTBL_ENTRY _ZTV7S1380C3[];
Class_Descriptor cd_S1380C3 = {  "S1380C3", // class name
  bases_S1380C3, 1,
  &(vtc_S1380C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,100), // object size
  NSPAIRA(_ZTI7S1380C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1380C3),76, //virtual function table var
  2, // 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  S1380C2  : S1380C3 {
  void *s1380c2f0;
  ::S48C18 s1380c2f1;
  unsigned int s1380c2f2:1;
  unsigned int s1380c2f3:1;
  unsigned int s1380c2f4:1;
  unsigned int s1380c2f5:1;
  char s1380c2f6;
  virtual  ~S1380C2(); // _ZN7S1380C2D1Ev
  virtual void  v75(); // _ZN7S1380C23v75Ev
  virtual void  v76(); // _ZN7S1380C23v76Ev
  virtual void  v77(); // _ZN7S1380C23v77Ev
  virtual void  v78(); // _ZN7S1380C23v78Ev
  virtual void  v79(); // _ZN7S1380C23v79Ev
  virtual void  v80(); // _ZN7S1380C23v80Ev
  virtual void  v81(); // _ZN7S1380C23v81Ev
  S1380C2(); // tgen
};
//SIG(-1 S1380C2) C1{ BC2{ BC3{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v72 v73 v74 v75 v76 v77 v78 v79 Fp FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC5} vd v1 v2 v3 v4 v5 v6 v7 Fp FC9{ m Fi[3]} Fi:1 Fi:1 Fi:1 Fi:1 Fc}


 S1380C2 ::~S1380C2(){ note_dtor("S1380C2", this);}
void  S1380C2 ::v75(){vfunc_called(this, "_ZN7S1380C23v75Ev");}
void  S1380C2 ::v76(){vfunc_called(this, "_ZN7S1380C23v76Ev");}
void  S1380C2 ::v77(){vfunc_called(this, "_ZN7S1380C23v77Ev");}
void  S1380C2 ::v78(){vfunc_called(this, "_ZN7S1380C23v78Ev");}
void  S1380C2 ::v79(){vfunc_called(this, "_ZN7S1380C23v79Ev");}
void  S1380C2 ::v80(){vfunc_called(this, "_ZN7S1380C23v80Ev");}
void  S1380C2 ::v81(){vfunc_called(this, "_ZN7S1380C23v81Ev");}
S1380C2 ::S1380C2(){ note_ctor("S1380C2", this);} // tgen

static void Test_S1380C2()
{
  extern Class_Descriptor cd_S1380C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,31)];
    init_test(&cd_S1380C2, buf);
    S1380C2 *dp, &lv = *(dp=new (buf) S1380C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,120), "sizeof(S1380C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1380C2)");
    check_base_class_offset(lv, (S1380C4*)(S1380C3*), 0, "S1380C2");
    check_base_class_offset(lv, (S1380C3*), 0, "S1380C2");
    check_field_offset(lv, s1380c2f0, ABISELECT(160,100), "S1380C2.s1380c2f0");
    check_field_offset(lv, s1380c2f1, ABISELECT(168,104), "S1380C2.s1380c2f1");
    set_bf_and_test(lv, s1380c2f2, ABISELECT(180,116), 0, 1, 1, "S1380C2");
    set_bf_and_test(lv, s1380c2f3, ABISELECT(180,116), 1, 1, 1, "S1380C2");
    set_bf_and_test(lv, s1380c2f4, ABISELECT(180,116), 2, 1, 1, "S1380C2");
    set_bf_and_test(lv, s1380c2f5, ABISELECT(180,116), 3, 1, 1, "S1380C2");
    check_field_offset(lv, s1380c2f6, ABISELECT(181,117), "S1380C2.s1380c2f6");
    test_class_info(&lv, &cd_S1380C2);
    dp->~S1380C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1380C2(Test_S1380C2, "S1380C2", ABISELECT(184,120));

#else // __cplusplus

extern void _ZN7S1380C2C1Ev();
extern void _ZN7S1380C2D1Ev();
Name_Map name_map_S1380C2[] = {
  NSPAIR(_ZN7S1380C2C1Ev),
  NSPAIR(_ZN7S1380C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1380C4;
extern VTBL_ENTRY _ZTI7S1380C4[];
extern  VTBL_ENTRY _ZTV7S1380C4[];
extern Class_Descriptor cd_S1380C3;
extern VTBL_ENTRY _ZTI7S1380C3[];
extern  VTBL_ENTRY _ZTV7S1380C3[];
static Base_Class bases_S1380C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1380C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1380C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1380C2[];
extern void _ZN7S1380C2D1Ev();
extern void _ZN7S1380C2D0Ev();
extern void _ZN7S1380C42v3Ev();
extern void _ZN7S1380C42v4Ev();
extern void _ZN7S1380C42v5Ev();
extern void _ZN7S1380C42v6Ev();
extern void _ZN7S1380C42v7Ev();
extern void _ZN7S1380C42v8Ev();
extern void _ZN7S1380C42v9Ev();
extern void _ZN7S1380C43v10Ev();
extern void _ZN7S1380C43v11Ev();
extern void _ZN7S1380C43v12Ev();
extern void _ZN7S1380C43v13Ev();
extern void _ZN7S1380C43v14Ev();
extern void _ZN7S1380C43v15Ev();
extern void _ZN7S1380C43v16Ev();
extern void _ZN7S1380C43v17Ev();
extern void _ZN7S1380C43v18Ev();
extern void _ZN7S1380C43v19Ev();
extern void _ZN7S1380C43v20Ev();
extern void _ZN7S1380C43v21Ev();
extern void _ZN7S1380C43v22Ev();
extern void _ZN7S1380C43v23Ev();
extern void _ZN7S1380C43v24Ev();
extern void _ZN7S1380C43v25Ev();
extern void _ZN7S1380C43v26Ev();
extern void _ZN7S1380C43v27Ev();
extern void _ZN7S1380C43v28Ev();
extern void _ZN7S1380C43v29Ev();
extern void _ZN7S1380C43v30Ev();
extern void _ZN7S1380C43v31Ev();
extern void _ZN7S1380C43v32Ev();
extern void _ZN7S1380C43v33Ev();
extern void _ZN7S1380C43v34Ev();
extern void _ZN7S1380C43v35Ev();
extern void _ZN7S1380C43v36Ev();
extern void _ZN7S1380C43v37Ev();
extern void _ZN7S1380C43v38Ev();
extern void _ZN7S1380C43v39Ev();
extern void _ZN7S1380C43v40Ev();
extern void _ZN7S1380C43v41Ev();
extern void _ZN7S1380C43v42Ev();
extern void _ZN7S1380C43v43Ev();
extern void _ZN7S1380C43v44Ev();
extern void _ZN7S1380C43v45Ev();
extern void _ZN7S1380C43v46Ev();
extern void _ZN7S1380C43v47Ev();
extern void _ZN7S1380C43v48Ev();
extern void _ZN7S1380C43v49Ev();
extern void _ZN7S1380C43v50Ev();
extern void _ZN7S1380C43v51Ev();
extern void _ZN7S1380C43v52Ev();
extern void _ZN7S1380C43v53Ev();
extern void _ZN7S1380C43v54Ev();
extern void _ZN7S1380C43v55Ev();
extern void _ZN7S1380C43v56Ev();
extern void _ZN7S1380C43v57Ev();
extern void _ZN7S1380C43v58Ev();
extern void _ZN7S1380C43v59Ev();
extern void _ZN7S1380C43v60Ev();
extern void _ZN7S1380C43v61Ev();
extern void _ZN7S1380C43v62Ev();
extern void _ZN7S1380C43v63Ev();
extern void _ZN7S1380C43v64Ev();
extern void _ZN7S1380C43v65Ev();
extern void _ZN7S1380C43v66Ev();
extern void _ZN7S1380C33v67Ev();
extern void _ZN7S1380C33v68Ev();
extern void _ZN7S1380C33v69Ev();
extern void _ZN7S1380C33v70Ev();
extern void _ZN7S1380C33v71Ev();
extern void _ZN7S1380C33v72Ev();
extern void _ZN7S1380C33v73Ev();
extern void _ZN7S1380C33v74Ev();
extern void _ZN7S1380C23v75Ev();
extern void _ZN7S1380C23v76Ev();
extern void _ZN7S1380C23v77Ev();
extern void _ZN7S1380C23v78Ev();
extern void _ZN7S1380C23v79Ev();
extern void _ZN7S1380C23v80Ev();
extern void _ZN7S1380C23v81Ev();
static  VTBL_ENTRY vtc_S1380C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1380C2[0]),
  (VTBL_ENTRY)&_ZN7S1380C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1380C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1380C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1380C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1380C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1380C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1380C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1380C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1380C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1380C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1380C23v75Ev,
  (VTBL_ENTRY)&_ZN7S1380C23v76Ev,
  (VTBL_ENTRY)&_ZN7S1380C23v77Ev,
  (VTBL_ENTRY)&_ZN7S1380C23v78Ev,
  (VTBL_ENTRY)&_ZN7S1380C23v79Ev,
  (VTBL_ENTRY)&_ZN7S1380C23v80Ev,
  (VTBL_ENTRY)&_ZN7S1380C23v81Ev,
};
extern VTBL_ENTRY _ZTI7S1380C2[];
extern  VTBL_ENTRY _ZTV7S1380C2[];
Class_Descriptor cd_S1380C2 = {  "S1380C2", // class name
  bases_S1380C2, 2,
  &(vtc_S1380C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,120), // object size
  NSPAIRA(_ZTI7S1380C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1380C2),83, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


 S1380C1 ::~S1380C1(){ note_dtor("S1380C1", this);}
void  S1380C1 ::v1(){vfunc_called(this, "_ZN7S1380C12v1Ev");}
void  S1380C1 ::v2(){vfunc_called(this, "_ZN7S1380C12v2Ev");}
S1380C1 ::S1380C1(){ note_ctor("S1380C1", this);} // tgen

static void Test_S1380C1()
{
  extern Class_Descriptor cd_S1380C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,31)];
    init_test(&cd_S1380C1, buf);
    S1380C1 *dp, &lv = *(dp=new (buf) S1380C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,120), "sizeof(S1380C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1380C1)");
    check_base_class_offset(lv, (S1380C4*)(S1380C3*)(S1380C2*), 0, "S1380C1");
    check_base_class_offset(lv, (S1380C3*)(S1380C2*), 0, "S1380C1");
    check_base_class_offset(lv, (S1380C2*), 0, "S1380C1");
    test_class_info(&lv, &cd_S1380C1);
    dp->~S1380C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1380C1(Test_S1380C1, "S1380C1", ABISELECT(184,120));

#else // __cplusplus

extern void _ZN7S1380C1C1Ev();
extern void _ZN7S1380C1D1Ev();
Name_Map name_map_S1380C1[] = {
  NSPAIR(_ZN7S1380C1C1Ev),
  NSPAIR(_ZN7S1380C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1380C4;
extern VTBL_ENTRY _ZTI7S1380C4[];
extern  VTBL_ENTRY _ZTV7S1380C4[];
extern Class_Descriptor cd_S1380C3;
extern VTBL_ENTRY _ZTI7S1380C3[];
extern  VTBL_ENTRY _ZTV7S1380C3[];
extern Class_Descriptor cd_S1380C2;
extern VTBL_ENTRY _ZTI7S1380C2[];
extern  VTBL_ENTRY _ZTV7S1380C2[];
static Base_Class bases_S1380C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1380C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1380C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1380C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1380C1[];
extern void _ZN7S1380C1D1Ev();
extern void _ZN7S1380C1D0Ev();
extern void _ZN7S1380C42v3Ev();
extern void _ZN7S1380C42v4Ev();
extern void _ZN7S1380C42v5Ev();
extern void _ZN7S1380C42v6Ev();
extern void _ZN7S1380C42v7Ev();
extern void _ZN7S1380C42v8Ev();
extern void _ZN7S1380C42v9Ev();
extern void _ZN7S1380C43v10Ev();
extern void _ZN7S1380C43v11Ev();
extern void _ZN7S1380C43v12Ev();
extern void _ZN7S1380C43v13Ev();
extern void _ZN7S1380C43v14Ev();
extern void _ZN7S1380C43v15Ev();
extern void _ZN7S1380C43v16Ev();
extern void _ZN7S1380C43v17Ev();
extern void _ZN7S1380C43v18Ev();
extern void _ZN7S1380C43v19Ev();
extern void _ZN7S1380C43v20Ev();
extern void _ZN7S1380C43v21Ev();
extern void _ZN7S1380C43v22Ev();
extern void _ZN7S1380C43v23Ev();
extern void _ZN7S1380C43v24Ev();
extern void _ZN7S1380C43v25Ev();
extern void _ZN7S1380C43v26Ev();
extern void _ZN7S1380C43v27Ev();
extern void _ZN7S1380C43v28Ev();
extern void _ZN7S1380C43v29Ev();
extern void _ZN7S1380C43v30Ev();
extern void _ZN7S1380C43v31Ev();
extern void _ZN7S1380C43v32Ev();
extern void _ZN7S1380C43v33Ev();
extern void _ZN7S1380C43v34Ev();
extern void _ZN7S1380C43v35Ev();
extern void _ZN7S1380C43v36Ev();
extern void _ZN7S1380C43v37Ev();
extern void _ZN7S1380C43v38Ev();
extern void _ZN7S1380C43v39Ev();
extern void _ZN7S1380C43v40Ev();
extern void _ZN7S1380C43v41Ev();
extern void _ZN7S1380C43v42Ev();
extern void _ZN7S1380C43v43Ev();
extern void _ZN7S1380C43v44Ev();
extern void _ZN7S1380C43v45Ev();
extern void _ZN7S1380C43v46Ev();
extern void _ZN7S1380C43v47Ev();
extern void _ZN7S1380C43v48Ev();
extern void _ZN7S1380C43v49Ev();
extern void _ZN7S1380C43v50Ev();
extern void _ZN7S1380C43v51Ev();
extern void _ZN7S1380C43v52Ev();
extern void _ZN7S1380C43v53Ev();
extern void _ZN7S1380C43v54Ev();
extern void _ZN7S1380C43v55Ev();
extern void _ZN7S1380C43v56Ev();
extern void _ZN7S1380C43v57Ev();
extern void _ZN7S1380C43v58Ev();
extern void _ZN7S1380C43v59Ev();
extern void _ZN7S1380C43v60Ev();
extern void _ZN7S1380C43v61Ev();
extern void _ZN7S1380C43v62Ev();
extern void _ZN7S1380C43v63Ev();
extern void _ZN7S1380C43v64Ev();
extern void _ZN7S1380C43v65Ev();
extern void _ZN7S1380C43v66Ev();
extern void _ZN7S1380C33v67Ev();
extern void _ZN7S1380C33v68Ev();
extern void _ZN7S1380C33v69Ev();
extern void _ZN7S1380C33v70Ev();
extern void _ZN7S1380C33v71Ev();
extern void _ZN7S1380C33v72Ev();
extern void _ZN7S1380C33v73Ev();
extern void _ZN7S1380C33v74Ev();
extern void _ZN7S1380C23v75Ev();
extern void _ZN7S1380C23v76Ev();
extern void _ZN7S1380C23v77Ev();
extern void _ZN7S1380C23v78Ev();
extern void _ZN7S1380C23v79Ev();
extern void _ZN7S1380C23v80Ev();
extern void _ZN7S1380C23v81Ev();
extern void _ZN7S1380C12v1Ev();
extern void _ZN7S1380C12v2Ev();
static  VTBL_ENTRY vtc_S1380C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1380C1[0]),
  (VTBL_ENTRY)&_ZN7S1380C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1380C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1380C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1380C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1380C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1380C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1380C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1380C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1380C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1380C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1380C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1380C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1380C23v75Ev,
  (VTBL_ENTRY)&_ZN7S1380C23v76Ev,
  (VTBL_ENTRY)&_ZN7S1380C23v77Ev,
  (VTBL_ENTRY)&_ZN7S1380C23v78Ev,
  (VTBL_ENTRY)&_ZN7S1380C23v79Ev,
  (VTBL_ENTRY)&_ZN7S1380C23v80Ev,
  (VTBL_ENTRY)&_ZN7S1380C23v81Ev,
  (VTBL_ENTRY)&_ZN7S1380C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1380C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S1380C1[];
extern  VTBL_ENTRY _ZTV7S1380C1[];
Class_Descriptor cd_S1380C1 = {  "S1380C1", // class name
  bases_S1380C1, 3,
  &(vtc_S1380C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,120), // object size
  NSPAIRA(_ZTI7S1380C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1380C1),85, //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  S20999C3  : virtual S3461C5_nt , S731C17_nt {
  virtual void  v1(); // _ZN8S20999C32v1Ev
  ~S20999C3(); // tgen
  S20999C3(); // tgen
};
//SIG(-1 S20999C3) C1{ VBC2{ m FL} BC3{ m} v1}


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

static void Test_S20999C3()
{
  extern Class_Descriptor cd_S20999C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20999C3, buf);
    S20999C3 *dp, &lv = *(dp=new (buf) S20999C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20999C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20999C3)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S20999C3");
    check_base_class_offset(lv, (S731C17_nt*), 0, "S20999C3");
    test_class_info(&lv, &cd_S20999C3);
    dp->~S20999C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20999C3(Test_S20999C3, "S20999C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S20999C3C1Ev();
extern void _ZN8S20999C3D1Ev();
Name_Map name_map_S20999C3[] = {
  NSPAIR(_ZN8S20999C3C1Ev),
  NSPAIR(_ZN8S20999C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S20999C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20999C3[];
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY vtc_S20999C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern VTBL_ENTRY _ZTV8S20999C3[];
static  VTT_ENTRY vtt_S20999C3[] = {
  {&(_ZTV8S20999C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
Class_Descriptor cd_S20999C3 = {  "S20999C3", // class name
  bases_S20999C3, 2,
  &(vtc_S20999C3[0]), // expected_vtbl_contents
  &(vtt_S20999C3[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S20999C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20999C3),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20999C3),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  S20999C7  : S20999C3 {
  ~S20999C7(); // tgen
  S20999C7(); // tgen
};
//SIG(-1 S20999C7) C1{ BC2{ VBC3{ m FL} BC4{ m} v1}}


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

static void Test_S20999C7()
{
  extern Class_Descriptor cd_S20999C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20999C7, buf);
    S20999C7 *dp, &lv = *(dp=new (buf) S20999C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20999C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20999C7)");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*), ABISELECT(8,4), "S20999C7");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*), 0, "S20999C7");
    check_base_class_offset(lv, (S20999C3*), 0, "S20999C7");
    test_class_info(&lv, &cd_S20999C7);
    dp->~S20999C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20999C7(Test_S20999C7, "S20999C7", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S20999C7C1Ev();
extern void _ZN8S20999C7D1Ev();
Name_Map name_map_S20999C7[] = {
  NSPAIR(_ZN8S20999C7C1Ev),
  NSPAIR(_ZN8S20999C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
static Base_Class bases_S20999C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20999C3,    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 _ZTI8S20999C7[];
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY vtc_S20999C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern VTBL_ENTRY _ZTV8S20999C7[];
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__8S20999C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
static  VTT_ENTRY vtt_S20999C7[] = {
  {&(_ZTV8S20999C7[3]),  3,4},
  {&(_tg__ZTV8S20999C3__8S20999C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
Class_Descriptor cd_S20999C7 = {  "S20999C7", // class name
  bases_S20999C7, 3,
  &(vtc_S20999C7[0]), // expected_vtbl_contents
  &(vtt_S20999C7[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S20999C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20999C7),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20999C7),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  S20999C6  : S3461C5_nt , virtual S731C17_nt , S20999C7 {
  virtual  ~S20999C6(); // _ZN8S20999C6D2Ev
  virtual void  v2(); // _ZN8S20999C62v2Ev
  S20999C6(); // tgen
};
//SIG(-1 S20999C6) C1{ BC2{ m FL} VBC3{ m} BC4{ BC5{ VBC2 BC3 v2}} vd v1}


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

static void Test_S20999C6()
{
  extern Class_Descriptor cd_S20999C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S20999C6, buf);
    S20999C6 *dp, &lv = *(dp=new (buf) S20999C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S20999C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20999C6)");
    /*is_ambiguous_... S20999C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S20999C6");
    /*is_ambiguous_... S20999C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(16,12), "S20999C6");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*), ABISELECT(16,12), "S20999C6");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*), 0, "S20999C6");
    check_base_class_offset(lv, (S20999C3*)(S20999C7*), 0, "S20999C6");
    check_base_class_offset(lv, (S20999C7*), 0, "S20999C6");
    test_class_info(&lv, &cd_S20999C6);
    dp->~S20999C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20999C6(Test_S20999C6, "S20999C6", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN8S20999C6C1Ev();
extern void _ZN8S20999C6D2Ev();
Name_Map name_map_S20999C6[] = {
  NSPAIR(_ZN8S20999C6C1Ev),
  NSPAIR(_ZN8S20999C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
static Base_Class bases_S20999C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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_S3461C5_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
    4, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20999C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20999C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20999C6[];
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C6D1Ev();
extern void _ZN8S20999C6D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY vtc_S20999C6[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C6[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern VTBL_ENTRY _ZTV8S20999C6[];
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C7__8S20999C6[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C7__8S20999C6[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
static  VTT_ENTRY vtt_S20999C6[] = {
  {&(_ZTV8S20999C6[4]),  4,8},
  {&(_tg__ZTV8S20999C7__8S20999C6[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C7__8S20999C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20999C6[];
extern  VTBL_ENTRY _ZTV8S20999C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C6[];
Class_Descriptor cd_S20999C6 = {  "S20999C6", // class name
  bases_S20999C6, 6,
  &(vtc_S20999C6[0]), // expected_vtbl_contents
  &(vtt_S20999C6[0]), // expected_vtt_contents
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI8S20999C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20999C6),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20999C6),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  S20999C2  : virtual S20999C3 , S20999C6 {
  virtual  ~S20999C2(); // _ZN8S20999C2D2Ev
  virtual void  v3(); // _ZN8S20999C22v3Ev
  S20999C2(); // tgen
};
//SIG(-1 S20999C2) C1{ VBC2{ VBC3{ m FL} BC4{ m} v2} BC5{ BC3 VBC4 BC6{ BC2} vd v3} vd v1}


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

static void Test_S20999C2()
{
  extern Class_Descriptor cd_S20999C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S20999C2, buf);
    S20999C2 *dp, &lv = *(dp=new (buf) S20999C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S20999C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20999C2)");
    /*is_ambiguous_... S20999C2::S20999C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*), ABISELECT(24,16), "S20999C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*)(S20999C6*), ABISELECT(24,16), "S20999C2");
    /*is_ambiguous_... S20999C2::S20999C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*), ABISELECT(16,12), "S20999C2");
    /*is_ambiguous_... S20999C2::S20999C3 */ AMB_check_base_class_offset(lv, (S20999C3*), ABISELECT(16,12), "S20999C2");
    /*is_ambiguous_... S20999C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C6*), ABISELECT(8,4), "S20999C2");
    /*is_ambiguous_... S20999C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C6*), ABISELECT(32,24), "S20999C2");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*)(S20999C6*), 0, "S20999C2");
    check_base_class_offset(lv, (S20999C3*)(S20999C7*)(S20999C6*), 0, "S20999C2");
    check_base_class_offset(lv, (S20999C7*)(S20999C6*), 0, "S20999C2");
    check_base_class_offset(lv, (S20999C6*), 0, "S20999C2");
    test_class_info(&lv, &cd_S20999C2);
    dp->~S20999C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20999C2(Test_S20999C2, "S20999C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN8S20999C2C1Ev();
extern void _ZN8S20999C2D2Ev();
Name_Map name_map_S20999C2[] = {
  NSPAIR(_ZN8S20999C2C1Ev),
  NSPAIR(_ZN8S20999C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C6;
extern VTBL_ENTRY _ZTI8S20999C6[];
extern  VTBL_ENTRY _ZTV8S20999C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C6[];
static Base_Class bases_S20999C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(16,12), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20999C3,    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
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20999C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20999C6,    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 _ZTI8S20999C2[];
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C2D1Ev();
extern void _ZN8S20999C2D0Ev();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C22v3Ev();
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY vtc_S20999C2[] = {
  ABISELECT(16,12),
  ABISELECT(32,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C2[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20999C22v3Ev,
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20999C2[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern VTBL_ENTRY _ZTV8S20999C2[];
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C6D1Ev();
extern void _ZN8S20999C6D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C6__8S20999C2[] = {
  ABISELECT(32,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C6[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C78S20999C6__8S20999C2[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C78S20999C6__A1__8S20999C2[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__8S20999C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
static  VTT_ENTRY vtt_S20999C2[] = {
  {&(_ZTV8S20999C2[5]),  5,15},
  {&(_tg__ZTV8S20999C6__8S20999C2[4]),  4,8},
  {&(_tg__ZTV8S20999C78S20999C6__8S20999C2[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C78S20999C6__A1__8S20999C2[3]),  3,4},
  {&(_ZTV8S20999C2[14]),  14,15},
  {&(_tg__ZTV8S20999C3__8S20999C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20999C2[];
extern  VTBL_ENTRY _ZTV8S20999C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C2[];
Class_Descriptor cd_S20999C2 = {  "S20999C2", // class name
  bases_S20999C2, 9,
  &(vtc_S20999C2[0]), // expected_vtbl_contents
  &(vtt_S20999C2[0]), // expected_vtt_contents
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI8S20999C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20999C2),15, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20999C2),6, //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  S20999C13  : virtual S3461C5_nt , S20999C3 , S731C17_nt {
  ~S20999C13(); // tgen
  S20999C13(); // tgen
};
//SIG(-1 S20999C13) C1{ VBC2{ m FL} BC3{ VBC2 BC4{ m} v1} BC4}


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

static void Test_S20999C13()
{
  extern Class_Descriptor cd_S20999C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20999C13, buf);
    S20999C13 *dp, &lv = *(dp=new (buf) S20999C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20999C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20999C13)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S20999C13");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*), ABISELECT(8,4), "S20999C13");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*), 0, "S20999C13");
    check_base_class_offset(lv, (S20999C3*), 0, "S20999C13");
    /*is_ambiguous_... S20999C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(8,4), "S20999C13");
    test_class_info(&lv, &cd_S20999C13);
    dp->~S20999C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20999C13(Test_S20999C13, "S20999C13", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN9S20999C13C1Ev();
extern void _ZN9S20999C13D1Ev();
Name_Map name_map_S20999C13[] = {
  NSPAIR(_ZN9S20999C13C1Ev),
  NSPAIR(_ZN9S20999C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S20999C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20999C3,    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_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20999C13[];
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY vtc_S20999C13[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C13[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern VTBL_ENTRY _ZTV9S20999C13[];
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__9S20999C13[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
static  VTT_ENTRY vtt_S20999C13[] = {
  {&(_ZTV9S20999C13[3]),  3,4},
  {&(_tg__ZTV8S20999C3__9S20999C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20999C13[];
extern  VTBL_ENTRY _ZTV9S20999C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C13[];
Class_Descriptor cd_S20999C13 = {  "S20999C13", // class name
  bases_S20999C13, 4,
  &(vtc_S20999C13[0]), // expected_vtbl_contents
  &(vtt_S20999C13[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI9S20999C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20999C13),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20999C13),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  S20999C12  : virtual S3461C5_nt , S20999C13 , virtual S20999C3 {
  virtual void  v4(); // _ZN9S20999C122v4Ev
  ~S20999C12(); // tgen
  S20999C12(); // tgen
};
//SIG(-1 S20999C12) C1{ VBC2{ m FL} BC3{ VBC2 BC4{ VBC2 BC5{ m} v2} BC5} VBC4 v1}


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

static void Test_S20999C12()
{
  extern Class_Descriptor cd_S20999C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20999C12, buf);
    S20999C12 *dp, &lv = *(dp=new (buf) S20999C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20999C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20999C12)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(16,8), "S20999C12");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C13*), ABISELECT(16,8), "S20999C12");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C13*), ABISELECT(16,8), "S20999C12");
    /*is_ambiguous_... S20999C12::S20999C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*), ABISELECT(16,8), "S20999C12");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C13*), 0, "S20999C12");
    check_base_class_offset(lv, (S20999C3*)(S20999C13*), 0, "S20999C12");
    /*is_ambiguous_... S20999C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C13*), ABISELECT(8,4), "S20999C12");
    check_base_class_offset(lv, (S20999C13*), 0, "S20999C12");
    /*is_ambiguous_... S20999C12::S20999C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*), ABISELECT(24,16), "S20999C12");
    /*is_ambiguous_... S20999C12::S20999C3 */ AMB_check_base_class_offset(lv, (S20999C3*), ABISELECT(24,16), "S20999C12");
    test_class_info(&lv, &cd_S20999C12);
    dp->~S20999C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20999C12(Test_S20999C12, "S20999C12", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN9S20999C12C1Ev();
extern void _ZN9S20999C12D1Ev();
Name_Map name_map_S20999C12[] = {
  NSPAIR(_ZN9S20999C12C1Ev),
  NSPAIR(_ZN9S20999C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C13;
extern VTBL_ENTRY _ZTI9S20999C13[];
extern  VTBL_ENTRY _ZTV9S20999C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
static Base_Class bases_S20999C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20999C3,    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_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20999C13,    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_S731C17_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_S20999C3,    ABISELECT(24,16), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20999C12[];
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY vtc_S20999C12[] = {
  ABISELECT(24,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C12[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
  0,
  -8,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20999C12[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern VTBL_ENTRY _ZTV9S20999C12[];
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C13__9S20999C12[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C13[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C13__9S20999C12[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A1__9S20999C12[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
static  VTT_ENTRY vtt_S20999C12[] = {
  {&(_ZTV9S20999C12[4]),  4,11},
  {&(_tg__ZTV9S20999C13__9S20999C12[3]),  3,4},
  {&(_tg__ZTV8S20999C39S20999C13__9S20999C12[3]),  3,4},
  {&(_ZTV9S20999C12[10]),  10,11},
  {&(_tg__ZTV8S20999C3__A1__9S20999C12[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20999C12[];
extern  VTBL_ENTRY _ZTV9S20999C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C12[];
Class_Descriptor cd_S20999C12 = {  "S20999C12", // class name
  bases_S20999C12, 7,
  &(vtc_S20999C12[0]), // expected_vtbl_contents
  &(vtt_S20999C12[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI9S20999C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20999C12),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20999C12),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  S20999C14  : S3461C5_nt , virtual S20999C3 , S731C17_nt {
  virtual  ~S20999C14(); // _ZN9S20999C14D2Ev
  S20999C14(); // tgen
};
//SIG(-1 S20999C14) C1{ BC2{ m FL} VBC3{ VBC2 BC4{ m} v1} BC4 vd}


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

static void Test_S20999C14()
{
  extern Class_Descriptor cd_S20999C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S20999C14, buf);
    S20999C14 *dp, &lv = *(dp=new (buf) S20999C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S20999C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20999C14)");
    /*is_ambiguous_... S20999C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S20999C14");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*), ABISELECT(16,12), "S20999C14");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*), 0, "S20999C14");
    check_base_class_offset(lv, (S20999C3*), 0, "S20999C14");
    /*is_ambiguous_... S20999C14::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(16,12), "S20999C14");
    test_class_info(&lv, &cd_S20999C14);
    dp->~S20999C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20999C14(Test_S20999C14, "S20999C14", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN9S20999C14C1Ev();
extern void _ZN9S20999C14D2Ev();
Name_Map name_map_S20999C14[] = {
  NSPAIR(_ZN9S20999C14C1Ev),
  NSPAIR(_ZN9S20999C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S20999C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20999C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20999C14[];
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C14D1Ev();
extern void _ZN9S20999C14D0Ev();
static  VTBL_ENTRY vtc_S20999C14[] = {
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C14[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D0Ev,
};
extern VTBL_ENTRY _ZTV9S20999C14[];
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__9S20999C14[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
static  VTT_ENTRY vtt_S20999C14[] = {
  {&(_ZTV9S20999C14[5]),  5,8},
  {&(_ZTV9S20999C14[5]),  5,8},
  {&(_tg__ZTV8S20999C3__9S20999C14[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20999C14[];
extern  VTBL_ENTRY _ZTV9S20999C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C14[];
Class_Descriptor cd_S20999C14 = {  "S20999C14", // class name
  bases_S20999C14, 5,
  &(vtc_S20999C14[0]), // expected_vtbl_contents
  &(vtt_S20999C14[0]), // expected_vtt_contents
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI9S20999C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20999C14),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20999C14),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  S20999C10  : S3461C5_nt , S20999C6 , S28C52_nt , virtual S20999C12 , virtual S20999C14 {
  virtual  ~S20999C10(); // _ZN9S20999C10D2Ev
  S20999C10(); // tgen
};
//SIG(-1 S20999C10) C1{ BC2{ m FL} BC3{ BC2 VBC4{ m} BC5{ BC6{ VBC2 BC4 v1}} vd v2} BC7{ m} VBC8{ VBC2 BC9{ VBC2 BC6 BC4} VBC6 v3} VBC10{ BC2 VBC6 BC4 vd} vd}


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

static void Test_S20999C10()
{
  extern Class_Descriptor cd_S20999C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,14)];
    init_test(&cd_S20999C10, buf);
    S20999C10 *dp, &lv = *(dp=new (buf) S20999C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S20999C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20999C10)");
    /*is_ambiguous_... S20999C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(16,12), "S20999C10");
    /*is_ambiguous_... S20999C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C6*), ABISELECT(8,4), "S20999C10");
    /*is_ambiguous_... S20999C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C6*), ABISELECT(24,20), "S20999C10");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*)(S20999C6*), ABISELECT(24,20), "S20999C10");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C12*), ABISELECT(24,20), "S20999C10");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C13*)(S20999C12*), ABISELECT(24,20), "S20999C10");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C13*)(S20999C12*), ABISELECT(24,20), "S20999C10");
    /*is_ambiguous_... S20999C10::S20999C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*), ABISELECT(24,20), "S20999C10");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*)(S20999C6*), 0, "S20999C10");
    check_base_class_offset(lv, (S20999C3*)(S20999C7*)(S20999C6*), 0, "S20999C10");
    check_base_class_offset(lv, (S20999C7*)(S20999C6*), 0, "S20999C10");
    check_base_class_offset(lv, (S20999C6*), 0, "S20999C10");
    check_base_class_offset(lv, (S28C52_nt*), 0, "S20999C10");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C13*)(S20999C12*), ABISELECT(32,28), "S20999C10");
    check_base_class_offset(lv, (S20999C3*)(S20999C13*)(S20999C12*), ABISELECT(32,28), "S20999C10");
    /*is_ambiguous_... S20999C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C13*)(S20999C12*), ABISELECT(40,32), "S20999C10");
    check_base_class_offset(lv, (S20999C13*)(S20999C12*), ABISELECT(32,28), "S20999C10");
    /*is_ambiguous_... S20999C10::S20999C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*), ABISELECT(48,36), "S20999C10");
    /*is_ambiguous_... S20999C12::S20999C3 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C12*), ABISELECT(48,36), "S20999C10");
    check_base_class_offset(lv, (S20999C3*)(S20999C14*), ABISELECT(48,36), "S20999C10");
    check_base_class_offset(lv, (S20999C12*), ABISELECT(32,28), "S20999C10");
    /*is_ambiguous_... S20999C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C14*), ABISELECT(56,40), "S20999C10");
    /*is_ambiguous_... S20999C14::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C14*), ABISELECT(64,48), "S20999C10");
    check_base_class_offset(lv, (S20999C14*), ABISELECT(48,36), "S20999C10");
    test_class_info(&lv, &cd_S20999C10);
    dp->~S20999C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20999C10(Test_S20999C10, "S20999C10", ABISELECT(72,52));

#else // __cplusplus

extern void _ZN9S20999C10C1Ev();
extern void _ZN9S20999C10D2Ev();
Name_Map name_map_S20999C10[] = {
  NSPAIR(_ZN9S20999C10C1Ev),
  NSPAIR(_ZN9S20999C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C6;
extern VTBL_ENTRY _ZTI8S20999C6[];
extern  VTBL_ENTRY _ZTV8S20999C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C13;
extern VTBL_ENTRY _ZTI9S20999C13[];
extern  VTBL_ENTRY _ZTV9S20999C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C12;
extern VTBL_ENTRY _ZTI9S20999C12[];
extern  VTBL_ENTRY _ZTV9S20999C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C12[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C14;
extern VTBL_ENTRY _ZTI9S20999C14[];
extern  VTBL_ENTRY _ZTV9S20999C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C14[];
static Base_Class bases_S20999C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20999C3,    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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20999C7,    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_S20999C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S28C52_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(32,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20999C13,    ABISELECT(32,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
    3, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    14, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(48,36), //bcp->offset
    -1, //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
    1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20999C12,    ABISELECT(32,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_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
    18, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    18, //immediately_derived
  0, 0},
  {&cd_S20999C14,    ABISELECT(48,36), //bcp->offset
    19, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20999C10[];
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C10D1Ev();
extern void _ZN9S20999C10D0Ev();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20999C10D1Ev,_ZTv0_n24_N9S20999C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S20999C10D1Ev,_ZThn36_N9S20999C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20999C10D0Ev,_ZTv0_n24_N9S20999C10D0Ev)();
extern void ABISELECT(_ZThn48_N9S20999C10D0Ev,_ZThn36_N9S20999C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20999C10[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C10[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C10D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI9S20999C10[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
  ABISELECT(-48,-36),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S20999C10[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C10D1Ev,_ZTv0_n24_N9S20999C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C10D0Ev,_ZTv0_n24_N9S20999C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S20999C10[];
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C6D1Ev();
extern void _ZN8S20999C6D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C6__9S20999C10[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C6[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C78S20999C6__9S20999C10[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C78S20999C6__9S20999C10[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C12__9S20999C10[] = {
  ABISELECT(16,8),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C12[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C139S20999C12__9S20999C10[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C13[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C139S20999C12__A1__9S20999C10[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A1__9S20999C12__9S20999C10[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20999C12[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A2__9S20999C10[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C14D1Ev();
extern void _ZN9S20999C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C14__9S20999C10[] = {
  0,
  0,
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C14[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D0Ev,
};
static  VTT_ENTRY vtt_S20999C10[] = {
  {&(_ZTV9S20999C10[7]),  7,28},
  {&(_tg__ZTV8S20999C6__9S20999C10[4]),  4,8},
  {&(_tg__ZTV8S20999C78S20999C6__9S20999C10[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C78S20999C6__9S20999C10[3]),  3,4},
  {&(_ZTV9S20999C10[17]),  17,28},
  {&(_ZTV9S20999C10[25]),  25,28},
  {&(_ZTV9S20999C10[25]),  25,28},
  {&(_tg__ZTV9S20999C12__9S20999C10[4]),  4,6},
  {&(_tg__ZTV9S20999C139S20999C12__9S20999C10[3]),  3,4},
  {&(_tg__ZTV8S20999C39S20999C139S20999C12__A1__9S20999C10[3]),  3,4},
  {&(_tg__ZTV8S20999C3__A1__9S20999C12__9S20999C10[4]),  4,5},
  {&(_tg__ZTV8S20999C3__A2__9S20999C10[3]),  3,4},
  {&(_tg__ZTV9S20999C14__9S20999C10[5]),  5,8},
  {&(_tg__ZTV9S20999C14__9S20999C10[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20999C10[];
extern  VTBL_ENTRY _ZTV9S20999C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C10[];
static VTBL_ENTRY alt_thunk_names15[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C10D0Ev,_ZTv0_n24_N9S20999C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20999C10D0Ev,_ZThn36_N9S20999C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C10D1Ev,_ZTv0_n24_N9S20999C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20999C10D1Ev,_ZThn36_N9S20999C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20999C10 = {  "S20999C10", // class name
  bases_S20999C10, 19,
  &(vtc_S20999C10[0]), // expected_vtbl_contents
  &(vtt_S20999C10[0]), // expected_vtt_contents
  ABISELECT(72,52), // object size
  NSPAIRA(_ZTI9S20999C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20999C10),28, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20999C10),14, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names15,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20999C15  : virtual S20999C7 {
  int s20999c15f0;
  ~S20999C15(); // tgen
  S20999C15(); // tgen
};
//SIG(-1 S20999C15) C1{ VBC2{ BC3{ VBC4{ m FL} BC5{ m} v1}} Fi}


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

static void Test_S20999C15()
{
  extern Class_Descriptor cd_S20999C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20999C15, buf);
    S20999C15 *dp, &lv = *(dp=new (buf) S20999C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20999C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20999C15)");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*), ABISELECT(16,8), "S20999C15");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*), 0, "S20999C15");
    check_base_class_offset(lv, (S20999C3*)(S20999C7*), 0, "S20999C15");
    check_base_class_offset(lv, (S20999C7*), 0, "S20999C15");
    check_field_offset(lv, s20999c15f0, ABISELECT(8,4), "S20999C15.s20999c15f0");
    test_class_info(&lv, &cd_S20999C15);
    dp->~S20999C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20999C15(Test_S20999C15, "S20999C15", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S20999C15C1Ev();
extern void _ZN9S20999C15D1Ev();
Name_Map name_map_S20999C15[] = {
  NSPAIR(_ZN9S20999C15C1Ev),
  NSPAIR(_ZN9S20999C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
static Base_Class bases_S20999C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20999C3,    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
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20999C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20999C15[];
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY vtc_S20999C15[] = {
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C15[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern VTBL_ENTRY _ZTV9S20999C15[];
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C7__9S20999C15[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C7__9S20999C15[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
static  VTT_ENTRY vtt_S20999C15[] = {
  {&(_ZTV9S20999C15[5]),  5,6},
  {&(_ZTV9S20999C15[5]),  5,6},
  {&(_tg__ZTV8S20999C7__9S20999C15[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C7__9S20999C15[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20999C15[];
extern  VTBL_ENTRY _ZTV9S20999C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C15[];
Class_Descriptor cd_S20999C15 = {  "S20999C15", // class name
  bases_S20999C15, 4,
  &(vtc_S20999C15[0]), // expected_vtbl_contents
  &(vtt_S20999C15[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S20999C15),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20999C15),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20999C15),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  S20999C9  : virtual S20999C10 , S20999C6 , S20999C15 {
  long double s20999c9f0;
  virtual  ~S20999C9(); // _ZN8S20999C9D2Ev
  S20999C9(); // tgen
};
//SIG(-1 S20999C9) C1{ VBC2{ BC3{ m FL} BC4{ BC3 VBC5{ m} BC6{ BC7{ VBC3 BC5 v1}} vd v2} BC8{ m} VBC9{ VBC3 BC10{ VBC3 BC7 BC5} VBC7 v3} VBC11{ BC3 VBC7 BC5 vd} vd} BC4 BC12{ VBC6 Fi} vd FD}


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

static void Test_S20999C9()
{
  extern Class_Descriptor cd_S20999C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,22)];
    init_test(&cd_S20999C9, buf);
    S20999C9 *dp, &lv = *(dp=new (buf) S20999C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S20999C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20999C9)");
    /*is_ambiguous_... S20999C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C10*), ABISELECT(64,44), "S20999C9");
    /*is_ambiguous_... S20999C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C6*)(S20999C10*), ABISELECT(56,36), "S20999C9");
    /*is_ambiguous_... S20999C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C6*)(S20999C10*), ABISELECT(72,52), "S20999C9");
    /*is_ambiguous_... S20999C9::S20999C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C6*), ABISELECT(72,52), "S20999C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C10*), ABISELECT(72,52), "S20999C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C12*), ABISELECT(72,52), "S20999C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C13*)(S20999C12*), ABISELECT(72,52), "S20999C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C13*)(S20999C12*), ABISELECT(72,52), "S20999C9");
    /*is_ambiguous_... S20999C9::S20999C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*), ABISELECT(72,52), "S20999C9");
    /*is_ambiguous_... S20999C9::S20999C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*)(S20999C6*), ABISELECT(72,52), "S20999C9");
    /*is_ambiguous_... S20999C9::S20999C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*), ABISELECT(72,52), "S20999C9");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C10*), ABISELECT(48,32), "S20999C9");
    check_base_class_offset(lv, (S20999C3*)(S20999C7*)(S20999C6*)(S20999C10*), ABISELECT(48,32), "S20999C9");
    check_base_class_offset(lv, (S20999C7*)(S20999C6*)(S20999C10*), ABISELECT(48,32), "S20999C9");
    check_base_class_offset(lv, (S20999C6*)(S20999C10*), ABISELECT(48,32), "S20999C9");
    check_base_class_offset(lv, (S28C52_nt*)(S20999C10*), ABISELECT(48,32), "S20999C9");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C13*)(S20999C12*), ABISELECT(80,60), "S20999C9");
    check_base_class_offset(lv, (S20999C3*)(S20999C13*)(S20999C12*), ABISELECT(80,60), "S20999C9");
    /*is_ambiguous_... S20999C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C13*)(S20999C12*), ABISELECT(88,64), "S20999C9");
    check_base_class_offset(lv, (S20999C13*)(S20999C12*), ABISELECT(80,60), "S20999C9");
    /*is_ambiguous_... S20999C9::S20999C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*), ABISELECT(96,68), "S20999C9");
    /*is_ambiguous_... S20999C12::S20999C3 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C12*), ABISELECT(96,68), "S20999C9");
    check_base_class_offset(lv, (S20999C3*)(S20999C14*), ABISELECT(96,68), "S20999C9");
    check_base_class_offset(lv, (S20999C12*)(S20999C10*), ABISELECT(80,60), "S20999C9");
    /*is_ambiguous_... S20999C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C14*), ABISELECT(104,72), "S20999C9");
    /*is_ambiguous_... S20999C14::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C14*), ABISELECT(112,80), "S20999C9");
    check_base_class_offset(lv, (S20999C14*)(S20999C10*), ABISELECT(96,68), "S20999C9");
    check_base_class_offset(lv, (S20999C10*), ABISELECT(48,32), "S20999C9");
    /*is_ambiguous_... S20999C9::S20999C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C6*), ABISELECT(8,4), "S20999C9");
    /*is_ambiguous_... S20999C9::S20999C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*)(S20999C6*), 0, "S20999C9");
    /*is_ambiguous_... S20999C9::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C7*)(S20999C6*), 0, "S20999C9");
    /*is_ambiguous_... S20999C9::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C7*)(S20999C6*), 0, "S20999C9");
    /*is_ambiguous_... S20999C9::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C6*), 0, "S20999C9");
    /*is_ambiguous_... S20999C9::S20999C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*), ABISELECT(16,12), "S20999C9");
    /*is_ambiguous_... S20999C9::S20999C7 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C7*), ABISELECT(16,12), "S20999C9");
    check_base_class_offset(lv, (S20999C7*)(S20999C15*), ABISELECT(16,12), "S20999C9");
    check_base_class_offset(lv, (S20999C15*), ABISELECT(16,12), "S20999C9");
    check_field_offset(lv, s20999c9f0, ABISELECT(32,20), "S20999C9.s20999c9f0");
    test_class_info(&lv, &cd_S20999C9);
    dp->~S20999C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20999C9(Test_S20999C9, "S20999C9", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN8S20999C9C1Ev();
extern void _ZN8S20999C9D2Ev();
Name_Map name_map_S20999C9[] = {
  NSPAIR(_ZN8S20999C9C1Ev),
  NSPAIR(_ZN8S20999C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C6;
extern VTBL_ENTRY _ZTI8S20999C6[];
extern  VTBL_ENTRY _ZTV8S20999C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C13;
extern VTBL_ENTRY _ZTI9S20999C13[];
extern  VTBL_ENTRY _ZTV9S20999C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C12;
extern VTBL_ENTRY _ZTI9S20999C12[];
extern  VTBL_ENTRY _ZTV9S20999C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C12[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C14;
extern VTBL_ENTRY _ZTI9S20999C14[];
extern  VTBL_ENTRY _ZTV9S20999C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C14[];
extern Class_Descriptor cd_S20999C10;
extern VTBL_ENTRY _ZTI9S20999C10[];
extern  VTBL_ENTRY _ZTV9S20999C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C10[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C6;
extern VTBL_ENTRY _ZTI8S20999C6[];
extern  VTBL_ENTRY _ZTV8S20999C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C6[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C15;
extern VTBL_ENTRY _ZTI9S20999C15[];
extern  VTBL_ENTRY _ZTV9S20999C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C15[];
static Base_Class bases_S20999C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    19, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    7, //immediately_derived
  0, 0},
  {&cd_S731C17_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, 1},
  {&cd_S3461C5_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
    5, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20999C3,    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
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20999C7,    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
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20999C6,    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
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(80,60), //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
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(88,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
    12, //immediately_derived
  0, 0},
  {&cd_S20999C13,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20999C12,    ABISELECT(80,60), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(104,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(112,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20999C14,    ABISELECT(96,68), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20999C10,    ABISELECT(48,32), //bcp->offset
    19, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20999C3,    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
    23, //immediately_derived
  0, 0},
  {&cd_S20999C7,    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
    13, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20999C6,    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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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
    26, //immediately_derived
  0, 0},
  {&cd_S20999C3,    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
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20999C7,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S20999C15,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20999C9[];
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C9D1Ev();
extern void _ZN8S20999C9D0Ev();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S20999C9D1Ev,_ZTv0_n36_N8S20999C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S20999C9D1Ev,_ZThn32_N8S20999C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20999C9D0Ev,_ZTv0_n36_N8S20999C9D0Ev)();
extern void ABISELECT(_ZThn48_N8S20999C9D0Ev,_ZThn32_N8S20999C9D0Ev)() __attribute__((weak));
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20999C9D1Ev,_ZTv0_n24_N8S20999C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S20999C9D1Ev,_ZThn68_N8S20999C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20999C9D0Ev,_ZTv0_n24_N8S20999C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S20999C9D0Ev,_ZThn68_N8S20999C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20999C9[] = {
  ABISELECT(16,12),
  ABISELECT(96,68),
  ABISELECT(96,68),
  ABISELECT(80,60),
  ABISELECT(48,32),
  ABISELECT(72,52),
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C9[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  0,
  0,
  ABISELECT(56,40),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20999C9[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  0,
  ABISELECT(-48,-32),
  0,
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S20999C9[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20999C9D1Ev,_ZTv0_n36_N8S20999C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20999C9D0Ev,_ZTv0_n36_N8S20999C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S20999C9[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
  ABISELECT(-96,-68),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S20999C9[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20999C9D1Ev,_ZTv0_n24_N8S20999C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20999C9D0Ev,_ZTv0_n24_N8S20999C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S20999C9[];
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C6D1Ev();
extern void _ZN8S20999C6D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C6__A1__8S20999C9[] = {
  ABISELECT(72,52),
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C6[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C78S20999C6__A1__8S20999C9[] = {
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C78S20999C6__A3__8S20999C9[] = {
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C15__8S20999C9[] = {
  0,
  0,
  ABISELECT(56,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C15[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C10D1Ev();
extern void _ZN9S20999C10D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C10__8S20999C9[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C10[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C10D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C6D1Ev();
extern void _ZN8S20999C6D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C69S20999C10__8S20999C9[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C6[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C78S20999C69S20999C10__8S20999C9[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C78S20999C69S20999C10__8S20999C9[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C12__9S20999C10__8S20999C9[] = {
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI9S20999C10[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20999C10D1Ev,_ZTv0_n24_N9S20999C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S20999C10D1Ev,_ZThn36_N9S20999C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20999C10D0Ev,_ZTv0_n24_N9S20999C10D0Ev)();
extern void ABISELECT(_ZThn48_N9S20999C10D0Ev,_ZThn36_N9S20999C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20999C14__9S20999C10__8S20999C9[] = {
  ABISELECT(-48,-36),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S20999C10[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C10D1Ev,_ZTv0_n24_N9S20999C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C10D0Ev,_ZTv0_n24_N9S20999C10D0Ev),
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C12__8S20999C9[] = {
  ABISELECT(16,8),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C12[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C139S20999C12__8S20999C9[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C13[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C139S20999C12__A1__8S20999C9[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A1__9S20999C12__8S20999C9[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20999C12[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A2__8S20999C9[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C14D1Ev();
extern void _ZN9S20999C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C14__8S20999C9[] = {
  0,
  0,
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C14[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D0Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C7__A2__8S20999C9[] = {
  ABISELECT(56,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C7__A4__8S20999C9[] = {
  ABISELECT(56,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
static  VTT_ENTRY vtt_S20999C9[] = {
  {&(_ZTV8S20999C9[9]),  9,50},
  {&(_tg__ZTV8S20999C6__A1__8S20999C9[4]),  4,8},
  {&(_tg__ZTV8S20999C78S20999C6__A1__8S20999C9[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C78S20999C6__A3__8S20999C9[3]),  3,4},
  {&(_tg__ZTV9S20999C15__8S20999C9[5]),  5,6},
  {&(_tg__ZTV9S20999C15__8S20999C9[5]),  5,6},
  {&(_ZTV8S20999C9[29]),  29,50},
  {&(_ZTV8S20999C9[39]),  39,50},
  {&(_ZTV8S20999C9[47]),  47,50},
  {&(_ZTV8S20999C9[47]),  47,50},
  {&(_ZTV8S20999C9[18]),  18,50},
  {&(_ZTV8S20999C9[18]),  18,50},
  {&(_tg__ZTV9S20999C10__8S20999C9[7]),  7,11},
  {&(_tg__ZTV8S20999C69S20999C10__8S20999C9[4]),  4,8},
  {&(_tg__ZTV8S20999C78S20999C69S20999C10__8S20999C9[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C78S20999C69S20999C10__8S20999C9[3]),  3,4},
  {&(_tg__ZTV9S20999C12__9S20999C10__8S20999C9[6]),  6,8},
  {&(_tg__ZTV9S20999C14__9S20999C10__8S20999C9[6]),  6,9},
  {&(_tg__ZTV9S20999C14__9S20999C10__8S20999C9[6]),  6,9},
  {&(_tg__ZTV9S20999C12__8S20999C9[4]),  4,6},
  {&(_tg__ZTV9S20999C139S20999C12__8S20999C9[3]),  3,4},
  {&(_tg__ZTV8S20999C39S20999C139S20999C12__A1__8S20999C9[3]),  3,4},
  {&(_tg__ZTV8S20999C3__A1__9S20999C12__8S20999C9[4]),  4,5},
  {&(_tg__ZTV8S20999C3__A2__8S20999C9[3]),  3,4},
  {&(_tg__ZTV9S20999C14__8S20999C9[5]),  5,8},
  {&(_tg__ZTV9S20999C14__8S20999C9[5]),  5,8},
  {&(_tg__ZTV8S20999C7__A2__8S20999C9[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C7__A4__8S20999C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20999C9[];
extern  VTBL_ENTRY _ZTV8S20999C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C9[];
static VTBL_ENTRY alt_thunk_names16[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C10D0Ev,_ZTv0_n24_N9S20999C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20999C10D0Ev,_ZThn36_N9S20999C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C10D1Ev,_ZTv0_n24_N9S20999C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20999C10D1Ev,_ZThn36_N9S20999C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20999C9D0Ev,_ZTv0_n24_N8S20999C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20999C9D0Ev,_ZThn68_N8S20999C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20999C9D1Ev,_ZTv0_n24_N8S20999C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20999C9D1Ev,_ZThn68_N8S20999C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20999C9D0Ev,_ZTv0_n36_N8S20999C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20999C9D0Ev,_ZThn32_N8S20999C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20999C9D1Ev,_ZTv0_n36_N8S20999C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20999C9D1Ev,_ZThn32_N8S20999C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20999C9 = {  "S20999C9", // class name
  bases_S20999C9, 29,
  &(vtc_S20999C9[0]), // expected_vtbl_contents
  &(vtt_S20999C9[0]), // expected_vtt_contents
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI8S20999C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20999C9),50, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20999C9),28, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names16,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20999C18  : S20999C14 {
  virtual void  v5(); // _ZN9S20999C182v5Ev
  ~S20999C18(); // tgen
  S20999C18(); // tgen
};
//SIG(-1 S20999C18) C1{ BC2{ BC3{ m FL} VBC4{ VBC3 BC5{ m} v2} BC5 vd} v1}


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

static void Test_S20999C18()
{
  extern Class_Descriptor cd_S20999C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S20999C18, buf);
    S20999C18 *dp, &lv = *(dp=new (buf) S20999C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S20999C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20999C18)");
    /*is_ambiguous_... S20999C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C14*), ABISELECT(8,4), "S20999C18");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*), ABISELECT(24,16), "S20999C18");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*), 0, "S20999C18");
    check_base_class_offset(lv, (S20999C3*)(S20999C14*), 0, "S20999C18");
    /*is_ambiguous_... S20999C14::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C14*), ABISELECT(16,12), "S20999C18");
    check_base_class_offset(lv, (S20999C14*), 0, "S20999C18");
    test_class_info(&lv, &cd_S20999C18);
    dp->~S20999C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20999C18(Test_S20999C18, "S20999C18", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN9S20999C18C1Ev();
extern void _ZN9S20999C18D1Ev();
Name_Map name_map_S20999C18[] = {
  NSPAIR(_ZN9S20999C18C1Ev),
  NSPAIR(_ZN9S20999C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C14;
extern VTBL_ENTRY _ZTI9S20999C14[];
extern  VTBL_ENTRY _ZTV9S20999C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C14[];
static Base_Class bases_S20999C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3461C5_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20999C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    5, //immediately_derived
  0, 0},
  {&cd_S20999C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20999C18[];
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C18D1Ev();
extern void _ZN9S20999C18D0Ev();
extern void _ZN9S20999C182v5Ev();
static  VTBL_ENTRY vtc_S20999C18[] = {
  0,
  0,
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C18[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C18D0Ev,
  (VTBL_ENTRY)&_ZN9S20999C182v5Ev,
};
extern VTBL_ENTRY _ZTV9S20999C18[];
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C14D1Ev();
extern void _ZN9S20999C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C14__9S20999C18[] = {
  0,
  0,
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C14[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D0Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__9S20999C18[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
static  VTT_ENTRY vtt_S20999C18[] = {
  {&(_ZTV9S20999C18[5]),  5,9},
  {&(_tg__ZTV9S20999C14__9S20999C18[5]),  5,8},
  {&(_tg__ZTV9S20999C14__9S20999C18[5]),  5,8},
  {&(_ZTV9S20999C18[5]),  5,9},
  {&(_tg__ZTV8S20999C3__9S20999C18[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20999C18[];
extern  VTBL_ENTRY _ZTV9S20999C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C18[];
Class_Descriptor cd_S20999C18 = {  "S20999C18", // class name
  bases_S20999C18, 6,
  &(vtc_S20999C18[0]), // expected_vtbl_contents
  &(vtt_S20999C18[0]), // expected_vtt_contents
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI9S20999C18),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20999C18),9, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20999C18),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  S20999C17  : S20999C12 , S20999C3 , virtual S20999C18 , S20999C13 {
  ~S20999C17(); // tgen
  S20999C17(); // tgen
};
//SIG(-1 S20999C17) C1{ BC2{ VBC3{ m FL} BC4{ VBC3 BC5{ VBC3 BC6{ m} v1} BC6} VBC5 v2} BC5 VBC7{ BC8{ BC3 VBC5 BC6 vd} v3} BC4}


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

static void Test_S20999C17()
{
  extern Class_Descriptor cd_S20999C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S20999C17, buf);
    S20999C17 *dp, &lv = *(dp=new (buf) S20999C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S20999C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20999C17)");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C12*), ABISELECT(40,20), "S20999C17");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C13*)(S20999C12*), ABISELECT(40,20), "S20999C17");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C13*)(S20999C12*), ABISELECT(40,20), "S20999C17");
    /*is_ambiguous_... S20999C17::S20999C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*), ABISELECT(40,20), "S20999C17");
    /*is_ambiguous_... S20999C17::S20999C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*), ABISELECT(40,20), "S20999C17");
    /*is_ambiguous_... S20999C17::S20999C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C13*), ABISELECT(40,20), "S20999C17");
    /*is_ambiguous_... S20999C17::S20999C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C13*), ABISELECT(40,20), "S20999C17");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C13*)(S20999C12*), 0, "S20999C17");
    check_base_class_offset(lv, (S20999C3*)(S20999C13*)(S20999C12*), 0, "S20999C17");
    /*is_ambiguous_... S20999C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C13*)(S20999C12*), ABISELECT(8,4), "S20999C17");
    check_base_class_offset(lv, (S20999C13*)(S20999C12*), 0, "S20999C17");
    /*is_ambiguous_... S20999C17::S20999C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*), ABISELECT(48,28), "S20999C17");
    /*is_ambiguous_... S20999C12::S20999C3 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C12*), ABISELECT(48,28), "S20999C17");
    check_base_class_offset(lv, (S20999C3*)(S20999C14*)(S20999C18*), ABISELECT(48,28), "S20999C17");
    check_base_class_offset(lv, (S20999C12*), 0, "S20999C17");
    /*is_ambiguous_... S20999C17::S20999C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*), ABISELECT(16,8), "S20999C17");
    /*is_ambiguous_... S20999C17::S20999C3 */ AMB_check_base_class_offset(lv, (S20999C3*), ABISELECT(16,8), "S20999C17");
    /*is_ambiguous_... S20999C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C14*)(S20999C18*), ABISELECT(56,32), "S20999C17");
    /*is_ambiguous_... S20999C14::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C14*)(S20999C18*), ABISELECT(64,40), "S20999C17");
    check_base_class_offset(lv, (S20999C14*)(S20999C18*), ABISELECT(48,28), "S20999C17");
    check_base_class_offset(lv, (S20999C18*), ABISELECT(48,28), "S20999C17");
    /*is_ambiguous_... S20999C17::S20999C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C13*), ABISELECT(24,12), "S20999C17");
    /*is_ambiguous_... S20999C17::S20999C13 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C13*), ABISELECT(24,12), "S20999C17");
    /*is_ambiguous_... S20999C17::S20999C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C13*), ABISELECT(32,16), "S20999C17");
    /*is_ambiguous_... S20999C17::S20999C13 */ AMB_check_base_class_offset(lv, (S20999C13*), ABISELECT(24,12), "S20999C17");
    test_class_info(&lv, &cd_S20999C17);
    dp->~S20999C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20999C17(Test_S20999C17, "S20999C17", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN9S20999C17C1Ev();
extern void _ZN9S20999C17D1Ev();
Name_Map name_map_S20999C17[] = {
  NSPAIR(_ZN9S20999C17C1Ev),
  NSPAIR(_ZN9S20999C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C13;
extern VTBL_ENTRY _ZTI9S20999C13[];
extern  VTBL_ENTRY _ZTV9S20999C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C12;
extern VTBL_ENTRY _ZTI9S20999C12[];
extern  VTBL_ENTRY _ZTV9S20999C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C14;
extern VTBL_ENTRY _ZTI9S20999C14[];
extern  VTBL_ENTRY _ZTV9S20999C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C14[];
extern Class_Descriptor cd_S20999C18;
extern VTBL_ENTRY _ZTI9S20999C18[];
extern  VTBL_ENTRY _ZTV9S20999C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C18[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C13;
extern VTBL_ENTRY _ZTI9S20999C13[];
extern  VTBL_ENTRY _ZTV9S20999C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C13[];
static Base_Class bases_S20999C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20999C3,    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
    4, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20999C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20999C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20999C14,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20999C18,    ABISELECT(48,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_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
    15, //immediately_derived
  0, 0},
  {&cd_S20999C3,    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
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20999C13,    ABISELECT(24,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //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 _ZTI9S20999C17[];
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
extern void _ZN9S20999C17D1Ev();
extern void _ZN9S20999C17D0Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20999C17D1Ev,_ZTv0_n24_N9S20999C17D1Ev)();
extern void ABISELECT(_ZThn48_N9S20999C17D1Ev,_ZThn28_N9S20999C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20999C17D0Ev,_ZTv0_n24_N9S20999C17D0Ev)();
extern void ABISELECT(_ZThn48_N9S20999C17D0Ev,_ZThn28_N9S20999C17D0Ev)() __attribute__((weak));
extern void _ZN9S20999C182v5Ev();
static  VTBL_ENTRY vtc_S20999C17[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C17[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
  (VTBL_ENTRY)&_ZN9S20999C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C17D0Ev,
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20999C17[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20999C17[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  0,
  ABISELECT(-48,-28),
  0,
  0,
  -8,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20999C17[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C17D1Ev,_ZTv0_n24_N9S20999C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C17D0Ev,_ZTv0_n24_N9S20999C17D0Ev),
  (VTBL_ENTRY)&_ZN9S20999C182v5Ev,
};
extern VTBL_ENTRY _ZTV9S20999C17[];
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C12__9S20999C17[] = {
  ABISELECT(48,28),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C12[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C139S20999C12__9S20999C17[] = {
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C13[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C139S20999C12__9S20999C17[] = {
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A1__9S20999C12__9S20999C17[] = {
  0,
  -8,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20999C12[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A__9S20999C17[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C13__A1__9S20999C17[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C13[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C13__A3__9S20999C17[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A1__9S20999C17[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C18D1Ev();
extern void _ZN9S20999C18D0Ev();
extern void _ZN9S20999C182v5Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C18__9S20999C17[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C18[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C18D0Ev,
  (VTBL_ENTRY)&_ZN9S20999C182v5Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C14D1Ev();
extern void _ZN9S20999C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C149S20999C18__9S20999C17[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C14[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D0Ev,
};
static  VTT_ENTRY vtt_S20999C17[] = {
  {&(_ZTV9S20999C17[5]),  5,28},
  {&(_tg__ZTV9S20999C12__9S20999C17[4]),  4,6},
  {&(_tg__ZTV9S20999C139S20999C12__9S20999C17[3]),  3,4},
  {&(_tg__ZTV8S20999C39S20999C139S20999C12__9S20999C17[3]),  3,4},
  {&(_tg__ZTV8S20999C3__A1__9S20999C12__9S20999C17[4]),  4,5},
  {&(_tg__ZTV8S20999C3__A__9S20999C17[3]),  3,4},
  {&(_tg__ZTV9S20999C13__A1__9S20999C17[3]),  3,4},
  {&(_tg__ZTV8S20999C39S20999C13__A3__9S20999C17[3]),  3,4},
  {&(_ZTV9S20999C17[24]),  24,28},
  {&(_ZTV9S20999C17[12]),  12,28},
  {&(_ZTV9S20999C17[24]),  24,28},
  {&(_ZTV9S20999C17[16]),  16,28},
  {&(_tg__ZTV8S20999C3__A1__9S20999C17[3]),  3,4},
  {&(_tg__ZTV9S20999C18__9S20999C17[5]),  5,9},
  {&(_tg__ZTV9S20999C149S20999C18__9S20999C17[5]),  5,8},
  {&(_tg__ZTV9S20999C149S20999C18__9S20999C17[5]),  5,8},
  {&(_tg__ZTV9S20999C18__9S20999C17[5]),  5,9},
};
extern VTBL_ENTRY _ZTI9S20999C17[];
extern  VTBL_ENTRY _ZTV9S20999C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C17[];
static VTBL_ENTRY alt_thunk_names17[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C17D0Ev,_ZTv0_n24_N9S20999C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20999C17D0Ev,_ZThn28_N9S20999C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C17D1Ev,_ZTv0_n24_N9S20999C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20999C17D1Ev,_ZThn28_N9S20999C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20999C17 = {  "S20999C17", // class name
  bases_S20999C17, 18,
  &(vtc_S20999C17[0]), // expected_vtbl_contents
  &(vtt_S20999C17[0]), // expected_vtt_contents
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI9S20999C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20999C17),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20999C17),17, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names17,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20999C16  : S20999C17 , S20999C15 , S20999C2 , S20999C6 {
  void *s20999c16f0;
  virtual  ~S20999C16(); // _ZN9S20999C16D2Ev
  S20999C16(); // tgen
};
//SIG(-1 S20999C16) C1{ BC2{ BC3{ VBC4{ m FL} BC5{ VBC4 BC6{ VBC4 BC7{ m} v1} BC7} VBC6 v2} BC6 VBC8{ BC9{ BC4 VBC6 BC7 vd} v3} BC5} BC10{ VBC11{ BC6} Fi} BC12{ VBC6 BC13{ BC4 VBC7 BC11 vd v4} vd v5} BC13 vd Fp}


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

static void Test_S20999C16()
{
  extern Class_Descriptor cd_S20999C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,21)];
    init_test(&cd_S20999C16, buf);
    S20999C16 *dp, &lv = *(dp=new (buf) S20999C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,80), "sizeof(S20999C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20999C16)");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C12*)(S20999C17*), ABISELECT(96,56), "S20999C16");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C13*)(S20999C12*)(S20999C17*), ABISELECT(96,56), "S20999C16");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C13*)(S20999C12*)(S20999C17*), ABISELECT(96,56), "S20999C16");
    /*is_ambiguous_... S20999C16::S20999C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*), ABISELECT(96,56), "S20999C16");
    /*is_ambiguous_... S20999C17::S20999C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C17*), ABISELECT(96,56), "S20999C16");
    /*is_ambiguous_... S20999C17::S20999C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C13*)(S20999C17*), ABISELECT(96,56), "S20999C16");
    /*is_ambiguous_... S20999C17::S20999C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C13*)(S20999C17*), ABISELECT(96,56), "S20999C16");
    /*is_ambiguous_... S20999C16::S20999C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*), ABISELECT(96,56), "S20999C16");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C2*), ABISELECT(96,56), "S20999C16");
    /*is_ambiguous_... S20999C16::S20999C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*)(S20999C6*), ABISELECT(96,56), "S20999C16");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C13*)(S20999C12*)(S20999C17*), 0, "S20999C16");
    check_base_class_offset(lv, (S20999C3*)(S20999C13*)(S20999C12*)(S20999C17*), 0, "S20999C16");
    /*is_ambiguous_... S20999C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C13*)(S20999C12*)(S20999C17*), ABISELECT(8,4), "S20999C16");
    check_base_class_offset(lv, (S20999C13*)(S20999C12*)(S20999C17*), 0, "S20999C16");
    /*is_ambiguous_... S20999C16::S20999C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*), ABISELECT(104,64), "S20999C16");
    /*is_ambiguous_... S20999C12::S20999C3 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C12*)(S20999C17*), ABISELECT(104,64), "S20999C16");
    check_base_class_offset(lv, (S20999C3*)(S20999C14*)(S20999C18*), ABISELECT(104,64), "S20999C16");
    /*is_ambiguous_... S20999C2::S20999C3 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C2*), ABISELECT(104,64), "S20999C16");
    check_base_class_offset(lv, (S20999C12*)(S20999C17*), 0, "S20999C16");
    /*is_ambiguous_... S20999C17::S20999C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C17*), ABISELECT(16,8), "S20999C16");
    /*is_ambiguous_... S20999C17::S20999C3 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C17*), ABISELECT(16,8), "S20999C16");
    /*is_ambiguous_... S20999C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C14*)(S20999C18*), ABISELECT(112,68), "S20999C16");
    /*is_ambiguous_... S20999C14::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C14*)(S20999C18*), ABISELECT(120,76), "S20999C16");
    check_base_class_offset(lv, (S20999C14*)(S20999C18*), ABISELECT(104,64), "S20999C16");
    check_base_class_offset(lv, (S20999C18*)(S20999C17*), ABISELECT(104,64), "S20999C16");
    /*is_ambiguous_... S20999C17::S20999C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C13*)(S20999C17*), ABISELECT(24,12), "S20999C16");
    /*is_ambiguous_... S20999C17::S20999C13 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C13*)(S20999C17*), ABISELECT(24,12), "S20999C16");
    /*is_ambiguous_... S20999C17::S20999C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C13*)(S20999C17*), ABISELECT(32,16), "S20999C16");
    /*is_ambiguous_... S20999C17::S20999C13 */ AMB_check_base_class_offset(lv, (S20999C13*)(S20999C17*), ABISELECT(24,12), "S20999C16");
    check_base_class_offset(lv, (S20999C17*), 0, "S20999C16");
    /*is_ambiguous_... S20999C16::S20999C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*), ABISELECT(40,20), "S20999C16");
    /*is_ambiguous_... S20999C16::S20999C7 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C7*), ABISELECT(40,20), "S20999C16");
    check_base_class_offset(lv, (S20999C7*)(S20999C15*), ABISELECT(40,20), "S20999C16");
    check_base_class_offset(lv, (S20999C15*), ABISELECT(40,20), "S20999C16");
    /*is_ambiguous_... S20999C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C6*)(S20999C2*), ABISELECT(64,32), "S20999C16");
    /*is_ambiguous_... S20999C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C6*)(S20999C2*), ABISELECT(121,77), "S20999C16");
    /*is_ambiguous_... S20999C16::S20999C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C6*), ABISELECT(121,77), "S20999C16");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C2*), ABISELECT(56,28), "S20999C16");
    check_base_class_offset(lv, (S20999C3*)(S20999C7*)(S20999C6*)(S20999C2*), ABISELECT(56,28), "S20999C16");
    check_base_class_offset(lv, (S20999C7*)(S20999C6*)(S20999C2*), ABISELECT(56,28), "S20999C16");
    check_base_class_offset(lv, (S20999C6*)(S20999C2*), ABISELECT(56,28), "S20999C16");
    check_base_class_offset(lv, (S20999C2*), ABISELECT(56,28), "S20999C16");
    /*is_ambiguous_... S20999C16::S20999C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C6*), ABISELECT(80,44), "S20999C16");
    /*is_ambiguous_... S20999C16::S20999C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*)(S20999C6*), ABISELECT(72,40), "S20999C16");
    /*is_ambiguous_... S20999C16::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C7*)(S20999C6*), ABISELECT(72,40), "S20999C16");
    /*is_ambiguous_... S20999C16::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C7*)(S20999C6*), ABISELECT(72,40), "S20999C16");
    /*is_ambiguous_... S20999C16::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C6*), ABISELECT(72,40), "S20999C16");
    check_field_offset(lv, s20999c16f0, ABISELECT(88,52), "S20999C16.s20999c16f0");
    test_class_info(&lv, &cd_S20999C16);
    dp->~S20999C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20999C16(Test_S20999C16, "S20999C16", ABISELECT(128,80));

#else // __cplusplus

extern void _ZN9S20999C16C1Ev();
extern void _ZN9S20999C16D2Ev();
Name_Map name_map_S20999C16[] = {
  NSPAIR(_ZN9S20999C16C1Ev),
  NSPAIR(_ZN9S20999C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C13;
extern VTBL_ENTRY _ZTI9S20999C13[];
extern  VTBL_ENTRY _ZTV9S20999C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C12;
extern VTBL_ENTRY _ZTI9S20999C12[];
extern  VTBL_ENTRY _ZTV9S20999C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C14;
extern VTBL_ENTRY _ZTI9S20999C14[];
extern  VTBL_ENTRY _ZTV9S20999C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C14[];
extern Class_Descriptor cd_S20999C18;
extern VTBL_ENTRY _ZTI9S20999C18[];
extern  VTBL_ENTRY _ZTV9S20999C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C18[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C13;
extern VTBL_ENTRY _ZTI9S20999C13[];
extern  VTBL_ENTRY _ZTV9S20999C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C13[];
extern Class_Descriptor cd_S20999C17;
extern VTBL_ENTRY _ZTI9S20999C17[];
extern  VTBL_ENTRY _ZTV9S20999C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C17[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C15;
extern VTBL_ENTRY _ZTI9S20999C15[];
extern  VTBL_ENTRY _ZTV9S20999C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C15[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C6;
extern VTBL_ENTRY _ZTI8S20999C6[];
extern  VTBL_ENTRY _ZTV8S20999C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C6[];
extern Class_Descriptor cd_S20999C2;
extern VTBL_ENTRY _ZTI8S20999C2[];
extern  VTBL_ENTRY _ZTV8S20999C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C2[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C6;
extern VTBL_ENTRY _ZTI8S20999C6[];
extern  VTBL_ENTRY _ZTV8S20999C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C6[];
static Base_Class bases_S20999C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20999C3,    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
    6, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20999C13,    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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20999C12,    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
    8, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    12, //immediately_derived
  0, 0},
  {&cd_S20999C14,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20999C18,    ABISELECT(104,64), //bcp->offset
    43, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    15, //immediately_derived
  0, 0},
  {&cd_S20999C3,    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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20999C13,    ABISELECT(24,12), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20999C17,    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_S731C17_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20999C7,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S20999C15,    ABISELECT(40,20), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(121,77), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20999C7,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20999C6,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20999C2,    ABISELECT(56,28), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    32, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20999C7,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20999C6,    ABISELECT(72,40), //bcp->offset
    35, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20999C16[];
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
extern void _ZN9S20999C16D1Ev();
extern void _ZN9S20999C16D0Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZThn56_N9S20999C16D1Ev,_ZThn28_N9S20999C16D1Ev)();
extern void ABISELECT(_ZThn56_N9S20999C16D0Ev,_ZThn28_N9S20999C16D0Ev)();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C22v3Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZThn72_N9S20999C16D1Ev,_ZThn40_N9S20999C16D1Ev)();
extern void ABISELECT(_ZThn72_N9S20999C16D0Ev,_ZThn40_N9S20999C16D0Ev)();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20999C16D1Ev,_ZTv0_n24_N9S20999C16D1Ev)();
extern void ABISELECT(_ZThn104_N9S20999C16D1Ev,_ZThn64_N9S20999C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20999C16D0Ev,_ZTv0_n24_N9S20999C16D0Ev)();
extern void ABISELECT(_ZThn104_N9S20999C16D0Ev,_ZThn64_N9S20999C16D0Ev)() __attribute__((weak));
extern void _ZN9S20999C182v5Ev();
static  VTBL_ENTRY vtc_S20999C16[] = {
  ABISELECT(121,77),
  ABISELECT(40,20),
  ABISELECT(104,64),
  ABISELECT(104,64),
  ABISELECT(96,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
  (VTBL_ENTRY)&_ZN9S20999C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C16D0Ev,
  ABISELECT(80,48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  ABISELECT(72,44),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  0,
  0,
  ABISELECT(56,36),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  ABISELECT(48,36),
  ABISELECT(65,49),
  ABISELECT(40,28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20999C16D1Ev,_ZThn28_N9S20999C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20999C16D0Ev,_ZThn28_N9S20999C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20999C22v3Ev,
  ABISELECT(49,37),
  ABISELECT(24,16),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N9S20999C16D1Ev,_ZThn40_N9S20999C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N9S20999C16D0Ev,_ZThn40_N9S20999C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  0,
  ABISELECT(-104,-64),
  0,
  0,
  -8,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C16D1Ev,_ZTv0_n24_N9S20999C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C16D0Ev,_ZTv0_n24_N9S20999C16D0Ev),
  (VTBL_ENTRY)&_ZN9S20999C182v5Ev,
};
extern VTBL_ENTRY _ZTV9S20999C16[];
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
extern void _ZN9S20999C17D1Ev();
extern void _ZN9S20999C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C17__9S20999C16[] = {
  ABISELECT(104,64),
  ABISELECT(104,64),
  ABISELECT(96,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C17[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
  (VTBL_ENTRY)&_ZN9S20999C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C17D0Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C129S20999C17__9S20999C16[] = {
  ABISELECT(104,64),
  ABISELECT(96,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C12[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C139S20999C129S20999C17__9S20999C16[] = {
  ABISELECT(96,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C13[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C139S20999C129S20999C17__9S20999C16[] = {
  ABISELECT(96,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A1__9S20999C129S20999C17__9S20999C16[] = {
  0,
  -8,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI9S20999C12[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C17__A2__9S20999C16[] = {
  ABISELECT(80,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C139S20999C17__A1__9S20999C16[] = {
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C13[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C139S20999C17__A3__9S20999C16[] = {
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20999C17D1Ev,_ZTv0_n24_N9S20999C17D1Ev)();
extern void ABISELECT(_ZThn104_N9S20999C17D1Ev,_ZThn64_N9S20999C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20999C17D0Ev,_ZTv0_n24_N9S20999C17D0Ev)();
extern void ABISELECT(_ZThn104_N9S20999C17D0Ev,_ZThn64_N9S20999C17D0Ev)() __attribute__((weak));
extern void _ZN9S20999C182v5Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C18__9S20999C17__9S20999C16[] = {
  0,
  ABISELECT(-104,-64),
  0,
  0,
  -8,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI9S20999C17[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C17D1Ev,_ZTv0_n24_N9S20999C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C17D0Ev,_ZTv0_n24_N9S20999C17D0Ev),
  (VTBL_ENTRY)&_ZN9S20999C182v5Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A__9S20999C17__9S20999C16[] = {
  ABISELECT(80,48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20999C17[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C13__A1__9S20999C17__9S20999C16[] = {
  ABISELECT(72,44),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20999C17[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C15__9S20999C16[] = {
  0,
  0,
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C15[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C2D1Ev();
extern void _ZN8S20999C2D0Ev();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C2__9S20999C16[] = {
  ABISELECT(48,36),
  ABISELECT(65,49),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C2[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20999C22v3Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C6D1Ev();
extern void _ZN8S20999C6D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C68S20999C2__9S20999C16[] = {
  ABISELECT(65,49),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C6[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C78S20999C68S20999C2__A1__9S20999C16[] = {
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C78S20999C68S20999C2__A5__9S20999C16[] = {
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__8S20999C2__9S20999C16[] = {
  0,
  -8,
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S20999C2[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C6D1Ev();
extern void _ZN8S20999C6D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C6__A1__9S20999C16[] = {
  ABISELECT(49,37),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C6[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C78S20999C6__A2__9S20999C16[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C78S20999C6__A6__9S20999C16[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A1__9S20999C16[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C18D1Ev();
extern void _ZN9S20999C18D0Ev();
extern void _ZN9S20999C182v5Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C18__9S20999C16[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C18[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C18D0Ev,
  (VTBL_ENTRY)&_ZN9S20999C182v5Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C14D1Ev();
extern void _ZN9S20999C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C149S20999C18__9S20999C16[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C14[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D0Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C7__9S20999C16[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C7__A4__9S20999C16[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
static  VTT_ENTRY vtt_S20999C16[] = {
  {&(_ZTV9S20999C16[7]),  7,54},
  {&(_tg__ZTV9S20999C17__9S20999C16[5]),  5,9},
  {&(_tg__ZTV9S20999C129S20999C17__9S20999C16[4]),  4,6},
  {&(_tg__ZTV9S20999C139S20999C129S20999C17__9S20999C16[3]),  3,4},
  {&(_tg__ZTV8S20999C39S20999C139S20999C129S20999C17__9S20999C16[3]),  3,4},
  {&(_tg__ZTV8S20999C3__A1__9S20999C129S20999C17__9S20999C16[4]),  4,5},
  {&(_tg__ZTV8S20999C39S20999C17__A2__9S20999C16[3]),  3,4},
  {&(_tg__ZTV9S20999C139S20999C17__A1__9S20999C16[3]),  3,4},
  {&(_tg__ZTV8S20999C39S20999C139S20999C17__A3__9S20999C16[3]),  3,4},
  {&(_tg__ZTV9S20999C18__9S20999C17__9S20999C16[7]),  7,11},
  {&(_tg__ZTV8S20999C3__A__9S20999C17__9S20999C16[3]),  3,4},
  {&(_tg__ZTV9S20999C18__9S20999C17__9S20999C16[7]),  7,11},
  {&(_tg__ZTV9S20999C13__A1__9S20999C17__9S20999C16[3]),  3,4},
  {&(_tg__ZTV9S20999C15__9S20999C16[5]),  5,6},
  {&(_tg__ZTV9S20999C15__9S20999C16[5]),  5,6},
  {&(_tg__ZTV8S20999C2__9S20999C16[5]),  5,10},
  {&(_tg__ZTV8S20999C68S20999C2__9S20999C16[4]),  4,8},
  {&(_tg__ZTV8S20999C78S20999C68S20999C2__A1__9S20999C16[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C78S20999C68S20999C2__A5__9S20999C16[3]),  3,4},
  {&(_tg__ZTV8S20999C3__8S20999C2__9S20999C16[4]),  4,5},
  {&(_tg__ZTV8S20999C6__A1__9S20999C16[4]),  4,8},
  {&(_tg__ZTV8S20999C78S20999C6__A2__9S20999C16[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C78S20999C6__A6__9S20999C16[3]),  3,4},
  {&(_ZTV9S20999C16[50]),  50,54},
  {&(_ZTV9S20999C16[14]),  14,54},
  {&(_ZTV9S20999C16[50]),  50,54},
  {&(_ZTV9S20999C16[18]),  18,54},
  {&(_ZTV9S20999C16[24]),  24,54},
  {&(_ZTV9S20999C16[24]),  24,54},
  {&(_ZTV9S20999C16[30]),  30,54},
  {&(_ZTV9S20999C16[39]),  39,54},
  {&(_tg__ZTV8S20999C3__A1__9S20999C16[3]),  3,4},
  {&(_tg__ZTV9S20999C18__9S20999C16[5]),  5,9},
  {&(_tg__ZTV9S20999C149S20999C18__9S20999C16[5]),  5,8},
  {&(_tg__ZTV9S20999C149S20999C18__9S20999C16[5]),  5,8},
  {&(_tg__ZTV9S20999C18__9S20999C16[5]),  5,9},
  {&(_tg__ZTV8S20999C7__9S20999C16[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C7__A4__9S20999C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20999C16[];
extern  VTBL_ENTRY _ZTV9S20999C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C16[];
static VTBL_ENTRY alt_thunk_names18[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C17D0Ev,_ZTv0_n24_N9S20999C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20999C17D0Ev,_ZThn64_N9S20999C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C17D1Ev,_ZTv0_n24_N9S20999C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20999C17D1Ev,_ZThn64_N9S20999C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C16D0Ev,_ZTv0_n24_N9S20999C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20999C16D0Ev,_ZThn64_N9S20999C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C16D1Ev,_ZTv0_n24_N9S20999C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20999C16D1Ev,_ZThn64_N9S20999C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20999C16 = {  "S20999C16", // class name
  bases_S20999C16, 35,
  &(vtc_S20999C16[0]), // expected_vtbl_contents
  &(vtt_S20999C16[0]), // expected_vtt_contents
  ABISELECT(128,80), // object size
  NSPAIRA(_ZTI9S20999C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20999C16),54, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20999C16),38, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names18,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20999C8  : S20999C9 , virtual S20999C13 , S20999C15 , S20999C16 {
  short s20999c8f0:6;
  ~S20999C8(); // tgen
  S20999C8(); // tgen
};
//SIG(-1 S20999C8) C1{ BC2{ VBC3{ BC4{ m FL} BC5{ BC4 VBC6{ m} BC7{ BC8{ VBC4 BC6 v1}} vd v2} BC9{ m} VBC10{ VBC4 BC11{ VBC4 BC8 BC6} VBC8 v3} VBC12{ BC4 VBC8 BC6 vd} vd} BC5 BC13{ VBC7 Fi} vd FD} VBC11 BC13 BC14{ BC15{ BC10 BC8 VBC16{ BC12 v4} BC11} BC13 BC17{ VBC8 BC5 vd v5} BC5 vd Fp} Fs:6}


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

static void Test_S20999C8()
{
  extern Class_Descriptor cd_S20999C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(19,45)];
    init_test(&cd_S20999C8, buf);
    S20999C8 *dp, &lv = *(dp=new (buf) S20999C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,176), "sizeof(S20999C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20999C8)");
    /*is_ambiguous_... S20999C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C10*), ABISELECT(184,112), "S20999C8");
    /*is_ambiguous_... S20999C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C6*)(S20999C10*), ABISELECT(176,104), "S20999C8");
    /*is_ambiguous_... S20999C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C6*)(S20999C10*), ABISELECT(192,120), "S20999C8");
    /*is_ambiguous_... S20999C9::S20999C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C6*)(S20999C9*), ABISELECT(192,120), "S20999C8");
    /*is_ambiguous_... S20999C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C6*)(S20999C2*)(S20999C16*), ABISELECT(192,120), "S20999C8");
    /*is_ambiguous_... S20999C16::S20999C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C6*)(S20999C16*), ABISELECT(192,120), "S20999C8");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C10*), ABISELECT(192,120), "S20999C8");
    /*is_ambiguous_... S20999C8::S20999C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C12*), ABISELECT(192,120), "S20999C8");
    /*is_ambiguous_... S20999C8::S20999C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C13*)(S20999C12*), ABISELECT(192,120), "S20999C8");
    /*is_ambiguous_... S20999C8::S20999C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C13*)(S20999C12*), ABISELECT(192,120), "S20999C8");
    /*is_ambiguous_... S20999C8::S20999C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*), ABISELECT(192,120), "S20999C8");
    /*is_ambiguous_... S20999C9::S20999C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C9*), ABISELECT(192,120), "S20999C8");
    /*is_ambiguous_... S20999C8::S20999C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*), ABISELECT(192,120), "S20999C8");
    /*is_ambiguous_... S20999C8::S20999C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C13*), ABISELECT(192,120), "S20999C8");
    /*is_ambiguous_... S20999C8::S20999C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C13*), ABISELECT(192,120), "S20999C8");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C12*)(S20999C17*)(S20999C16*), ABISELECT(192,120), "S20999C8");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C13*)(S20999C12*)(S20999C17*)(S20999C16*), ABISELECT(192,120), "S20999C8");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C13*)(S20999C12*)(S20999C17*)(S20999C16*), ABISELECT(192,120), "S20999C8");
    /*is_ambiguous_... S20999C17::S20999C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C17*)(S20999C16*), ABISELECT(192,120), "S20999C8");
    /*is_ambiguous_... S20999C17::S20999C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C13*)(S20999C17*)(S20999C16*), ABISELECT(192,120), "S20999C8");
    /*is_ambiguous_... S20999C17::S20999C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C13*)(S20999C17*)(S20999C16*), ABISELECT(192,120), "S20999C8");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C2*)(S20999C16*), ABISELECT(192,120), "S20999C8");
    /*is_ambiguous_... S20999C16::S20999C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C16*), ABISELECT(192,120), "S20999C8");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C10*), ABISELECT(168,100), "S20999C8");
    check_base_class_offset(lv, (S20999C3*)(S20999C7*)(S20999C6*)(S20999C10*), ABISELECT(168,100), "S20999C8");
    check_base_class_offset(lv, (S20999C7*)(S20999C6*)(S20999C10*), ABISELECT(168,100), "S20999C8");
    check_base_class_offset(lv, (S20999C6*)(S20999C10*), ABISELECT(168,100), "S20999C8");
    check_base_class_offset(lv, (S28C52_nt*)(S20999C10*), ABISELECT(168,100), "S20999C8");
    /*is_ambiguous_... S20999C8::S20999C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C13*)(S20999C12*), ABISELECT(200,128), "S20999C8");
    /*is_ambiguous_... S20999C8::S20999C12 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C13*)(S20999C12*), ABISELECT(200,128), "S20999C8");
    /*is_ambiguous_... S20999C8::S20999C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C13*)(S20999C12*), ABISELECT(208,132), "S20999C8");
    /*is_ambiguous_... S20999C8::S20999C12 */ AMB_check_base_class_offset(lv, (S20999C13*)(S20999C12*), ABISELECT(200,128), "S20999C8");
    /*is_ambiguous_... S20999C8::S20999C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*), ABISELECT(216,136), "S20999C8");
    /*is_ambiguous_... S20999C8::S20999C12 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C12*), ABISELECT(216,136), "S20999C8");
    /*is_ambiguous_... S20999C8::S20999C14 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C14*), ABISELECT(216,136), "S20999C8");
    /*is_ambiguous_... S20999C12::S20999C3 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C12*)(S20999C17*)(S20999C16*), ABISELECT(216,136), "S20999C8");
    check_base_class_offset(lv, (S20999C3*)(S20999C14*)(S20999C18*), ABISELECT(216,136), "S20999C8");
    /*is_ambiguous_... S20999C2::S20999C3 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C2*)(S20999C16*), ABISELECT(216,136), "S20999C8");
    check_base_class_offset(lv, (S20999C12*)(S20999C10*), ABISELECT(200,128), "S20999C8");
    /*is_ambiguous_... S20999C8::S20999C14 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C14*), ABISELECT(224,140), "S20999C8");
    /*is_ambiguous_... S20999C8::S20999C14 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C14*), ABISELECT(232,148), "S20999C8");
    check_base_class_offset(lv, (S20999C14*)(S20999C10*), ABISELECT(216,136), "S20999C8");
    check_base_class_offset(lv, (S20999C10*)(S20999C9*), ABISELECT(168,100), "S20999C8");
    /*is_ambiguous_... S20999C9::S20999C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C6*)(S20999C9*), ABISELECT(8,4), "S20999C8");
    /*is_ambiguous_... S20999C9::S20999C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C9*), 0, "S20999C8");
    /*is_ambiguous_... S20999C9::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C7*)(S20999C6*)(S20999C9*), 0, "S20999C8");
    /*is_ambiguous_... S20999C9::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C7*)(S20999C6*)(S20999C9*), 0, "S20999C8");
    /*is_ambiguous_... S20999C9::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C6*)(S20999C9*), 0, "S20999C8");
    /*is_ambiguous_... S20999C8::S20999C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*), ABISELECT(16,12), "S20999C8");
    /*is_ambiguous_... S20999C8::S20999C7 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C7*), ABISELECT(16,12), "S20999C8");
    check_base_class_offset(lv, (S20999C7*)(S20999C15*)(S20999C9*), ABISELECT(16,12), "S20999C8");
    /*is_ambiguous_... S20999C8::S20999C15 */ AMB_check_base_class_offset(lv, (S20999C7*)(S20999C15*), ABISELECT(16,12), "S20999C8");
    check_base_class_offset(lv, (S20999C7*)(S20999C15*)(S20999C16*), ABISELECT(16,12), "S20999C8");
    check_base_class_offset(lv, (S20999C15*)(S20999C9*), ABISELECT(16,12), "S20999C8");
    check_base_class_offset(lv, (S20999C9*), 0, "S20999C8");
    /*is_ambiguous_... S20999C8::S20999C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C13*), ABISELECT(240,152), "S20999C8");
    /*is_ambiguous_... S20999C8::S20999C13 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C13*), ABISELECT(240,152), "S20999C8");
    /*is_ambiguous_... S20999C8::S20999C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C13*), ABISELECT(248,156), "S20999C8");
    /*is_ambiguous_... S20999C8::S20999C13 */ AMB_check_base_class_offset(lv, (S20999C13*), ABISELECT(240,152), "S20999C8");
    /*is_ambiguous_... S20999C8::S20999C15 */ AMB_check_base_class_offset(lv, (S20999C15*), ABISELECT(48,32), "S20999C8");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C13*)(S20999C12*)(S20999C17*)(S20999C16*), ABISELECT(64,40), "S20999C8");
    check_base_class_offset(lv, (S20999C3*)(S20999C13*)(S20999C12*)(S20999C17*)(S20999C16*), ABISELECT(64,40), "S20999C8");
    /*is_ambiguous_... S20999C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C13*)(S20999C12*)(S20999C17*)(S20999C16*), ABISELECT(72,44), "S20999C8");
    check_base_class_offset(lv, (S20999C13*)(S20999C12*)(S20999C17*)(S20999C16*), ABISELECT(64,40), "S20999C8");
    check_base_class_offset(lv, (S20999C12*)(S20999C17*)(S20999C16*), ABISELECT(64,40), "S20999C8");
    /*is_ambiguous_... S20999C17::S20999C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C17*)(S20999C16*), ABISELECT(80,48), "S20999C8");
    /*is_ambiguous_... S20999C17::S20999C3 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C17*)(S20999C16*), ABISELECT(80,48), "S20999C8");
    /*is_ambiguous_... S20999C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C14*)(S20999C18*), ABISELECT(264,164), "S20999C8");
    /*is_ambiguous_... S20999C14::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C14*)(S20999C18*), ABISELECT(272,172), "S20999C8");
    check_base_class_offset(lv, (S20999C14*)(S20999C18*), ABISELECT(256,160), "S20999C8");
    check_base_class_offset(lv, (S20999C18*)(S20999C17*)(S20999C16*), ABISELECT(256,160), "S20999C8");
    /*is_ambiguous_... S20999C17::S20999C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C13*)(S20999C17*)(S20999C16*), ABISELECT(88,52), "S20999C8");
    /*is_ambiguous_... S20999C17::S20999C13 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C13*)(S20999C17*)(S20999C16*), ABISELECT(88,52), "S20999C8");
    /*is_ambiguous_... S20999C17::S20999C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C13*)(S20999C17*)(S20999C16*), ABISELECT(96,56), "S20999C8");
    /*is_ambiguous_... S20999C17::S20999C13 */ AMB_check_base_class_offset(lv, (S20999C13*)(S20999C17*)(S20999C16*), ABISELECT(88,52), "S20999C8");
    check_base_class_offset(lv, (S20999C17*)(S20999C16*), ABISELECT(64,40), "S20999C8");
    check_base_class_offset(lv, (S20999C15*)(S20999C16*), ABISELECT(104,60), "S20999C8");
    /*is_ambiguous_... S20999C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C6*)(S20999C2*)(S20999C16*), ABISELECT(128,72), "S20999C8");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C2*)(S20999C16*), ABISELECT(120,68), "S20999C8");
    check_base_class_offset(lv, (S20999C3*)(S20999C7*)(S20999C6*)(S20999C2*)(S20999C16*), ABISELECT(120,68), "S20999C8");
    check_base_class_offset(lv, (S20999C7*)(S20999C6*)(S20999C2*)(S20999C16*), ABISELECT(120,68), "S20999C8");
    check_base_class_offset(lv, (S20999C6*)(S20999C2*)(S20999C16*), ABISELECT(120,68), "S20999C8");
    check_base_class_offset(lv, (S20999C2*)(S20999C16*), ABISELECT(120,68), "S20999C8");
    /*is_ambiguous_... S20999C16::S20999C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C6*)(S20999C16*), ABISELECT(144,84), "S20999C8");
    /*is_ambiguous_... S20999C16::S20999C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C16*), ABISELECT(136,80), "S20999C8");
    /*is_ambiguous_... S20999C16::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C7*)(S20999C6*)(S20999C16*), ABISELECT(136,80), "S20999C8");
    /*is_ambiguous_... S20999C16::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C7*)(S20999C6*)(S20999C16*), ABISELECT(136,80), "S20999C8");
    /*is_ambiguous_... S20999C16::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C6*)(S20999C16*), ABISELECT(136,80), "S20999C8");
    check_base_class_offset(lv, (S20999C16*), ABISELECT(64,40), "S20999C8");
    set_bf_and_test(lv, s20999c8f0, ABISELECT(160,96), 0, 6, 1, "S20999C8");
    set_bf_and_test(lv, s20999c8f0, ABISELECT(160,96), 0, 6, hide_sll(1LL<<5), "S20999C8");
    test_class_info(&lv, &cd_S20999C8);
    dp->~S20999C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20999C8(Test_S20999C8, "S20999C8", ABISELECT(288,176));

#else // __cplusplus

extern void _ZN8S20999C8C1Ev();
extern void _ZN8S20999C8D1Ev();
Name_Map name_map_S20999C8[] = {
  NSPAIR(_ZN8S20999C8C1Ev),
  NSPAIR(_ZN8S20999C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C6;
extern VTBL_ENTRY _ZTI8S20999C6[];
extern  VTBL_ENTRY _ZTV8S20999C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C13;
extern VTBL_ENTRY _ZTI9S20999C13[];
extern  VTBL_ENTRY _ZTV9S20999C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C12;
extern VTBL_ENTRY _ZTI9S20999C12[];
extern  VTBL_ENTRY _ZTV9S20999C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C12[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C14;
extern VTBL_ENTRY _ZTI9S20999C14[];
extern  VTBL_ENTRY _ZTV9S20999C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C14[];
extern Class_Descriptor cd_S20999C10;
extern VTBL_ENTRY _ZTI9S20999C10[];
extern  VTBL_ENTRY _ZTV9S20999C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C10[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C6;
extern VTBL_ENTRY _ZTI8S20999C6[];
extern  VTBL_ENTRY _ZTV8S20999C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C6[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C15;
extern VTBL_ENTRY _ZTI9S20999C15[];
extern  VTBL_ENTRY _ZTV9S20999C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C15[];
extern Class_Descriptor cd_S20999C9;
extern VTBL_ENTRY _ZTI8S20999C9[];
extern  VTBL_ENTRY _ZTV8S20999C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C13;
extern VTBL_ENTRY _ZTI9S20999C13[];
extern  VTBL_ENTRY _ZTV9S20999C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C13[];
extern Class_Descriptor cd_S20999C15;
extern VTBL_ENTRY _ZTI9S20999C15[];
extern  VTBL_ENTRY _ZTV9S20999C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C15[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C13;
extern VTBL_ENTRY _ZTI9S20999C13[];
extern  VTBL_ENTRY _ZTV9S20999C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C13[];
extern Class_Descriptor cd_S20999C12;
extern VTBL_ENTRY _ZTI9S20999C12[];
extern  VTBL_ENTRY _ZTV9S20999C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C14;
extern VTBL_ENTRY _ZTI9S20999C14[];
extern  VTBL_ENTRY _ZTV9S20999C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C14[];
extern Class_Descriptor cd_S20999C18;
extern VTBL_ENTRY _ZTI9S20999C18[];
extern  VTBL_ENTRY _ZTV9S20999C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C18[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C13;
extern VTBL_ENTRY _ZTI9S20999C13[];
extern  VTBL_ENTRY _ZTV9S20999C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C13[];
extern Class_Descriptor cd_S20999C17;
extern VTBL_ENTRY _ZTI9S20999C17[];
extern  VTBL_ENTRY _ZTV9S20999C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C17[];
extern Class_Descriptor cd_S20999C15;
extern VTBL_ENTRY _ZTI9S20999C15[];
extern  VTBL_ENTRY _ZTV9S20999C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C15[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C6;
extern VTBL_ENTRY _ZTI8S20999C6[];
extern  VTBL_ENTRY _ZTV8S20999C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C6[];
extern Class_Descriptor cd_S20999C2;
extern VTBL_ENTRY _ZTI8S20999C2[];
extern  VTBL_ENTRY _ZTV8S20999C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C2[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C6;
extern VTBL_ENTRY _ZTI8S20999C6[];
extern  VTBL_ENTRY _ZTV8S20999C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C6[];
extern Class_Descriptor cd_S20999C16;
extern VTBL_ENTRY _ZTI9S20999C16[];
extern  VTBL_ENTRY _ZTV9S20999C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C16[];
static Base_Class bases_S20999C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(176,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
    7, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    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
    5, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20999C7,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20999C6,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    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
    19, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    10, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(200,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(208,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20999C13,    ABISELECT(200,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(216,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
    14, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(216,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20999C12,    ABISELECT(200,128), //bcp->offset
    84, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20999C14,    ABISELECT(216,136), //bcp->offset
    92, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20999C10,    ABISELECT(168,100), //bcp->offset
    70, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20999C3,    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
    16, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20999C7,    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
    17, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20999C6,    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
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    26, //immediately_derived
  0, 0},
  {&cd_S20999C3,    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
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20999C7,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S20999C15,    ABISELECT(16,12), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20999C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    ABISELECT(240,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_S20999C3,    ABISELECT(240,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(248,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
    33, //immediately_derived
  0, 0},
  {&cd_S20999C13,    ABISELECT(240,152), //bcp->offset
    101, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20999C15,    ABISELECT(48,32), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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
    36, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    38, //immediately_derived
  0, 0},
  {&cd_S20999C13,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20999C12,    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
    24, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(80,48), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    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
    44, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(272,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
    44, //immediately_derived
  0, 0},
  {&cd_S20999C14,    ABISELECT(256,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20999C18,    ABISELECT(256,160), //bcp->offset
    106, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    47, //immediately_derived
  0, 0},
  {&cd_S20999C3,    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
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    49, //immediately_derived
  0, 0},
  {&cd_S20999C13,    ABISELECT(88,52), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S20999C17,    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
    28, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S20999C15,    ABISELECT(104,60), //bcp->offset
    46, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S20999C7,    ABISELECT(120,68), //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
    31, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S20999C6,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S20999C2,    ABISELECT(120,68), //bcp->offset
    52, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    60, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S20999C7,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S20999C6,    ABISELECT(136,80), //bcp->offset
    62, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S20999C16,    ABISELECT(64,40), //bcp->offset
    27, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20999C8[];
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C8D1Ev();
extern void _ZN8S20999C8D0Ev();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
extern void ABISELECT(_ZThn64_N8S20999C8D1Ev,_ZThn40_N8S20999C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S20999C8D0Ev,_ZThn40_N8S20999C8D0Ev)();
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZThn120_N8S20999C8D1Ev,_ZThn68_N8S20999C8D1Ev)();
extern void ABISELECT(_ZThn120_N8S20999C8D0Ev,_ZThn68_N8S20999C8D0Ev)();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C22v3Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZThn136_N8S20999C8D1Ev,_ZThn80_N8S20999C8D1Ev)();
extern void ABISELECT(_ZThn136_N8S20999C8D0Ev,_ZThn80_N8S20999C8D0Ev)();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S20999C8D1Ev,_ZTv0_n36_N8S20999C8D1Ev)();
extern void ABISELECT(_ZThn168_N8S20999C8D1Ev,_ZThn100_N8S20999C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20999C8D0Ev,_ZTv0_n36_N8S20999C8D0Ev)();
extern void ABISELECT(_ZThn168_N8S20999C8D0Ev,_ZThn100_N8S20999C8D0Ev)() __attribute__((weak));
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20999C8D1Ev,_ZTv0_n24_N8S20999C8D1Ev)();
extern void ABISELECT(_ZThn216_N8S20999C8D1Ev,_ZThn136_N8S20999C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20999C8D0Ev,_ZTv0_n24_N8S20999C8D0Ev)();
extern void ABISELECT(_ZThn216_N8S20999C8D0Ev,_ZThn136_N8S20999C8D0Ev)() __attribute__((weak));
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20999C8D1Ev,_ZTv0_n24_N8S20999C8D1Ev)();
extern void ABISELECT(_ZThn256_N8S20999C8D1Ev,_ZThn160_N8S20999C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20999C8D0Ev,_ZTv0_n24_N8S20999C8D0Ev)();
extern void ABISELECT(_ZThn256_N8S20999C8D0Ev,_ZThn160_N8S20999C8D0Ev)() __attribute__((weak));
extern void _ZN9S20999C182v5Ev();
static  VTBL_ENTRY vtc_S20999C8[] = {
  ABISELECT(256,160),
  ABISELECT(240,152),
  ABISELECT(16,12),
  ABISELECT(216,136),
  ABISELECT(216,136),
  ABISELECT(200,128),
  ABISELECT(168,100),
  ABISELECT(192,120),
  ABISELECT(192,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  0,
  0,
  ABISELECT(176,108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(144,88),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  ABISELECT(128,80),
  ABISELECT(-48,-28),
  ABISELECT(192,120),
  ABISELECT(152,96),
  ABISELECT(128,80),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S20999C8D1Ev,_ZThn40_N8S20999C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S20999C8D0Ev,_ZThn40_N8S20999C8D0Ev),
  ABISELECT(112,72),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  ABISELECT(104,68),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(88,60),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  ABISELECT(96,68),
  ABISELECT(72,52),
  ABISELECT(72,52),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S20999C8D1Ev,_ZThn68_N8S20999C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S20999C8D0Ev,_ZThn68_N8S20999C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20999C22v3Ev,
  ABISELECT(56,40),
  ABISELECT(56,40),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N8S20999C8D1Ev,_ZThn80_N8S20999C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N8S20999C8D0Ev,_ZThn80_N8S20999C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  0,
  ABISELECT(-168,-100),
  0,
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20999C8D1Ev,_ZTv0_n36_N8S20999C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20999C8D0Ev,_ZTv0_n36_N8S20999C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-200,-128),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
  ABISELECT(-216,-136),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-216,-136),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20999C8D1Ev,_ZTv0_n24_N8S20999C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20999C8D0Ev,_ZTv0_n24_N8S20999C8D0Ev),
  0,
  ABISELECT(-48,-32),
  ABISELECT(-240,-152),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  0,
  ABISELECT(-256,-160),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-256,-160),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20999C8D1Ev,_ZTv0_n24_N8S20999C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20999C8D0Ev,_ZTv0_n24_N8S20999C8D0Ev),
  (VTBL_ENTRY)&_ZN9S20999C182v5Ev,
};
extern VTBL_ENTRY _ZTV8S20999C8[];
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C9D1Ev();
extern void _ZN8S20999C9D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C9__8S20999C8[] = {
  ABISELECT(16,12),
  ABISELECT(216,136),
  ABISELECT(216,136),
  ABISELECT(200,128),
  ABISELECT(168,100),
  ABISELECT(192,120),
  ABISELECT(192,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C9[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C6D1Ev();
extern void _ZN8S20999C6D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C68S20999C9__A1__8S20999C8[] = {
  ABISELECT(192,120),
  ABISELECT(192,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C6[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C78S20999C68S20999C9__A1__8S20999C8[] = {
  ABISELECT(192,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C78S20999C68S20999C9__A3__8S20999C8[] = {
  ABISELECT(192,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C158S20999C9__8S20999C8[] = {
  0,
  0,
  ABISELECT(176,108),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C15[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S20999C9D1Ev,_ZTv0_n36_N8S20999C9D1Ev)();
extern void ABISELECT(_ZThn168_N8S20999C9D1Ev,_ZThn100_N8S20999C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20999C9D0Ev,_ZTv0_n36_N8S20999C9D0Ev)();
extern void ABISELECT(_ZThn168_N8S20999C9D0Ev,_ZThn100_N8S20999C9D0Ev)() __attribute__((weak));
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C10__8S20999C9__8S20999C8[] = {
  0,
  ABISELECT(-168,-100),
  0,
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI8S20999C9[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20999C9D1Ev,_ZTv0_n36_N8S20999C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20999C9D0Ev,_ZTv0_n36_N8S20999C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C12__8S20999C9__8S20999C8[] = {
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-200,-128),
  (VTBL_ENTRY)&(_ZTI8S20999C9[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20999C9D1Ev,_ZTv0_n24_N8S20999C9D1Ev)();
extern void ABISELECT(_ZThn216_N8S20999C9D1Ev,_ZThn136_N8S20999C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20999C9D0Ev,_ZTv0_n24_N8S20999C9D0Ev)();
extern void ABISELECT(_ZThn216_N8S20999C9D0Ev,_ZThn136_N8S20999C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20999C14__8S20999C9__8S20999C8[] = {
  ABISELECT(-216,-136),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-216,-136),
  (VTBL_ENTRY)&(_ZTI8S20999C9[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20999C9D1Ev,_ZTv0_n24_N8S20999C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20999C9D0Ev,_ZTv0_n24_N8S20999C9D0Ev),
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C15__8S20999C9__8S20999C8[] = {
  0,
  0,
  ABISELECT(176,108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20999C9[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C15__A1__8S20999C8[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(144,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C15[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C7__9S20999C15__A1__8S20999C8[] = {
  0,
  ABISELECT(176,108),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI9S20999C15[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
extern void _ZN9S20999C16D1Ev();
extern void _ZN9S20999C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C16__8S20999C8[] = {
  ABISELECT(128,80),
  ABISELECT(-48,-28),
  ABISELECT(192,120),
  ABISELECT(152,96),
  ABISELECT(128,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
  (VTBL_ENTRY)&_ZN9S20999C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C16D0Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
extern void _ZN9S20999C17D1Ev();
extern void _ZN9S20999C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C179S20999C16__8S20999C8[] = {
  ABISELECT(192,120),
  ABISELECT(152,96),
  ABISELECT(128,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C17[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
  (VTBL_ENTRY)&_ZN9S20999C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C17D0Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C129S20999C179S20999C16__A1__8S20999C8[] = {
  ABISELECT(152,96),
  ABISELECT(128,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C12[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C139S20999C129S20999C179S20999C16__A2__8S20999C8[] = {
  ABISELECT(128,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C13[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C139S20999C129S20999C179S20999C16__A6__8S20999C8[] = {
  ABISELECT(128,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A1__9S20999C129S20999C179S20999C16__A1__8S20999C8[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S20999C12[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C179S20999C16__A7__8S20999C8[] = {
  ABISELECT(112,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C139S20999C179S20999C16__A3__8S20999C8[] = {
  ABISELECT(104,68),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C13[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C139S20999C179S20999C16__A8__8S20999C8[] = {
  ABISELECT(104,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A1__9S20999C179S20999C16__8S20999C8[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S20999C17[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A__9S20999C179S20999C16__8S20999C8[] = {
  ABISELECT(112,72),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20999C17[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20999C17D1Ev,_ZTv0_n24_N9S20999C17D1Ev)();
extern void ABISELECT(_ZThn192_N9S20999C17D1Ev,_ZThn120_N9S20999C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20999C17D0Ev,_ZTv0_n24_N9S20999C17D0Ev)();
extern void ABISELECT(_ZThn192_N9S20999C17D0Ev,_ZThn120_N9S20999C17D0Ev)() __attribute__((weak));
extern void _ZN9S20999C182v5Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C18__9S20999C179S20999C16__8S20999C8[] = {
  0,
  ABISELECT(-192,-120),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI9S20999C17[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C17D1Ev,_ZTv0_n24_N9S20999C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C17D0Ev,_ZTv0_n24_N9S20999C17D0Ev),
  (VTBL_ENTRY)&_ZN9S20999C182v5Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C13__A1__9S20999C179S20999C16__8S20999C8[] = {
  ABISELECT(104,68),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20999C17[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C159S20999C16__A2__8S20999C8[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(88,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C15[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C7__9S20999C159S20999C16__A2__8S20999C8[] = {
  0,
  ABISELECT(176,108),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S20999C15[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C2D1Ev();
extern void _ZN8S20999C2D0Ev();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C29S20999C16__8S20999C8[] = {
  ABISELECT(96,68),
  ABISELECT(72,52),
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C2[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20999C22v3Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C6D1Ev();
extern void _ZN8S20999C6D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C68S20999C29S20999C16__A2__8S20999C8[] = {
  ABISELECT(72,52),
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C6[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C78S20999C68S20999C29S20999C16__A3__8S20999C8[] = {
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C78S20999C68S20999C29S20999C16__A9__8S20999C8[] = {
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__8S20999C29S20999C16__8S20999C8[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S20999C2[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C6D1Ev();
extern void _ZN8S20999C6D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C69S20999C16__A3__8S20999C8[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C6[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C78S20999C69S20999C16__A4__8S20999C8[] = {
  ABISELECT(56,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C78S20999C69S20999C16__A10__8S20999C8[] = {
  ABISELECT(56,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A1__9S20999C16__8S20999C8[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C17__A2__9S20999C16__8S20999C8[] = {
  ABISELECT(112,72),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20999C16D1Ev,_ZTv0_n24_N9S20999C16D1Ev)();
extern void ABISELECT(_ZThn192_N9S20999C16D1Ev,_ZThn120_N9S20999C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20999C16D0Ev,_ZTv0_n24_N9S20999C16D0Ev)();
extern void ABISELECT(_ZThn192_N9S20999C16D0Ev,_ZThn120_N9S20999C16D0Ev)() __attribute__((weak));
extern void _ZN9S20999C182v5Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C18__9S20999C16__8S20999C8[] = {
  0,
  ABISELECT(-192,-120),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C16D1Ev,_ZTv0_n24_N9S20999C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C16D0Ev,_ZTv0_n24_N9S20999C16D0Ev),
  (VTBL_ENTRY)&_ZN9S20999C182v5Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C139S20999C17__A1__9S20999C16__8S20999C8[] = {
  ABISELECT(104,68),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C15__9S20999C16__8S20999C8[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(88,60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C7__9S20999C16__8S20999C8[] = {
  0,
  ABISELECT(176,108),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZThn56_N9S20999C16D1Ev,_ZThn28_N9S20999C16D1Ev)();
extern void ABISELECT(_ZThn56_N9S20999C16D0Ev,_ZThn28_N9S20999C16D0Ev)();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C2__9S20999C16__8S20999C8[] = {
  ABISELECT(96,68),
  ABISELECT(72,52),
  ABISELECT(72,52),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20999C16D1Ev,_ZThn28_N9S20999C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20999C16D0Ev,_ZThn28_N9S20999C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20999C22v3Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZThn72_N9S20999C16D1Ev,_ZThn40_N9S20999C16D1Ev)();
extern void ABISELECT(_ZThn72_N9S20999C16D0Ev,_ZThn40_N9S20999C16D0Ev)();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C6__A1__9S20999C16__8S20999C8[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N9S20999C16D1Ev,_ZThn40_N9S20999C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N9S20999C16D0Ev,_ZThn40_N9S20999C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C10D1Ev();
extern void _ZN9S20999C10D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C10__8S20999C8[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C10[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C10D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C6D1Ev();
extern void _ZN8S20999C6D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C69S20999C10__8S20999C8[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C6[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C78S20999C69S20999C10__8S20999C8[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C78S20999C69S20999C10__8S20999C8[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C12__9S20999C10__8S20999C8[] = {
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI9S20999C10[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20999C10D1Ev,_ZTv0_n24_N9S20999C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S20999C10D1Ev,_ZThn36_N9S20999C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20999C10D0Ev,_ZTv0_n24_N9S20999C10D0Ev)();
extern void ABISELECT(_ZThn48_N9S20999C10D0Ev,_ZThn36_N9S20999C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20999C14__9S20999C10__8S20999C8[] = {
  ABISELECT(-48,-36),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S20999C10[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C10D1Ev,_ZTv0_n24_N9S20999C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C10D0Ev,_ZTv0_n24_N9S20999C10D0Ev),
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C12__8S20999C8[] = {
  ABISELECT(16,8),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C12[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C139S20999C12__8S20999C8[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C13[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C139S20999C12__A1__8S20999C8[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A1__9S20999C12__8S20999C8[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20999C12[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A2__8S20999C8[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C14D1Ev();
extern void _ZN9S20999C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C14__8S20999C8[] = {
  0,
  0,
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C14[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D0Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C7__A2__8S20999C8[] = {
  ABISELECT(176,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C7__A4__8S20999C8[] = {
  ABISELECT(176,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C13__A1__8S20999C8[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C13[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C13__A5__8S20999C8[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C18D1Ev();
extern void _ZN9S20999C18D0Ev();
extern void _ZN9S20999C182v5Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C18__8S20999C8[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C18[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C18D0Ev,
  (VTBL_ENTRY)&_ZN9S20999C182v5Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C14D1Ev();
extern void _ZN9S20999C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C149S20999C18__A1__8S20999C8[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C14[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D0Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__9S20999C149S20999C18__A1__8S20999C8[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20999C14[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__9S20999C18__8S20999C8[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20999C18[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
static  VTT_ENTRY vtt_S20999C8[] = {
  {&(_ZTV8S20999C8[11]),  11,117},
  {&(_tg__ZTV8S20999C9__8S20999C8[9]),  9,13},
  {&(_tg__ZTV8S20999C68S20999C9__A1__8S20999C8[4]),  4,8},
  {&(_tg__ZTV8S20999C78S20999C68S20999C9__A1__8S20999C8[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C78S20999C68S20999C9__A3__8S20999C8[3]),  3,4},
  {&(_tg__ZTV9S20999C158S20999C9__8S20999C8[5]),  5,6},
  {&(_tg__ZTV9S20999C158S20999C9__8S20999C8[5]),  5,6},
  {&(_tg__ZTV9S20999C10__8S20999C9__8S20999C8[10]),  10,14},
  {&(_tg__ZTV9S20999C12__8S20999C9__8S20999C8[6]),  6,8},
  {&(_tg__ZTV9S20999C14__8S20999C9__8S20999C8[6]),  6,9},
  {&(_tg__ZTV9S20999C14__8S20999C9__8S20999C8[6]),  6,9},
  {&(_tg__ZTV9S20999C15__8S20999C9__8S20999C8[5]),  5,6},
  {&(_tg__ZTV9S20999C15__8S20999C9__8S20999C8[5]),  5,6},
  {&(_tg__ZTV9S20999C15__A1__8S20999C8[5]),  5,6},
  {&(_tg__ZTV8S20999C7__9S20999C15__A1__8S20999C8[4]),  4,5},
  {&(_tg__ZTV9S20999C16__8S20999C8[7]),  7,11},
  {&(_tg__ZTV9S20999C179S20999C16__8S20999C8[5]),  5,9},
  {&(_tg__ZTV9S20999C129S20999C179S20999C16__A1__8S20999C8[4]),  4,6},
  {&(_tg__ZTV9S20999C139S20999C129S20999C179S20999C16__A2__8S20999C8[3]),  3,4},
  {&(_tg__ZTV8S20999C39S20999C139S20999C129S20999C179S20999C16__A6__8S20999C8[3]),  3,4},
  {&(_tg__ZTV8S20999C3__A1__9S20999C129S20999C179S20999C16__A1__8S20999C8[4]),  4,5},
  {&(_tg__ZTV8S20999C39S20999C179S20999C16__A7__8S20999C8[3]),  3,4},
  {&(_tg__ZTV9S20999C139S20999C179S20999C16__A3__8S20999C8[3]),  3,4},
  {&(_tg__ZTV8S20999C39S20999C139S20999C179S20999C16__A8__8S20999C8[3]),  3,4},
  {&(_tg__ZTV8S20999C3__A1__9S20999C179S20999C16__8S20999C8[4]),  4,5},
  {&(_tg__ZTV8S20999C3__A__9S20999C179S20999C16__8S20999C8[3]),  3,4},
  {&(_tg__ZTV9S20999C18__9S20999C179S20999C16__8S20999C8[7]),  7,11},
  {&(_tg__ZTV9S20999C13__A1__9S20999C179S20999C16__8S20999C8[3]),  3,4},
  {&(_tg__ZTV9S20999C159S20999C16__A2__8S20999C8[5]),  5,6},
  {&(_tg__ZTV8S20999C7__9S20999C159S20999C16__A2__8S20999C8[4]),  4,5},
  {&(_tg__ZTV8S20999C29S20999C16__8S20999C8[5]),  5,10},
  {&(_tg__ZTV8S20999C68S20999C29S20999C16__A2__8S20999C8[4]),  4,8},
  {&(_tg__ZTV8S20999C78S20999C68S20999C29S20999C16__A3__8S20999C8[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C78S20999C68S20999C29S20999C16__A9__8S20999C8[3]),  3,4},
  {&(_tg__ZTV8S20999C3__8S20999C29S20999C16__8S20999C8[4]),  4,5},
  {&(_tg__ZTV8S20999C69S20999C16__A3__8S20999C8[4]),  4,8},
  {&(_tg__ZTV8S20999C78S20999C69S20999C16__A4__8S20999C8[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C78S20999C69S20999C16__A10__8S20999C8[3]),  3,4},
  {&(_tg__ZTV8S20999C3__A1__9S20999C16__8S20999C8[4]),  4,5},
  {&(_tg__ZTV8S20999C39S20999C17__A2__9S20999C16__8S20999C8[3]),  3,4},
  {&(_tg__ZTV9S20999C18__9S20999C16__8S20999C8[7]),  7,11},
  {&(_tg__ZTV9S20999C139S20999C17__A1__9S20999C16__8S20999C8[3]),  3,4},
  {&(_tg__ZTV9S20999C15__9S20999C16__8S20999C8[5]),  5,6},
  {&(_tg__ZTV8S20999C7__9S20999C16__8S20999C8[4]),  4,5},
  {&(_tg__ZTV8S20999C2__9S20999C16__8S20999C8[5]),  5,10},
  {&(_tg__ZTV8S20999C6__A1__9S20999C16__8S20999C8[4]),  4,8},
  {&(_ZTV8S20999C8[80]),  80,117},
  {&(_ZTV8S20999C8[90]),  90,117},
  {&(_ZTV8S20999C8[98]),  98,117},
  {&(_ZTV8S20999C8[98]),  98,117},
  {&(_ZTV8S20999C8[20]),  20,117},
  {&(_ZTV8S20999C8[20]),  20,117},
  {&(_ZTV8S20999C8[105]),  105,117},
  {&(_ZTV8S20999C8[26]),  26,117},
  {&(_ZTV8S20999C8[34]),  34,117},
  {&(_ZTV8S20999C8[41]),  41,117},
  {&(_ZTV8S20999C8[113]),  113,117},
  {&(_ZTV8S20999C8[45]),  45,117},
  {&(_ZTV8S20999C8[51]),  51,117},
  {&(_ZTV8S20999C8[57]),  57,117},
  {&(_ZTV8S20999C8[66]),  66,117},
  {&(_tg__ZTV9S20999C10__8S20999C8[7]),  7,11},
  {&(_tg__ZTV8S20999C69S20999C10__8S20999C8[4]),  4,8},
  {&(_tg__ZTV8S20999C78S20999C69S20999C10__8S20999C8[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C78S20999C69S20999C10__8S20999C8[3]),  3,4},
  {&(_tg__ZTV9S20999C12__9S20999C10__8S20999C8[6]),  6,8},
  {&(_tg__ZTV9S20999C14__9S20999C10__8S20999C8[6]),  6,9},
  {&(_tg__ZTV9S20999C14__9S20999C10__8S20999C8[6]),  6,9},
  {&(_tg__ZTV9S20999C12__8S20999C8[4]),  4,6},
  {&(_tg__ZTV9S20999C139S20999C12__8S20999C8[3]),  3,4},
  {&(_tg__ZTV8S20999C39S20999C139S20999C12__A1__8S20999C8[3]),  3,4},
  {&(_tg__ZTV8S20999C3__A1__9S20999C12__8S20999C8[4]),  4,5},
  {&(_tg__ZTV8S20999C3__A2__8S20999C8[3]),  3,4},
  {&(_tg__ZTV9S20999C14__8S20999C8[5]),  5,8},
  {&(_tg__ZTV9S20999C14__8S20999C8[5]),  5,8},
  {&(_tg__ZTV8S20999C7__A2__8S20999C8[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C7__A4__8S20999C8[3]),  3,4},
  {&(_tg__ZTV9S20999C13__A1__8S20999C8[3]),  3,4},
  {&(_tg__ZTV8S20999C39S20999C13__A5__8S20999C8[3]),  3,4},
  {&(_tg__ZTV9S20999C18__8S20999C8[5]),  5,9},
  {&(_tg__ZTV9S20999C149S20999C18__A1__8S20999C8[5]),  5,8},
  {&(_tg__ZTV8S20999C3__9S20999C149S20999C18__A1__8S20999C8[4]),  4,5},
  {&(_tg__ZTV8S20999C3__9S20999C18__8S20999C8[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S20999C8[];
extern  VTBL_ENTRY _ZTV8S20999C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C8[];
static VTBL_ENTRY alt_thunk_names19[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C10D0Ev,_ZTv0_n24_N9S20999C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20999C10D0Ev,_ZThn36_N9S20999C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C10D1Ev,_ZTv0_n24_N9S20999C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20999C10D1Ev,_ZThn36_N9S20999C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C16D0Ev,_ZTv0_n24_N9S20999C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20999C16D0Ev,_ZThn120_N9S20999C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C16D1Ev,_ZTv0_n24_N9S20999C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20999C16D1Ev,_ZThn120_N9S20999C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C17D0Ev,_ZTv0_n24_N9S20999C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20999C17D0Ev,_ZThn120_N9S20999C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C17D1Ev,_ZTv0_n24_N9S20999C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20999C17D1Ev,_ZThn120_N9S20999C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20999C9D0Ev,_ZTv0_n24_N8S20999C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S20999C9D0Ev,_ZThn136_N8S20999C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20999C9D1Ev,_ZTv0_n24_N8S20999C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S20999C9D1Ev,_ZThn136_N8S20999C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20999C9D0Ev,_ZTv0_n36_N8S20999C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20999C9D0Ev,_ZThn100_N8S20999C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20999C9D1Ev,_ZTv0_n36_N8S20999C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20999C9D1Ev,_ZThn100_N8S20999C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20999C8D0Ev,_ZTv0_n24_N8S20999C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20999C8D0Ev,_ZThn160_N8S20999C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S20999C8D0Ev,_ZThn136_N8S20999C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20999C8D1Ev,_ZTv0_n24_N8S20999C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20999C8D1Ev,_ZThn160_N8S20999C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S20999C8D1Ev,_ZThn136_N8S20999C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20999C8D0Ev,_ZTv0_n36_N8S20999C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20999C8D0Ev,_ZThn100_N8S20999C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20999C8D1Ev,_ZTv0_n36_N8S20999C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20999C8D1Ev,_ZThn100_N8S20999C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20999C8 = {  "S20999C8", // class name
  bases_S20999C8, 64,
  &(vtc_S20999C8[0]), // expected_vtbl_contents
  &(vtt_S20999C8[0]), // expected_vtt_contents
  ABISELECT(288,176), // object size
  NSPAIRA(_ZTI8S20999C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20999C8),117, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20999C8),83, //virtual table table var
  37, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names19,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20999C20  : virtual S3461C5_nt , virtual S20999C13 , S20999C14 , virtual S20999C6 , S20999C10 {
  ~S20999C20(); // tgen
  S20999C20(); // tgen
};
//SIG(-1 S20999C20) C1{ VBC2{ m FL} VBC3{ VBC2 BC4{ VBC2 BC5{ m} v1} BC5} BC6{ BC2 VBC4 BC5 vd} VBC7{ BC2 VBC5 BC8{ BC4} vd v2} BC9{ BC2 BC7 BC10{ m} VBC11{ VBC2 BC3 VBC4 v3} VBC6 vd}}


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

static void Test_S20999C20()
{
  extern Class_Descriptor cd_S20999C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,24)];
    init_test(&cd_S20999C20, buf);
    S20999C20 *dp, &lv = *(dp=new (buf) S20999C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S20999C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20999C20)");
    /*is_ambiguous_... S20999C20::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(48,36), "S20999C20");
    /*is_ambiguous_... S20999C20::S20999C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C13*), ABISELECT(48,36), "S20999C20");
    /*is_ambiguous_... S20999C20::S20999C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C13*), ABISELECT(48,36), "S20999C20");
    /*is_ambiguous_... S20999C20::S20999C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*), ABISELECT(48,36), "S20999C20");
    /*is_ambiguous_... S20999C20::S20999C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*)(S20999C6*), ABISELECT(48,36), "S20999C20");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C10*), ABISELECT(48,36), "S20999C20");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C12*), ABISELECT(48,36), "S20999C20");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C13*)(S20999C12*), ABISELECT(48,36), "S20999C20");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C13*)(S20999C12*), ABISELECT(48,36), "S20999C20");
    /*is_ambiguous_... S20999C20::S20999C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C13*), ABISELECT(56,44), "S20999C20");
    /*is_ambiguous_... S20999C20::S20999C13 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C13*), ABISELECT(56,44), "S20999C20");
    /*is_ambiguous_... S20999C20::S20999C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C13*), ABISELECT(64,48), "S20999C20");
    /*is_ambiguous_... S20999C20::S20999C13 */ AMB_check_base_class_offset(lv, (S20999C13*), ABISELECT(56,44), "S20999C20");
    /*is_ambiguous_... S20999C20::S20999C14 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C14*), ABISELECT(8,4), "S20999C20");
    /*is_ambiguous_... S20999C20::S20999C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*), 0, "S20999C20");
    /*is_ambiguous_... S20999C20::S20999C14 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C14*), 0, "S20999C20");
    /*is_ambiguous_... S20999C12::S20999C3 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C12*), 0, "S20999C20");
    /*is_ambiguous_... S20999C20::S20999C14 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C14*), 0, "S20999C20");
    /*is_ambiguous_... S20999C20::S20999C14 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C14*), ABISELECT(16,12), "S20999C20");
    /*is_ambiguous_... S20999C20::S20999C14 */ AMB_check_base_class_offset(lv, (S20999C14*), 0, "S20999C20");
    /*is_ambiguous_... S20999C20::S20999C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C6*), ABISELECT(80,56), "S20999C20");
    /*is_ambiguous_... S20999C20::S20999C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C6*), ABISELECT(88,64), "S20999C20");
    /*is_ambiguous_... S20999C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C6*)(S20999C10*), ABISELECT(88,64), "S20999C20");
    /*is_ambiguous_... S20999C20::S20999C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*)(S20999C6*), ABISELECT(72,52), "S20999C20");
    /*is_ambiguous_... S20999C20::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C7*)(S20999C6*), ABISELECT(72,52), "S20999C20");
    /*is_ambiguous_... S20999C20::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C7*)(S20999C6*), ABISELECT(72,52), "S20999C20");
    /*is_ambiguous_... S20999C20::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C6*), ABISELECT(72,52), "S20999C20");
    /*is_ambiguous_... S20999C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C10*), ABISELECT(40,28), "S20999C20");
    /*is_ambiguous_... S20999C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C6*)(S20999C10*), ABISELECT(32,20), "S20999C20");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C10*), ABISELECT(24,16), "S20999C20");
    check_base_class_offset(lv, (S20999C3*)(S20999C7*)(S20999C6*)(S20999C10*), ABISELECT(24,16), "S20999C20");
    check_base_class_offset(lv, (S20999C7*)(S20999C6*)(S20999C10*), ABISELECT(24,16), "S20999C20");
    check_base_class_offset(lv, (S20999C6*)(S20999C10*), ABISELECT(24,16), "S20999C20");
    check_base_class_offset(lv, (S28C52_nt*)(S20999C10*), ABISELECT(24,16), "S20999C20");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C13*)(S20999C12*), ABISELECT(96,68), "S20999C20");
    check_base_class_offset(lv, (S20999C3*)(S20999C13*)(S20999C12*), ABISELECT(96,68), "S20999C20");
    /*is_ambiguous_... S20999C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C13*)(S20999C12*), ABISELECT(104,72), "S20999C20");
    check_base_class_offset(lv, (S20999C13*)(S20999C12*), ABISELECT(96,68), "S20999C20");
    check_base_class_offset(lv, (S20999C12*)(S20999C10*), ABISELECT(96,68), "S20999C20");
    /*is_ambiguous_... S20999C20::S20999C14 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C14*), ABISELECT(120,80), "S20999C20");
    /*is_ambiguous_... S20999C20::S20999C14 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C14*), ABISELECT(128,88), "S20999C20");
    check_base_class_offset(lv, (S20999C14*)(S20999C10*), ABISELECT(112,76), "S20999C20");
    check_base_class_offset(lv, (S20999C10*), ABISELECT(24,16), "S20999C20");
    test_class_info(&lv, &cd_S20999C20);
    dp->~S20999C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20999C20(Test_S20999C20, "S20999C20", ABISELECT(136,92));

#else // __cplusplus

extern void _ZN9S20999C20C1Ev();
extern void _ZN9S20999C20D1Ev();
Name_Map name_map_S20999C20[] = {
  NSPAIR(_ZN9S20999C20C1Ev),
  NSPAIR(_ZN9S20999C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C13;
extern VTBL_ENTRY _ZTI9S20999C13[];
extern  VTBL_ENTRY _ZTV9S20999C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C14;
extern VTBL_ENTRY _ZTI9S20999C14[];
extern  VTBL_ENTRY _ZTV9S20999C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C14[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C6;
extern VTBL_ENTRY _ZTI8S20999C6[];
extern  VTBL_ENTRY _ZTV8S20999C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C6[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C6;
extern VTBL_ENTRY _ZTI8S20999C6[];
extern  VTBL_ENTRY _ZTV8S20999C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C13;
extern VTBL_ENTRY _ZTI9S20999C13[];
extern  VTBL_ENTRY _ZTV9S20999C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C13[];
extern Class_Descriptor cd_S20999C12;
extern VTBL_ENTRY _ZTI9S20999C12[];
extern  VTBL_ENTRY _ZTV9S20999C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C12[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C14;
extern VTBL_ENTRY _ZTI9S20999C14[];
extern  VTBL_ENTRY _ZTV9S20999C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C14[];
extern Class_Descriptor cd_S20999C10;
extern VTBL_ENTRY _ZTI9S20999C10[];
extern  VTBL_ENTRY _ZTV9S20999C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C10[];
static Base_Class bases_S20999C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(56,44), //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
    4, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(64,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20999C13,    ABISELECT(56,44), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20999C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20999C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(88,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_S731C17_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
    13, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(72,52), //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
    14, //immediately_derived
  0, 0},
  {&cd_S20999C7,    ABISELECT(72,52), //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
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20999C6,    ABISELECT(72,52), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_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
    31, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20999C3,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20999C7,    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
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20999C6,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(104,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20999C13,    ABISELECT(96,68), //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
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20999C12,    ABISELECT(96,68), //bcp->offset
    40, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(120,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(128,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20999C14,    ABISELECT(112,76), //bcp->offset
    48, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S20999C10,    ABISELECT(24,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20999C20[];
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C20D1Ev();
extern void _ZN9S20999C20D0Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZThn24_N9S20999C20D1Ev,_ZThn16_N9S20999C20D1Ev)();
extern void ABISELECT(_ZThn24_N9S20999C20D0Ev,_ZThn16_N9S20999C20D0Ev)();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20999C20D1Ev,_ZTv0_n24_N9S20999C20D1Ev)();
extern void ABISELECT(_ZThn72_N9S20999C20D1Ev,_ZThn52_N9S20999C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20999C20D0Ev,_ZTv0_n24_N9S20999C20D0Ev)();
extern void ABISELECT(_ZThn72_N9S20999C20D0Ev,_ZThn52_N9S20999C20D0Ev)() __attribute__((weak));
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20999C20D1Ev,_ZTv0_n24_N9S20999C20D1Ev)();
extern void ABISELECT(_ZThn112_N9S20999C20D1Ev,_ZThn76_N9S20999C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20999C20D0Ev,_ZTv0_n24_N9S20999C20D0Ev)();
extern void ABISELECT(_ZThn112_N9S20999C20D0Ev,_ZThn76_N9S20999C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20999C20[] = {
  ABISELECT(112,76),
  ABISELECT(96,68),
  ABISELECT(88,64),
  ABISELECT(72,52),
  ABISELECT(56,44),
  0,
  0,
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C20[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C20D0Ev,
  ABISELECT(88,60),
  ABISELECT(-24,-16),
  ABISELECT(72,52),
  ABISELECT(64,48),
  ABISELECT(24,20),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20999C20[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S20999C20D1Ev,_ZThn16_N9S20999C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S20999C20D0Ev,_ZThn16_N9S20999C20D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  0,
  -8,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20999C20[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI9S20999C20[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C20D1Ev,_ZTv0_n24_N9S20999C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C20D0Ev,_ZTv0_n24_N9S20999C20D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  0,
  0,
  ABISELECT(-96,-68),
  ABISELECT(-48,-32),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI9S20999C20[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-64,-40),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S20999C20[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C20D1Ev,_ZTv0_n24_N9S20999C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C20D0Ev,_ZTv0_n24_N9S20999C20D0Ev),
};
extern VTBL_ENTRY _ZTV9S20999C20[];
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C14D1Ev();
extern void _ZN9S20999C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C14__A__9S20999C20[] = {
  0,
  0,
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C14[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D0Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C10D1Ev();
extern void _ZN9S20999C10D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C10__9S20999C20[] = {
  ABISELECT(88,60),
  ABISELECT(-24,-16),
  ABISELECT(72,52),
  ABISELECT(64,48),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C10[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C10D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C6D1Ev();
extern void _ZN8S20999C6D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C69S20999C10__A1__9S20999C20[] = {
  ABISELECT(64,48),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C6[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C78S20999C69S20999C10__A1__9S20999C20[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C78S20999C69S20999C10__A3__9S20999C20[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C12__9S20999C10__9S20999C20[] = {
  0,
  0,
  ABISELECT(-96,-68),
  ABISELECT(-48,-32),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI9S20999C10[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A2__9S20999C10__9S20999C20[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20999C10[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20999C10D1Ev,_ZTv0_n24_N9S20999C10D1Ev)();
extern void ABISELECT(_ZThn88_N9S20999C10D1Ev,_ZThn60_N9S20999C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20999C10D0Ev,_ZTv0_n24_N9S20999C10D0Ev)();
extern void ABISELECT(_ZThn88_N9S20999C10D0Ev,_ZThn60_N9S20999C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20999C14__9S20999C10__9S20999C20[] = {
  ABISELECT(-88,-60),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-64,-40),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI9S20999C10[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C10D1Ev,_ZTv0_n24_N9S20999C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C10D0Ev,_ZTv0_n24_N9S20999C10D0Ev),
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C13__9S20999C20[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C13[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C13__9S20999C20[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A1__9S20999C20[] = {
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C6D1Ev();
extern void _ZN8S20999C6D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C6__9S20999C20[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C6[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C78S20999C6__9S20999C20[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C78S20999C6__A2__9S20999C20[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C12__9S20999C20[] = {
  ABISELECT(-96,-68),
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C12[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C139S20999C12__A1__9S20999C20[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C13[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C139S20999C12__A4__9S20999C20[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A1__9S20999C12__9S20999C20[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S20999C12[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C14D1Ev();
extern void _ZN9S20999C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C14__A1__9S20999C20[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C14[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D0Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__9S20999C14__A1__9S20999C20[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(112,76),
  (VTBL_ENTRY)&(_ZTI9S20999C14[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
static  VTT_ENTRY vtt_S20999C20[] = {
  {&(_ZTV9S20999C20[10]),  10,57},
  {&(_tg__ZTV9S20999C14__A__9S20999C20[5]),  5,8},
  {&(_tg__ZTV9S20999C14__A__9S20999C20[5]),  5,8},
  {&(_tg__ZTV9S20999C10__9S20999C20[7]),  7,11},
  {&(_tg__ZTV8S20999C69S20999C10__A1__9S20999C20[4]),  4,8},
  {&(_tg__ZTV8S20999C78S20999C69S20999C10__A1__9S20999C20[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C78S20999C69S20999C10__A3__9S20999C20[3]),  3,4},
  {&(_tg__ZTV9S20999C12__9S20999C10__9S20999C20[6]),  6,8},
  {&(_tg__ZTV8S20999C3__A2__9S20999C10__9S20999C20[4]),  4,5},
  {&(_tg__ZTV9S20999C14__9S20999C10__9S20999C20[6]),  6,9},
  {&(_ZTV9S20999C20[28]),  28,57},
  {&(_ZTV9S20999C20[10]),  10,57},
  {&(_ZTV9S20999C20[36]),  36,57},
  {&(_ZTV9S20999C20[20]),  20,57},
  {&(_ZTV9S20999C20[46]),  46,57},
  {&(_ZTV9S20999C20[54]),  54,57},
  {&(_tg__ZTV9S20999C13__9S20999C20[3]),  3,4},
  {&(_tg__ZTV8S20999C39S20999C13__9S20999C20[3]),  3,4},
  {&(_tg__ZTV8S20999C3__A1__9S20999C20[3]),  3,4},
  {&(_tg__ZTV8S20999C6__9S20999C20[4]),  4,8},
  {&(_tg__ZTV8S20999C78S20999C6__9S20999C20[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C78S20999C6__A2__9S20999C20[3]),  3,4},
  {&(_tg__ZTV9S20999C12__9S20999C20[4]),  4,6},
  {&(_tg__ZTV9S20999C139S20999C12__A1__9S20999C20[3]),  3,4},
  {&(_tg__ZTV8S20999C39S20999C139S20999C12__A4__9S20999C20[3]),  3,4},
  {&(_tg__ZTV8S20999C3__A1__9S20999C12__9S20999C20[4]),  4,5},
  {&(_tg__ZTV9S20999C14__A1__9S20999C20[5]),  5,8},
  {&(_tg__ZTV8S20999C3__9S20999C14__A1__9S20999C20[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S20999C20[];
extern  VTBL_ENTRY _ZTV9S20999C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C20[];
static VTBL_ENTRY alt_thunk_names20[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C10D0Ev,_ZTv0_n24_N9S20999C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20999C10D0Ev,_ZThn60_N9S20999C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C10D1Ev,_ZTv0_n24_N9S20999C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20999C10D1Ev,_ZThn60_N9S20999C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C20D0Ev,_ZTv0_n24_N9S20999C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20999C20D0Ev,_ZThn76_N9S20999C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20999C20D0Ev,_ZThn52_N9S20999C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C20D1Ev,_ZTv0_n24_N9S20999C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20999C20D1Ev,_ZThn76_N9S20999C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20999C20D1Ev,_ZThn52_N9S20999C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20999C20 = {  "S20999C20", // class name
  bases_S20999C20, 32,
  &(vtc_S20999C20[0]), // expected_vtbl_contents
  &(vtt_S20999C20[0]), // expected_vtt_contents
  ABISELECT(136,92), // object size
  NSPAIRA(_ZTI9S20999C20),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20999C20),57, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20999C20),28, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names20,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20999C19  : virtual S20999C15 , S20999C2 , virtual S20999C14 , virtual S20999C20 {
  void *s20999c19f0[9];
  virtual  ~S20999C19(); // _ZN9S20999C19D2Ev
  S20999C19(); // tgen
};
//SIG(-1 S20999C19) C1{ VBC2{ VBC3{ BC4{ VBC5{ m FL} BC6{ m} v1}} Fi} BC7{ VBC4 BC8{ BC5 VBC6 BC3 vd v2} vd v3} VBC9{ BC5 VBC4 BC6 vd} VBC10{ VBC5 VBC11{ VBC5 BC4 BC6} BC9 VBC8 BC12{ BC5 BC8 BC13{ m} VBC14{ VBC5 BC11 VBC4 v4} VBC9 vd}} vd Fp[9]}


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

static void Test_S20999C19()
{
  extern Class_Descriptor cd_S20999C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,38)];
    init_test(&cd_S20999C19, buf);
    S20999C19 *dp, &lv = *(dp=new (buf) S20999C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,148), "sizeof(S20999C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20999C19)");
    /*is_ambiguous_... S20999C19::S20999C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*), ABISELECT(104,56), "S20999C19");
    /*is_ambiguous_... S20999C19::S20999C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*), ABISELECT(104,56), "S20999C19");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C2*), ABISELECT(104,56), "S20999C19");
    /*is_ambiguous_... S20999C20::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C20*), ABISELECT(104,56), "S20999C19");
    /*is_ambiguous_... S20999C19::S20999C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C13*), ABISELECT(104,56), "S20999C19");
    /*is_ambiguous_... S20999C19::S20999C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C13*), ABISELECT(104,56), "S20999C19");
    /*is_ambiguous_... S20999C19::S20999C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*)(S20999C6*), ABISELECT(104,56), "S20999C19");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C10*)(S20999C20*), ABISELECT(104,56), "S20999C19");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C12*), ABISELECT(104,56), "S20999C19");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C13*)(S20999C12*), ABISELECT(104,56), "S20999C19");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C13*)(S20999C12*), ABISELECT(104,56), "S20999C19");
    /*is_ambiguous_... S20999C19::S20999C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*), ABISELECT(88,48), "S20999C19");
    /*is_ambiguous_... S20999C19::S20999C7 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C7*), ABISELECT(88,48), "S20999C19");
    check_base_class_offset(lv, (S20999C7*)(S20999C15*), ABISELECT(88,48), "S20999C19");
    check_base_class_offset(lv, (S20999C15*), ABISELECT(88,48), "S20999C19");
    /*is_ambiguous_... S20999C19::S20999C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*), ABISELECT(120,68), "S20999C19");
    /*is_ambiguous_... S20999C2::S20999C3 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C2*), ABISELECT(120,68), "S20999C19");
    /*is_ambiguous_... S20999C19::S20999C14 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C14*), ABISELECT(120,68), "S20999C19");
    /*is_ambiguous_... S20999C20::S20999C14 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C14*)(S20999C20*), ABISELECT(120,68), "S20999C19");
    /*is_ambiguous_... S20999C12::S20999C3 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C12*), ABISELECT(120,68), "S20999C19");
    /*is_ambiguous_... S20999C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C6*)(S20999C2*), ABISELECT(8,4), "S20999C19");
    /*is_ambiguous_... S20999C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C6*)(S20999C2*), ABISELECT(112,64), "S20999C19");
    /*is_ambiguous_... S20999C19::S20999C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C6*), ABISELECT(112,64), "S20999C19");
    /*is_ambiguous_... S20999C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C6*)(S20999C10*)(S20999C20*), ABISELECT(112,64), "S20999C19");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C2*), 0, "S20999C19");
    check_base_class_offset(lv, (S20999C3*)(S20999C7*)(S20999C6*)(S20999C2*), 0, "S20999C19");
    check_base_class_offset(lv, (S20999C7*)(S20999C6*)(S20999C2*), 0, "S20999C19");
    check_base_class_offset(lv, (S20999C6*)(S20999C2*), 0, "S20999C19");
    check_base_class_offset(lv, (S20999C2*), 0, "S20999C19");
    /*is_ambiguous_... S20999C19::S20999C14 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C14*), ABISELECT(128,72), "S20999C19");
    /*is_ambiguous_... S20999C19::S20999C14 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C14*), ABISELECT(136,80), "S20999C19");
    /*is_ambiguous_... S20999C19::S20999C14 */ AMB_check_base_class_offset(lv, (S20999C14*), ABISELECT(120,68), "S20999C19");
    check_base_class_offset(lv, (S20999C14*)(S20999C10*)(S20999C20*), ABISELECT(120,68), "S20999C19");
    /*is_ambiguous_... S20999C19::S20999C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C13*), ABISELECT(192,120), "S20999C19");
    /*is_ambiguous_... S20999C19::S20999C13 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C13*), ABISELECT(192,120), "S20999C19");
    /*is_ambiguous_... S20999C19::S20999C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C13*), ABISELECT(200,124), "S20999C19");
    /*is_ambiguous_... S20999C20::S20999C13 */ AMB_check_base_class_offset(lv, (S20999C13*)(S20999C20*), ABISELECT(192,120), "S20999C19");
    /*is_ambiguous_... S20999C20::S20999C14 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C14*)(S20999C20*), ABISELECT(152,88), "S20999C19");
    /*is_ambiguous_... S20999C20::S20999C14 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C14*)(S20999C20*), ABISELECT(160,96), "S20999C19");
    /*is_ambiguous_... S20999C20::S20999C14 */ AMB_check_base_class_offset(lv, (S20999C14*)(S20999C20*), ABISELECT(144,84), "S20999C19");
    /*is_ambiguous_... S20999C19::S20999C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C6*), ABISELECT(216,132), "S20999C19");
    /*is_ambiguous_... S20999C19::S20999C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*)(S20999C6*), ABISELECT(208,128), "S20999C19");
    /*is_ambiguous_... S20999C19::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C7*)(S20999C6*), ABISELECT(208,128), "S20999C19");
    /*is_ambiguous_... S20999C19::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C7*)(S20999C6*), ABISELECT(208,128), "S20999C19");
    /*is_ambiguous_... S20999C20::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C6*)(S20999C20*), ABISELECT(208,128), "S20999C19");
    /*is_ambiguous_... S20999C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C10*)(S20999C20*), ABISELECT(184,112), "S20999C19");
    /*is_ambiguous_... S20999C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C6*)(S20999C10*)(S20999C20*), ABISELECT(176,104), "S20999C19");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C10*)(S20999C20*), ABISELECT(168,100), "S20999C19");
    check_base_class_offset(lv, (S20999C3*)(S20999C7*)(S20999C6*)(S20999C10*)(S20999C20*), ABISELECT(168,100), "S20999C19");
    check_base_class_offset(lv, (S20999C7*)(S20999C6*)(S20999C10*)(S20999C20*), ABISELECT(168,100), "S20999C19");
    check_base_class_offset(lv, (S20999C6*)(S20999C10*)(S20999C20*), ABISELECT(168,100), "S20999C19");
    check_base_class_offset(lv, (S28C52_nt*)(S20999C10*)(S20999C20*), ABISELECT(168,100), "S20999C19");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C13*)(S20999C12*), ABISELECT(224,140), "S20999C19");
    check_base_class_offset(lv, (S20999C3*)(S20999C13*)(S20999C12*), ABISELECT(224,140), "S20999C19");
    /*is_ambiguous_... S20999C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C13*)(S20999C12*), ABISELECT(232,144), "S20999C19");
    check_base_class_offset(lv, (S20999C13*)(S20999C12*), ABISELECT(224,140), "S20999C19");
    check_base_class_offset(lv, (S20999C12*)(S20999C10*)(S20999C20*), ABISELECT(224,140), "S20999C19");
    check_base_class_offset(lv, (S20999C10*)(S20999C20*), ABISELECT(168,100), "S20999C19");
    check_base_class_offset(lv, (S20999C20*), ABISELECT(144,84), "S20999C19");
    check_field_offset(lv, s20999c19f0, ABISELECT(16,12), "S20999C19.s20999c19f0");
    test_class_info(&lv, &cd_S20999C19);
    dp->~S20999C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20999C19(Test_S20999C19, "S20999C19", ABISELECT(240,148));

#else // __cplusplus

extern void _ZN9S20999C19C1Ev();
extern void _ZN9S20999C19D2Ev();
Name_Map name_map_S20999C19[] = {
  NSPAIR(_ZN9S20999C19C1Ev),
  NSPAIR(_ZN9S20999C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C15;
extern VTBL_ENTRY _ZTI9S20999C15[];
extern  VTBL_ENTRY _ZTV9S20999C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C15[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C6;
extern VTBL_ENTRY _ZTI8S20999C6[];
extern  VTBL_ENTRY _ZTV8S20999C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C6[];
extern Class_Descriptor cd_S20999C2;
extern VTBL_ENTRY _ZTI8S20999C2[];
extern  VTBL_ENTRY _ZTV8S20999C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C2[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C14;
extern VTBL_ENTRY _ZTI9S20999C14[];
extern  VTBL_ENTRY _ZTV9S20999C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C14[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C13;
extern VTBL_ENTRY _ZTI9S20999C13[];
extern  VTBL_ENTRY _ZTV9S20999C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C14;
extern VTBL_ENTRY _ZTI9S20999C14[];
extern  VTBL_ENTRY _ZTV9S20999C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C14[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C6;
extern VTBL_ENTRY _ZTI8S20999C6[];
extern  VTBL_ENTRY _ZTV8S20999C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C6[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C6;
extern VTBL_ENTRY _ZTI8S20999C6[];
extern  VTBL_ENTRY _ZTV8S20999C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C13;
extern VTBL_ENTRY _ZTI9S20999C13[];
extern  VTBL_ENTRY _ZTV9S20999C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C13[];
extern Class_Descriptor cd_S20999C12;
extern VTBL_ENTRY _ZTI9S20999C12[];
extern  VTBL_ENTRY _ZTV9S20999C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C12[];
extern Class_Descriptor cd_S20999C10;
extern VTBL_ENTRY _ZTI9S20999C10[];
extern  VTBL_ENTRY _ZTV9S20999C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C10[];
extern Class_Descriptor cd_S20999C20;
extern VTBL_ENTRY _ZTI9S20999C20[];
extern  VTBL_ENTRY _ZTV9S20999C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C20[];
static Base_Class bases_S20999C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(88,48), //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_S20999C7,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20999C15,    ABISELECT(88,48), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20999C3,    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
    20, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20999C7,    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
    21, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20999C6,    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
    22, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20999C2,    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
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    16, //immediately_derived
  0, 0},
  {&cd_S20999C14,    ABISELECT(120,68), //bcp->offset
    23, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    20, //immediately_derived
  0, 0},
  {&cd_S20999C13,    ABISELECT(192,120), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(152,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    23, //immediately_derived
  0, 0},
  {&cd_S20999C14,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(216,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    26, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20999C7,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20999C6,    ABISELECT(208,128), //bcp->offset
    63, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S3461C5_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
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(176,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
    34, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    32, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20999C7,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20999C6,    ABISELECT(168,100), //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
    17, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    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
    41, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(232,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20999C13,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20999C12,    ABISELECT(224,140), //bcp->offset
    74, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S20999C10,    ABISELECT(168,100), //bcp->offset
    47, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S20999C20,    ABISELECT(144,84), //bcp->offset
    32, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20999C19[];
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C19D1Ev();
extern void _ZN9S20999C19D0Ev();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C22v3Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20999C19D1Ev,_ZTv0_n24_N9S20999C19D1Ev)();
extern void ABISELECT(_ZThn120_N9S20999C19D1Ev,_ZThn68_N9S20999C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20999C19D0Ev,_ZTv0_n24_N9S20999C19D0Ev)();
extern void ABISELECT(_ZThn120_N9S20999C19D0Ev,_ZThn68_N9S20999C19D0Ev)() __attribute__((weak));
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S20999C19D1Ev,_ZTv0_n44_N9S20999C19D1Ev)();
extern void ABISELECT(_ZThn144_N9S20999C19D1Ev,_ZThn84_N9S20999C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S20999C19D0Ev,_ZTv0_n44_N9S20999C19D0Ev)();
extern void ABISELECT(_ZThn144_N9S20999C19D0Ev,_ZThn84_N9S20999C19D0Ev)() __attribute__((weak));
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTvn24_n88_N9S20999C19D1Ev,_ZTvn16_n44_N9S20999C19D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N9S20999C19D0Ev,_ZTvn16_n44_N9S20999C19D0Ev)();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20999C19D1Ev,_ZTv0_n24_N9S20999C19D1Ev)();
extern void ABISELECT(_ZThn208_N9S20999C19D1Ev,_ZThn128_N9S20999C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20999C19D0Ev,_ZTv0_n24_N9S20999C19D0Ev)();
extern void ABISELECT(_ZThn208_N9S20999C19D0Ev,_ZThn128_N9S20999C19D0Ev)() __attribute__((weak));
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
static  VTBL_ENTRY vtc_S20999C19[] = {
  ABISELECT(224,140),
  ABISELECT(208,128),
  ABISELECT(192,120),
  ABISELECT(144,84),
  ABISELECT(120,68),
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(120,68),
  ABISELECT(112,64),
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C19[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C19D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20999C22v3Ev,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S20999C19[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  ABISELECT(-120,-68),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S20999C19[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C19D1Ev,_ZTv0_n24_N9S20999C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C19D0Ev,_ZTv0_n24_N9S20999C19D0Ev),
  ABISELECT(24,16),
  ABISELECT(-144,-84),
  ABISELECT(-24,-16),
  ABISELECT(80,56),
  ABISELECT(-32,-20),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-40,-28),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20999C19[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20999C19D1Ev,_ZTv0_n44_N9S20999C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20999C19D0Ev,_ZTv0_n44_N9S20999C19D0Ev),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(56,40),
  ABISELECT(-56,-36),
  ABISELECT(-64,-44),
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI9S20999C19[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S20999C19D1Ev,_ZTvn16_n44_N9S20999C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S20999C19D0Ev,_ZTvn16_n44_N9S20999C19D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  0,
  ABISELECT(-88,-64),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI9S20999C19[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  0,
  ABISELECT(-208,-128),
  0,
  ABISELECT(-96,-64),
  ABISELECT(-104,-72),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI9S20999C19[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C19D1Ev,_ZTv0_n24_N9S20999C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C19D0Ev,_ZTv0_n24_N9S20999C19D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  0,
  0,
  ABISELECT(-104,-72),
  ABISELECT(-120,-84),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI9S20999C19[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
};
extern VTBL_ENTRY _ZTV9S20999C19[];
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C2D1Ev();
extern void _ZN8S20999C2D0Ev();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C2__9S20999C19[] = {
  ABISELECT(120,68),
  ABISELECT(112,64),
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C2[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20999C22v3Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C6D1Ev();
extern void _ZN8S20999C6D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C68S20999C2__9S20999C19[] = {
  ABISELECT(112,64),
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C6[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C78S20999C68S20999C2__A1__9S20999C19[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C78S20999C68S20999C2__A2__9S20999C19[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__8S20999C2__9S20999C19[] = {
  0,
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S20999C2[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C15__9S20999C19[] = {
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C15[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C7__9S20999C19[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C7__9S20999C19[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A1__9S20999C19[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C14D1Ev();
extern void _ZN9S20999C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C14__9S20999C19[] = {
  0,
  0,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C14[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D0Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C20D1Ev();
extern void _ZN9S20999C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C20__9S20999C19[] = {
  ABISELECT(-24,-16),
  ABISELECT(80,56),
  ABISELECT(-32,-20),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C20[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C20D0Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C14D1Ev();
extern void _ZN9S20999C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C149S20999C20__A1__9S20999C19[] = {
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C14[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D0Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__9S20999C149S20999C20__A1__9S20999C19[] = {
  0,
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20999C14[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C10D1Ev();
extern void _ZN9S20999C10D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C109S20999C20__9S20999C19[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(56,40),
  ABISELECT(-56,-36),
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C10[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C10D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C6D1Ev();
extern void _ZN8S20999C6D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C69S20999C109S20999C20__A2__9S20999C19[] = {
  ABISELECT(-56,-36),
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C6[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C78S20999C69S20999C109S20999C20__A3__9S20999C19[] = {
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C78S20999C69S20999C109S20999C20__A5__9S20999C19[] = {
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C12__9S20999C109S20999C20__9S20999C19[] = {
  0,
  0,
  ABISELECT(-104,-72),
  ABISELECT(-120,-84),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI9S20999C10[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20999C10D1Ev,_ZTv0_n24_N9S20999C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20999C10D0Ev,_ZTv0_n24_N9S20999C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20999C14__9S20999C109S20999C20__9S20999C19[] = {
  ABISELECT(48,32),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S20999C10[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C10D1Ev,_ZTv0_n24_N9S20999C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C10D0Ev,_ZTv0_n24_N9S20999C10D0Ev),
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C13__9S20999C20__9S20999C19[] = {
  0,
  ABISELECT(-88,-64),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S20999C20[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20999C20D1Ev,_ZTv0_n24_N9S20999C20D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20999C20D0Ev,_ZTv0_n24_N9S20999C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20999C14__A1__9S20999C20__9S20999C19[] = {
  ABISELECT(24,16),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20999C20[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C20D1Ev,_ZTv0_n24_N9S20999C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C20D0Ev,_ZTv0_n24_N9S20999C20D0Ev),
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20999C20D1Ev,_ZTv0_n24_N9S20999C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S20999C20D1Ev,_ZThn44_N9S20999C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20999C20D0Ev,_ZTv0_n24_N9S20999C20D0Ev)();
extern void ABISELECT(_ZThn64_N9S20999C20D0Ev,_ZThn44_N9S20999C20D0Ev)() __attribute__((weak));
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C6__9S20999C20__9S20999C19[] = {
  0,
  ABISELECT(-64,-44),
  0,
  ABISELECT(-96,-64),
  ABISELECT(-104,-72),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20999C20[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C20D1Ev,_ZTv0_n24_N9S20999C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C20D0Ev,_ZTv0_n24_N9S20999C20D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZThn24_N9S20999C20D1Ev,_ZThn16_N9S20999C20D1Ev)();
extern void ABISELECT(_ZThn24_N9S20999C20D0Ev,_ZThn16_N9S20999C20D0Ev)();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C10__9S20999C20__9S20999C19[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(56,40),
  ABISELECT(-56,-36),
  ABISELECT(-64,-44),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20999C20[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S20999C20D1Ev,_ZThn16_N9S20999C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S20999C20D0Ev,_ZThn16_N9S20999C20D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C12__9S20999C20__9S20999C19[] = {
  0,
  0,
  ABISELECT(-104,-72),
  ABISELECT(-120,-84),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S20999C20[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C13__9S20999C19[] = {
  ABISELECT(-88,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C13[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C13__A3__9S20999C19[] = {
  ABISELECT(-88,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C6D1Ev();
extern void _ZN8S20999C6D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C6__A1__9S20999C19[] = {
  ABISELECT(-96,-64),
  ABISELECT(-104,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C6[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C78S20999C6__A2__9S20999C19[] = {
  ABISELECT(-104,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C78S20999C6__A4__9S20999C19[] = {
  ABISELECT(-104,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C12__9S20999C19[] = {
  ABISELECT(-104,-72),
  ABISELECT(-120,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C12[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C139S20999C12__A1__9S20999C19[] = {
  ABISELECT(-120,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C13[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C139S20999C12__A6__9S20999C19[] = {
  ABISELECT(-120,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A1__9S20999C12__9S20999C19[] = {
  0,
  ABISELECT(-16,-12),
  ABISELECT(104,72),
  (VTBL_ENTRY)&(_ZTI9S20999C12[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
static  VTT_ENTRY vtt_S20999C19[] = {
  {&(_ZTV9S20999C19[12]),  12,82},
  {&(_tg__ZTV8S20999C2__9S20999C19[5]),  5,10},
  {&(_tg__ZTV8S20999C68S20999C2__9S20999C19[4]),  4,8},
  {&(_tg__ZTV8S20999C78S20999C68S20999C2__A1__9S20999C19[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C78S20999C68S20999C2__A2__9S20999C19[3]),  3,4},
  {&(_tg__ZTV8S20999C3__8S20999C2__9S20999C19[4]),  4,5},
  {&(_ZTV9S20999C19[22]),  22,82},
  {&(_ZTV9S20999C19[22]),  22,82},
  {&(_ZTV9S20999C19[29]),  29,82},
  {&(_ZTV9S20999C19[29]),  29,82},
  {&(_ZTV9S20999C19[44]),  44,82},
  {&(_ZTV9S20999C19[62]),  62,82},
  {&(_ZTV9S20999C19[70]),  70,82},
  {&(_ZTV9S20999C19[54]),  54,82},
  {&(_ZTV9S20999C19[80]),  80,82},
  {&(_tg__ZTV9S20999C15__9S20999C19[5]),  5,6},
  {&(_tg__ZTV9S20999C15__9S20999C19[5]),  5,6},
  {&(_tg__ZTV8S20999C7__9S20999C19[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C7__9S20999C19[3]),  3,4},
  {&(_tg__ZTV8S20999C3__A1__9S20999C19[3]),  3,4},
  {&(_tg__ZTV9S20999C14__9S20999C19[5]),  5,8},
  {&(_tg__ZTV9S20999C14__9S20999C19[5]),  5,8},
  {&(_tg__ZTV9S20999C20__9S20999C19[10]),  10,13},
  {&(_tg__ZTV9S20999C149S20999C20__A1__9S20999C19[5]),  5,8},
  {&(_tg__ZTV8S20999C3__9S20999C149S20999C20__A1__9S20999C19[4]),  4,5},
  {&(_tg__ZTV9S20999C109S20999C20__9S20999C19[7]),  7,11},
  {&(_tg__ZTV8S20999C69S20999C109S20999C20__A2__9S20999C19[4]),  4,8},
  {&(_tg__ZTV8S20999C78S20999C69S20999C109S20999C20__A3__9S20999C19[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C78S20999C69S20999C109S20999C20__A5__9S20999C19[3]),  3,4},
  {&(_tg__ZTV9S20999C12__9S20999C109S20999C20__9S20999C19[6]),  6,8},
  {&(_tg__ZTV9S20999C14__9S20999C109S20999C20__9S20999C19[6]),  6,9},
  {&(_tg__ZTV9S20999C14__9S20999C109S20999C20__9S20999C19[6]),  6,9},
  {&(_tg__ZTV9S20999C13__9S20999C20__9S20999C19[4]),  4,5},
  {&(_tg__ZTV9S20999C14__A1__9S20999C20__9S20999C19[6]),  6,9},
  {&(_tg__ZTV8S20999C6__9S20999C20__9S20999C19[7]),  7,11},
  {&(_tg__ZTV9S20999C10__9S20999C20__9S20999C19[7]),  7,11},
  {&(_tg__ZTV9S20999C12__9S20999C20__9S20999C19[6]),  6,8},
  {&(_tg__ZTV9S20999C14__A1__9S20999C20__9S20999C19[6]),  6,9},
  {&(_tg__ZTV9S20999C13__9S20999C19[3]),  3,4},
  {&(_tg__ZTV8S20999C39S20999C13__A3__9S20999C19[3]),  3,4},
  {&(_tg__ZTV8S20999C6__A1__9S20999C19[4]),  4,8},
  {&(_tg__ZTV8S20999C78S20999C6__A2__9S20999C19[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C78S20999C6__A4__9S20999C19[3]),  3,4},
  {&(_tg__ZTV9S20999C12__9S20999C19[4]),  4,6},
  {&(_tg__ZTV9S20999C139S20999C12__A1__9S20999C19[3]),  3,4},
  {&(_tg__ZTV8S20999C39S20999C139S20999C12__A6__9S20999C19[3]),  3,4},
  {&(_tg__ZTV8S20999C3__A1__9S20999C12__9S20999C19[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S20999C19[];
extern  VTBL_ENTRY _ZTV9S20999C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C19[];
static VTBL_ENTRY alt_thunk_names21[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C20D0Ev,_ZTv0_n24_N9S20999C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20999C20D0Ev,_ZThn44_N9S20999C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C20D1Ev,_ZTv0_n24_N9S20999C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20999C20D1Ev,_ZThn44_N9S20999C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S20999C19D0Ev,_ZTv0_n44_N9S20999C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20999C19D0Ev,_ZThn84_N9S20999C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S20999C19D1Ev,_ZTv0_n44_N9S20999C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S20999C19D1Ev,_ZThn84_N9S20999C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C19D0Ev,_ZTv0_n24_N9S20999C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20999C19D0Ev,_ZThn128_N9S20999C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20999C19D0Ev,_ZThn68_N9S20999C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C19D1Ev,_ZTv0_n24_N9S20999C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20999C19D1Ev,_ZThn128_N9S20999C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20999C19D1Ev,_ZThn68_N9S20999C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20999C19 = {  "S20999C19", // class name
  bases_S20999C19, 43,
  &(vtc_S20999C19[0]), // expected_vtbl_contents
  &(vtt_S20999C19[0]), // expected_vtt_contents
  ABISELECT(240,148), // object size
  NSPAIRA(_ZTI9S20999C19),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20999C19),82, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20999C19),47, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names21,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20999C1  : virtual S20999C2 , virtual S20999C8 , S20999C19 {
  ::S3461C21 s20999c1f0;
  virtual  ~S20999C1(); // _ZN8S20999C1D2Ev
  S20999C1(); // tgen
};
//SIG(1 S20999C1) C1{ VBC2{ VBC3{ VBC4{ m FL} BC5{ m} v1} BC6{ BC4 VBC5 BC7{ BC3} vd v2} vd v3} VBC8{ BC9{ VBC10{ BC4 BC6 BC11{ m} VBC12{ VBC4 BC13{ VBC4 BC3 BC5} VBC3 v4} VBC14{ BC4 VBC3 BC5 vd} vd} BC6 BC15{ VBC7 Fi} vd FD} VBC13 BC15 BC16{ BC17{ BC12 BC3 VBC18{ BC14 v5} BC13} BC15 BC2 BC6 vd Fp} Fs:6} BC19{ VBC15 BC2 VBC14 VBC20{ VBC4 VBC13 BC14 VBC6 BC10} vd Fp[9]} vd FC21{ BC22{ VBC4 BC23{ VBC4 BC24{ VBC4 BC5 v6} BC5} VBC24 v7} BC25{ VBC26{ VBC24 BC27{ BC4 VBC5 BC28{ BC24} vd v8} vd v9} BC4 VBC29{ VBC24 VBC30{ BC5 VBC24 BC31{ BC4 VBC24 BC5 vd} BC4 vd FL} VBC32{ VBC4 VBC23 BC31 VBC27 BC33{ BC4 BC27 BC11 VBC22 VBC31 vd}} BC34{ VBC35{ VBC28 Fi} BC26 VBC31 VBC32 vd Fp[9]} vd} BC31 BC23 vd v10 Fc} VBC36{ VBC27 BC32 BC26 Fi} BC37{ BC38{ BC22 BC24 VBC39{ BC31 v11} BC23} VBC5 VBC35 Fi} vd}}


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

static void Test_S20999C1()
{
  extern Class_Descriptor cd_S20999C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(62,156)];
    init_test(&cd_S20999C1, buf);
    S20999C1 *dp, &lv = *(dp=new (buf) S20999C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(976,620), "sizeof(S20999C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20999C1)");
    /*is_ambiguous_... S20999C1::S20999C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*), ABISELECT(600,384), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C2 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C2*), ABISELECT(600,384), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C10*), ABISELECT(600,384), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C12*), ABISELECT(600,384), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C13*)(S20999C12*), ABISELECT(600,384), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C13*)(S20999C12*), ABISELECT(600,384), "S20999C1");
    /*is_ambiguous_... S20999C9::S20999C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C9*)(S20999C8*), ABISELECT(600,384), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*), ABISELECT(600,384), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C13*), ABISELECT(600,384), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C13*), ABISELECT(600,384), "S20999C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C12*)(S20999C17*)(S20999C16*)(S20999C8*), ABISELECT(600,384), "S20999C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C13*)(S20999C12*)(S20999C17*)(S20999C16*)(S20999C8*), ABISELECT(600,384), "S20999C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C13*)(S20999C12*)(S20999C17*)(S20999C16*)(S20999C8*), ABISELECT(600,384), "S20999C1");
    /*is_ambiguous_... S20999C17::S20999C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C17*)(S20999C16*)(S20999C8*), ABISELECT(600,384), "S20999C1");
    /*is_ambiguous_... S20999C17::S20999C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C13*)(S20999C17*)(S20999C16*)(S20999C8*), ABISELECT(600,384), "S20999C1");
    /*is_ambiguous_... S20999C17::S20999C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C13*)(S20999C17*)(S20999C16*)(S20999C8*), ABISELECT(600,384), "S20999C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C2*)(S20999C16*)(S20999C8*), ABISELECT(600,384), "S20999C1");
    /*is_ambiguous_... S20999C16::S20999C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C16*)(S20999C8*), ABISELECT(600,384), "S20999C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C2*)(S20999C19*), ABISELECT(600,384), "S20999C1");
    /*is_ambiguous_... S20999C20::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C20*), ABISELECT(600,384), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*)(S20999C6*), ABISELECT(600,384), "S20999C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C10*)(S20999C20*), ABISELECT(600,384), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*), ABISELECT(832,524), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C2 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C2*), ABISELECT(832,524), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C12 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C12*), ABISELECT(832,524), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C14 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C14*), ABISELECT(832,524), "S20999C1");
    /*is_ambiguous_... S20999C12::S20999C3 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C12*)(S20999C17*)(S20999C16*)(S20999C8*), ABISELECT(832,524), "S20999C1");
    check_base_class_offset(lv, (S20999C3*)(S20999C14*)(S20999C18*), ABISELECT(832,524), "S20999C1");
    /*is_ambiguous_... S20999C2::S20999C3 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C2*)(S20999C16*)(S20999C8*), ABISELECT(832,524), "S20999C1");
    /*is_ambiguous_... S20999C2::S20999C3 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C2*)(S20999C19*), ABISELECT(832,524), "S20999C1");
    /*is_ambiguous_... S20999C20::S20999C14 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C14*)(S20999C20*), ABISELECT(832,524), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C2 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C6*)(S20999C2*), ABISELECT(592,376), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C2 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C6*)(S20999C2*), ABISELECT(608,392), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C6*)(S20999C10*), ABISELECT(608,392), "S20999C1");
    /*is_ambiguous_... S20999C9::S20999C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C6*)(S20999C9*)(S20999C8*), ABISELECT(608,392), "S20999C1");
    /*is_ambiguous_... S20999C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C6*)(S20999C2*)(S20999C16*)(S20999C8*), ABISELECT(608,392), "S20999C1");
    /*is_ambiguous_... S20999C16::S20999C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C6*)(S20999C16*)(S20999C8*), ABISELECT(608,392), "S20999C1");
    /*is_ambiguous_... S20999C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C6*)(S20999C2*)(S20999C19*), ABISELECT(608,392), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C6*), ABISELECT(608,392), "S20999C1");
    /*is_ambiguous_... S20999C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C6*)(S20999C10*)(S20999C20*), ABISELECT(608,392), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C2 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C2*), ABISELECT(584,372), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C2 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C7*)(S20999C6*)(S20999C2*), ABISELECT(584,372), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C2 */ AMB_check_base_class_offset(lv, (S20999C7*)(S20999C6*)(S20999C2*), ABISELECT(584,372), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C2 */ AMB_check_base_class_offset(lv, (S20999C6*)(S20999C2*), ABISELECT(584,372), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C2 */ AMB_check_base_class_offset(lv, (S20999C2*), ABISELECT(584,372), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C10*), ABISELECT(808,508), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C6*)(S20999C10*), ABISELECT(800,500), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C10*), ABISELECT(792,496), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C10 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C7*)(S20999C6*)(S20999C10*), ABISELECT(792,496), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C10 */ AMB_check_base_class_offset(lv, (S20999C7*)(S20999C6*)(S20999C10*), ABISELECT(792,496), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C10 */ AMB_check_base_class_offset(lv, (S20999C6*)(S20999C10*), ABISELECT(792,496), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C10 */ AMB_check_base_class_offset(lv, (S28C52_nt*)(S20999C10*), ABISELECT(792,496), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C13*)(S20999C12*), ABISELECT(816,516), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C12 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C13*)(S20999C12*), ABISELECT(816,516), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C13*)(S20999C12*), ABISELECT(824,520), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C12 */ AMB_check_base_class_offset(lv, (S20999C13*)(S20999C12*), ABISELECT(816,516), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C10 */ AMB_check_base_class_offset(lv, (S20999C12*)(S20999C10*), ABISELECT(816,516), "S20999C1");
    check_base_class_offset(lv, (S20999C12*)(S20999C10*)(S20999C20*), ABISELECT(816,516), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C14 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C14*), ABISELECT(840,528), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C14 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C14*), ABISELECT(848,536), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C10 */ AMB_check_base_class_offset(lv, (S20999C14*)(S20999C10*), ABISELECT(832,524), "S20999C1");
    /*is_ambiguous_... S20999C19::S20999C14 */ AMB_check_base_class_offset(lv, (S20999C14*)(S20999C19*), ABISELECT(832,524), "S20999C1");
    check_base_class_offset(lv, (S20999C14*)(S20999C10*)(S20999C20*), ABISELECT(832,524), "S20999C1");
    check_base_class_offset(lv, (S20999C10*)(S20999C9*)(S20999C8*), ABISELECT(792,496), "S20999C1");
    /*is_ambiguous_... S20999C9::S20999C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C6*)(S20999C9*)(S20999C8*), ABISELECT(632,400), "S20999C1");
    /*is_ambiguous_... S20999C9::S20999C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C9*)(S20999C8*), ABISELECT(624,396), "S20999C1");
    /*is_ambiguous_... S20999C9::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C7*)(S20999C6*)(S20999C9*)(S20999C8*), ABISELECT(624,396), "S20999C1");
    /*is_ambiguous_... S20999C9::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C7*)(S20999C6*)(S20999C9*)(S20999C8*), ABISELECT(624,396), "S20999C1");
    /*is_ambiguous_... S20999C9::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C6*)(S20999C9*)(S20999C8*), ABISELECT(624,396), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*), ABISELECT(640,408), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C7 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C7*), ABISELECT(640,408), "S20999C1");
    check_base_class_offset(lv, (S20999C7*)(S20999C15*)(S20999C9*)(S20999C8*), ABISELECT(640,408), "S20999C1");
    /*is_ambiguous_... S20999C8::S20999C15 */ AMB_check_base_class_offset(lv, (S20999C7*)(S20999C15*)(S20999C8*), ABISELECT(640,408), "S20999C1");
    check_base_class_offset(lv, (S20999C7*)(S20999C15*)(S20999C16*)(S20999C8*), ABISELECT(640,408), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C15 */ AMB_check_base_class_offset(lv, (S20999C7*)(S20999C15*), ABISELECT(640,408), "S20999C1");
    check_base_class_offset(lv, (S20999C15*)(S20999C9*)(S20999C8*), ABISELECT(640,408), "S20999C1");
    check_base_class_offset(lv, (S20999C9*)(S20999C8*), ABISELECT(624,396), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C13*), ABISELECT(856,540), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C13 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C13*), ABISELECT(856,540), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C13*), ABISELECT(864,544), "S20999C1");
    /*is_ambiguous_... S20999C8::S20999C13 */ AMB_check_base_class_offset(lv, (S20999C13*)(S20999C8*), ABISELECT(856,540), "S20999C1");
    /*is_ambiguous_... S20999C20::S20999C13 */ AMB_check_base_class_offset(lv, (S20999C13*)(S20999C20*), ABISELECT(856,540), "S20999C1");
    /*is_ambiguous_... S20999C8::S20999C15 */ AMB_check_base_class_offset(lv, (S20999C15*)(S20999C8*), ABISELECT(672,428), "S20999C1");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C13*)(S20999C12*)(S20999C17*)(S20999C16*)(S20999C8*), ABISELECT(688,436), "S20999C1");
    check_base_class_offset(lv, (S20999C3*)(S20999C13*)(S20999C12*)(S20999C17*)(S20999C16*)(S20999C8*), ABISELECT(688,436), "S20999C1");
    /*is_ambiguous_... S20999C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C13*)(S20999C12*)(S20999C17*)(S20999C16*)(S20999C8*), ABISELECT(696,440), "S20999C1");
    check_base_class_offset(lv, (S20999C13*)(S20999C12*)(S20999C17*)(S20999C16*)(S20999C8*), ABISELECT(688,436), "S20999C1");
    check_base_class_offset(lv, (S20999C12*)(S20999C17*)(S20999C16*)(S20999C8*), ABISELECT(688,436), "S20999C1");
    /*is_ambiguous_... S20999C17::S20999C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C17*)(S20999C16*)(S20999C8*), ABISELECT(704,444), "S20999C1");
    /*is_ambiguous_... S20999C17::S20999C3 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C17*)(S20999C16*)(S20999C8*), ABISELECT(704,444), "S20999C1");
    /*is_ambiguous_... S20999C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C14*)(S20999C18*), ABISELECT(880,552), "S20999C1");
    /*is_ambiguous_... S20999C14::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C14*)(S20999C18*), ABISELECT(888,560), "S20999C1");
    check_base_class_offset(lv, (S20999C14*)(S20999C18*), ABISELECT(872,548), "S20999C1");
    check_base_class_offset(lv, (S20999C18*)(S20999C17*)(S20999C16*)(S20999C8*), ABISELECT(872,548), "S20999C1");
    /*is_ambiguous_... S20999C17::S20999C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C13*)(S20999C17*)(S20999C16*)(S20999C8*), ABISELECT(712,448), "S20999C1");
    /*is_ambiguous_... S20999C17::S20999C13 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C13*)(S20999C17*)(S20999C16*)(S20999C8*), ABISELECT(712,448), "S20999C1");
    /*is_ambiguous_... S20999C17::S20999C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C13*)(S20999C17*)(S20999C16*)(S20999C8*), ABISELECT(720,452), "S20999C1");
    /*is_ambiguous_... S20999C17::S20999C13 */ AMB_check_base_class_offset(lv, (S20999C13*)(S20999C17*)(S20999C16*)(S20999C8*), ABISELECT(712,448), "S20999C1");
    check_base_class_offset(lv, (S20999C17*)(S20999C16*)(S20999C8*), ABISELECT(688,436), "S20999C1");
    check_base_class_offset(lv, (S20999C15*)(S20999C16*)(S20999C8*), ABISELECT(728,456), "S20999C1");
    /*is_ambiguous_... S20999C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C6*)(S20999C2*)(S20999C16*)(S20999C8*), ABISELECT(752,468), "S20999C1");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C2*)(S20999C16*)(S20999C8*), ABISELECT(744,464), "S20999C1");
    check_base_class_offset(lv, (S20999C3*)(S20999C7*)(S20999C6*)(S20999C2*)(S20999C16*)(S20999C8*), ABISELECT(744,464), "S20999C1");
    check_base_class_offset(lv, (S20999C7*)(S20999C6*)(S20999C2*)(S20999C16*)(S20999C8*), ABISELECT(744,464), "S20999C1");
    check_base_class_offset(lv, (S20999C6*)(S20999C2*)(S20999C16*)(S20999C8*), ABISELECT(744,464), "S20999C1");
    check_base_class_offset(lv, (S20999C2*)(S20999C16*)(S20999C8*), ABISELECT(744,464), "S20999C1");
    /*is_ambiguous_... S20999C16::S20999C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C6*)(S20999C16*)(S20999C8*), ABISELECT(768,480), "S20999C1");
    /*is_ambiguous_... S20999C16::S20999C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C16*)(S20999C8*), ABISELECT(760,476), "S20999C1");
    /*is_ambiguous_... S20999C16::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C7*)(S20999C6*)(S20999C16*)(S20999C8*), ABISELECT(760,476), "S20999C1");
    /*is_ambiguous_... S20999C16::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C7*)(S20999C6*)(S20999C16*)(S20999C8*), ABISELECT(760,476), "S20999C1");
    /*is_ambiguous_... S20999C16::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C6*)(S20999C16*)(S20999C8*), ABISELECT(760,476), "S20999C1");
    check_base_class_offset(lv, (S20999C16*)(S20999C8*), ABISELECT(688,436), "S20999C1");
    check_base_class_offset(lv, (S20999C8*), ABISELECT(624,396), "S20999C1");
    check_base_class_offset(lv, (S20999C15*)(S20999C19*), ABISELECT(896,564), "S20999C1");
    /*is_ambiguous_... S20999C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C6*)(S20999C2*)(S20999C19*), ABISELECT(8,4), "S20999C1");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C2*)(S20999C19*), 0, "S20999C1");
    check_base_class_offset(lv, (S20999C3*)(S20999C7*)(S20999C6*)(S20999C2*)(S20999C19*), 0, "S20999C1");
    check_base_class_offset(lv, (S20999C7*)(S20999C6*)(S20999C2*)(S20999C19*), 0, "S20999C1");
    check_base_class_offset(lv, (S20999C6*)(S20999C2*)(S20999C19*), 0, "S20999C1");
    check_base_class_offset(lv, (S20999C2*)(S20999C19*), 0, "S20999C1");
    /*is_ambiguous_... S20999C20::S20999C14 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C14*)(S20999C20*), ABISELECT(920,576), "S20999C1");
    /*is_ambiguous_... S20999C20::S20999C14 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C14*)(S20999C20*), ABISELECT(928,584), "S20999C1");
    /*is_ambiguous_... S20999C20::S20999C14 */ AMB_check_base_class_offset(lv, (S20999C14*)(S20999C20*), ABISELECT(912,572), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C6*), ABISELECT(968,612), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*)(S20999C6*), ABISELECT(960,608), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C3*)(S20999C7*)(S20999C6*), ABISELECT(960,608), "S20999C1");
    /*is_ambiguous_... S20999C1::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C7*)(S20999C6*), ABISELECT(960,608), "S20999C1");
    /*is_ambiguous_... S20999C20::S20999C6 */ AMB_check_base_class_offset(lv, (S20999C6*)(S20999C20*), ABISELECT(960,608), "S20999C1");
    /*is_ambiguous_... S20999C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C10*)(S20999C20*), ABISELECT(952,600), "S20999C1");
    /*is_ambiguous_... S20999C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20999C6*)(S20999C10*)(S20999C20*), ABISELECT(944,592), "S20999C1");
    check_base_class_offset(lv, (S731C17_nt*)(S20999C3*)(S20999C7*)(S20999C6*)(S20999C10*)(S20999C20*), ABISELECT(936,588), "S20999C1");
    check_base_class_offset(lv, (S20999C3*)(S20999C7*)(S20999C6*)(S20999C10*)(S20999C20*), ABISELECT(936,588), "S20999C1");
    check_base_class_offset(lv, (S20999C7*)(S20999C6*)(S20999C10*)(S20999C20*), ABISELECT(936,588), "S20999C1");
    check_base_class_offset(lv, (S20999C6*)(S20999C10*)(S20999C20*), ABISELECT(936,588), "S20999C1");
    check_base_class_offset(lv, (S28C52_nt*)(S20999C10*)(S20999C20*), ABISELECT(936,588), "S20999C1");
    check_base_class_offset(lv, (S20999C10*)(S20999C20*), ABISELECT(936,588), "S20999C1");
    check_base_class_offset(lv, (S20999C20*)(S20999C19*), ABISELECT(912,572), "S20999C1");
    check_base_class_offset(lv, (S20999C19*), 0, "S20999C1");
    check_field_offset(lv, s20999c1f0, ABISELECT(88,48), "S20999C1.s20999c1f0");
    test_class_info(&lv, &cd_S20999C1);
    dp->~S20999C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20999C1(Test_S20999C1, "S20999C1", ABISELECT(976,620));

#else // __cplusplus

extern void _ZN8S20999C1C1Ev();
extern void _ZN8S20999C1D2Ev();
Name_Map name_map_S20999C1[] = {
  NSPAIR(_ZN8S20999C1C1Ev),
  NSPAIR(_ZN8S20999C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C6;
extern VTBL_ENTRY _ZTI8S20999C6[];
extern  VTBL_ENTRY _ZTV8S20999C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C6[];
extern Class_Descriptor cd_S20999C2;
extern VTBL_ENTRY _ZTI8S20999C2[];
extern  VTBL_ENTRY _ZTV8S20999C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C2[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C6;
extern VTBL_ENTRY _ZTI8S20999C6[];
extern  VTBL_ENTRY _ZTV8S20999C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C13;
extern VTBL_ENTRY _ZTI9S20999C13[];
extern  VTBL_ENTRY _ZTV9S20999C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C13[];
extern Class_Descriptor cd_S20999C12;
extern VTBL_ENTRY _ZTI9S20999C12[];
extern  VTBL_ENTRY _ZTV9S20999C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C12[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C14;
extern VTBL_ENTRY _ZTI9S20999C14[];
extern  VTBL_ENTRY _ZTV9S20999C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C14[];
extern Class_Descriptor cd_S20999C10;
extern VTBL_ENTRY _ZTI9S20999C10[];
extern  VTBL_ENTRY _ZTV9S20999C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C10[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C6;
extern VTBL_ENTRY _ZTI8S20999C6[];
extern  VTBL_ENTRY _ZTV8S20999C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C6[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C15;
extern VTBL_ENTRY _ZTI9S20999C15[];
extern  VTBL_ENTRY _ZTV9S20999C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C15[];
extern Class_Descriptor cd_S20999C9;
extern VTBL_ENTRY _ZTI8S20999C9[];
extern  VTBL_ENTRY _ZTV8S20999C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C13;
extern VTBL_ENTRY _ZTI9S20999C13[];
extern  VTBL_ENTRY _ZTV9S20999C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C13[];
extern Class_Descriptor cd_S20999C15;
extern VTBL_ENTRY _ZTI9S20999C15[];
extern  VTBL_ENTRY _ZTV9S20999C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C15[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C13;
extern VTBL_ENTRY _ZTI9S20999C13[];
extern  VTBL_ENTRY _ZTV9S20999C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C13[];
extern Class_Descriptor cd_S20999C12;
extern VTBL_ENTRY _ZTI9S20999C12[];
extern  VTBL_ENTRY _ZTV9S20999C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C14;
extern VTBL_ENTRY _ZTI9S20999C14[];
extern  VTBL_ENTRY _ZTV9S20999C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C14[];
extern Class_Descriptor cd_S20999C18;
extern VTBL_ENTRY _ZTI9S20999C18[];
extern  VTBL_ENTRY _ZTV9S20999C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C18[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C13;
extern VTBL_ENTRY _ZTI9S20999C13[];
extern  VTBL_ENTRY _ZTV9S20999C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C13[];
extern Class_Descriptor cd_S20999C17;
extern VTBL_ENTRY _ZTI9S20999C17[];
extern  VTBL_ENTRY _ZTV9S20999C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C17[];
extern Class_Descriptor cd_S20999C15;
extern VTBL_ENTRY _ZTI9S20999C15[];
extern  VTBL_ENTRY _ZTV9S20999C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C15[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C6;
extern VTBL_ENTRY _ZTI8S20999C6[];
extern  VTBL_ENTRY _ZTV8S20999C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C6[];
extern Class_Descriptor cd_S20999C2;
extern VTBL_ENTRY _ZTI8S20999C2[];
extern  VTBL_ENTRY _ZTV8S20999C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C2[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C6;
extern VTBL_ENTRY _ZTI8S20999C6[];
extern  VTBL_ENTRY _ZTV8S20999C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C6[];
extern Class_Descriptor cd_S20999C16;
extern VTBL_ENTRY _ZTI9S20999C16[];
extern  VTBL_ENTRY _ZTV9S20999C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C16[];
extern Class_Descriptor cd_S20999C8;
extern VTBL_ENTRY _ZTI8S20999C8[];
extern  VTBL_ENTRY _ZTV8S20999C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C8[];
extern Class_Descriptor cd_S20999C15;
extern VTBL_ENTRY _ZTI9S20999C15[];
extern  VTBL_ENTRY _ZTV9S20999C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C15[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C6;
extern VTBL_ENTRY _ZTI8S20999C6[];
extern  VTBL_ENTRY _ZTV8S20999C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C6[];
extern Class_Descriptor cd_S20999C2;
extern VTBL_ENTRY _ZTI8S20999C2[];
extern  VTBL_ENTRY _ZTV8S20999C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C2[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C14;
extern VTBL_ENTRY _ZTI9S20999C14[];
extern  VTBL_ENTRY _ZTV9S20999C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C14[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C6;
extern VTBL_ENTRY _ZTI8S20999C6[];
extern  VTBL_ENTRY _ZTV8S20999C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C6[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20999C3;
extern VTBL_ENTRY _ZTI8S20999C3[];
extern  VTBL_ENTRY _ZTV8S20999C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C3[];
extern Class_Descriptor cd_S20999C7;
extern VTBL_ENTRY _ZTI8S20999C7[];
extern  VTBL_ENTRY _ZTV8S20999C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C7[];
extern Class_Descriptor cd_S20999C6;
extern VTBL_ENTRY _ZTI8S20999C6[];
extern  VTBL_ENTRY _ZTV8S20999C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S20999C10;
extern VTBL_ENTRY _ZTI9S20999C10[];
extern  VTBL_ENTRY _ZTV9S20999C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C10[];
extern Class_Descriptor cd_S20999C20;
extern VTBL_ENTRY _ZTI9S20999C20[];
extern  VTBL_ENTRY _ZTV9S20999C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C20[];
extern Class_Descriptor cd_S20999C19;
extern VTBL_ENTRY _ZTI9S20999C19[];
extern  VTBL_ENTRY _ZTV9S20999C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20999C19[];
static Base_Class bases_S20999C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(600,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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(832,524), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(832,524), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(592,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
    8, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(608,392), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(584,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
    6, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(584,372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20999C7,    ABISELECT(584,372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20999C6,    ABISELECT(584,372), //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
    9, //immediately_derived
  0, 0},
  {&cd_S20999C2,    ABISELECT(584,372), //bcp->offset
    21, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(808,508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(800,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
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(792,496), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(792,496), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    108, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20999C7,    ABISELECT(792,496), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20999C6,    ABISELECT(792,496), //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
    25, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(792,496), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(816,516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(816,516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(824,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
    20, //immediately_derived
  0, 0},
  {&cd_S20999C13,    ABISELECT(816,516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20999C12,    ABISELECT(816,516), //bcp->offset
    124, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(840,528), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(848,536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20999C14,    ABISELECT(832,524), //bcp->offset
    132, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20999C10,    ABISELECT(792,496), //bcp->offset
    110, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    35, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(632,400), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(624,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(624,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20999C7,    ABISELECT(624,396), //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
    21, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20999C6,    ABISELECT(624,396), //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
    22, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(640,408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(640,408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20999C7,    ABISELECT(640,408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    34, //immediately_derived
  0, 1},
  {&cd_S20999C15,    ABISELECT(640,408), //bcp->offset
    55, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20999C9,    ABISELECT(624,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(856,540), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(856,540), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    121, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(864,544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20999C13,    ABISELECT(856,540), //bcp->offset
    141, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    70, //immediately_derived
  0, 1},
  {&cd_S20999C15,    ABISELECT(672,428), //bcp->offset
    61, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(688,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
    42, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(688,436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(696,440), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S20999C13,    ABISELECT(688,436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20999C12,    ABISELECT(688,436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(704,444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(704,444), //bcp->offset
    78, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(880,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
    50, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(888,560), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S20999C14,    ABISELECT(872,548), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S20999C18,    ABISELECT(872,548), //bcp->offset
    146, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    56, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(712,448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(712,448), //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
    30, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(720,452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S20999C13,    ABISELECT(712,448), //bcp->offset
    82, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S20999C17,    ABISELECT(688,436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S20999C15,    ABISELECT(728,456), //bcp->offset
    86, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(752,468), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(744,464), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(744,464), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S20999C7,    ABISELECT(744,464), //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
    35, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S20999C6,    ABISELECT(744,464), //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
    36, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S20999C2,    ABISELECT(744,464), //bcp->offset
    92, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(768,480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    68, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(760,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
    66, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(760,476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S20999C7,    ABISELECT(760,476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    68, //immediately_derived
  0, 0},
  {&cd_S20999C6,    ABISELECT(760,476), //bcp->offset
    102, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S20999C16,    ABISELECT(688,436), //bcp->offset
    67, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S20999C8,    ABISELECT(624,396), //bcp->offset
    35, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20999C15,    ABISELECT(896,564), //bcp->offset
    157, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    95, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    76, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    74, //immediately_derived
  0, 0},
  {&cd_S20999C3,    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
    53, //init_seq
    75, //immediately_derived
  0, 0},
  {&cd_S20999C7,    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
    54, //init_seq
    76, //immediately_derived
  0, 0},
  {&cd_S20999C6,    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
    55, //init_seq
    77, //immediately_derived
  0, 0},
  {&cd_S20999C2,    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
    56, //init_seq
    95, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(920,576), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    ABISELECT(928,584), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S20999C14,    ABISELECT(912,572), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    129, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    94, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(968,612), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    85, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(960,608), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(960,608), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    146, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S20999C7,    ABISELECT(960,608), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    145, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    85, //immediately_derived
  0, 0},
  {&cd_S20999C6,    ABISELECT(960,608), //bcp->offset
    189, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    144, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    94, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(952,600), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(944,592), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    91, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(936,588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    89, //immediately_derived
  0, 0},
  {&cd_S20999C3,    ABISELECT(936,588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    90, //immediately_derived
  0, 0},
  {&cd_S20999C7,    ABISELECT(936,588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    91, //immediately_derived
  0, 0},
  {&cd_S20999C6,    ABISELECT(936,588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    132, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(936,588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S20999C10,    ABISELECT(936,588), //bcp->offset
    178, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    131, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    94, //immediately_derived
  0, 0},
  {&cd_S20999C20,    ABISELECT(912,572), //bcp->offset
    163, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    128, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    95, //immediately_derived
  0, 1},
  {&cd_S20999C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    57, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20999C1[];
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C1D1Ev();
extern void _ZN8S20999C1D0Ev();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C22v3Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S20999C1D1Ev,_ZTv0_n28_N8S20999C1D1Ev)();
extern void ABISELECT(_ZThn584_N8S20999C1D1Ev,_ZThn372_N8S20999C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20999C1D0Ev,_ZTv0_n28_N8S20999C1D0Ev)();
extern void ABISELECT(_ZThn584_N8S20999C1D0Ev,_ZThn372_N8S20999C1D0Ev)() __attribute__((weak));
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C22v3Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n104_N8S20999C1D1Ev,_ZTv0_n52_N8S20999C1D1Ev)();
extern void ABISELECT(_ZThn624_N8S20999C1D1Ev,_ZThn396_N8S20999C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S20999C1D0Ev,_ZTv0_n52_N8S20999C1D0Ev)();
extern void ABISELECT(_ZThn624_N8S20999C1D0Ev,_ZThn396_N8S20999C1D0Ev)() __attribute__((weak));
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
extern void ABISELECT(_ZTvn64_n104_N8S20999C1D1Ev,_ZTvn40_n52_N8S20999C1D1Ev)();
extern void ABISELECT(_ZTvn64_n104_N8S20999C1D0Ev,_ZTvn40_n52_N8S20999C1D0Ev)();
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTvn120_n104_N8S20999C1D1Ev,_ZTvn68_n52_N8S20999C1D1Ev)();
extern void ABISELECT(_ZTvn120_n104_N8S20999C1D0Ev,_ZTvn68_n52_N8S20999C1D0Ev)();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C22v3Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTvn136_n104_N8S20999C1D1Ev,_ZTvn80_n52_N8S20999C1D1Ev)();
extern void ABISELECT(_ZTvn136_n104_N8S20999C1D0Ev,_ZTvn80_n52_N8S20999C1D0Ev)();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S20999C1D1Ev,_ZTv0_n36_N8S20999C1D1Ev)();
extern void ABISELECT(_ZThn792_N8S20999C1D1Ev,_ZThn496_N8S20999C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20999C1D0Ev,_ZTv0_n36_N8S20999C1D0Ev)();
extern void ABISELECT(_ZThn792_N8S20999C1D0Ev,_ZThn496_N8S20999C1D0Ev)() __attribute__((weak));
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20999C1D1Ev,_ZTv0_n24_N8S20999C1D1Ev)();
extern void ABISELECT(_ZThn832_N8S20999C1D1Ev,_ZThn524_N8S20999C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20999C1D0Ev,_ZTv0_n24_N8S20999C1D0Ev)();
extern void ABISELECT(_ZThn832_N8S20999C1D0Ev,_ZThn524_N8S20999C1D0Ev)() __attribute__((weak));
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20999C1D1Ev,_ZTv0_n24_N8S20999C1D1Ev)();
extern void ABISELECT(_ZThn872_N8S20999C1D1Ev,_ZThn548_N8S20999C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20999C1D0Ev,_ZTv0_n24_N8S20999C1D0Ev)();
extern void ABISELECT(_ZThn872_N8S20999C1D0Ev,_ZThn548_N8S20999C1D0Ev)() __attribute__((weak));
extern void _ZN9S20999C182v5Ev();
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S20999C1D1Ev,_ZTv0_n44_N8S20999C1D1Ev)();
extern void ABISELECT(_ZThn912_N8S20999C1D1Ev,_ZThn572_N8S20999C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20999C1D0Ev,_ZTv0_n44_N8S20999C1D0Ev)();
extern void ABISELECT(_ZThn912_N8S20999C1D0Ev,_ZThn572_N8S20999C1D0Ev)() __attribute__((weak));
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S20999C1D1Ev,_ZTvn16_n44_N8S20999C1D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S20999C1D0Ev,_ZTvn16_n44_N8S20999C1D0Ev)();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20999C1D1Ev,_ZTv0_n24_N8S20999C1D1Ev)();
extern void ABISELECT(_ZThn960_N8S20999C1D1Ev,_ZThn608_N8S20999C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20999C1D0Ev,_ZTv0_n24_N8S20999C1D0Ev)();
extern void ABISELECT(_ZThn960_N8S20999C1D0Ev,_ZThn608_N8S20999C1D0Ev)() __attribute__((weak));
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY vtc_S20999C1[] = {
  ABISELECT(872,548),
  ABISELECT(792,496),
  ABISELECT(624,396),
  ABISELECT(584,372),
  ABISELECT(816,516),
  ABISELECT(960,608),
  ABISELECT(856,540),
  ABISELECT(912,572),
  ABISELECT(832,524),
  ABISELECT(640,408),
  ABISELECT(896,564),
  ABISELECT(832,524),
  ABISELECT(608,392),
  ABISELECT(600,384),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C1[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20999C22v3Ev,
  0,
  0,
  ABISELECT(-584,-372),
  0,
  ABISELECT(248,152),
  ABISELECT(24,20),
  ABISELECT(16,12),
  ABISELECT(-584,-372),
  (VTBL_ENTRY)&(_ZTI8S20999C1[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20999C1D1Ev,_ZTv0_n28_N8S20999C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20999C1D0Ev,_ZTv0_n28_N8S20999C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20999C22v3Ev,
  ABISELECT(120,68),
  ABISELECT(64,40),
  0,
  ABISELECT(-624,-396),
  0,
  ABISELECT(248,152),
  ABISELECT(232,144),
  ABISELECT(16,12),
  ABISELECT(208,128),
  ABISELECT(208,128),
  ABISELECT(192,120),
  ABISELECT(168,100),
  ABISELECT(-16,-4),
  ABISELECT(-24,-12),
  ABISELECT(-624,-396),
  (VTBL_ENTRY)&(_ZTI8S20999C1[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S20999C1D1Ev,_ZTv0_n52_N8S20999C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S20999C1D0Ev,_ZTv0_n52_N8S20999C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-640,-408),
  (VTBL_ENTRY)&(_ZTI8S20999C1[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-72,-44),
  ABISELECT(-672,-428),
  (VTBL_ENTRY)&(_ZTI8S20999C1[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  ABISELECT(184,112),
  ABISELECT(144,88),
  ABISELECT(-88,-52),
  ABISELECT(-688,-436),
  (VTBL_ENTRY)&(_ZTI8S20999C1[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n104_N8S20999C1D1Ev,_ZTvn40_n52_N8S20999C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n104_N8S20999C1D0Ev,_ZTvn40_n52_N8S20999C1D0Ev),
  ABISELECT(-104,-60),
  ABISELECT(-704,-444),
  (VTBL_ENTRY)&(_ZTI8S20999C1[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  ABISELECT(-112,-64),
  ABISELECT(-712,-448),
  (VTBL_ENTRY)&(_ZTI8S20999C1[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-128,-72),
  ABISELECT(-728,-456),
  (VTBL_ENTRY)&(_ZTI8S20999C1[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  ABISELECT(88,60),
  ABISELECT(-136,-72),
  ABISELECT(-144,-80),
  ABISELECT(-744,-464),
  (VTBL_ENTRY)&(_ZTI8S20999C1[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n104_N8S20999C1D1Ev,_ZTvn68_n52_N8S20999C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n104_N8S20999C1D0Ev,_ZTvn68_n52_N8S20999C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20999C22v3Ev,
  ABISELECT(-152,-84),
  ABISELECT(-160,-92),
  ABISELECT(-760,-476),
  (VTBL_ENTRY)&(_ZTI8S20999C1[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn136_n104_N8S20999C1D1Ev,_ZTvn80_n52_N8S20999C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn136_n104_N8S20999C1D0Ev,_ZTvn80_n52_N8S20999C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  0,
  ABISELECT(-792,-496),
  0,
  ABISELECT(40,28),
  ABISELECT(40,28),
  ABISELECT(24,20),
  ABISELECT(-184,-104),
  ABISELECT(-192,-112),
  ABISELECT(-792,-496),
  (VTBL_ENTRY)&(_ZTI8S20999C1[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20999C1D1Ev,_ZTv0_n36_N8S20999C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20999C1D0Ev,_ZTv0_n36_N8S20999C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-216,-132),
  ABISELECT(-816,-516),
  (VTBL_ENTRY)&(_ZTI8S20999C1[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
  ABISELECT(-832,-524),
  0,
  0,
  ABISELECT(-232,-140),
  ABISELECT(-832,-524),
  (VTBL_ENTRY)&(_ZTI8S20999C1[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20999C1D1Ev,_ZTv0_n24_N8S20999C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20999C1D0Ev,_ZTv0_n24_N8S20999C1D0Ev),
  0,
  ABISELECT(-256,-156),
  ABISELECT(-856,-540),
  (VTBL_ENTRY)&(_ZTI8S20999C1[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  0,
  ABISELECT(-872,-548),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-272,-164),
  ABISELECT(-872,-548),
  (VTBL_ENTRY)&(_ZTI8S20999C1[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20999C1D1Ev,_ZTv0_n24_N8S20999C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20999C1D0Ev,_ZTv0_n24_N8S20999C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20999C182v5Ev,
  ABISELECT(-256,-156),
  ABISELECT(-256,-156),
  ABISELECT(-296,-180),
  ABISELECT(-896,-564),
  (VTBL_ENTRY)&(_ZTI8S20999C1[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  ABISELECT(24,16),
  ABISELECT(-912,-572),
  ABISELECT(-80,-48),
  ABISELECT(-96,-56),
  ABISELECT(-304,-180),
  ABISELECT(48,36),
  ABISELECT(-56,-32),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(-312,-188),
  ABISELECT(-912,-572),
  (VTBL_ENTRY)&(_ZTI8S20999C1[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20999C1D1Ev,_ZTv0_n44_N8S20999C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20999C1D0Ev,_ZTv0_n44_N8S20999C1D0Ev),
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  ABISELECT(-120,-72),
  ABISELECT(-328,-196),
  ABISELECT(-336,-204),
  ABISELECT(-936,-588),
  (VTBL_ENTRY)&(_ZTI8S20999C1[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S20999C1D1Ev,_ZTvn16_n44_N8S20999C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S20999C1D0Ev,_ZTvn16_n44_N8S20999C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  0,
  ABISELECT(-960,-608),
  0,
  ABISELECT(-352,-216),
  ABISELECT(-360,-224),
  ABISELECT(-960,-608),
  (VTBL_ENTRY)&(_ZTI8S20999C1[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20999C1D1Ev,_ZTv0_n24_N8S20999C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20999C1D0Ev,_ZTv0_n24_N8S20999C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern VTBL_ENTRY _ZTV8S20999C1[];
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C19D1Ev();
extern void _ZN9S20999C19D0Ev();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C22v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C19__8S20999C1[] = {
  ABISELECT(816,516),
  ABISELECT(960,608),
  ABISELECT(856,540),
  ABISELECT(912,572),
  ABISELECT(832,524),
  ABISELECT(640,408),
  ABISELECT(896,564),
  ABISELECT(832,524),
  ABISELECT(608,392),
  ABISELECT(600,384),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C19[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C19D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20999C22v3Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C2D1Ev();
extern void _ZN8S20999C2D0Ev();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C29S20999C19__A2__8S20999C1[] = {
  ABISELECT(832,524),
  ABISELECT(608,392),
  ABISELECT(600,384),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C2[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20999C22v3Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C6D1Ev();
extern void _ZN8S20999C6D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C68S20999C29S20999C19__A5__8S20999C1[] = {
  ABISELECT(608,392),
  ABISELECT(600,384),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C6[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C78S20999C68S20999C29S20999C19__A6__8S20999C1[] = {
  ABISELECT(600,384),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C78S20999C68S20999C29S20999C19__A12__8S20999C1[] = {
  ABISELECT(600,384),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__8S20999C29S20999C19__A2__8S20999C1[] = {
  0,
  ABISELECT(-232,-140),
  ABISELECT(-832,-524),
  (VTBL_ENTRY)&(_ZTI8S20999C2[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C15__9S20999C19__8S20999C1[] = {
  ABISELECT(-256,-156),
  ABISELECT(-256,-156),
  ABISELECT(-296,-180),
  ABISELECT(-896,-564),
  (VTBL_ENTRY)&(_ZTI9S20999C19[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C7__9S20999C19__8S20999C1[] = {
  0,
  ABISELECT(-40,-24),
  ABISELECT(-640,-408),
  (VTBL_ENTRY)&(_ZTI9S20999C19[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20999C19D1Ev,_ZTv0_n24_N9S20999C19D1Ev)();
extern void ABISELECT(_ZThn832_N9S20999C19D1Ev,_ZThn524_N9S20999C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20999C19D0Ev,_ZTv0_n24_N9S20999C19D0Ev)();
extern void ABISELECT(_ZThn832_N9S20999C19D0Ev,_ZThn524_N9S20999C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20999C14__9S20999C19__8S20999C1[] = {
  ABISELECT(-832,-524),
  0,
  0,
  ABISELECT(-232,-140),
  ABISELECT(-832,-524),
  (VTBL_ENTRY)&(_ZTI9S20999C19[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C19D1Ev,_ZTv0_n24_N9S20999C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C19D0Ev,_ZTv0_n24_N9S20999C19D0Ev),
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S20999C19D1Ev,_ZTv0_n44_N9S20999C19D1Ev)();
extern void ABISELECT(_ZThn912_N9S20999C19D1Ev,_ZThn572_N9S20999C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S20999C19D0Ev,_ZTv0_n44_N9S20999C19D0Ev)();
extern void ABISELECT(_ZThn912_N9S20999C19D0Ev,_ZThn572_N9S20999C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20999C20__9S20999C19__8S20999C1[] = {
  ABISELECT(24,16),
  ABISELECT(-912,-572),
  ABISELECT(-80,-48),
  ABISELECT(-96,-56),
  ABISELECT(-304,-180),
  ABISELECT(48,36),
  ABISELECT(-56,-32),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(-312,-188),
  ABISELECT(-912,-572),
  (VTBL_ENTRY)&(_ZTI9S20999C19[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20999C19D1Ev,_ZTv0_n44_N9S20999C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20999C19D0Ev,_ZTv0_n44_N9S20999C19D0Ev),
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C13__9S20999C19__8S20999C1[] = {
  0,
  ABISELECT(-256,-156),
  ABISELECT(-856,-540),
  (VTBL_ENTRY)&(_ZTI9S20999C19[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20999C19D1Ev,_ZTv0_n24_N9S20999C19D1Ev)();
extern void ABISELECT(_ZThn960_N9S20999C19D1Ev,_ZThn608_N9S20999C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20999C19D0Ev,_ZTv0_n24_N9S20999C19D0Ev)();
extern void ABISELECT(_ZThn960_N9S20999C19D0Ev,_ZThn608_N9S20999C19D0Ev)() __attribute__((weak));
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C6__A1__9S20999C19__8S20999C1[] = {
  0,
  ABISELECT(-960,-608),
  0,
  ABISELECT(-352,-216),
  ABISELECT(-360,-224),
  ABISELECT(-960,-608),
  (VTBL_ENTRY)&(_ZTI9S20999C19[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C19D1Ev,_ZTv0_n24_N9S20999C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C19D0Ev,_ZTv0_n24_N9S20999C19D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTvn24_n88_N9S20999C19D1Ev,_ZTvn16_n44_N9S20999C19D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N9S20999C19D0Ev,_ZTvn16_n44_N9S20999C19D0Ev)();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C109S20999C20__9S20999C19__8S20999C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  ABISELECT(-120,-72),
  ABISELECT(-328,-196),
  ABISELECT(-336,-204),
  ABISELECT(-936,-588),
  (VTBL_ENTRY)&(_ZTI9S20999C19[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S20999C19D1Ev,_ZTvn16_n44_N9S20999C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S20999C19D0Ev,_ZTvn16_n44_N9S20999C19D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C12__9S20999C19__8S20999C1[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-216,-132),
  ABISELECT(-816,-516),
  (VTBL_ENTRY)&(_ZTI9S20999C19[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C2D1Ev();
extern void _ZN8S20999C2D0Ev();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C2__8S20999C1[] = {
  ABISELECT(248,152),
  ABISELECT(24,20),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C2[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20999C22v3Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C6D1Ev();
extern void _ZN8S20999C6D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C68S20999C2__8S20999C1[] = {
  ABISELECT(24,20),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C6[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C78S20999C68S20999C2__8S20999C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C78S20999C68S20999C2__A1__8S20999C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__8S20999C2__8S20999C1[] = {
  0,
  ABISELECT(-232,-140),
  ABISELECT(-248,-152),
  (VTBL_ENTRY)&(_ZTI8S20999C2[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__8S20999C1[] = {
  ABISELECT(-232,-140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C8D1Ev();
extern void _ZN8S20999C8D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C8__8S20999C1[] = {
  ABISELECT(248,152),
  ABISELECT(232,144),
  ABISELECT(16,12),
  ABISELECT(208,128),
  ABISELECT(208,128),
  ABISELECT(192,120),
  ABISELECT(168,100),
  ABISELECT(-16,-4),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C8D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C9D1Ev();
extern void _ZN8S20999C9D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C98S20999C8__8S20999C1[] = {
  ABISELECT(16,12),
  ABISELECT(208,128),
  ABISELECT(208,128),
  ABISELECT(192,120),
  ABISELECT(168,100),
  ABISELECT(-16,-4),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C9[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C6D1Ev();
extern void _ZN8S20999C6D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C68S20999C98S20999C8__A2__8S20999C1[] = {
  ABISELECT(-16,-4),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C6[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C78S20999C68S20999C98S20999C8__A2__8S20999C1[] = {
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C78S20999C68S20999C98S20999C8__A4__8S20999C1[] = {
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C158S20999C98S20999C8__8S20999C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C15[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S20999C9D1Ev,_ZTv0_n36_N8S20999C9D1Ev)();
extern void ABISELECT(_ZThn168_N8S20999C9D1Ev,_ZThn100_N8S20999C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20999C9D0Ev,_ZTv0_n36_N8S20999C9D0Ev)();
extern void ABISELECT(_ZThn168_N8S20999C9D0Ev,_ZThn100_N8S20999C9D0Ev)() __attribute__((weak));
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C10__8S20999C98S20999C8__8S20999C1[] = {
  0,
  ABISELECT(-168,-100),
  0,
  ABISELECT(40,28),
  ABISELECT(40,28),
  ABISELECT(24,20),
  ABISELECT(-184,-104),
  ABISELECT(-192,-112),
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI8S20999C9[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20999C9D1Ev,_ZTv0_n36_N8S20999C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20999C9D0Ev,_ZTv0_n36_N8S20999C9D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C12__8S20999C98S20999C8__8S20999C1[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-216,-132),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI8S20999C9[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20999C9D1Ev,_ZTv0_n24_N8S20999C9D1Ev)();
extern void ABISELECT(_ZThn208_N8S20999C9D1Ev,_ZThn128_N8S20999C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20999C9D0Ev,_ZTv0_n24_N8S20999C9D0Ev)();
extern void ABISELECT(_ZThn208_N8S20999C9D0Ev,_ZThn128_N8S20999C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20999C14__8S20999C98S20999C8__8S20999C1[] = {
  ABISELECT(-208,-128),
  0,
  0,
  ABISELECT(-232,-140),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S20999C9[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20999C9D1Ev,_ZTv0_n24_N8S20999C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20999C9D0Ev,_ZTv0_n24_N8S20999C9D0Ev),
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C15__8S20999C98S20999C8__8S20999C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20999C9[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C158S20999C8__A1__8S20999C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-72,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C15[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C7__9S20999C158S20999C8__A1__8S20999C1[] = {
  0,
  ABISELECT(-40,-24),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI9S20999C15[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
extern void _ZN9S20999C16D1Ev();
extern void _ZN9S20999C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C168S20999C8__8S20999C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  ABISELECT(184,112),
  ABISELECT(144,88),
  ABISELECT(-88,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
  (VTBL_ENTRY)&_ZN9S20999C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C16D0Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
extern void _ZN9S20999C17D1Ev();
extern void _ZN9S20999C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C179S20999C168S20999C8__8S20999C1[] = {
  ABISELECT(184,112),
  ABISELECT(144,88),
  ABISELECT(-88,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C17[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
  (VTBL_ENTRY)&_ZN9S20999C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C17D0Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C129S20999C179S20999C168S20999C8__A1__8S20999C1[] = {
  ABISELECT(144,88),
  ABISELECT(-88,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C12[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C139S20999C129S20999C179S20999C168S20999C8__A2__8S20999C1[] = {
  ABISELECT(-88,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C13[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C139S20999C129S20999C179S20999C168S20999C8__A7__8S20999C1[] = {
  ABISELECT(-88,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A1__9S20999C129S20999C179S20999C168S20999C8__A1__8S20999C1[] = {
  0,
  ABISELECT(-232,-140),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI9S20999C12[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C179S20999C168S20999C8__A8__8S20999C1[] = {
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C139S20999C179S20999C168S20999C8__A3__8S20999C1[] = {
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C13[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C139S20999C179S20999C168S20999C8__A9__8S20999C1[] = {
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A1__9S20999C179S20999C168S20999C8__8S20999C1[] = {
  0,
  ABISELECT(-232,-140),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI9S20999C17[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A__9S20999C179S20999C168S20999C8__8S20999C1[] = {
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20999C17[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20999C17D1Ev,_ZTv0_n24_N9S20999C17D1Ev)();
extern void ABISELECT(_ZThn184_N9S20999C17D1Ev,_ZThn112_N9S20999C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20999C17D0Ev,_ZTv0_n24_N9S20999C17D0Ev)();
extern void ABISELECT(_ZThn184_N9S20999C17D0Ev,_ZThn112_N9S20999C17D0Ev)() __attribute__((weak));
extern void _ZN9S20999C182v5Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C18__9S20999C179S20999C168S20999C8__8S20999C1[] = {
  0,
  ABISELECT(-184,-112),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-272,-164),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI9S20999C17[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C17D1Ev,_ZTv0_n24_N9S20999C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C17D0Ev,_ZTv0_n24_N9S20999C17D0Ev),
  (VTBL_ENTRY)&_ZN9S20999C182v5Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C13__A1__9S20999C179S20999C168S20999C8__8S20999C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20999C17[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C159S20999C168S20999C8__A2__8S20999C1[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C15[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C7__9S20999C159S20999C168S20999C8__A2__8S20999C1[] = {
  0,
  ABISELECT(-40,-24),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI9S20999C15[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C2D1Ev();
extern void _ZN8S20999C2D0Ev();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C29S20999C168S20999C8__A1__8S20999C1[] = {
  ABISELECT(88,60),
  ABISELECT(-136,-72),
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C2[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20999C22v3Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C6D1Ev();
extern void _ZN8S20999C6D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C68S20999C29S20999C168S20999C8__A3__8S20999C1[] = {
  ABISELECT(-136,-72),
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C6[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C78S20999C68S20999C29S20999C168S20999C8__A4__8S20999C1[] = {
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C78S20999C68S20999C29S20999C168S20999C8__A10__8S20999C1[] = {
  ABISELECT(-144,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__8S20999C29S20999C168S20999C8__A1__8S20999C1[] = {
  0,
  ABISELECT(-232,-140),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S20999C2[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C6D1Ev();
extern void _ZN8S20999C6D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C69S20999C168S20999C8__A4__8S20999C1[] = {
  ABISELECT(-152,-84),
  ABISELECT(-160,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C6[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C78S20999C69S20999C168S20999C8__A5__8S20999C1[] = {
  ABISELECT(-160,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C78S20999C69S20999C168S20999C8__A11__8S20999C1[] = {
  ABISELECT(-160,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A1__9S20999C168S20999C8__8S20999C1[] = {
  0,
  ABISELECT(-232,-140),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C17__A2__9S20999C168S20999C8__8S20999C1[] = {
  ABISELECT(-104,-60),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20999C16D1Ev,_ZTv0_n24_N9S20999C16D1Ev)();
extern void ABISELECT(_ZThn184_N9S20999C16D1Ev,_ZThn112_N9S20999C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20999C16D0Ev,_ZTv0_n24_N9S20999C16D0Ev)();
extern void ABISELECT(_ZThn184_N9S20999C16D0Ev,_ZThn112_N9S20999C16D0Ev)() __attribute__((weak));
extern void _ZN9S20999C182v5Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C18__9S20999C168S20999C8__8S20999C1[] = {
  0,
  ABISELECT(-184,-112),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-272,-164),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C16D1Ev,_ZTv0_n24_N9S20999C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C16D0Ev,_ZTv0_n24_N9S20999C16D0Ev),
  (VTBL_ENTRY)&_ZN9S20999C182v5Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C139S20999C17__A1__9S20999C168S20999C8__8S20999C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C15__9S20999C168S20999C8__8S20999C1[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-128,-72),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C7__9S20999C168S20999C8__8S20999C1[] = {
  0,
  ABISELECT(-40,-24),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZThn56_N9S20999C16D1Ev,_ZThn28_N9S20999C16D1Ev)();
extern void ABISELECT(_ZThn56_N9S20999C16D0Ev,_ZThn28_N9S20999C16D0Ev)();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C2__9S20999C168S20999C8__8S20999C1[] = {
  ABISELECT(88,60),
  ABISELECT(-136,-72),
  ABISELECT(-144,-80),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20999C16D1Ev,_ZThn28_N9S20999C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20999C16D0Ev,_ZThn28_N9S20999C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20999C22v3Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZThn72_N9S20999C16D1Ev,_ZThn40_N9S20999C16D1Ev)();
extern void ABISELECT(_ZThn72_N9S20999C16D0Ev,_ZThn40_N9S20999C16D0Ev)();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C6__A1__9S20999C168S20999C8__8S20999C1[] = {
  ABISELECT(-152,-84),
  ABISELECT(-160,-92),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20999C16[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N9S20999C16D1Ev,_ZThn40_N9S20999C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N9S20999C16D0Ev,_ZThn40_N9S20999C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S20999C8D1Ev,_ZTv0_n36_N8S20999C8D1Ev)();
extern void ABISELECT(_ZThn168_N8S20999C8D1Ev,_ZThn100_N8S20999C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20999C8D0Ev,_ZTv0_n36_N8S20999C8D0Ev)();
extern void ABISELECT(_ZThn168_N8S20999C8D0Ev,_ZThn100_N8S20999C8D0Ev)() __attribute__((weak));
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C10__8S20999C8__8S20999C1[] = {
  0,
  ABISELECT(-168,-100),
  0,
  ABISELECT(40,28),
  ABISELECT(40,28),
  ABISELECT(24,20),
  ABISELECT(-184,-104),
  ABISELECT(-192,-112),
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20999C8D1Ev,_ZTv0_n36_N8S20999C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20999C8D0Ev,_ZTv0_n36_N8S20999C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C12__8S20999C8__8S20999C1[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-216,-132),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20999C8D1Ev,_ZTv0_n24_N8S20999C8D1Ev)();
extern void ABISELECT(_ZThn208_N8S20999C8D1Ev,_ZThn128_N8S20999C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20999C8D0Ev,_ZTv0_n24_N8S20999C8D0Ev)();
extern void ABISELECT(_ZThn208_N8S20999C8D0Ev,_ZThn128_N8S20999C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20999C14__8S20999C8__8S20999C1[] = {
  ABISELECT(-208,-128),
  0,
  0,
  ABISELECT(-232,-140),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20999C8D1Ev,_ZTv0_n24_N8S20999C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20999C8D0Ev,_ZTv0_n24_N8S20999C8D0Ev),
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C158S20999C9__8S20999C8__8S20999C1[] = {
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C13__A1__8S20999C8__8S20999C1[] = {
  0,
  ABISELECT(-256,-156),
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C15__A1__8S20999C8__8S20999C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-72,-44),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
extern void ABISELECT(_ZThn64_N8S20999C8D1Ev,_ZThn40_N8S20999C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S20999C8D0Ev,_ZThn40_N8S20999C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20999C16__8S20999C8__8S20999C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  ABISELECT(184,112),
  ABISELECT(144,88),
  ABISELECT(-88,-52),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S20999C8D1Ev,_ZThn40_N8S20999C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S20999C8D0Ev,_ZThn40_N8S20999C8D0Ev),
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C179S20999C16__A7__8S20999C8__8S20999C1[] = {
  ABISELECT(-104,-60),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20999C8D1Ev,_ZTv0_n24_N8S20999C8D1Ev)();
extern void ABISELECT(_ZThn248_N8S20999C8D1Ev,_ZThn152_N8S20999C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20999C8D0Ev,_ZTv0_n24_N8S20999C8D0Ev)();
extern void ABISELECT(_ZThn248_N8S20999C8D0Ev,_ZThn152_N8S20999C8D0Ev)() __attribute__((weak));
extern void _ZN9S20999C182v5Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C18__8S20999C8__8S20999C1[] = {
  0,
  ABISELECT(-248,-152),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-272,-164),
  ABISELECT(-248,-152),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20999C8D1Ev,_ZTv0_n24_N8S20999C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20999C8D0Ev,_ZTv0_n24_N8S20999C8D0Ev),
  (VTBL_ENTRY)&_ZN9S20999C182v5Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C139S20999C179S20999C16__A3__8S20999C8__8S20999C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C159S20999C16__A2__8S20999C8__8S20999C1[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-128,-72),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZThn120_N8S20999C8D1Ev,_ZThn68_N8S20999C8D1Ev)();
extern void ABISELECT(_ZThn120_N8S20999C8D0Ev,_ZThn68_N8S20999C8D0Ev)();
extern void _ZN8S20999C62v2Ev();
extern void _ZN8S20999C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C29S20999C16__8S20999C8__8S20999C1[] = {
  ABISELECT(88,60),
  ABISELECT(-136,-72),
  ABISELECT(-144,-80),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S20999C8D1Ev,_ZThn68_N8S20999C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S20999C8D0Ev,_ZThn68_N8S20999C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
  (VTBL_ENTRY)&_ZN8S20999C22v3Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZThn136_N8S20999C8D1Ev,_ZThn80_N8S20999C8D1Ev)();
extern void ABISELECT(_ZThn136_N8S20999C8D0Ev,_ZThn80_N8S20999C8D0Ev)();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C69S20999C16__A3__8S20999C8__8S20999C1[] = {
  ABISELECT(-152,-84),
  ABISELECT(-160,-92),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI8S20999C8[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N8S20999C8D1Ev,_ZThn80_N8S20999C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N8S20999C8D0Ev,_ZThn80_N8S20999C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C10D1Ev();
extern void _ZN9S20999C10D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C10__8S20999C1[] = {
  ABISELECT(40,28),
  ABISELECT(40,28),
  ABISELECT(24,20),
  ABISELECT(-184,-104),
  ABISELECT(-192,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C10[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C10D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C6D1Ev();
extern void _ZN8S20999C6D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C69S20999C10__A1__8S20999C1[] = {
  ABISELECT(-184,-104),
  ABISELECT(-192,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C6[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C78S20999C69S20999C10__A1__8S20999C1[] = {
  ABISELECT(-192,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C78S20999C69S20999C10__A2__8S20999C1[] = {
  ABISELECT(-192,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C12__9S20999C10__8S20999C1[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-216,-132),
  ABISELECT(-24,-20),
  (VTBL_ENTRY)&(_ZTI9S20999C10[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20999C10D1Ev,_ZTv0_n24_N9S20999C10D1Ev)();
extern void ABISELECT(_ZThn40_N9S20999C10D1Ev,_ZThn28_N9S20999C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20999C10D0Ev,_ZTv0_n24_N9S20999C10D0Ev)();
extern void ABISELECT(_ZThn40_N9S20999C10D0Ev,_ZThn28_N9S20999C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20999C14__9S20999C10__8S20999C1[] = {
  ABISELECT(-40,-28),
  0,
  0,
  ABISELECT(-232,-140),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20999C10[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C10D1Ev,_ZTv0_n24_N9S20999C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C10D0Ev,_ZTv0_n24_N9S20999C10D0Ev),
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C12__8S20999C1[] = {
  ABISELECT(16,8),
  ABISELECT(-216,-132),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C12[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C139S20999C12__8S20999C1[] = {
  ABISELECT(-216,-132),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C13[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C139S20999C12__A3__8S20999C1[] = {
  ABISELECT(-216,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__A1__9S20999C12__8S20999C1[] = {
  0,
  ABISELECT(-232,-140),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20999C12[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C14D1Ev();
extern void _ZN9S20999C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C14__8S20999C1[] = {
  0,
  0,
  ABISELECT(-232,-140),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C14[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D0Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C7__A3__8S20999C1[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C7__A5__8S20999C1[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C13__A1__8S20999C1[] = {
  ABISELECT(-256,-156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C13[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C39S20999C13__A6__8S20999C1[] = {
  ABISELECT(-256,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C18D1Ev();
extern void _ZN9S20999C18D0Ev();
extern void _ZN9S20999C182v5Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C18__8S20999C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-272,-164),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C18[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C18D0Ev,
  (VTBL_ENTRY)&_ZN9S20999C182v5Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C14D1Ev();
extern void _ZN9S20999C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C149S20999C18__A1__8S20999C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-272,-164),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C14[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D0Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__9S20999C149S20999C18__A1__8S20999C1[] = {
  0,
  ABISELECT(-232,-140),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20999C14[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__9S20999C18__8S20999C1[] = {
  0,
  ABISELECT(-232,-140),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20999C18[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C15__A3__8S20999C1[] = {
  ABISELECT(-256,-156),
  ABISELECT(-256,-156),
  ABISELECT(-296,-180),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C15[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C7__9S20999C15__A3__8S20999C1[] = {
  0,
  ABISELECT(-40,-24),
  ABISELECT(256,156),
  (VTBL_ENTRY)&(_ZTI9S20999C15[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C20D1Ev();
extern void _ZN9S20999C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C20__8S20999C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-96,-56),
  ABISELECT(-304,-180),
  ABISELECT(48,36),
  ABISELECT(-56,-32),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(-312,-188),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C20[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C20D0Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C14D1Ev();
extern void _ZN9S20999C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C149S20999C20__A2__8S20999C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(-312,-188),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C14[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C14D0Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C3__9S20999C149S20999C20__A2__8S20999C1[] = {
  0,
  ABISELECT(-232,-140),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S20999C14[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C10D1Ev();
extern void _ZN9S20999C10D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C109S20999C20__A1__8S20999C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  ABISELECT(-120,-72),
  ABISELECT(-328,-196),
  ABISELECT(-336,-204),
  0,
  (VTBL_ENTRY)&(_ZTI9S20999C10[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20999C10D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C6D1Ev();
extern void _ZN8S20999C6D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C69S20999C109S20999C20__A7__8S20999C1[] = {
  ABISELECT(-328,-196),
  ABISELECT(-336,-204),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C6[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C78S20999C69S20999C109S20999C20__A8__8S20999C1[] = {
  ABISELECT(-336,-204),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C78S20999C69S20999C109S20999C20__A14__8S20999C1[] = {
  ABISELECT(-336,-204),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C12__9S20999C109S20999C20__A1__8S20999C1[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-216,-132),
  ABISELECT(120,72),
  (VTBL_ENTRY)&(_ZTI9S20999C10[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20999C10D1Ev,_ZTv0_n24_N9S20999C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20999C10D0Ev,_ZTv0_n24_N9S20999C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20999C14__9S20999C109S20999C20__A1__8S20999C1[] = {
  ABISELECT(104,64),
  0,
  0,
  ABISELECT(-232,-140),
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI9S20999C10[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C10D1Ev,_ZTv0_n24_N9S20999C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C10D0Ev,_ZTv0_n24_N9S20999C10D0Ev),
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C13__9S20999C20__8S20999C1[] = {
  0,
  ABISELECT(-256,-156),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S20999C20[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20999C20D1Ev,_ZTv0_n24_N9S20999C20D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20999C20D0Ev,_ZTv0_n24_N9S20999C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20999C14__A1__9S20999C20__8S20999C1[] = {
  ABISELECT(80,48),
  0,
  0,
  ABISELECT(-232,-140),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S20999C20[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C20D1Ev,_ZTv0_n24_N9S20999C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C20D0Ev,_ZTv0_n24_N9S20999C20D0Ev),
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20999C20D1Ev,_ZTv0_n24_N9S20999C20D1Ev)();
extern void ABISELECT(_ZThn48_N9S20999C20D1Ev,_ZThn36_N9S20999C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20999C20D0Ev,_ZTv0_n24_N9S20999C20D0Ev)();
extern void ABISELECT(_ZThn48_N9S20999C20D0Ev,_ZThn36_N9S20999C20D0Ev)() __attribute__((weak));
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C6__9S20999C20__8S20999C1[] = {
  0,
  ABISELECT(-48,-36),
  0,
  ABISELECT(-352,-216),
  ABISELECT(-360,-224),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S20999C20[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C20D1Ev,_ZTv0_n24_N9S20999C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20999C20D0Ev,_ZTv0_n24_N9S20999C20D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void ABISELECT(_ZThn24_N9S20999C20D1Ev,_ZThn16_N9S20999C20D1Ev)();
extern void ABISELECT(_ZThn24_N9S20999C20D0Ev,_ZThn16_N9S20999C20D0Ev)();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C10__9S20999C20__8S20999C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  ABISELECT(-120,-72),
  ABISELECT(-328,-196),
  ABISELECT(-336,-204),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20999C20[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S20999C20D1Ev,_ZThn16_N9S20999C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S20999C20D0Ev,_ZThn16_N9S20999C20D0Ev),
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN9S20999C122v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20999C12__9S20999C20__8S20999C1[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-216,-132),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S20999C20[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN9S20999C122v4Ev,
};
extern void _ZN8S20999C32v1Ev();
extern void _ZN8S20999C6D1Ev();
extern void _ZN8S20999C6D0Ev();
extern void _ZN8S20999C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C6__A6__8S20999C1[] = {
  ABISELECT(-352,-216),
  ABISELECT(-360,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C6[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20999C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20999C62v2Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C78S20999C6__A7__8S20999C1[] = {
  ABISELECT(-360,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C7[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
extern void _ZN8S20999C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20999C38S20999C78S20999C6__A13__8S20999C1[] = {
  ABISELECT(-360,-224),
  0,
  (VTBL_ENTRY)&(_ZTI8S20999C3[0]),
  (VTBL_ENTRY)&_ZN8S20999C32v1Ev,
};
static  VTT_ENTRY vtt_S20999C1[] = {
  {&(_ZTV8S20999C1[16]),  16,200},
  {&(_tg__ZTV9S20999C19__8S20999C1[12]),  12,17},
  {&(_tg__ZTV8S20999C29S20999C19__A2__8S20999C1[5]),  5,10},
  {&(_tg__ZTV8S20999C68S20999C29S20999C19__A5__8S20999C1[4]),  4,8},
  {&(_tg__ZTV8S20999C78S20999C68S20999C29S20999C19__A6__8S20999C1[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C78S20999C68S20999C29S20999C19__A12__8S20999C1[3]),  3,4},
  {&(_tg__ZTV8S20999C3__8S20999C29S20999C19__A2__8S20999C1[4]),  4,5},
  {&(_tg__ZTV9S20999C15__9S20999C19__8S20999C1[5]),  5,6},
  {&(_tg__ZTV8S20999C7__9S20999C19__8S20999C1[4]),  4,5},
  {&(_tg__ZTV9S20999C14__9S20999C19__8S20999C1[6]),  6,9},
  {&(_tg__ZTV9S20999C14__9S20999C19__8S20999C1[6]),  6,9},
  {&(_tg__ZTV9S20999C20__9S20999C19__8S20999C1[12]),  12,15},
  {&(_tg__ZTV9S20999C13__9S20999C19__8S20999C1[4]),  4,5},
  {&(_tg__ZTV8S20999C6__A1__9S20999C19__8S20999C1[7]),  7,11},
  {&(_tg__ZTV9S20999C109S20999C20__9S20999C19__8S20999C1[7]),  7,11},
  {&(_tg__ZTV9S20999C12__9S20999C19__8S20999C1[6]),  6,8},
  {&(_ZTV8S20999C1[30]),  30,200},
  {&(_ZTV8S20999C1[138]),  138,200},
  {&(_ZTV8S20999C1[51]),  51,200},
  {&(_ZTV8S20999C1[120]),  120,200},
  {&(_ZTV8S20999C1[130]),  130,200},
  {&(_ZTV8S20999C1[138]),  138,200},
  {&(_ZTV8S20999C1[60]),  60,200},
  {&(_ZTV8S20999C1[60]),  60,200},
  {&(_ZTV8S20999C1[145]),  145,200},
  {&(_ZTV8S20999C1[66]),  66,200},
  {&(_ZTV8S20999C1[74]),  74,200},
  {&(_ZTV8S20999C1[81]),  81,200},
  {&(_ZTV8S20999C1[153]),  153,200},
  {&(_ZTV8S20999C1[85]),  85,200},
  {&(_ZTV8S20999C1[91]),  91,200},
  {&(_ZTV8S20999C1[97]),  97,200},
  {&(_ZTV8S20999C1[106]),  106,200},
  {&(_ZTV8S20999C1[162]),  162,200},
  {&(_ZTV8S20999C1[175]),  175,200},
  {&(_ZTV8S20999C1[196]),  196,200},
  {&(_ZTV8S20999C1[185]),  185,200},
  {&(_tg__ZTV8S20999C2__8S20999C1[5]),  5,10},
  {&(_tg__ZTV8S20999C68S20999C2__8S20999C1[4]),  4,8},
  {&(_tg__ZTV8S20999C78S20999C68S20999C2__8S20999C1[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C78S20999C68S20999C2__A1__8S20999C1[3]),  3,4},
  {&(_tg__ZTV8S20999C3__8S20999C2__8S20999C1[4]),  4,5},
  {&(_tg__ZTV8S20999C3__8S20999C1[3]),  3,4},
  {&(_tg__ZTV8S20999C8__8S20999C1[11]),  11,15},
  {&(_tg__ZTV8S20999C98S20999C8__8S20999C1[9]),  9,13},
  {&(_tg__ZTV8S20999C68S20999C98S20999C8__A2__8S20999C1[4]),  4,8},
  {&(_tg__ZTV8S20999C78S20999C68S20999C98S20999C8__A2__8S20999C1[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C78S20999C68S20999C98S20999C8__A4__8S20999C1[3]),  3,4},
  {&(_tg__ZTV9S20999C158S20999C98S20999C8__8S20999C1[5]),  5,6},
  {&(_tg__ZTV9S20999C158S20999C98S20999C8__8S20999C1[5]),  5,6},
  {&(_tg__ZTV9S20999C10__8S20999C98S20999C8__8S20999C1[10]),  10,14},
  {&(_tg__ZTV9S20999C12__8S20999C98S20999C8__8S20999C1[6]),  6,8},
  {&(_tg__ZTV9S20999C14__8S20999C98S20999C8__8S20999C1[6]),  6,9},
  {&(_tg__ZTV9S20999C14__8S20999C98S20999C8__8S20999C1[6]),  6,9},
  {&(_tg__ZTV9S20999C15__8S20999C98S20999C8__8S20999C1[5]),  5,6},
  {&(_tg__ZTV9S20999C15__8S20999C98S20999C8__8S20999C1[5]),  5,6},
  {&(_tg__ZTV9S20999C158S20999C8__A1__8S20999C1[5]),  5,6},
  {&(_tg__ZTV8S20999C7__9S20999C158S20999C8__A1__8S20999C1[4]),  4,5},
  {&(_tg__ZTV9S20999C168S20999C8__8S20999C1[7]),  7,11},
  {&(_tg__ZTV9S20999C179S20999C168S20999C8__8S20999C1[5]),  5,9},
  {&(_tg__ZTV9S20999C129S20999C179S20999C168S20999C8__A1__8S20999C1[4]),  4,6},
  {&(_tg__ZTV9S20999C139S20999C129S20999C179S20999C168S20999C8__A2__8S20999C1[3]),  3,4},
  {&(_tg__ZTV8S20999C39S20999C139S20999C129S20999C179S20999C168S20999C8__A7__8S20999C1[3]),  3,4},
  {&(_tg__ZTV8S20999C3__A1__9S20999C129S20999C179S20999C168S20999C8__A1__8S20999C1[4]),  4,5},
  {&(_tg__ZTV8S20999C39S20999C179S20999C168S20999C8__A8__8S20999C1[3]),  3,4},
  {&(_tg__ZTV9S20999C139S20999C179S20999C168S20999C8__A3__8S20999C1[3]),  3,4},
  {&(_tg__ZTV8S20999C39S20999C139S20999C179S20999C168S20999C8__A9__8S20999C1[3]),  3,4},
  {&(_tg__ZTV8S20999C3__A1__9S20999C179S20999C168S20999C8__8S20999C1[4]),  4,5},
  {&(_tg__ZTV8S20999C3__A__9S20999C179S20999C168S20999C8__8S20999C1[3]),  3,4},
  {&(_tg__ZTV9S20999C18__9S20999C179S20999C168S20999C8__8S20999C1[7]),  7,11},
  {&(_tg__ZTV9S20999C13__A1__9S20999C179S20999C168S20999C8__8S20999C1[3]),  3,4},
  {&(_tg__ZTV9S20999C159S20999C168S20999C8__A2__8S20999C1[5]),  5,6},
  {&(_tg__ZTV8S20999C7__9S20999C159S20999C168S20999C8__A2__8S20999C1[4]),  4,5},
  {&(_tg__ZTV8S20999C29S20999C168S20999C8__A1__8S20999C1[5]),  5,10},
  {&(_tg__ZTV8S20999C68S20999C29S20999C168S20999C8__A3__8S20999C1[4]),  4,8},
  {&(_tg__ZTV8S20999C78S20999C68S20999C29S20999C168S20999C8__A4__8S20999C1[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C78S20999C68S20999C29S20999C168S20999C8__A10__8S20999C1[3]),  3,4},
  {&(_tg__ZTV8S20999C3__8S20999C29S20999C168S20999C8__A1__8S20999C1[4]),  4,5},
  {&(_tg__ZTV8S20999C69S20999C168S20999C8__A4__8S20999C1[4]),  4,8},
  {&(_tg__ZTV8S20999C78S20999C69S20999C168S20999C8__A5__8S20999C1[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C78S20999C69S20999C168S20999C8__A11__8S20999C1[3]),  3,4},
  {&(_tg__ZTV8S20999C3__A1__9S20999C168S20999C8__8S20999C1[4]),  4,5},
  {&(_tg__ZTV8S20999C39S20999C17__A2__9S20999C168S20999C8__8S20999C1[3]),  3,4},
  {&(_tg__ZTV9S20999C18__9S20999C168S20999C8__8S20999C1[7]),  7,11},
  {&(_tg__ZTV9S20999C139S20999C17__A1__9S20999C168S20999C8__8S20999C1[3]),  3,4},
  {&(_tg__ZTV9S20999C15__9S20999C168S20999C8__8S20999C1[5]),  5,6},
  {&(_tg__ZTV8S20999C7__9S20999C168S20999C8__8S20999C1[4]),  4,5},
  {&(_tg__ZTV8S20999C2__9S20999C168S20999C8__8S20999C1[5]),  5,10},
  {&(_tg__ZTV8S20999C6__A1__9S20999C168S20999C8__8S20999C1[4]),  4,8},
  {&(_tg__ZTV9S20999C10__8S20999C8__8S20999C1[10]),  10,14},
  {&(_tg__ZTV9S20999C12__8S20999C8__8S20999C1[6]),  6,8},
  {&(_tg__ZTV9S20999C14__8S20999C8__8S20999C1[6]),  6,9},
  {&(_tg__ZTV9S20999C14__8S20999C8__8S20999C1[6]),  6,9},
  {&(_tg__ZTV9S20999C158S20999C9__8S20999C8__8S20999C1[5]),  5,6},
  {&(_tg__ZTV9S20999C158S20999C9__8S20999C8__8S20999C1[5]),  5,6},
  {&(_tg__ZTV9S20999C13__A1__8S20999C8__8S20999C1[4]),  4,5},
  {&(_tg__ZTV9S20999C15__A1__8S20999C8__8S20999C1[5]),  5,6},
  {&(_tg__ZTV9S20999C16__8S20999C8__8S20999C1[7]),  7,11},
  {&(_tg__ZTV8S20999C39S20999C179S20999C16__A7__8S20999C8__8S20999C1[3]),  3,4},
  {&(_tg__ZTV9S20999C18__8S20999C8__8S20999C1[7]),  7,11},
  {&(_tg__ZTV9S20999C139S20999C179S20999C16__A3__8S20999C8__8S20999C1[3]),  3,4},
  {&(_tg__ZTV9S20999C159S20999C16__A2__8S20999C8__8S20999C1[5]),  5,6},
  {&(_tg__ZTV8S20999C29S20999C16__8S20999C8__8S20999C1[5]),  5,10},
  {&(_tg__ZTV8S20999C69S20999C16__A3__8S20999C8__8S20999C1[4]),  4,8},
  {&(_tg__ZTV9S20999C10__8S20999C1[7]),  7,11},
  {&(_tg__ZTV8S20999C69S20999C10__A1__8S20999C1[4]),  4,8},
  {&(_tg__ZTV8S20999C78S20999C69S20999C10__A1__8S20999C1[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C78S20999C69S20999C10__A2__8S20999C1[3]),  3,4},
  {&(_tg__ZTV9S20999C12__9S20999C10__8S20999C1[6]),  6,8},
  {&(_tg__ZTV9S20999C14__9S20999C10__8S20999C1[6]),  6,9},
  {&(_tg__ZTV9S20999C14__9S20999C10__8S20999C1[6]),  6,9},
  {&(_tg__ZTV9S20999C12__8S20999C1[4]),  4,6},
  {&(_tg__ZTV9S20999C139S20999C12__8S20999C1[3]),  3,4},
  {&(_tg__ZTV8S20999C39S20999C139S20999C12__A3__8S20999C1[3]),  3,4},
  {&(_tg__ZTV8S20999C3__A1__9S20999C12__8S20999C1[4]),  4,5},
  {&(_tg__ZTV9S20999C14__8S20999C1[5]),  5,8},
  {&(_tg__ZTV9S20999C14__8S20999C1[5]),  5,8},
  {&(_tg__ZTV8S20999C7__A3__8S20999C1[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C7__A5__8S20999C1[3]),  3,4},
  {&(_tg__ZTV9S20999C13__A1__8S20999C1[3]),  3,4},
  {&(_tg__ZTV8S20999C39S20999C13__A6__8S20999C1[3]),  3,4},
  {&(_tg__ZTV9S20999C18__8S20999C1[5]),  5,9},
  {&(_tg__ZTV9S20999C149S20999C18__A1__8S20999C1[5]),  5,8},
  {&(_tg__ZTV8S20999C3__9S20999C149S20999C18__A1__8S20999C1[4]),  4,5},
  {&(_tg__ZTV8S20999C3__9S20999C18__8S20999C1[4]),  4,5},
  {&(_tg__ZTV9S20999C15__A3__8S20999C1[5]),  5,6},
  {&(_tg__ZTV8S20999C7__9S20999C15__A3__8S20999C1[4]),  4,5},
  {&(_tg__ZTV9S20999C20__8S20999C1[10]),  10,13},
  {&(_tg__ZTV9S20999C149S20999C20__A2__8S20999C1[5]),  5,8},
  {&(_tg__ZTV8S20999C3__9S20999C149S20999C20__A2__8S20999C1[4]),  4,5},
  {&(_tg__ZTV9S20999C109S20999C20__A1__8S20999C1[7]),  7,11},
  {&(_tg__ZTV8S20999C69S20999C109S20999C20__A7__8S20999C1[4]),  4,8},
  {&(_tg__ZTV8S20999C78S20999C69S20999C109S20999C20__A8__8S20999C1[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C78S20999C69S20999C109S20999C20__A14__8S20999C1[3]),  3,4},
  {&(_tg__ZTV9S20999C12__9S20999C109S20999C20__A1__8S20999C1[6]),  6,8},
  {&(_tg__ZTV9S20999C14__9S20999C109S20999C20__A1__8S20999C1[6]),  6,9},
  {&(_tg__ZTV9S20999C14__9S20999C109S20999C20__A1__8S20999C1[6]),  6,9},
  {&(_tg__ZTV9S20999C13__9S20999C20__8S20999C1[4]),  4,5},
  {&(_tg__ZTV9S20999C14__A1__9S20999C20__8S20999C1[6]),  6,9},
  {&(_tg__ZTV8S20999C6__9S20999C20__8S20999C1[7]),  7,11},
  {&(_tg__ZTV9S20999C10__9S20999C20__8S20999C1[7]),  7,11},
  {&(_tg__ZTV9S20999C12__9S20999C20__8S20999C1[6]),  6,8},
  {&(_tg__ZTV9S20999C14__A1__9S20999C20__8S20999C1[6]),  6,9},
  {&(_tg__ZTV8S20999C6__A6__8S20999C1[4]),  4,8},
  {&(_tg__ZTV8S20999C78S20999C6__A7__8S20999C1[3]),  3,4},
  {&(_tg__ZTV8S20999C38S20999C78S20999C6__A13__8S20999C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20999C1[];
extern  VTBL_ENTRY _ZTV8S20999C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20999C1[];
static VTBL_ENTRY alt_thunk_names22[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C20D0Ev,_ZTv0_n24_N9S20999C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20999C20D0Ev,_ZThn36_N9S20999C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C20D1Ev,_ZTv0_n24_N9S20999C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20999C20D1Ev,_ZThn36_N9S20999C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C10D0Ev,_ZTv0_n24_N9S20999C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20999C10D0Ev,_ZThn28_N9S20999C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C10D1Ev,_ZTv0_n24_N9S20999C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20999C10D1Ev,_ZThn28_N9S20999C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20999C8D0Ev,_ZTv0_n24_N8S20999C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S20999C8D0Ev,_ZThn152_N8S20999C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20999C8D0Ev,_ZThn128_N8S20999C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20999C8D1Ev,_ZTv0_n24_N8S20999C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S20999C8D1Ev,_ZThn152_N8S20999C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20999C8D1Ev,_ZThn128_N8S20999C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20999C8D0Ev,_ZTv0_n36_N8S20999C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20999C8D0Ev,_ZThn100_N8S20999C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20999C8D1Ev,_ZTv0_n36_N8S20999C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20999C8D1Ev,_ZThn100_N8S20999C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C16D0Ev,_ZTv0_n24_N9S20999C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20999C16D0Ev,_ZThn112_N9S20999C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C16D1Ev,_ZTv0_n24_N9S20999C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20999C16D1Ev,_ZThn112_N9S20999C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C17D0Ev,_ZTv0_n24_N9S20999C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20999C17D0Ev,_ZThn112_N9S20999C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C17D1Ev,_ZTv0_n24_N9S20999C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20999C17D1Ev,_ZThn112_N9S20999C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20999C9D0Ev,_ZTv0_n24_N8S20999C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20999C9D0Ev,_ZThn128_N8S20999C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20999C9D1Ev,_ZTv0_n24_N8S20999C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20999C9D1Ev,_ZThn128_N8S20999C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20999C9D0Ev,_ZTv0_n36_N8S20999C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20999C9D0Ev,_ZThn100_N8S20999C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20999C9D1Ev,_ZTv0_n36_N8S20999C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20999C9D1Ev,_ZThn100_N8S20999C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S20999C19D0Ev,_ZTv0_n44_N9S20999C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn912_N9S20999C19D0Ev,_ZThn572_N9S20999C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S20999C19D1Ev,_ZTv0_n44_N9S20999C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn912_N9S20999C19D1Ev,_ZThn572_N9S20999C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C19D0Ev,_ZTv0_n24_N9S20999C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn960_N9S20999C19D0Ev,_ZThn608_N9S20999C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N9S20999C19D0Ev,_ZThn524_N9S20999C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20999C19D1Ev,_ZTv0_n24_N9S20999C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn960_N9S20999C19D1Ev,_ZThn608_N9S20999C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N9S20999C19D1Ev,_ZThn524_N9S20999C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20999C1D0Ev,_ZTv0_n44_N8S20999C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn912_N8S20999C1D0Ev,_ZThn572_N8S20999C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20999C1D1Ev,_ZTv0_n44_N8S20999C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn912_N8S20999C1D1Ev,_ZThn572_N8S20999C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20999C1D0Ev,_ZTv0_n24_N8S20999C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn960_N8S20999C1D0Ev,_ZThn608_N8S20999C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn872_N8S20999C1D0Ev,_ZThn548_N8S20999C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S20999C1D0Ev,_ZThn524_N8S20999C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20999C1D1Ev,_ZTv0_n24_N8S20999C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn960_N8S20999C1D1Ev,_ZThn608_N8S20999C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn872_N8S20999C1D1Ev,_ZThn548_N8S20999C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S20999C1D1Ev,_ZThn524_N8S20999C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20999C1D0Ev,_ZTv0_n36_N8S20999C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N8S20999C1D0Ev,_ZThn496_N8S20999C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20999C1D1Ev,_ZTv0_n36_N8S20999C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N8S20999C1D1Ev,_ZThn496_N8S20999C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S20999C1D0Ev,_ZTv0_n52_N8S20999C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S20999C1D0Ev,_ZThn396_N8S20999C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S20999C1D1Ev,_ZTv0_n52_N8S20999C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S20999C1D1Ev,_ZThn396_N8S20999C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20999C1D0Ev,_ZTv0_n28_N8S20999C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N8S20999C1D0Ev,_ZThn372_N8S20999C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20999C1D1Ev,_ZTv0_n28_N8S20999C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn584_N8S20999C1D1Ev,_ZThn372_N8S20999C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20999C1 = {  "S20999C1", // class name
  bases_S20999C1, 96,
  &(vtc_S20999C1[0]), // expected_vtbl_contents
  &(vtt_S20999C1[0]), // expected_vtt_contents
  ABISELECT(976,620), // object size
  NSPAIRA(_ZTI8S20999C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20999C1),200, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20999C1),146, //virtual table table var
  57, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names22,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1419C4  {
  int s1419c4f0;
  __tsi64 s1419c4f1;
  void *s1419c4f2[4];
  int s1419c4f3[2];
  void *s1419c4f4;
  ::S28C9_nt s1419c4f5;
  void *s1419c4f6[2];
  virtual  ~S1419C4(); // _ZN7S1419C4D1Ev
  virtual void  v4(); // _ZN7S1419C42v4Ev
  virtual void  v5(); // _ZN7S1419C42v5Ev
  virtual void  v6(); // _ZN7S1419C42v6Ev
  virtual void  v7(); // _ZN7S1419C42v7Ev
  virtual void  v8(); // _ZN7S1419C42v8Ev
  virtual void  v9(); // _ZN7S1419C42v9Ev
  virtual void  v10(); // _ZN7S1419C43v10Ev
  virtual void  v11(); // _ZN7S1419C43v11Ev
  virtual void  v12(); // _ZN7S1419C43v12Ev
  virtual void  v13(); // _ZN7S1419C43v13Ev
  virtual void  v14(); // _ZN7S1419C43v14Ev
  virtual void  v15(); // _ZN7S1419C43v15Ev
  virtual void  v16(); // _ZN7S1419C43v16Ev
  virtual void  v17(); // _ZN7S1419C43v17Ev
  virtual void  v18(); // _ZN7S1419C43v18Ev
  virtual void  v19(); // _ZN7S1419C43v19Ev
  virtual void  v20(); // _ZN7S1419C43v20Ev
  virtual void  v21(); // _ZN7S1419C43v21Ev
  virtual void  v22(); // _ZN7S1419C43v22Ev
  virtual void  v23(); // _ZN7S1419C43v23Ev
  virtual void  v24(); // _ZN7S1419C43v24Ev
  virtual void  v25(); // _ZN7S1419C43v25Ev
  virtual void  v26(); // _ZN7S1419C43v26Ev
  virtual void  v27(); // _ZN7S1419C43v27Ev
  virtual void  v28(); // _ZN7S1419C43v28Ev
  virtual void  v29(); // _ZN7S1419C43v29Ev
  virtual void  v30(); // _ZN7S1419C43v30Ev
  virtual void  v31(); // _ZN7S1419C43v31Ev
  virtual void  v32(); // _ZN7S1419C43v32Ev
  virtual void  v33(); // _ZN7S1419C43v33Ev
  virtual void  v34(); // _ZN7S1419C43v34Ev
  virtual void  v35(); // _ZN7S1419C43v35Ev
  virtual void  v36(); // _ZN7S1419C43v36Ev
  virtual void  v37(); // _ZN7S1419C43v37Ev
  virtual void  v38(); // _ZN7S1419C43v38Ev
  virtual void  v39(); // _ZN7S1419C43v39Ev
  virtual void  v40(); // _ZN7S1419C43v40Ev
  virtual void  v41(); // _ZN7S1419C43v41Ev
  virtual void  v42(); // _ZN7S1419C43v42Ev
  virtual void  v43(); // _ZN7S1419C43v43Ev
  virtual void  v44(); // _ZN7S1419C43v44Ev
  virtual void  v45(); // _ZN7S1419C43v45Ev
  virtual void  v46(); // _ZN7S1419C43v46Ev
  virtual void  v47(); // _ZN7S1419C43v47Ev
  virtual void  v48(); // _ZN7S1419C43v48Ev
  virtual void  v49(); // _ZN7S1419C43v49Ev
  virtual void  v50(); // _ZN7S1419C43v50Ev
  virtual void  v51(); // _ZN7S1419C43v51Ev
  virtual void  v52(); // _ZN7S1419C43v52Ev
  virtual void  v53(); // _ZN7S1419C43v53Ev
  virtual void  v54(); // _ZN7S1419C43v54Ev
  virtual void  v55(); // _ZN7S1419C43v55Ev
  virtual void  v56(); // _ZN7S1419C43v56Ev
  virtual void  v57(); // _ZN7S1419C43v57Ev
  virtual void  v58(); // _ZN7S1419C43v58Ev
  virtual void  v59(); // _ZN7S1419C43v59Ev
  virtual void  v60(); // _ZN7S1419C43v60Ev
  virtual void  v61(); // _ZN7S1419C43v61Ev
  virtual void  v62(); // _ZN7S1419C43v62Ev
  virtual void  v63(); // _ZN7S1419C43v63Ev
  virtual void  v64(); // _ZN7S1419C43v64Ev
  virtual void  v65(); // _ZN7S1419C43v65Ev
  virtual void  v66(); // _ZN7S1419C43v66Ev
  virtual void  v67(); // _ZN7S1419C43v67Ev
  S1419C4(); // tgen
};
//SIG(-1 S1419C4) 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]}


 S1419C4 ::~S1419C4(){ note_dtor("S1419C4", this);}
void  S1419C4 ::v4(){vfunc_called(this, "_ZN7S1419C42v4Ev");}
void  S1419C4 ::v5(){vfunc_called(this, "_ZN7S1419C42v5Ev");}
void  S1419C4 ::v6(){vfunc_called(this, "_ZN7S1419C42v6Ev");}
void  S1419C4 ::v7(){vfunc_called(this, "_ZN7S1419C42v7Ev");}
void  S1419C4 ::v8(){vfunc_called(this, "_ZN7S1419C42v8Ev");}
void  S1419C4 ::v9(){vfunc_called(this, "_ZN7S1419C42v9Ev");}
void  S1419C4 ::v10(){vfunc_called(this, "_ZN7S1419C43v10Ev");}
void  S1419C4 ::v11(){vfunc_called(this, "_ZN7S1419C43v11Ev");}
void  S1419C4 ::v12(){vfunc_called(this, "_ZN7S1419C43v12Ev");}
void  S1419C4 ::v13(){vfunc_called(this, "_ZN7S1419C43v13Ev");}
void  S1419C4 ::v14(){vfunc_called(this, "_ZN7S1419C43v14Ev");}
void  S1419C4 ::v15(){vfunc_called(this, "_ZN7S1419C43v15Ev");}
void  S1419C4 ::v16(){vfunc_called(this, "_ZN7S1419C43v16Ev");}
void  S1419C4 ::v17(){vfunc_called(this, "_ZN7S1419C43v17Ev");}
void  S1419C4 ::v18(){vfunc_called(this, "_ZN7S1419C43v18Ev");}
void  S1419C4 ::v19(){vfunc_called(this, "_ZN7S1419C43v19Ev");}
void  S1419C4 ::v20(){vfunc_called(this, "_ZN7S1419C43v20Ev");}
void  S1419C4 ::v21(){vfunc_called(this, "_ZN7S1419C43v21Ev");}
void  S1419C4 ::v22(){vfunc_called(this, "_ZN7S1419C43v22Ev");}
void  S1419C4 ::v23(){vfunc_called(this, "_ZN7S1419C43v23Ev");}
void  S1419C4 ::v24(){vfunc_called(this, "_ZN7S1419C43v24Ev");}
void  S1419C4 ::v25(){vfunc_called(this, "_ZN7S1419C43v25Ev");}
void  S1419C4 ::v26(){vfunc_called(this, "_ZN7S1419C43v26Ev");}
void  S1419C4 ::v27(){vfunc_called(this, "_ZN7S1419C43v27Ev");}
void  S1419C4 ::v28(){vfunc_called(this, "_ZN7S1419C43v28Ev");}
void  S1419C4 ::v29(){vfunc_called(this, "_ZN7S1419C43v29Ev");}
void  S1419C4 ::v30(){vfunc_called(this, "_ZN7S1419C43v30Ev");}
void  S1419C4 ::v31(){vfunc_called(this, "_ZN7S1419C43v31Ev");}
void  S1419C4 ::v32(){vfunc_called(this, "_ZN7S1419C43v32Ev");}
void  S1419C4 ::v33(){vfunc_called(this, "_ZN7S1419C43v33Ev");}
void  S1419C4 ::v34(){vfunc_called(this, "_ZN7S1419C43v34Ev");}
void  S1419C4 ::v35(){vfunc_called(this, "_ZN7S1419C43v35Ev");}
void  S1419C4 ::v36(){vfunc_called(this, "_ZN7S1419C43v36Ev");}
void  S1419C4 ::v37(){vfunc_called(this, "_ZN7S1419C43v37Ev");}
void  S1419C4 ::v38(){vfunc_called(this, "_ZN7S1419C43v38Ev");}
void  S1419C4 ::v39(){vfunc_called(this, "_ZN7S1419C43v39Ev");}
void  S1419C4 ::v40(){vfunc_called(this, "_ZN7S1419C43v40Ev");}
void  S1419C4 ::v41(){vfunc_called(this, "_ZN7S1419C43v41Ev");}
void  S1419C4 ::v42(){vfunc_called(this, "_ZN7S1419C43v42Ev");}
void  S1419C4 ::v43(){vfunc_called(this, "_ZN7S1419C43v43Ev");}
void  S1419C4 ::v44(){vfunc_called(this, "_ZN7S1419C43v44Ev");}
void  S1419C4 ::v45(){vfunc_called(this, "_ZN7S1419C43v45Ev");}
void  S1419C4 ::v46(){vfunc_called(this, "_ZN7S1419C43v46Ev");}
void  S1419C4 ::v47(){vfunc_called(this, "_ZN7S1419C43v47Ev");}
void  S1419C4 ::v48(){vfunc_called(this, "_ZN7S1419C43v48Ev");}
void  S1419C4 ::v49(){vfunc_called(this, "_ZN7S1419C43v49Ev");}
void  S1419C4 ::v50(){vfunc_called(this, "_ZN7S1419C43v50Ev");}
void  S1419C4 ::v51(){vfunc_called(this, "_ZN7S1419C43v51Ev");}
void  S1419C4 ::v52(){vfunc_called(this, "_ZN7S1419C43v52Ev");}
void  S1419C4 ::v53(){vfunc_called(this, "_ZN7S1419C43v53Ev");}
void  S1419C4 ::v54(){vfunc_called(this, "_ZN7S1419C43v54Ev");}
void  S1419C4 ::v55(){vfunc_called(this, "_ZN7S1419C43v55Ev");}
void  S1419C4 ::v56(){vfunc_called(this, "_ZN7S1419C43v56Ev");}
void  S1419C4 ::v57(){vfunc_called(this, "_ZN7S1419C43v57Ev");}
void  S1419C4 ::v58(){vfunc_called(this, "_ZN7S1419C43v58Ev");}
void  S1419C4 ::v59(){vfunc_called(this, "_ZN7S1419C43v59Ev");}
void  S1419C4 ::v60(){vfunc_called(this, "_ZN7S1419C43v60Ev");}
void  S1419C4 ::v61(){vfunc_called(this, "_ZN7S1419C43v61Ev");}
void  S1419C4 ::v62(){vfunc_called(this, "_ZN7S1419C43v62Ev");}
void  S1419C4 ::v63(){vfunc_called(this, "_ZN7S1419C43v63Ev");}
void  S1419C4 ::v64(){vfunc_called(this, "_ZN7S1419C43v64Ev");}
void  S1419C4 ::v65(){vfunc_called(this, "_ZN7S1419C43v65Ev");}
void  S1419C4 ::v66(){vfunc_called(this, "_ZN7S1419C43v66Ev");}
void  S1419C4 ::v67(){vfunc_called(this, "_ZN7S1419C43v67Ev");}
S1419C4 ::S1419C4(){ note_ctor("S1419C4", this);} // tgen

static void Test_S1419C4()
{
  extern Class_Descriptor cd_S1419C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1419C4, buf);
    S1419C4 *dp, &lv = *(dp=new (buf) S1419C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1419C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1419C4)");
    check_field_offset(lv, s1419c4f0, ABISELECT(8,4), "S1419C4.s1419c4f0");
    check_field_offset(lv, s1419c4f1, ABISELECT(16,8), "S1419C4.s1419c4f1");
    check_field_offset(lv, s1419c4f2, ABISELECT(24,16), "S1419C4.s1419c4f2");
    check_field_offset(lv, s1419c4f3, ABISELECT(56,32), "S1419C4.s1419c4f3");
    check_field_offset(lv, s1419c4f4, ABISELECT(64,40), "S1419C4.s1419c4f4");
    check_field_offset(lv, s1419c4f5, ABISELECT(72,44), "S1419C4.s1419c4f5");
    check_field_offset(lv, s1419c4f6, ABISELECT(80,52), "S1419C4.s1419c4f6");
    test_class_info(&lv, &cd_S1419C4);
    dp->~S1419C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1419C4(Test_S1419C4, "S1419C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1419C4C1Ev();
extern void _ZN7S1419C4D1Ev();
Name_Map name_map_S1419C4[] = {
  NSPAIR(_ZN7S1419C4C1Ev),
  NSPAIR(_ZN7S1419C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1419C4[];
extern void _ZN7S1419C4D1Ev();
extern void _ZN7S1419C4D0Ev();
extern void _ZN7S1419C42v4Ev();
extern void _ZN7S1419C42v5Ev();
extern void _ZN7S1419C42v6Ev();
extern void _ZN7S1419C42v7Ev();
extern void _ZN7S1419C42v8Ev();
extern void _ZN7S1419C42v9Ev();
extern void _ZN7S1419C43v10Ev();
extern void _ZN7S1419C43v11Ev();
extern void _ZN7S1419C43v12Ev();
extern void _ZN7S1419C43v13Ev();
extern void _ZN7S1419C43v14Ev();
extern void _ZN7S1419C43v15Ev();
extern void _ZN7S1419C43v16Ev();
extern void _ZN7S1419C43v17Ev();
extern void _ZN7S1419C43v18Ev();
extern void _ZN7S1419C43v19Ev();
extern void _ZN7S1419C43v20Ev();
extern void _ZN7S1419C43v21Ev();
extern void _ZN7S1419C43v22Ev();
extern void _ZN7S1419C43v23Ev();
extern void _ZN7S1419C43v24Ev();
extern void _ZN7S1419C43v25Ev();
extern void _ZN7S1419C43v26Ev();
extern void _ZN7S1419C43v27Ev();
extern void _ZN7S1419C43v28Ev();
extern void _ZN7S1419C43v29Ev();
extern void _ZN7S1419C43v30Ev();
extern void _ZN7S1419C43v31Ev();
extern void _ZN7S1419C43v32Ev();
extern void _ZN7S1419C43v33Ev();
extern void _ZN7S1419C43v34Ev();
extern void _ZN7S1419C43v35Ev();
extern void _ZN7S1419C43v36Ev();
extern void _ZN7S1419C43v37Ev();
extern void _ZN7S1419C43v38Ev();
extern void _ZN7S1419C43v39Ev();
extern void _ZN7S1419C43v40Ev();
extern void _ZN7S1419C43v41Ev();
extern void _ZN7S1419C43v42Ev();
extern void _ZN7S1419C43v43Ev();
extern void _ZN7S1419C43v44Ev();
extern void _ZN7S1419C43v45Ev();
extern void _ZN7S1419C43v46Ev();
extern void _ZN7S1419C43v47Ev();
extern void _ZN7S1419C43v48Ev();
extern void _ZN7S1419C43v49Ev();
extern void _ZN7S1419C43v50Ev();
extern void _ZN7S1419C43v51Ev();
extern void _ZN7S1419C43v52Ev();
extern void _ZN7S1419C43v53Ev();
extern void _ZN7S1419C43v54Ev();
extern void _ZN7S1419C43v55Ev();
extern void _ZN7S1419C43v56Ev();
extern void _ZN7S1419C43v57Ev();
extern void _ZN7S1419C43v58Ev();
extern void _ZN7S1419C43v59Ev();
extern void _ZN7S1419C43v60Ev();
extern void _ZN7S1419C43v61Ev();
extern void _ZN7S1419C43v62Ev();
extern void _ZN7S1419C43v63Ev();
extern void _ZN7S1419C43v64Ev();
extern void _ZN7S1419C43v65Ev();
extern void _ZN7S1419C43v66Ev();
extern void _ZN7S1419C43v67Ev();
static  VTBL_ENTRY vtc_S1419C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1419C4[0]),
  (VTBL_ENTRY)&_ZN7S1419C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1419C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1419C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1419C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1419C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1419C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1419C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1419C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v67Ev,
};
extern VTBL_ENTRY _ZTI7S1419C4[];
extern  VTBL_ENTRY _ZTV7S1419C4[];
Class_Descriptor cd_S1419C4 = {  "S1419C4", // class name
  0,0,//no base classes
  &(vtc_S1419C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1419C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1419C4),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  S1419C3  : S1419C4 {
  void *s1419c3f0;
  ::S28C31_nt s1419c3f1;
  int s1419c3f2;
  void *s1419c3f3;
  unsigned int s1419c3f4:1;
  ::S28C31_nt s1419c3f5;
  virtual  ~S1419C3(); // _ZN7S1419C3D1Ev
  virtual void  v68(); // _ZN7S1419C33v68Ev
  virtual void  v69(); // _ZN7S1419C33v69Ev
  virtual void  v70(); // _ZN7S1419C33v70Ev
  virtual void  v71(); // _ZN7S1419C33v71Ev
  virtual void  v72(); // _ZN7S1419C33v72Ev
  virtual void  v73(); // _ZN7S1419C33v73Ev
  virtual void  v74(); // _ZN7S1419C33v74Ev
  virtual void  v75(); // _ZN7S1419C33v75Ev
  S1419C3(); // tgen
};
//SIG(-1 S1419C3) C1{ BC2{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 Fp FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC4}


 S1419C3 ::~S1419C3(){ note_dtor("S1419C3", this);}
void  S1419C3 ::v68(){vfunc_called(this, "_ZN7S1419C33v68Ev");}
void  S1419C3 ::v69(){vfunc_called(this, "_ZN7S1419C33v69Ev");}
void  S1419C3 ::v70(){vfunc_called(this, "_ZN7S1419C33v70Ev");}
void  S1419C3 ::v71(){vfunc_called(this, "_ZN7S1419C33v71Ev");}
void  S1419C3 ::v72(){vfunc_called(this, "_ZN7S1419C33v72Ev");}
void  S1419C3 ::v73(){vfunc_called(this, "_ZN7S1419C33v73Ev");}
void  S1419C3 ::v74(){vfunc_called(this, "_ZN7S1419C33v74Ev");}
void  S1419C3 ::v75(){vfunc_called(this, "_ZN7S1419C33v75Ev");}
S1419C3 ::S1419C3(){ note_ctor("S1419C3", this);} // tgen

static void Test_S1419C3()
{
  extern Class_Descriptor cd_S1419C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,26)];
    init_test(&cd_S1419C3, buf);
    S1419C3 *dp, &lv = *(dp=new (buf) S1419C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,100), "sizeof(S1419C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1419C3)");
    check_base_class_offset(lv, (S1419C4*), 0, "S1419C3");
    check_field_offset(lv, s1419c3f0, ABISELECT(96,60), "S1419C3.s1419c3f0");
    check_field_offset(lv, s1419c3f1, ABISELECT(104,64), "S1419C3.s1419c3f1");
    check_field_offset(lv, s1419c3f2, ABISELECT(120,76), "S1419C3.s1419c3f2");
    check_field_offset(lv, s1419c3f3, ABISELECT(128,80), "S1419C3.s1419c3f3");
    set_bf_and_test(lv, s1419c3f4, ABISELECT(136,84), 0, 1, 1, "S1419C3");
    check_field_offset(lv, s1419c3f5, ABISELECT(144,88), "S1419C3.s1419c3f5");
    test_class_info(&lv, &cd_S1419C3);
    dp->~S1419C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1419C3(Test_S1419C3, "S1419C3", ABISELECT(160,100));

#else // __cplusplus

extern void _ZN7S1419C3C1Ev();
extern void _ZN7S1419C3D1Ev();
Name_Map name_map_S1419C3[] = {
  NSPAIR(_ZN7S1419C3C1Ev),
  NSPAIR(_ZN7S1419C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1419C4;
extern VTBL_ENTRY _ZTI7S1419C4[];
extern  VTBL_ENTRY _ZTV7S1419C4[];
static Base_Class bases_S1419C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1419C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1419C3[];
extern void _ZN7S1419C3D1Ev();
extern void _ZN7S1419C3D0Ev();
extern void _ZN7S1419C42v4Ev();
extern void _ZN7S1419C42v5Ev();
extern void _ZN7S1419C42v6Ev();
extern void _ZN7S1419C42v7Ev();
extern void _ZN7S1419C42v8Ev();
extern void _ZN7S1419C42v9Ev();
extern void _ZN7S1419C43v10Ev();
extern void _ZN7S1419C43v11Ev();
extern void _ZN7S1419C43v12Ev();
extern void _ZN7S1419C43v13Ev();
extern void _ZN7S1419C43v14Ev();
extern void _ZN7S1419C43v15Ev();
extern void _ZN7S1419C43v16Ev();
extern void _ZN7S1419C43v17Ev();
extern void _ZN7S1419C43v18Ev();
extern void _ZN7S1419C43v19Ev();
extern void _ZN7S1419C43v20Ev();
extern void _ZN7S1419C43v21Ev();
extern void _ZN7S1419C43v22Ev();
extern void _ZN7S1419C43v23Ev();
extern void _ZN7S1419C43v24Ev();
extern void _ZN7S1419C43v25Ev();
extern void _ZN7S1419C43v26Ev();
extern void _ZN7S1419C43v27Ev();
extern void _ZN7S1419C43v28Ev();
extern void _ZN7S1419C43v29Ev();
extern void _ZN7S1419C43v30Ev();
extern void _ZN7S1419C43v31Ev();
extern void _ZN7S1419C43v32Ev();
extern void _ZN7S1419C43v33Ev();
extern void _ZN7S1419C43v34Ev();
extern void _ZN7S1419C43v35Ev();
extern void _ZN7S1419C43v36Ev();
extern void _ZN7S1419C43v37Ev();
extern void _ZN7S1419C43v38Ev();
extern void _ZN7S1419C43v39Ev();
extern void _ZN7S1419C43v40Ev();
extern void _ZN7S1419C43v41Ev();
extern void _ZN7S1419C43v42Ev();
extern void _ZN7S1419C43v43Ev();
extern void _ZN7S1419C43v44Ev();
extern void _ZN7S1419C43v45Ev();
extern void _ZN7S1419C43v46Ev();
extern void _ZN7S1419C43v47Ev();
extern void _ZN7S1419C43v48Ev();
extern void _ZN7S1419C43v49Ev();
extern void _ZN7S1419C43v50Ev();
extern void _ZN7S1419C43v51Ev();
extern void _ZN7S1419C43v52Ev();
extern void _ZN7S1419C43v53Ev();
extern void _ZN7S1419C43v54Ev();
extern void _ZN7S1419C43v55Ev();
extern void _ZN7S1419C43v56Ev();
extern void _ZN7S1419C43v57Ev();
extern void _ZN7S1419C43v58Ev();
extern void _ZN7S1419C43v59Ev();
extern void _ZN7S1419C43v60Ev();
extern void _ZN7S1419C43v61Ev();
extern void _ZN7S1419C43v62Ev();
extern void _ZN7S1419C43v63Ev();
extern void _ZN7S1419C43v64Ev();
extern void _ZN7S1419C43v65Ev();
extern void _ZN7S1419C43v66Ev();
extern void _ZN7S1419C43v67Ev();
extern void _ZN7S1419C33v68Ev();
extern void _ZN7S1419C33v69Ev();
extern void _ZN7S1419C33v70Ev();
extern void _ZN7S1419C33v71Ev();
extern void _ZN7S1419C33v72Ev();
extern void _ZN7S1419C33v73Ev();
extern void _ZN7S1419C33v74Ev();
extern void _ZN7S1419C33v75Ev();
static  VTBL_ENTRY vtc_S1419C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1419C3[0]),
  (VTBL_ENTRY)&_ZN7S1419C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1419C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1419C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1419C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1419C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1419C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1419C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1419C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1419C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1419C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1419C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1419C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1419C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1419C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1419C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1419C33v75Ev,
};
extern VTBL_ENTRY _ZTI7S1419C3[];
extern  VTBL_ENTRY _ZTV7S1419C3[];
Class_Descriptor cd_S1419C3 = {  "S1419C3", // class name
  bases_S1419C3, 1,
  &(vtc_S1419C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,100), // object size
  NSPAIRA(_ZTI7S1419C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1419C3),76, //virtual function table var
  2, // 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  S1419C2  : S1419C3 {
  void *s1419c2f0[2];
  ::S28C31_nt s1419c2f1;
  unsigned int s1419c2f2:1;
  ::S48C54 s1419c2f3;
  int s1419c2f4;
  virtual  ~S1419C2(); // _ZN7S1419C2D1Ev
  virtual void  v76(); // _ZN7S1419C23v76Ev
  virtual void  v77(); // _ZN7S1419C23v77Ev
  virtual void  v78(); // _ZN7S1419C23v78Ev
  virtual void  v79(); // _ZN7S1419C23v79Ev
  S1419C2(); // tgen
};
//SIG(-1 S1419C2) 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 v74 v75 v76 Fp FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC5} vd v1 v2 v3 v4 Fp[2] FC5 Fi:1 FC9{ BC10{ BC8}} Fi}


 S1419C2 ::~S1419C2(){ note_dtor("S1419C2", this);}
void  S1419C2 ::v76(){vfunc_called(this, "_ZN7S1419C23v76Ev");}
void  S1419C2 ::v77(){vfunc_called(this, "_ZN7S1419C23v77Ev");}
void  S1419C2 ::v78(){vfunc_called(this, "_ZN7S1419C23v78Ev");}
void  S1419C2 ::v79(){vfunc_called(this, "_ZN7S1419C23v79Ev");}
S1419C2 ::S1419C2(){ note_ctor("S1419C2", this);} // tgen

static void Test_S1419C2()
{
  extern Class_Descriptor cd_S1419C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,36)];
    init_test(&cd_S1419C2, buf);
    S1419C2 *dp, &lv = *(dp=new (buf) S1419C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,140), "sizeof(S1419C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1419C2)");
    check_base_class_offset(lv, (S1419C4*)(S1419C3*), 0, "S1419C2");
    check_base_class_offset(lv, (S1419C3*), 0, "S1419C2");
    check_field_offset(lv, s1419c2f0, ABISELECT(160,100), "S1419C2.s1419c2f0");
    check_field_offset(lv, s1419c2f1, ABISELECT(176,108), "S1419C2.s1419c2f1");
    set_bf_and_test(lv, s1419c2f2, ABISELECT(192,120), 0, 1, 1, "S1419C2");
    check_field_offset(lv, s1419c2f3, ABISELECT(200,124), "S1419C2.s1419c2f3");
    check_field_offset(lv, s1419c2f4, ABISELECT(216,136), "S1419C2.s1419c2f4");
    test_class_info(&lv, &cd_S1419C2);
    dp->~S1419C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1419C2(Test_S1419C2, "S1419C2", ABISELECT(224,140));

#else // __cplusplus

extern void _ZN7S1419C2C1Ev();
extern void _ZN7S1419C2D1Ev();
Name_Map name_map_S1419C2[] = {
  NSPAIR(_ZN7S1419C2C1Ev),
  NSPAIR(_ZN7S1419C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1419C4;
extern VTBL_ENTRY _ZTI7S1419C4[];
extern  VTBL_ENTRY _ZTV7S1419C4[];
extern Class_Descriptor cd_S1419C3;
extern VTBL_ENTRY _ZTI7S1419C3[];
extern  VTBL_ENTRY _ZTV7S1419C3[];
static Base_Class bases_S1419C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1419C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1419C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1419C2[];
extern void _ZN7S1419C2D1Ev();
extern void _ZN7S1419C2D0Ev();
extern void _ZN7S1419C42v4Ev();
extern void _ZN7S1419C42v5Ev();
extern void _ZN7S1419C42v6Ev();
extern void _ZN7S1419C42v7Ev();
extern void _ZN7S1419C42v8Ev();
extern void _ZN7S1419C42v9Ev();
extern void _ZN7S1419C43v10Ev();
extern void _ZN7S1419C43v11Ev();
extern void _ZN7S1419C43v12Ev();
extern void _ZN7S1419C43v13Ev();
extern void _ZN7S1419C43v14Ev();
extern void _ZN7S1419C43v15Ev();
extern void _ZN7S1419C43v16Ev();
extern void _ZN7S1419C43v17Ev();
extern void _ZN7S1419C43v18Ev();
extern void _ZN7S1419C43v19Ev();
extern void _ZN7S1419C43v20Ev();
extern void _ZN7S1419C43v21Ev();
extern void _ZN7S1419C43v22Ev();
extern void _ZN7S1419C43v23Ev();
extern void _ZN7S1419C43v24Ev();
extern void _ZN7S1419C43v25Ev();
extern void _ZN7S1419C43v26Ev();
extern void _ZN7S1419C43v27Ev();
extern void _ZN7S1419C43v28Ev();
extern void _ZN7S1419C43v29Ev();
extern void _ZN7S1419C43v30Ev();
extern void _ZN7S1419C43v31Ev();
extern void _ZN7S1419C43v32Ev();
extern void _ZN7S1419C43v33Ev();
extern void _ZN7S1419C43v34Ev();
extern void _ZN7S1419C43v35Ev();
extern void _ZN7S1419C43v36Ev();
extern void _ZN7S1419C43v37Ev();
extern void _ZN7S1419C43v38Ev();
extern void _ZN7S1419C43v39Ev();
extern void _ZN7S1419C43v40Ev();
extern void _ZN7S1419C43v41Ev();
extern void _ZN7S1419C43v42Ev();
extern void _ZN7S1419C43v43Ev();
extern void _ZN7S1419C43v44Ev();
extern void _ZN7S1419C43v45Ev();
extern void _ZN7S1419C43v46Ev();
extern void _ZN7S1419C43v47Ev();
extern void _ZN7S1419C43v48Ev();
extern void _ZN7S1419C43v49Ev();
extern void _ZN7S1419C43v50Ev();
extern void _ZN7S1419C43v51Ev();
extern void _ZN7S1419C43v52Ev();
extern void _ZN7S1419C43v53Ev();
extern void _ZN7S1419C43v54Ev();
extern void _ZN7S1419C43v55Ev();
extern void _ZN7S1419C43v56Ev();
extern void _ZN7S1419C43v57Ev();
extern void _ZN7S1419C43v58Ev();
extern void _ZN7S1419C43v59Ev();
extern void _ZN7S1419C43v60Ev();
extern void _ZN7S1419C43v61Ev();
extern void _ZN7S1419C43v62Ev();
extern void _ZN7S1419C43v63Ev();
extern void _ZN7S1419C43v64Ev();
extern void _ZN7S1419C43v65Ev();
extern void _ZN7S1419C43v66Ev();
extern void _ZN7S1419C43v67Ev();
extern void _ZN7S1419C33v68Ev();
extern void _ZN7S1419C33v69Ev();
extern void _ZN7S1419C33v70Ev();
extern void _ZN7S1419C33v71Ev();
extern void _ZN7S1419C33v72Ev();
extern void _ZN7S1419C33v73Ev();
extern void _ZN7S1419C33v74Ev();
extern void _ZN7S1419C33v75Ev();
extern void _ZN7S1419C23v76Ev();
extern void _ZN7S1419C23v77Ev();
extern void _ZN7S1419C23v78Ev();
extern void _ZN7S1419C23v79Ev();
static  VTBL_ENTRY vtc_S1419C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1419C2[0]),
  (VTBL_ENTRY)&_ZN7S1419C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1419C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1419C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1419C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1419C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1419C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1419C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1419C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1419C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1419C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1419C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1419C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1419C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1419C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1419C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1419C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1419C23v76Ev,
  (VTBL_ENTRY)&_ZN7S1419C23v77Ev,
  (VTBL_ENTRY)&_ZN7S1419C23v78Ev,
  (VTBL_ENTRY)&_ZN7S1419C23v79Ev,
};
extern VTBL_ENTRY _ZTI7S1419C2[];
extern  VTBL_ENTRY _ZTV7S1419C2[];
Class_Descriptor cd_S1419C2 = {  "S1419C2", // class name
  bases_S1419C2, 2,
  &(vtc_S1419C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,140), // object size
  NSPAIRA(_ZTI7S1419C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1419C2),80, //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  S1419C1  : S1419C2 {
  unsigned int s1419c1f0:1;
  unsigned int s1419c1f1:1;
  virtual  ~S1419C1(); // _ZN7S1419C1D1Ev
  virtual void  v1(); // _ZN7S1419C12v1Ev
  virtual void  v2(); // _ZN7S1419C12v2Ev
  virtual void  v3(); // _ZN7S1419C12v3Ev
  S1419C1(); // tgen
};
//SIG(1 S1419C1) C1{ BC2{ BC3{ BC4{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v68 v69 v70 v71 v72 v73 v74 v75 Fp FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC6} vd v76 v77 v78 v79 Fp[2] FC6 Fi:1 FC10{ BC11{ BC9}} Fi} vd v1 v2 v3 Fi:1 Fi:1}


 S1419C1 ::~S1419C1(){ note_dtor("S1419C1", this);}
void  S1419C1 ::v1(){vfunc_called(this, "_ZN7S1419C12v1Ev");}
void  S1419C1 ::v2(){vfunc_called(this, "_ZN7S1419C12v2Ev");}
void  S1419C1 ::v3(){vfunc_called(this, "_ZN7S1419C12v3Ev");}
S1419C1 ::S1419C1(){ note_ctor("S1419C1", this);} // tgen

static void Test_S1419C1()
{
  extern Class_Descriptor cd_S1419C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,37)];
    init_test(&cd_S1419C1, buf);
    S1419C1 *dp, &lv = *(dp=new (buf) S1419C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,144), "sizeof(S1419C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1419C1)");
    check_base_class_offset(lv, (S1419C4*)(S1419C3*)(S1419C2*), 0, "S1419C1");
    check_base_class_offset(lv, (S1419C3*)(S1419C2*), 0, "S1419C1");
    check_base_class_offset(lv, (S1419C2*), 0, "S1419C1");
    set_bf_and_test(lv, s1419c1f0, ABISELECT(220,140), 0, 1, 1, "S1419C1");
    set_bf_and_test(lv, s1419c1f1, ABISELECT(220,140), 1, 1, 1, "S1419C1");
    test_class_info(&lv, &cd_S1419C1);
    dp->~S1419C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1419C1(Test_S1419C1, "S1419C1", ABISELECT(224,144));

#else // __cplusplus

extern void _ZN7S1419C1C1Ev();
extern void _ZN7S1419C1D1Ev();
Name_Map name_map_S1419C1[] = {
  NSPAIR(_ZN7S1419C1C1Ev),
  NSPAIR(_ZN7S1419C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1419C4;
extern VTBL_ENTRY _ZTI7S1419C4[];
extern  VTBL_ENTRY _ZTV7S1419C4[];
extern Class_Descriptor cd_S1419C3;
extern VTBL_ENTRY _ZTI7S1419C3[];
extern  VTBL_ENTRY _ZTV7S1419C3[];
extern Class_Descriptor cd_S1419C2;
extern VTBL_ENTRY _ZTI7S1419C2[];
extern  VTBL_ENTRY _ZTV7S1419C2[];
static Base_Class bases_S1419C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1419C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1419C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1419C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1419C1[];
extern void _ZN7S1419C1D1Ev();
extern void _ZN7S1419C1D0Ev();
extern void _ZN7S1419C42v4Ev();
extern void _ZN7S1419C42v5Ev();
extern void _ZN7S1419C42v6Ev();
extern void _ZN7S1419C42v7Ev();
extern void _ZN7S1419C42v8Ev();
extern void _ZN7S1419C42v9Ev();
extern void _ZN7S1419C43v10Ev();
extern void _ZN7S1419C43v11Ev();
extern void _ZN7S1419C43v12Ev();
extern void _ZN7S1419C43v13Ev();
extern void _ZN7S1419C43v14Ev();
extern void _ZN7S1419C43v15Ev();
extern void _ZN7S1419C43v16Ev();
extern void _ZN7S1419C43v17Ev();
extern void _ZN7S1419C43v18Ev();
extern void _ZN7S1419C43v19Ev();
extern void _ZN7S1419C43v20Ev();
extern void _ZN7S1419C43v21Ev();
extern void _ZN7S1419C43v22Ev();
extern void _ZN7S1419C43v23Ev();
extern void _ZN7S1419C43v24Ev();
extern void _ZN7S1419C43v25Ev();
extern void _ZN7S1419C43v26Ev();
extern void _ZN7S1419C43v27Ev();
extern void _ZN7S1419C43v28Ev();
extern void _ZN7S1419C43v29Ev();
extern void _ZN7S1419C43v30Ev();
extern void _ZN7S1419C43v31Ev();
extern void _ZN7S1419C43v32Ev();
extern void _ZN7S1419C43v33Ev();
extern void _ZN7S1419C43v34Ev();
extern void _ZN7S1419C43v35Ev();
extern void _ZN7S1419C43v36Ev();
extern void _ZN7S1419C43v37Ev();
extern void _ZN7S1419C43v38Ev();
extern void _ZN7S1419C43v39Ev();
extern void _ZN7S1419C43v40Ev();
extern void _ZN7S1419C43v41Ev();
extern void _ZN7S1419C43v42Ev();
extern void _ZN7S1419C43v43Ev();
extern void _ZN7S1419C43v44Ev();
extern void _ZN7S1419C43v45Ev();
extern void _ZN7S1419C43v46Ev();
extern void _ZN7S1419C43v47Ev();
extern void _ZN7S1419C43v48Ev();
extern void _ZN7S1419C43v49Ev();
extern void _ZN7S1419C43v50Ev();
extern void _ZN7S1419C43v51Ev();
extern void _ZN7S1419C43v52Ev();
extern void _ZN7S1419C43v53Ev();
extern void _ZN7S1419C43v54Ev();
extern void _ZN7S1419C43v55Ev();
extern void _ZN7S1419C43v56Ev();
extern void _ZN7S1419C43v57Ev();
extern void _ZN7S1419C43v58Ev();
extern void _ZN7S1419C43v59Ev();
extern void _ZN7S1419C43v60Ev();
extern void _ZN7S1419C43v61Ev();
extern void _ZN7S1419C43v62Ev();
extern void _ZN7S1419C43v63Ev();
extern void _ZN7S1419C43v64Ev();
extern void _ZN7S1419C43v65Ev();
extern void _ZN7S1419C43v66Ev();
extern void _ZN7S1419C43v67Ev();
extern void _ZN7S1419C33v68Ev();
extern void _ZN7S1419C33v69Ev();
extern void _ZN7S1419C33v70Ev();
extern void _ZN7S1419C33v71Ev();
extern void _ZN7S1419C33v72Ev();
extern void _ZN7S1419C33v73Ev();
extern void _ZN7S1419C33v74Ev();
extern void _ZN7S1419C33v75Ev();
extern void _ZN7S1419C23v76Ev();
extern void _ZN7S1419C23v77Ev();
extern void _ZN7S1419C23v78Ev();
extern void _ZN7S1419C23v79Ev();
extern void _ZN7S1419C12v1Ev();
extern void _ZN7S1419C12v2Ev();
extern void _ZN7S1419C12v3Ev();
static  VTBL_ENTRY vtc_S1419C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1419C1[0]),
  (VTBL_ENTRY)&_ZN7S1419C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1419C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1419C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1419C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1419C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1419C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1419C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1419C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1419C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1419C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1419C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1419C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1419C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1419C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1419C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1419C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1419C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1419C23v76Ev,
  (VTBL_ENTRY)&_ZN7S1419C23v77Ev,
  (VTBL_ENTRY)&_ZN7S1419C23v78Ev,
  (VTBL_ENTRY)&_ZN7S1419C23v79Ev,
  (VTBL_ENTRY)&_ZN7S1419C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1419C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1419C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S1419C1[];
extern  VTBL_ENTRY _ZTV7S1419C1[];
Class_Descriptor cd_S1419C1 = {  "S1419C1", // class name
  bases_S1419C1, 3,
  &(vtc_S1419C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,144), // object size
  NSPAIRA(_ZTI7S1419C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1419C1),83, //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  S3424C3  {
  int s3424c3f0;
  __tsi64 s3424c3f1;
  void *s3424c3f2[4];
  int s3424c3f3[2];
  void *s3424c3f4;
  ::S28C9_nt s3424c3f5;
  void *s3424c3f6[2];
  virtual  ~S3424C3(); // _ZN7S3424C3D1Ev
  virtual void  v8(); // _ZN7S3424C32v8Ev
  virtual void  v9(); // _ZN7S3424C32v9Ev
  virtual void  v10(); // _ZN7S3424C33v10Ev
  virtual void  v11(); // _ZN7S3424C33v11Ev
  virtual void  v12(); // _ZN7S3424C33v12Ev
  virtual void  v13(); // _ZN7S3424C33v13Ev
  virtual void  v14(); // _ZN7S3424C33v14Ev
  virtual void  v15(); // _ZN7S3424C33v15Ev
  virtual void  v16(); // _ZN7S3424C33v16Ev
  virtual void  v17(); // _ZN7S3424C33v17Ev
  virtual void  v18(); // _ZN7S3424C33v18Ev
  virtual void  v19(); // _ZN7S3424C33v19Ev
  virtual void  v20(); // _ZN7S3424C33v20Ev
  virtual void  v21(); // _ZN7S3424C33v21Ev
  virtual void  v22(); // _ZN7S3424C33v22Ev
  virtual void  v23(); // _ZN7S3424C33v23Ev
  virtual void  v24(); // _ZN7S3424C33v24Ev
  virtual void  v25(); // _ZN7S3424C33v25Ev
  virtual void  v26(); // _ZN7S3424C33v26Ev
  virtual void  v27(); // _ZN7S3424C33v27Ev
  virtual void  v28(); // _ZN7S3424C33v28Ev
  virtual void  v29(); // _ZN7S3424C33v29Ev
  virtual void  v30(); // _ZN7S3424C33v30Ev
  virtual void  v31(); // _ZN7S3424C33v31Ev
  virtual void  v32(); // _ZN7S3424C33v32Ev
  virtual void  v33(); // _ZN7S3424C33v33Ev
  virtual void  v34(); // _ZN7S3424C33v34Ev
  virtual void  v35(); // _ZN7S3424C33v35Ev
  virtual void  v36(); // _ZN7S3424C33v36Ev
  virtual void  v37(); // _ZN7S3424C33v37Ev
  virtual void  v38(); // _ZN7S3424C33v38Ev
  virtual void  v39(); // _ZN7S3424C33v39Ev
  virtual void  v40(); // _ZN7S3424C33v40Ev
  virtual void  v41(); // _ZN7S3424C33v41Ev
  virtual void  v42(); // _ZN7S3424C33v42Ev
  virtual void  v43(); // _ZN7S3424C33v43Ev
  virtual void  v44(); // _ZN7S3424C33v44Ev
  virtual void  v45(); // _ZN7S3424C33v45Ev
  virtual void  v46(); // _ZN7S3424C33v46Ev
  virtual void  v47(); // _ZN7S3424C33v47Ev
  virtual void  v48(); // _ZN7S3424C33v48Ev
  virtual void  v49(); // _ZN7S3424C33v49Ev
  virtual void  v50(); // _ZN7S3424C33v50Ev
  virtual void  v51(); // _ZN7S3424C33v51Ev
  virtual void  v52(); // _ZN7S3424C33v52Ev
  virtual void  v53(); // _ZN7S3424C33v53Ev
  virtual void  v54(); // _ZN7S3424C33v54Ev
  virtual void  v55(); // _ZN7S3424C33v55Ev
  virtual void  v56(); // _ZN7S3424C33v56Ev
  virtual void  v57(); // _ZN7S3424C33v57Ev
  virtual void  v58(); // _ZN7S3424C33v58Ev
  virtual void  v59(); // _ZN7S3424C33v59Ev
  virtual void  v60(); // _ZN7S3424C33v60Ev
  virtual void  v61(); // _ZN7S3424C33v61Ev
  virtual void  v62(); // _ZN7S3424C33v62Ev
  virtual void  v63(); // _ZN7S3424C33v63Ev
  virtual void  v64(); // _ZN7S3424C33v64Ev
  virtual void  v65(); // _ZN7S3424C33v65Ev
  virtual void  v66(); // _ZN7S3424C33v66Ev
  virtual void  v67(); // _ZN7S3424C33v67Ev
  virtual void  v68(); // _ZN7S3424C33v68Ev
  virtual void  v69(); // _ZN7S3424C33v69Ev
  virtual void  v70(); // _ZN7S3424C33v70Ev
  virtual void  v71(); // _ZN7S3424C33v71Ev
  S3424C3(); // tgen
};
//SIG(-1 S3424C3) 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]}


 S3424C3 ::~S3424C3(){ note_dtor("S3424C3", this);}
void  S3424C3 ::v8(){vfunc_called(this, "_ZN7S3424C32v8Ev");}
void  S3424C3 ::v9(){vfunc_called(this, "_ZN7S3424C32v9Ev");}
void  S3424C3 ::v10(){vfunc_called(this, "_ZN7S3424C33v10Ev");}
void  S3424C3 ::v11(){vfunc_called(this, "_ZN7S3424C33v11Ev");}
void  S3424C3 ::v12(){vfunc_called(this, "_ZN7S3424C33v12Ev");}
void  S3424C3 ::v13(){vfunc_called(this, "_ZN7S3424C33v13Ev");}
void  S3424C3 ::v14(){vfunc_called(this, "_ZN7S3424C33v14Ev");}
void  S3424C3 ::v15(){vfunc_called(this, "_ZN7S3424C33v15Ev");}
void  S3424C3 ::v16(){vfunc_called(this, "_ZN7S3424C33v16Ev");}
void  S3424C3 ::v17(){vfunc_called(this, "_ZN7S3424C33v17Ev");}
void  S3424C3 ::v18(){vfunc_called(this, "_ZN7S3424C33v18Ev");}
void  S3424C3 ::v19(){vfunc_called(this, "_ZN7S3424C33v19Ev");}
void  S3424C3 ::v20(){vfunc_called(this, "_ZN7S3424C33v20Ev");}
void  S3424C3 ::v21(){vfunc_called(this, "_ZN7S3424C33v21Ev");}
void  S3424C3 ::v22(){vfunc_called(this, "_ZN7S3424C33v22Ev");}
void  S3424C3 ::v23(){vfunc_called(this, "_ZN7S3424C33v23Ev");}
void  S3424C3 ::v24(){vfunc_called(this, "_ZN7S3424C33v24Ev");}
void  S3424C3 ::v25(){vfunc_called(this, "_ZN7S3424C33v25Ev");}
void  S3424C3 ::v26(){vfunc_called(this, "_ZN7S3424C33v26Ev");}
void  S3424C3 ::v27(){vfunc_called(this, "_ZN7S3424C33v27Ev");}
void  S3424C3 ::v28(){vfunc_called(this, "_ZN7S3424C33v28Ev");}
void  S3424C3 ::v29(){vfunc_called(this, "_ZN7S3424C33v29Ev");}
void  S3424C3 ::v30(){vfunc_called(this, "_ZN7S3424C33v30Ev");}
void  S3424C3 ::v31(){vfunc_called(this, "_ZN7S3424C33v31Ev");}
void  S3424C3 ::v32(){vfunc_called(this, "_ZN7S3424C33v32Ev");}
void  S3424C3 ::v33(){vfunc_called(this, "_ZN7S3424C33v33Ev");}
void  S3424C3 ::v34(){vfunc_called(this, "_ZN7S3424C33v34Ev");}
void  S3424C3 ::v35(){vfunc_called(this, "_ZN7S3424C33v35Ev");}
void  S3424C3 ::v36(){vfunc_called(this, "_ZN7S3424C33v36Ev");}
void  S3424C3 ::v37(){vfunc_called(this, "_ZN7S3424C33v37Ev");}
void  S3424C3 ::v38(){vfunc_called(this, "_ZN7S3424C33v38Ev");}
void  S3424C3 ::v39(){vfunc_called(this, "_ZN7S3424C33v39Ev");}
void  S3424C3 ::v40(){vfunc_called(this, "_ZN7S3424C33v40Ev");}
void  S3424C3 ::v41(){vfunc_called(this, "_ZN7S3424C33v41Ev");}
void  S3424C3 ::v42(){vfunc_called(this, "_ZN7S3424C33v42Ev");}
void  S3424C3 ::v43(){vfunc_called(this, "_ZN7S3424C33v43Ev");}
void  S3424C3 ::v44(){vfunc_called(this, "_ZN7S3424C33v44Ev");}
void  S3424C3 ::v45(){vfunc_called(this, "_ZN7S3424C33v45Ev");}
void  S3424C3 ::v46(){vfunc_called(this, "_ZN7S3424C33v46Ev");}
void  S3424C3 ::v47(){vfunc_called(this, "_ZN7S3424C33v47Ev");}
void  S3424C3 ::v48(){vfunc_called(this, "_ZN7S3424C33v48Ev");}
void  S3424C3 ::v49(){vfunc_called(this, "_ZN7S3424C33v49Ev");}
void  S3424C3 ::v50(){vfunc_called(this, "_ZN7S3424C33v50Ev");}
void  S3424C3 ::v51(){vfunc_called(this, "_ZN7S3424C33v51Ev");}
void  S3424C3 ::v52(){vfunc_called(this, "_ZN7S3424C33v52Ev");}
void  S3424C3 ::v53(){vfunc_called(this, "_ZN7S3424C33v53Ev");}
void  S3424C3 ::v54(){vfunc_called(this, "_ZN7S3424C33v54Ev");}
void  S3424C3 ::v55(){vfunc_called(this, "_ZN7S3424C33v55Ev");}
void  S3424C3 ::v56(){vfunc_called(this, "_ZN7S3424C33v56Ev");}
void  S3424C3 ::v57(){vfunc_called(this, "_ZN7S3424C33v57Ev");}
void  S3424C3 ::v58(){vfunc_called(this, "_ZN7S3424C33v58Ev");}
void  S3424C3 ::v59(){vfunc_called(this, "_ZN7S3424C33v59Ev");}
void  S3424C3 ::v60(){vfunc_called(this, "_ZN7S3424C33v60Ev");}
void  S3424C3 ::v61(){vfunc_called(this, "_ZN7S3424C33v61Ev");}
void  S3424C3 ::v62(){vfunc_called(this, "_ZN7S3424C33v62Ev");}
void  S3424C3 ::v63(){vfunc_called(this, "_ZN7S3424C33v63Ev");}
void  S3424C3 ::v64(){vfunc_called(this, "_ZN7S3424C33v64Ev");}
void  S3424C3 ::v65(){vfunc_called(this, "_ZN7S3424C33v65Ev");}
void  S3424C3 ::v66(){vfunc_called(this, "_ZN7S3424C33v66Ev");}
void  S3424C3 ::v67(){vfunc_called(this, "_ZN7S3424C33v67Ev");}
void  S3424C3 ::v68(){vfunc_called(this, "_ZN7S3424C33v68Ev");}
void  S3424C3 ::v69(){vfunc_called(this, "_ZN7S3424C33v69Ev");}
void  S3424C3 ::v70(){vfunc_called(this, "_ZN7S3424C33v70Ev");}
void  S3424C3 ::v71(){vfunc_called(this, "_ZN7S3424C33v71Ev");}
S3424C3 ::S3424C3(){ note_ctor("S3424C3", this);} // tgen

static void Test_S3424C3()
{
  extern Class_Descriptor cd_S3424C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3424C3, buf);
    S3424C3 *dp, &lv = *(dp=new (buf) S3424C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3424C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3424C3)");
    check_field_offset(lv, s3424c3f0, ABISELECT(8,4), "S3424C3.s3424c3f0");
    check_field_offset(lv, s3424c3f1, ABISELECT(16,8), "S3424C3.s3424c3f1");
    check_field_offset(lv, s3424c3f2, ABISELECT(24,16), "S3424C3.s3424c3f2");
    check_field_offset(lv, s3424c3f3, ABISELECT(56,32), "S3424C3.s3424c3f3");
    check_field_offset(lv, s3424c3f4, ABISELECT(64,40), "S3424C3.s3424c3f4");
    check_field_offset(lv, s3424c3f5, ABISELECT(72,44), "S3424C3.s3424c3f5");
    check_field_offset(lv, s3424c3f6, ABISELECT(80,52), "S3424C3.s3424c3f6");
    test_class_info(&lv, &cd_S3424C3);
    dp->~S3424C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3424C3(Test_S3424C3, "S3424C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3424C3C1Ev();
extern void _ZN7S3424C3D1Ev();
Name_Map name_map_S3424C3[] = {
  NSPAIR(_ZN7S3424C3C1Ev),
  NSPAIR(_ZN7S3424C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3424C3[];
extern void _ZN7S3424C3D1Ev();
extern void _ZN7S3424C3D0Ev();
extern void _ZN7S3424C32v8Ev();
extern void _ZN7S3424C32v9Ev();
extern void _ZN7S3424C33v10Ev();
extern void _ZN7S3424C33v11Ev();
extern void _ZN7S3424C33v12Ev();
extern void _ZN7S3424C33v13Ev();
extern void _ZN7S3424C33v14Ev();
extern void _ZN7S3424C33v15Ev();
extern void _ZN7S3424C33v16Ev();
extern void _ZN7S3424C33v17Ev();
extern void _ZN7S3424C33v18Ev();
extern void _ZN7S3424C33v19Ev();
extern void _ZN7S3424C33v20Ev();
extern void _ZN7S3424C33v21Ev();
extern void _ZN7S3424C33v22Ev();
extern void _ZN7S3424C33v23Ev();
extern void _ZN7S3424C33v24Ev();
extern void _ZN7S3424C33v25Ev();
extern void _ZN7S3424C33v26Ev();
extern void _ZN7S3424C33v27Ev();
extern void _ZN7S3424C33v28Ev();
extern void _ZN7S3424C33v29Ev();
extern void _ZN7S3424C33v30Ev();
extern void _ZN7S3424C33v31Ev();
extern void _ZN7S3424C33v32Ev();
extern void _ZN7S3424C33v33Ev();
extern void _ZN7S3424C33v34Ev();
extern void _ZN7S3424C33v35Ev();
extern void _ZN7S3424C33v36Ev();
extern void _ZN7S3424C33v37Ev();
extern void _ZN7S3424C33v38Ev();
extern void _ZN7S3424C33v39Ev();
extern void _ZN7S3424C33v40Ev();
extern void _ZN7S3424C33v41Ev();
extern void _ZN7S3424C33v42Ev();
extern void _ZN7S3424C33v43Ev();
extern void _ZN7S3424C33v44Ev();
extern void _ZN7S3424C33v45Ev();
extern void _ZN7S3424C33v46Ev();
extern void _ZN7S3424C33v47Ev();
extern void _ZN7S3424C33v48Ev();
extern void _ZN7S3424C33v49Ev();
extern void _ZN7S3424C33v50Ev();
extern void _ZN7S3424C33v51Ev();
extern void _ZN7S3424C33v52Ev();
extern void _ZN7S3424C33v53Ev();
extern void _ZN7S3424C33v54Ev();
extern void _ZN7S3424C33v55Ev();
extern void _ZN7S3424C33v56Ev();
extern void _ZN7S3424C33v57Ev();
extern void _ZN7S3424C33v58Ev();
extern void _ZN7S3424C33v59Ev();
extern void _ZN7S3424C33v60Ev();
extern void _ZN7S3424C33v61Ev();
extern void _ZN7S3424C33v62Ev();
extern void _ZN7S3424C33v63Ev();
extern void _ZN7S3424C33v64Ev();
extern void _ZN7S3424C33v65Ev();
extern void _ZN7S3424C33v66Ev();
extern void _ZN7S3424C33v67Ev();
extern void _ZN7S3424C33v68Ev();
extern void _ZN7S3424C33v69Ev();
extern void _ZN7S3424C33v70Ev();
extern void _ZN7S3424C33v71Ev();
static  VTBL_ENTRY vtc_S3424C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3424C3[0]),
  (VTBL_ENTRY)&_ZN7S3424C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3424C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3424C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3424C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v71Ev,
};
extern VTBL_ENTRY _ZTI7S3424C3[];
extern  VTBL_ENTRY _ZTV7S3424C3[];
Class_Descriptor cd_S3424C3 = {  "S3424C3", // class name
  0,0,//no base classes
  &(vtc_S3424C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3424C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3424C3),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  S3424C2  : S3424C3 {
  void *s3424c2f0;
  ::S28C31_nt s3424c2f1;
  int s3424c2f2;
  void *s3424c2f3;
  unsigned int s3424c2f4:1;
  ::S28C31_nt s3424c2f5;
  virtual  ~S3424C2(); // _ZN7S3424C2D1Ev
  virtual void  v72(); // _ZN7S3424C23v72Ev
  virtual void  v73(); // _ZN7S3424C23v73Ev
  virtual void  v74(); // _ZN7S3424C23v74Ev
  virtual void  v75(); // _ZN7S3424C23v75Ev
  virtual void  v76(); // _ZN7S3424C23v76Ev
  virtual void  v77(); // _ZN7S3424C23v77Ev
  virtual void  v78(); // _ZN7S3424C23v78Ev
  virtual void  v79(); // _ZN7S3424C23v79Ev
  S3424C2(); // tgen
};
//SIG(-1 S3424C2) C1{ BC2{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 Fp FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC4}


 S3424C2 ::~S3424C2(){ note_dtor("S3424C2", this);}
void  S3424C2 ::v72(){vfunc_called(this, "_ZN7S3424C23v72Ev");}
void  S3424C2 ::v73(){vfunc_called(this, "_ZN7S3424C23v73Ev");}
void  S3424C2 ::v74(){vfunc_called(this, "_ZN7S3424C23v74Ev");}
void  S3424C2 ::v75(){vfunc_called(this, "_ZN7S3424C23v75Ev");}
void  S3424C2 ::v76(){vfunc_called(this, "_ZN7S3424C23v76Ev");}
void  S3424C2 ::v77(){vfunc_called(this, "_ZN7S3424C23v77Ev");}
void  S3424C2 ::v78(){vfunc_called(this, "_ZN7S3424C23v78Ev");}
void  S3424C2 ::v79(){vfunc_called(this, "_ZN7S3424C23v79Ev");}
S3424C2 ::S3424C2(){ note_ctor("S3424C2", this);} // tgen

static void Test_S3424C2()
{
  extern Class_Descriptor cd_S3424C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,26)];
    init_test(&cd_S3424C2, buf);
    S3424C2 *dp, &lv = *(dp=new (buf) S3424C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,100), "sizeof(S3424C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3424C2)");
    check_base_class_offset(lv, (S3424C3*), 0, "S3424C2");
    check_field_offset(lv, s3424c2f0, ABISELECT(96,60), "S3424C2.s3424c2f0");
    check_field_offset(lv, s3424c2f1, ABISELECT(104,64), "S3424C2.s3424c2f1");
    check_field_offset(lv, s3424c2f2, ABISELECT(120,76), "S3424C2.s3424c2f2");
    check_field_offset(lv, s3424c2f3, ABISELECT(128,80), "S3424C2.s3424c2f3");
    set_bf_and_test(lv, s3424c2f4, ABISELECT(136,84), 0, 1, 1, "S3424C2");
    check_field_offset(lv, s3424c2f5, ABISELECT(144,88), "S3424C2.s3424c2f5");
    test_class_info(&lv, &cd_S3424C2);
    dp->~S3424C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3424C2(Test_S3424C2, "S3424C2", ABISELECT(160,100));

#else // __cplusplus

extern void _ZN7S3424C2C1Ev();
extern void _ZN7S3424C2D1Ev();
Name_Map name_map_S3424C2[] = {
  NSPAIR(_ZN7S3424C2C1Ev),
  NSPAIR(_ZN7S3424C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3424C3;
extern VTBL_ENTRY _ZTI7S3424C3[];
extern  VTBL_ENTRY _ZTV7S3424C3[];
static Base_Class bases_S3424C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3424C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3424C2[];
extern void _ZN7S3424C2D1Ev();
extern void _ZN7S3424C2D0Ev();
extern void _ZN7S3424C32v8Ev();
extern void _ZN7S3424C32v9Ev();
extern void _ZN7S3424C33v10Ev();
extern void _ZN7S3424C33v11Ev();
extern void _ZN7S3424C33v12Ev();
extern void _ZN7S3424C33v13Ev();
extern void _ZN7S3424C33v14Ev();
extern void _ZN7S3424C33v15Ev();
extern void _ZN7S3424C33v16Ev();
extern void _ZN7S3424C33v17Ev();
extern void _ZN7S3424C33v18Ev();
extern void _ZN7S3424C33v19Ev();
extern void _ZN7S3424C33v20Ev();
extern void _ZN7S3424C33v21Ev();
extern void _ZN7S3424C33v22Ev();
extern void _ZN7S3424C33v23Ev();
extern void _ZN7S3424C33v24Ev();
extern void _ZN7S3424C33v25Ev();
extern void _ZN7S3424C33v26Ev();
extern void _ZN7S3424C33v27Ev();
extern void _ZN7S3424C33v28Ev();
extern void _ZN7S3424C33v29Ev();
extern void _ZN7S3424C33v30Ev();
extern void _ZN7S3424C33v31Ev();
extern void _ZN7S3424C33v32Ev();
extern void _ZN7S3424C33v33Ev();
extern void _ZN7S3424C33v34Ev();
extern void _ZN7S3424C33v35Ev();
extern void _ZN7S3424C33v36Ev();
extern void _ZN7S3424C33v37Ev();
extern void _ZN7S3424C33v38Ev();
extern void _ZN7S3424C33v39Ev();
extern void _ZN7S3424C33v40Ev();
extern void _ZN7S3424C33v41Ev();
extern void _ZN7S3424C33v42Ev();
extern void _ZN7S3424C33v43Ev();
extern void _ZN7S3424C33v44Ev();
extern void _ZN7S3424C33v45Ev();
extern void _ZN7S3424C33v46Ev();
extern void _ZN7S3424C33v47Ev();
extern void _ZN7S3424C33v48Ev();
extern void _ZN7S3424C33v49Ev();
extern void _ZN7S3424C33v50Ev();
extern void _ZN7S3424C33v51Ev();
extern void _ZN7S3424C33v52Ev();
extern void _ZN7S3424C33v53Ev();
extern void _ZN7S3424C33v54Ev();
extern void _ZN7S3424C33v55Ev();
extern void _ZN7S3424C33v56Ev();
extern void _ZN7S3424C33v57Ev();
extern void _ZN7S3424C33v58Ev();
extern void _ZN7S3424C33v59Ev();
extern void _ZN7S3424C33v60Ev();
extern void _ZN7S3424C33v61Ev();
extern void _ZN7S3424C33v62Ev();
extern void _ZN7S3424C33v63Ev();
extern void _ZN7S3424C33v64Ev();
extern void _ZN7S3424C33v65Ev();
extern void _ZN7S3424C33v66Ev();
extern void _ZN7S3424C33v67Ev();
extern void _ZN7S3424C33v68Ev();
extern void _ZN7S3424C33v69Ev();
extern void _ZN7S3424C33v70Ev();
extern void _ZN7S3424C33v71Ev();
extern void _ZN7S3424C23v72Ev();
extern void _ZN7S3424C23v73Ev();
extern void _ZN7S3424C23v74Ev();
extern void _ZN7S3424C23v75Ev();
extern void _ZN7S3424C23v76Ev();
extern void _ZN7S3424C23v77Ev();
extern void _ZN7S3424C23v78Ev();
extern void _ZN7S3424C23v79Ev();
static  VTBL_ENTRY vtc_S3424C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3424C2[0]),
  (VTBL_ENTRY)&_ZN7S3424C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3424C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3424C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3424C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3424C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3424C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3424C23v74Ev,
  (VTBL_ENTRY)&_ZN7S3424C23v75Ev,
  (VTBL_ENTRY)&_ZN7S3424C23v76Ev,
  (VTBL_ENTRY)&_ZN7S3424C23v77Ev,
  (VTBL_ENTRY)&_ZN7S3424C23v78Ev,
  (VTBL_ENTRY)&_ZN7S3424C23v79Ev,
};
extern VTBL_ENTRY _ZTI7S3424C2[];
extern  VTBL_ENTRY _ZTV7S3424C2[];
Class_Descriptor cd_S3424C2 = {  "S3424C2", // class name
  bases_S3424C2, 1,
  &(vtc_S3424C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,100), // object size
  NSPAIRA(_ZTI7S3424C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3424C2),76, //virtual function table var
  2, // 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  S3424C1  : S3424C2 {
  void *s3424c1f0[2];
  unsigned int s3424c1f1:1;
  unsigned int s3424c1f2:1;
  unsigned int s3424c1f3:1;
  unsigned int s3424c1f4:1;
  unsigned int s3424c1f5:1;
  ::S48C18 s3424c1f6;
  ::S48C18 s3424c1f7;
  virtual  ~S3424C1(); // _ZN7S3424C1D1Ev
  virtual void  v1(); // _ZN7S3424C12v1Ev
  virtual void  v2(); // _ZN7S3424C12v2Ev
  virtual void  v3(); // _ZN7S3424C12v3Ev
  virtual void  v4(); // _ZN7S3424C12v4Ev
  virtual void  v5(); // _ZN7S3424C12v5Ev
  virtual void  v6(); // _ZN7S3424C12v6Ev
  virtual void  v7(); // _ZN7S3424C12v7Ev
  S3424C1(); // tgen
};
//SIG(1 S3424C1) C1{ BC2{ BC3{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v72 v73 v74 v75 v76 v77 v78 v79 Fp FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC5} vd v1 v2 v3 v4 v5 v6 v7 Fp[2] Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC9{ m Fi[3]} FC9}


 S3424C1 ::~S3424C1(){ note_dtor("S3424C1", this);}
void  S3424C1 ::v1(){vfunc_called(this, "_ZN7S3424C12v1Ev");}
void  S3424C1 ::v2(){vfunc_called(this, "_ZN7S3424C12v2Ev");}
void  S3424C1 ::v3(){vfunc_called(this, "_ZN7S3424C12v3Ev");}
void  S3424C1 ::v4(){vfunc_called(this, "_ZN7S3424C12v4Ev");}
void  S3424C1 ::v5(){vfunc_called(this, "_ZN7S3424C12v5Ev");}
void  S3424C1 ::v6(){vfunc_called(this, "_ZN7S3424C12v6Ev");}
void  S3424C1 ::v7(){vfunc_called(this, "_ZN7S3424C12v7Ev");}
S3424C1 ::S3424C1(){ note_ctor("S3424C1", this);} // tgen

static void Test_S3424C1()
{
  extern Class_Descriptor cd_S3424C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,35)];
    init_test(&cd_S3424C1, buf);
    S3424C1 *dp, &lv = *(dp=new (buf) S3424C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,136), "sizeof(S3424C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3424C1)");
    check_base_class_offset(lv, (S3424C3*)(S3424C2*), 0, "S3424C1");
    check_base_class_offset(lv, (S3424C2*), 0, "S3424C1");
    check_field_offset(lv, s3424c1f0, ABISELECT(160,100), "S3424C1.s3424c1f0");
    set_bf_and_test(lv, s3424c1f1, ABISELECT(176,108), 0, 1, 1, "S3424C1");
    set_bf_and_test(lv, s3424c1f2, ABISELECT(176,108), 1, 1, 1, "S3424C1");
    set_bf_and_test(lv, s3424c1f3, ABISELECT(176,108), 2, 1, 1, "S3424C1");
    set_bf_and_test(lv, s3424c1f4, ABISELECT(176,108), 3, 1, 1, "S3424C1");
    set_bf_and_test(lv, s3424c1f5, ABISELECT(176,108), 4, 1, 1, "S3424C1");
    check_field_offset(lv, s3424c1f6, ABISELECT(180,112), "S3424C1.s3424c1f6");
    check_field_offset(lv, s3424c1f7, ABISELECT(192,124), "S3424C1.s3424c1f7");
    test_class_info(&lv, &cd_S3424C1);
    dp->~S3424C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3424C1(Test_S3424C1, "S3424C1", ABISELECT(208,136));

#else // __cplusplus

extern void _ZN7S3424C1C1Ev();
extern void _ZN7S3424C1D1Ev();
Name_Map name_map_S3424C1[] = {
  NSPAIR(_ZN7S3424C1C1Ev),
  NSPAIR(_ZN7S3424C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3424C3;
extern VTBL_ENTRY _ZTI7S3424C3[];
extern  VTBL_ENTRY _ZTV7S3424C3[];
extern Class_Descriptor cd_S3424C2;
extern VTBL_ENTRY _ZTI7S3424C2[];
extern  VTBL_ENTRY _ZTV7S3424C2[];
static Base_Class bases_S3424C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3424C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3424C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3424C1[];
extern void _ZN7S3424C1D1Ev();
extern void _ZN7S3424C1D0Ev();
extern void _ZN7S3424C32v8Ev();
extern void _ZN7S3424C32v9Ev();
extern void _ZN7S3424C33v10Ev();
extern void _ZN7S3424C33v11Ev();
extern void _ZN7S3424C33v12Ev();
extern void _ZN7S3424C33v13Ev();
extern void _ZN7S3424C33v14Ev();
extern void _ZN7S3424C33v15Ev();
extern void _ZN7S3424C33v16Ev();
extern void _ZN7S3424C33v17Ev();
extern void _ZN7S3424C33v18Ev();
extern void _ZN7S3424C33v19Ev();
extern void _ZN7S3424C33v20Ev();
extern void _ZN7S3424C33v21Ev();
extern void _ZN7S3424C33v22Ev();
extern void _ZN7S3424C33v23Ev();
extern void _ZN7S3424C33v24Ev();
extern void _ZN7S3424C33v25Ev();
extern void _ZN7S3424C33v26Ev();
extern void _ZN7S3424C33v27Ev();
extern void _ZN7S3424C33v28Ev();
extern void _ZN7S3424C33v29Ev();
extern void _ZN7S3424C33v30Ev();
extern void _ZN7S3424C33v31Ev();
extern void _ZN7S3424C33v32Ev();
extern void _ZN7S3424C33v33Ev();
extern void _ZN7S3424C33v34Ev();
extern void _ZN7S3424C33v35Ev();
extern void _ZN7S3424C33v36Ev();
extern void _ZN7S3424C33v37Ev();
extern void _ZN7S3424C33v38Ev();
extern void _ZN7S3424C33v39Ev();
extern void _ZN7S3424C33v40Ev();
extern void _ZN7S3424C33v41Ev();
extern void _ZN7S3424C33v42Ev();
extern void _ZN7S3424C33v43Ev();
extern void _ZN7S3424C33v44Ev();
extern void _ZN7S3424C33v45Ev();
extern void _ZN7S3424C33v46Ev();
extern void _ZN7S3424C33v47Ev();
extern void _ZN7S3424C33v48Ev();
extern void _ZN7S3424C33v49Ev();
extern void _ZN7S3424C33v50Ev();
extern void _ZN7S3424C33v51Ev();
extern void _ZN7S3424C33v52Ev();
extern void _ZN7S3424C33v53Ev();
extern void _ZN7S3424C33v54Ev();
extern void _ZN7S3424C33v55Ev();
extern void _ZN7S3424C33v56Ev();
extern void _ZN7S3424C33v57Ev();
extern void _ZN7S3424C33v58Ev();
extern void _ZN7S3424C33v59Ev();
extern void _ZN7S3424C33v60Ev();
extern void _ZN7S3424C33v61Ev();
extern void _ZN7S3424C33v62Ev();
extern void _ZN7S3424C33v63Ev();
extern void _ZN7S3424C33v64Ev();
extern void _ZN7S3424C33v65Ev();
extern void _ZN7S3424C33v66Ev();
extern void _ZN7S3424C33v67Ev();
extern void _ZN7S3424C33v68Ev();
extern void _ZN7S3424C33v69Ev();
extern void _ZN7S3424C33v70Ev();
extern void _ZN7S3424C33v71Ev();
extern void _ZN7S3424C23v72Ev();
extern void _ZN7S3424C23v73Ev();
extern void _ZN7S3424C23v74Ev();
extern void _ZN7S3424C23v75Ev();
extern void _ZN7S3424C23v76Ev();
extern void _ZN7S3424C23v77Ev();
extern void _ZN7S3424C23v78Ev();
extern void _ZN7S3424C23v79Ev();
extern void _ZN7S3424C12v1Ev();
extern void _ZN7S3424C12v2Ev();
extern void _ZN7S3424C12v3Ev();
extern void _ZN7S3424C12v4Ev();
extern void _ZN7S3424C12v5Ev();
extern void _ZN7S3424C12v6Ev();
extern void _ZN7S3424C12v7Ev();
static  VTBL_ENTRY vtc_S3424C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3424C1[0]),
  (VTBL_ENTRY)&_ZN7S3424C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3424C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3424C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3424C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3424C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3424C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3424C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3424C23v74Ev,
  (VTBL_ENTRY)&_ZN7S3424C23v75Ev,
  (VTBL_ENTRY)&_ZN7S3424C23v76Ev,
  (VTBL_ENTRY)&_ZN7S3424C23v77Ev,
  (VTBL_ENTRY)&_ZN7S3424C23v78Ev,
  (VTBL_ENTRY)&_ZN7S3424C23v79Ev,
  (VTBL_ENTRY)&_ZN7S3424C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3424C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3424C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3424C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3424C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3424C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3424C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S3424C1[];
extern  VTBL_ENTRY _ZTV7S3424C1[];
Class_Descriptor cd_S3424C1 = {  "S3424C1", // class name
  bases_S3424C1, 2,
  &(vtc_S3424C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(208,136), // object size
  NSPAIRA(_ZTI7S3424C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3424C1),83, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1420C4  {
  int s1420c4f0;
  __tsi64 s1420c4f1;
  void *s1420c4f2[4];
  int s1420c4f3[2];
  void *s1420c4f4;
  ::S28C9_nt s1420c4f5;
  void *s1420c4f6[2];
  virtual  ~S1420C4(); // _ZN7S1420C4D1Ev
  virtual void  v4(); // _ZN7S1420C42v4Ev
  virtual void  v5(); // _ZN7S1420C42v5Ev
  virtual void  v6(); // _ZN7S1420C42v6Ev
  virtual void  v7(); // _ZN7S1420C42v7Ev
  virtual void  v8(); // _ZN7S1420C42v8Ev
  virtual void  v9(); // _ZN7S1420C42v9Ev
  virtual void  v10(); // _ZN7S1420C43v10Ev
  virtual void  v11(); // _ZN7S1420C43v11Ev
  virtual void  v12(); // _ZN7S1420C43v12Ev
  virtual void  v13(); // _ZN7S1420C43v13Ev
  virtual void  v14(); // _ZN7S1420C43v14Ev
  virtual void  v15(); // _ZN7S1420C43v15Ev
  virtual void  v16(); // _ZN7S1420C43v16Ev
  virtual void  v17(); // _ZN7S1420C43v17Ev
  virtual void  v18(); // _ZN7S1420C43v18Ev
  virtual void  v19(); // _ZN7S1420C43v19Ev
  virtual void  v20(); // _ZN7S1420C43v20Ev
  virtual void  v21(); // _ZN7S1420C43v21Ev
  virtual void  v22(); // _ZN7S1420C43v22Ev
  virtual void  v23(); // _ZN7S1420C43v23Ev
  virtual void  v24(); // _ZN7S1420C43v24Ev
  virtual void  v25(); // _ZN7S1420C43v25Ev
  virtual void  v26(); // _ZN7S1420C43v26Ev
  virtual void  v27(); // _ZN7S1420C43v27Ev
  virtual void  v28(); // _ZN7S1420C43v28Ev
  virtual void  v29(); // _ZN7S1420C43v29Ev
  virtual void  v30(); // _ZN7S1420C43v30Ev
  virtual void  v31(); // _ZN7S1420C43v31Ev
  virtual void  v32(); // _ZN7S1420C43v32Ev
  virtual void  v33(); // _ZN7S1420C43v33Ev
  virtual void  v34(); // _ZN7S1420C43v34Ev
  virtual void  v35(); // _ZN7S1420C43v35Ev
  virtual void  v36(); // _ZN7S1420C43v36Ev
  virtual void  v37(); // _ZN7S1420C43v37Ev
  virtual void  v38(); // _ZN7S1420C43v38Ev
  virtual void  v39(); // _ZN7S1420C43v39Ev
  virtual void  v40(); // _ZN7S1420C43v40Ev
  virtual void  v41(); // _ZN7S1420C43v41Ev
  virtual void  v42(); // _ZN7S1420C43v42Ev
  virtual void  v43(); // _ZN7S1420C43v43Ev
  virtual void  v44(); // _ZN7S1420C43v44Ev
  virtual void  v45(); // _ZN7S1420C43v45Ev
  virtual void  v46(); // _ZN7S1420C43v46Ev
  virtual void  v47(); // _ZN7S1420C43v47Ev
  virtual void  v48(); // _ZN7S1420C43v48Ev
  virtual void  v49(); // _ZN7S1420C43v49Ev
  virtual void  v50(); // _ZN7S1420C43v50Ev
  virtual void  v51(); // _ZN7S1420C43v51Ev
  virtual void  v52(); // _ZN7S1420C43v52Ev
  virtual void  v53(); // _ZN7S1420C43v53Ev
  virtual void  v54(); // _ZN7S1420C43v54Ev
  virtual void  v55(); // _ZN7S1420C43v55Ev
  virtual void  v56(); // _ZN7S1420C43v56Ev
  virtual void  v57(); // _ZN7S1420C43v57Ev
  virtual void  v58(); // _ZN7S1420C43v58Ev
  virtual void  v59(); // _ZN7S1420C43v59Ev
  virtual void  v60(); // _ZN7S1420C43v60Ev
  virtual void  v61(); // _ZN7S1420C43v61Ev
  virtual void  v62(); // _ZN7S1420C43v62Ev
  virtual void  v63(); // _ZN7S1420C43v63Ev
  virtual void  v64(); // _ZN7S1420C43v64Ev
  virtual void  v65(); // _ZN7S1420C43v65Ev
  virtual void  v66(); // _ZN7S1420C43v66Ev
  virtual void  v67(); // _ZN7S1420C43v67Ev
  S1420C4(); // tgen
};
//SIG(-1 S1420C4) 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]}


 S1420C4 ::~S1420C4(){ note_dtor("S1420C4", this);}
void  S1420C4 ::v4(){vfunc_called(this, "_ZN7S1420C42v4Ev");}
void  S1420C4 ::v5(){vfunc_called(this, "_ZN7S1420C42v5Ev");}
void  S1420C4 ::v6(){vfunc_called(this, "_ZN7S1420C42v6Ev");}
void  S1420C4 ::v7(){vfunc_called(this, "_ZN7S1420C42v7Ev");}
void  S1420C4 ::v8(){vfunc_called(this, "_ZN7S1420C42v8Ev");}
void  S1420C4 ::v9(){vfunc_called(this, "_ZN7S1420C42v9Ev");}
void  S1420C4 ::v10(){vfunc_called(this, "_ZN7S1420C43v10Ev");}
void  S1420C4 ::v11(){vfunc_called(this, "_ZN7S1420C43v11Ev");}
void  S1420C4 ::v12(){vfunc_called(this, "_ZN7S1420C43v12Ev");}
void  S1420C4 ::v13(){vfunc_called(this, "_ZN7S1420C43v13Ev");}
void  S1420C4 ::v14(){vfunc_called(this, "_ZN7S1420C43v14Ev");}
void  S1420C4 ::v15(){vfunc_called(this, "_ZN7S1420C43v15Ev");}
void  S1420C4 ::v16(){vfunc_called(this, "_ZN7S1420C43v16Ev");}
void  S1420C4 ::v17(){vfunc_called(this, "_ZN7S1420C43v17Ev");}
void  S1420C4 ::v18(){vfunc_called(this, "_ZN7S1420C43v18Ev");}
void  S1420C4 ::v19(){vfunc_called(this, "_ZN7S1420C43v19Ev");}
void  S1420C4 ::v20(){vfunc_called(this, "_ZN7S1420C43v20Ev");}
void  S1420C4 ::v21(){vfunc_called(this, "_ZN7S1420C43v21Ev");}
void  S1420C4 ::v22(){vfunc_called(this, "_ZN7S1420C43v22Ev");}
void  S1420C4 ::v23(){vfunc_called(this, "_ZN7S1420C43v23Ev");}
void  S1420C4 ::v24(){vfunc_called(this, "_ZN7S1420C43v24Ev");}
void  S1420C4 ::v25(){vfunc_called(this, "_ZN7S1420C43v25Ev");}
void  S1420C4 ::v26(){vfunc_called(this, "_ZN7S1420C43v26Ev");}
void  S1420C4 ::v27(){vfunc_called(this, "_ZN7S1420C43v27Ev");}
void  S1420C4 ::v28(){vfunc_called(this, "_ZN7S1420C43v28Ev");}
void  S1420C4 ::v29(){vfunc_called(this, "_ZN7S1420C43v29Ev");}
void  S1420C4 ::v30(){vfunc_called(this, "_ZN7S1420C43v30Ev");}
void  S1420C4 ::v31(){vfunc_called(this, "_ZN7S1420C43v31Ev");}
void  S1420C4 ::v32(){vfunc_called(this, "_ZN7S1420C43v32Ev");}
void  S1420C4 ::v33(){vfunc_called(this, "_ZN7S1420C43v33Ev");}
void  S1420C4 ::v34(){vfunc_called(this, "_ZN7S1420C43v34Ev");}
void  S1420C4 ::v35(){vfunc_called(this, "_ZN7S1420C43v35Ev");}
void  S1420C4 ::v36(){vfunc_called(this, "_ZN7S1420C43v36Ev");}
void  S1420C4 ::v37(){vfunc_called(this, "_ZN7S1420C43v37Ev");}
void  S1420C4 ::v38(){vfunc_called(this, "_ZN7S1420C43v38Ev");}
void  S1420C4 ::v39(){vfunc_called(this, "_ZN7S1420C43v39Ev");}
void  S1420C4 ::v40(){vfunc_called(this, "_ZN7S1420C43v40Ev");}
void  S1420C4 ::v41(){vfunc_called(this, "_ZN7S1420C43v41Ev");}
void  S1420C4 ::v42(){vfunc_called(this, "_ZN7S1420C43v42Ev");}
void  S1420C4 ::v43(){vfunc_called(this, "_ZN7S1420C43v43Ev");}
void  S1420C4 ::v44(){vfunc_called(this, "_ZN7S1420C43v44Ev");}
void  S1420C4 ::v45(){vfunc_called(this, "_ZN7S1420C43v45Ev");}
void  S1420C4 ::v46(){vfunc_called(this, "_ZN7S1420C43v46Ev");}
void  S1420C4 ::v47(){vfunc_called(this, "_ZN7S1420C43v47Ev");}
void  S1420C4 ::v48(){vfunc_called(this, "_ZN7S1420C43v48Ev");}
void  S1420C4 ::v49(){vfunc_called(this, "_ZN7S1420C43v49Ev");}
void  S1420C4 ::v50(){vfunc_called(this, "_ZN7S1420C43v50Ev");}
void  S1420C4 ::v51(){vfunc_called(this, "_ZN7S1420C43v51Ev");}
void  S1420C4 ::v52(){vfunc_called(this, "_ZN7S1420C43v52Ev");}
void  S1420C4 ::v53(){vfunc_called(this, "_ZN7S1420C43v53Ev");}
void  S1420C4 ::v54(){vfunc_called(this, "_ZN7S1420C43v54Ev");}
void  S1420C4 ::v55(){vfunc_called(this, "_ZN7S1420C43v55Ev");}
void  S1420C4 ::v56(){vfunc_called(this, "_ZN7S1420C43v56Ev");}
void  S1420C4 ::v57(){vfunc_called(this, "_ZN7S1420C43v57Ev");}
void  S1420C4 ::v58(){vfunc_called(this, "_ZN7S1420C43v58Ev");}
void  S1420C4 ::v59(){vfunc_called(this, "_ZN7S1420C43v59Ev");}
void  S1420C4 ::v60(){vfunc_called(this, "_ZN7S1420C43v60Ev");}
void  S1420C4 ::v61(){vfunc_called(this, "_ZN7S1420C43v61Ev");}
void  S1420C4 ::v62(){vfunc_called(this, "_ZN7S1420C43v62Ev");}
void  S1420C4 ::v63(){vfunc_called(this, "_ZN7S1420C43v63Ev");}
void  S1420C4 ::v64(){vfunc_called(this, "_ZN7S1420C43v64Ev");}
void  S1420C4 ::v65(){vfunc_called(this, "_ZN7S1420C43v65Ev");}
void  S1420C4 ::v66(){vfunc_called(this, "_ZN7S1420C43v66Ev");}
void  S1420C4 ::v67(){vfunc_called(this, "_ZN7S1420C43v67Ev");}
S1420C4 ::S1420C4(){ note_ctor("S1420C4", this);} // tgen

static void Test_S1420C4()
{
  extern Class_Descriptor cd_S1420C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1420C4, buf);
    S1420C4 *dp, &lv = *(dp=new (buf) S1420C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1420C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1420C4)");
    check_field_offset(lv, s1420c4f0, ABISELECT(8,4), "S1420C4.s1420c4f0");
    check_field_offset(lv, s1420c4f1, ABISELECT(16,8), "S1420C4.s1420c4f1");
    check_field_offset(lv, s1420c4f2, ABISELECT(24,16), "S1420C4.s1420c4f2");
    check_field_offset(lv, s1420c4f3, ABISELECT(56,32), "S1420C4.s1420c4f3");
    check_field_offset(lv, s1420c4f4, ABISELECT(64,40), "S1420C4.s1420c4f4");
    check_field_offset(lv, s1420c4f5, ABISELECT(72,44), "S1420C4.s1420c4f5");
    check_field_offset(lv, s1420c4f6, ABISELECT(80,52), "S1420C4.s1420c4f6");
    test_class_info(&lv, &cd_S1420C4);
    dp->~S1420C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1420C4(Test_S1420C4, "S1420C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1420C4C1Ev();
extern void _ZN7S1420C4D1Ev();
Name_Map name_map_S1420C4[] = {
  NSPAIR(_ZN7S1420C4C1Ev),
  NSPAIR(_ZN7S1420C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1420C4[];
extern void _ZN7S1420C4D1Ev();
extern void _ZN7S1420C4D0Ev();
extern void _ZN7S1420C42v4Ev();
extern void _ZN7S1420C42v5Ev();
extern void _ZN7S1420C42v6Ev();
extern void _ZN7S1420C42v7Ev();
extern void _ZN7S1420C42v8Ev();
extern void _ZN7S1420C42v9Ev();
extern void _ZN7S1420C43v10Ev();
extern void _ZN7S1420C43v11Ev();
extern void _ZN7S1420C43v12Ev();
extern void _ZN7S1420C43v13Ev();
extern void _ZN7S1420C43v14Ev();
extern void _ZN7S1420C43v15Ev();
extern void _ZN7S1420C43v16Ev();
extern void _ZN7S1420C43v17Ev();
extern void _ZN7S1420C43v18Ev();
extern void _ZN7S1420C43v19Ev();
extern void _ZN7S1420C43v20Ev();
extern void _ZN7S1420C43v21Ev();
extern void _ZN7S1420C43v22Ev();
extern void _ZN7S1420C43v23Ev();
extern void _ZN7S1420C43v24Ev();
extern void _ZN7S1420C43v25Ev();
extern void _ZN7S1420C43v26Ev();
extern void _ZN7S1420C43v27Ev();
extern void _ZN7S1420C43v28Ev();
extern void _ZN7S1420C43v29Ev();
extern void _ZN7S1420C43v30Ev();
extern void _ZN7S1420C43v31Ev();
extern void _ZN7S1420C43v32Ev();
extern void _ZN7S1420C43v33Ev();
extern void _ZN7S1420C43v34Ev();
extern void _ZN7S1420C43v35Ev();
extern void _ZN7S1420C43v36Ev();
extern void _ZN7S1420C43v37Ev();
extern void _ZN7S1420C43v38Ev();
extern void _ZN7S1420C43v39Ev();
extern void _ZN7S1420C43v40Ev();
extern void _ZN7S1420C43v41Ev();
extern void _ZN7S1420C43v42Ev();
extern void _ZN7S1420C43v43Ev();
extern void _ZN7S1420C43v44Ev();
extern void _ZN7S1420C43v45Ev();
extern void _ZN7S1420C43v46Ev();
extern void _ZN7S1420C43v47Ev();
extern void _ZN7S1420C43v48Ev();
extern void _ZN7S1420C43v49Ev();
extern void _ZN7S1420C43v50Ev();
extern void _ZN7S1420C43v51Ev();
extern void _ZN7S1420C43v52Ev();
extern void _ZN7S1420C43v53Ev();
extern void _ZN7S1420C43v54Ev();
extern void _ZN7S1420C43v55Ev();
extern void _ZN7S1420C43v56Ev();
extern void _ZN7S1420C43v57Ev();
extern void _ZN7S1420C43v58Ev();
extern void _ZN7S1420C43v59Ev();
extern void _ZN7S1420C43v60Ev();
extern void _ZN7S1420C43v61Ev();
extern void _ZN7S1420C43v62Ev();
extern void _ZN7S1420C43v63Ev();
extern void _ZN7S1420C43v64Ev();
extern void _ZN7S1420C43v65Ev();
extern void _ZN7S1420C43v66Ev();
extern void _ZN7S1420C43v67Ev();
static  VTBL_ENTRY vtc_S1420C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1420C4[0]),
  (VTBL_ENTRY)&_ZN7S1420C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1420C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1420C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1420C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1420C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1420C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1420C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1420C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v67Ev,
};
extern VTBL_ENTRY _ZTI7S1420C4[];
extern  VTBL_ENTRY _ZTV7S1420C4[];
Class_Descriptor cd_S1420C4 = {  "S1420C4", // class name
  0,0,//no base classes
  &(vtc_S1420C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1420C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1420C4),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  S1420C3  : S1420C4 {
  void *s1420c3f0;
  ::S28C31_nt s1420c3f1;
  int s1420c3f2;
  void *s1420c3f3;
  unsigned int s1420c3f4:1;
  ::S28C31_nt s1420c3f5;
  virtual  ~S1420C3(); // _ZN7S1420C3D1Ev
  virtual void  v68(); // _ZN7S1420C33v68Ev
  virtual void  v69(); // _ZN7S1420C33v69Ev
  virtual void  v70(); // _ZN7S1420C33v70Ev
  virtual void  v71(); // _ZN7S1420C33v71Ev
  virtual void  v72(); // _ZN7S1420C33v72Ev
  virtual void  v73(); // _ZN7S1420C33v73Ev
  virtual void  v74(); // _ZN7S1420C33v74Ev
  virtual void  v75(); // _ZN7S1420C33v75Ev
  S1420C3(); // tgen
};
//SIG(-1 S1420C3) C1{ BC2{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 Fp FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC4}


 S1420C3 ::~S1420C3(){ note_dtor("S1420C3", this);}
void  S1420C3 ::v68(){vfunc_called(this, "_ZN7S1420C33v68Ev");}
void  S1420C3 ::v69(){vfunc_called(this, "_ZN7S1420C33v69Ev");}
void  S1420C3 ::v70(){vfunc_called(this, "_ZN7S1420C33v70Ev");}
void  S1420C3 ::v71(){vfunc_called(this, "_ZN7S1420C33v71Ev");}
void  S1420C3 ::v72(){vfunc_called(this, "_ZN7S1420C33v72Ev");}
void  S1420C3 ::v73(){vfunc_called(this, "_ZN7S1420C33v73Ev");}
void  S1420C3 ::v74(){vfunc_called(this, "_ZN7S1420C33v74Ev");}
void  S1420C3 ::v75(){vfunc_called(this, "_ZN7S1420C33v75Ev");}
S1420C3 ::S1420C3(){ note_ctor("S1420C3", this);} // tgen

static void Test_S1420C3()
{
  extern Class_Descriptor cd_S1420C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,26)];
    init_test(&cd_S1420C3, buf);
    S1420C3 *dp, &lv = *(dp=new (buf) S1420C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,100), "sizeof(S1420C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1420C3)");
    check_base_class_offset(lv, (S1420C4*), 0, "S1420C3");
    check_field_offset(lv, s1420c3f0, ABISELECT(96,60), "S1420C3.s1420c3f0");
    check_field_offset(lv, s1420c3f1, ABISELECT(104,64), "S1420C3.s1420c3f1");
    check_field_offset(lv, s1420c3f2, ABISELECT(120,76), "S1420C3.s1420c3f2");
    check_field_offset(lv, s1420c3f3, ABISELECT(128,80), "S1420C3.s1420c3f3");
    set_bf_and_test(lv, s1420c3f4, ABISELECT(136,84), 0, 1, 1, "S1420C3");
    check_field_offset(lv, s1420c3f5, ABISELECT(144,88), "S1420C3.s1420c3f5");
    test_class_info(&lv, &cd_S1420C3);
    dp->~S1420C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1420C3(Test_S1420C3, "S1420C3", ABISELECT(160,100));

#else // __cplusplus

extern void _ZN7S1420C3C1Ev();
extern void _ZN7S1420C3D1Ev();
Name_Map name_map_S1420C3[] = {
  NSPAIR(_ZN7S1420C3C1Ev),
  NSPAIR(_ZN7S1420C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1420C4;
extern VTBL_ENTRY _ZTI7S1420C4[];
extern  VTBL_ENTRY _ZTV7S1420C4[];
static Base_Class bases_S1420C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1420C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1420C3[];
extern void _ZN7S1420C3D1Ev();
extern void _ZN7S1420C3D0Ev();
extern void _ZN7S1420C42v4Ev();
extern void _ZN7S1420C42v5Ev();
extern void _ZN7S1420C42v6Ev();
extern void _ZN7S1420C42v7Ev();
extern void _ZN7S1420C42v8Ev();
extern void _ZN7S1420C42v9Ev();
extern void _ZN7S1420C43v10Ev();
extern void _ZN7S1420C43v11Ev();
extern void _ZN7S1420C43v12Ev();
extern void _ZN7S1420C43v13Ev();
extern void _ZN7S1420C43v14Ev();
extern void _ZN7S1420C43v15Ev();
extern void _ZN7S1420C43v16Ev();
extern void _ZN7S1420C43v17Ev();
extern void _ZN7S1420C43v18Ev();
extern void _ZN7S1420C43v19Ev();
extern void _ZN7S1420C43v20Ev();
extern void _ZN7S1420C43v21Ev();
extern void _ZN7S1420C43v22Ev();
extern void _ZN7S1420C43v23Ev();
extern void _ZN7S1420C43v24Ev();
extern void _ZN7S1420C43v25Ev();
extern void _ZN7S1420C43v26Ev();
extern void _ZN7S1420C43v27Ev();
extern void _ZN7S1420C43v28Ev();
extern void _ZN7S1420C43v29Ev();
extern void _ZN7S1420C43v30Ev();
extern void _ZN7S1420C43v31Ev();
extern void _ZN7S1420C43v32Ev();
extern void _ZN7S1420C43v33Ev();
extern void _ZN7S1420C43v34Ev();
extern void _ZN7S1420C43v35Ev();
extern void _ZN7S1420C43v36Ev();
extern void _ZN7S1420C43v37Ev();
extern void _ZN7S1420C43v38Ev();
extern void _ZN7S1420C43v39Ev();
extern void _ZN7S1420C43v40Ev();
extern void _ZN7S1420C43v41Ev();
extern void _ZN7S1420C43v42Ev();
extern void _ZN7S1420C43v43Ev();
extern void _ZN7S1420C43v44Ev();
extern void _ZN7S1420C43v45Ev();
extern void _ZN7S1420C43v46Ev();
extern void _ZN7S1420C43v47Ev();
extern void _ZN7S1420C43v48Ev();
extern void _ZN7S1420C43v49Ev();
extern void _ZN7S1420C43v50Ev();
extern void _ZN7S1420C43v51Ev();
extern void _ZN7S1420C43v52Ev();
extern void _ZN7S1420C43v53Ev();
extern void _ZN7S1420C43v54Ev();
extern void _ZN7S1420C43v55Ev();
extern void _ZN7S1420C43v56Ev();
extern void _ZN7S1420C43v57Ev();
extern void _ZN7S1420C43v58Ev();
extern void _ZN7S1420C43v59Ev();
extern void _ZN7S1420C43v60Ev();
extern void _ZN7S1420C43v61Ev();
extern void _ZN7S1420C43v62Ev();
extern void _ZN7S1420C43v63Ev();
extern void _ZN7S1420C43v64Ev();
extern void _ZN7S1420C43v65Ev();
extern void _ZN7S1420C43v66Ev();
extern void _ZN7S1420C43v67Ev();
extern void _ZN7S1420C33v68Ev();
extern void _ZN7S1420C33v69Ev();
extern void _ZN7S1420C33v70Ev();
extern void _ZN7S1420C33v71Ev();
extern void _ZN7S1420C33v72Ev();
extern void _ZN7S1420C33v73Ev();
extern void _ZN7S1420C33v74Ev();
extern void _ZN7S1420C33v75Ev();
static  VTBL_ENTRY vtc_S1420C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1420C3[0]),
  (VTBL_ENTRY)&_ZN7S1420C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1420C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1420C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1420C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1420C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1420C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1420C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1420C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1420C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1420C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1420C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1420C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1420C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1420C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1420C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1420C33v75Ev,
};
extern VTBL_ENTRY _ZTI7S1420C3[];
extern  VTBL_ENTRY _ZTV7S1420C3[];
Class_Descriptor cd_S1420C3 = {  "S1420C3", // class name
  bases_S1420C3, 1,
  &(vtc_S1420C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,100), // object size
  NSPAIRA(_ZTI7S1420C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1420C3),76, //virtual function table var
  2, // 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  S1420C2  : S1420C3 {
  void *s1420c2f0;
  virtual  ~S1420C2(); // _ZN7S1420C2D1Ev
  virtual void  v76(); // _ZN7S1420C23v76Ev
  virtual void  v77(); // _ZN7S1420C23v77Ev
  virtual void  v78(); // _ZN7S1420C23v78Ev
  virtual void  v79(); // _ZN7S1420C23v79Ev
  S1420C2(); // tgen
};
//SIG(-1 S1420C2) 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 v74 v75 v76 Fp FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC5} vd v1 v2 v3 v4 Fp}


 S1420C2 ::~S1420C2(){ note_dtor("S1420C2", this);}
void  S1420C2 ::v76(){vfunc_called(this, "_ZN7S1420C23v76Ev");}
void  S1420C2 ::v77(){vfunc_called(this, "_ZN7S1420C23v77Ev");}
void  S1420C2 ::v78(){vfunc_called(this, "_ZN7S1420C23v78Ev");}
void  S1420C2 ::v79(){vfunc_called(this, "_ZN7S1420C23v79Ev");}
S1420C2 ::S1420C2(){ note_ctor("S1420C2", this);} // tgen

static void Test_S1420C2()
{
  extern Class_Descriptor cd_S1420C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,27)];
    init_test(&cd_S1420C2, buf);
    S1420C2 *dp, &lv = *(dp=new (buf) S1420C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,104), "sizeof(S1420C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1420C2)");
    check_base_class_offset(lv, (S1420C4*)(S1420C3*), 0, "S1420C2");
    check_base_class_offset(lv, (S1420C3*), 0, "S1420C2");
    check_field_offset(lv, s1420c2f0, ABISELECT(160,100), "S1420C2.s1420c2f0");
    test_class_info(&lv, &cd_S1420C2);
    dp->~S1420C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1420C2(Test_S1420C2, "S1420C2", ABISELECT(168,104));

#else // __cplusplus

extern void _ZN7S1420C2C1Ev();
extern void _ZN7S1420C2D1Ev();
Name_Map name_map_S1420C2[] = {
  NSPAIR(_ZN7S1420C2C1Ev),
  NSPAIR(_ZN7S1420C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1420C4;
extern VTBL_ENTRY _ZTI7S1420C4[];
extern  VTBL_ENTRY _ZTV7S1420C4[];
extern Class_Descriptor cd_S1420C3;
extern VTBL_ENTRY _ZTI7S1420C3[];
extern  VTBL_ENTRY _ZTV7S1420C3[];
static Base_Class bases_S1420C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1420C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1420C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1420C2[];
extern void _ZN7S1420C2D1Ev();
extern void _ZN7S1420C2D0Ev();
extern void _ZN7S1420C42v4Ev();
extern void _ZN7S1420C42v5Ev();
extern void _ZN7S1420C42v6Ev();
extern void _ZN7S1420C42v7Ev();
extern void _ZN7S1420C42v8Ev();
extern void _ZN7S1420C42v9Ev();
extern void _ZN7S1420C43v10Ev();
extern void _ZN7S1420C43v11Ev();
extern void _ZN7S1420C43v12Ev();
extern void _ZN7S1420C43v13Ev();
extern void _ZN7S1420C43v14Ev();
extern void _ZN7S1420C43v15Ev();
extern void _ZN7S1420C43v16Ev();
extern void _ZN7S1420C43v17Ev();
extern void _ZN7S1420C43v18Ev();
extern void _ZN7S1420C43v19Ev();
extern void _ZN7S1420C43v20Ev();
extern void _ZN7S1420C43v21Ev();
extern void _ZN7S1420C43v22Ev();
extern void _ZN7S1420C43v23Ev();
extern void _ZN7S1420C43v24Ev();
extern void _ZN7S1420C43v25Ev();
extern void _ZN7S1420C43v26Ev();
extern void _ZN7S1420C43v27Ev();
extern void _ZN7S1420C43v28Ev();
extern void _ZN7S1420C43v29Ev();
extern void _ZN7S1420C43v30Ev();
extern void _ZN7S1420C43v31Ev();
extern void _ZN7S1420C43v32Ev();
extern void _ZN7S1420C43v33Ev();
extern void _ZN7S1420C43v34Ev();
extern void _ZN7S1420C43v35Ev();
extern void _ZN7S1420C43v36Ev();
extern void _ZN7S1420C43v37Ev();
extern void _ZN7S1420C43v38Ev();
extern void _ZN7S1420C43v39Ev();
extern void _ZN7S1420C43v40Ev();
extern void _ZN7S1420C43v41Ev();
extern void _ZN7S1420C43v42Ev();
extern void _ZN7S1420C43v43Ev();
extern void _ZN7S1420C43v44Ev();
extern void _ZN7S1420C43v45Ev();
extern void _ZN7S1420C43v46Ev();
extern void _ZN7S1420C43v47Ev();
extern void _ZN7S1420C43v48Ev();
extern void _ZN7S1420C43v49Ev();
extern void _ZN7S1420C43v50Ev();
extern void _ZN7S1420C43v51Ev();
extern void _ZN7S1420C43v52Ev();
extern void _ZN7S1420C43v53Ev();
extern void _ZN7S1420C43v54Ev();
extern void _ZN7S1420C43v55Ev();
extern void _ZN7S1420C43v56Ev();
extern void _ZN7S1420C43v57Ev();
extern void _ZN7S1420C43v58Ev();
extern void _ZN7S1420C43v59Ev();
extern void _ZN7S1420C43v60Ev();
extern void _ZN7S1420C43v61Ev();
extern void _ZN7S1420C43v62Ev();
extern void _ZN7S1420C43v63Ev();
extern void _ZN7S1420C43v64Ev();
extern void _ZN7S1420C43v65Ev();
extern void _ZN7S1420C43v66Ev();
extern void _ZN7S1420C43v67Ev();
extern void _ZN7S1420C33v68Ev();
extern void _ZN7S1420C33v69Ev();
extern void _ZN7S1420C33v70Ev();
extern void _ZN7S1420C33v71Ev();
extern void _ZN7S1420C33v72Ev();
extern void _ZN7S1420C33v73Ev();
extern void _ZN7S1420C33v74Ev();
extern void _ZN7S1420C33v75Ev();
extern void _ZN7S1420C23v76Ev();
extern void _ZN7S1420C23v77Ev();
extern void _ZN7S1420C23v78Ev();
extern void _ZN7S1420C23v79Ev();
static  VTBL_ENTRY vtc_S1420C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1420C2[0]),
  (VTBL_ENTRY)&_ZN7S1420C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1420C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1420C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1420C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1420C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1420C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1420C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1420C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1420C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1420C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1420C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1420C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1420C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1420C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1420C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1420C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1420C23v76Ev,
  (VTBL_ENTRY)&_ZN7S1420C23v77Ev,
  (VTBL_ENTRY)&_ZN7S1420C23v78Ev,
  (VTBL_ENTRY)&_ZN7S1420C23v79Ev,
};
extern VTBL_ENTRY _ZTI7S1420C2[];
extern  VTBL_ENTRY _ZTV7S1420C2[];
Class_Descriptor cd_S1420C2 = {  "S1420C2", // class name
  bases_S1420C2, 2,
  &(vtc_S1420C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,104), // object size
  NSPAIRA(_ZTI7S1420C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1420C2),80, //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  S1420C1  : S1420C2 {
  unsigned int s1420c1f0:1;
  unsigned int s1420c1f1:1;
  unsigned int s1420c1f2:1;
  char s1420c1f3;
  virtual  ~S1420C1(); // _ZN7S1420C1D1Ev
  virtual void  v1(); // _ZN7S1420C12v1Ev
  virtual void  v2(); // _ZN7S1420C12v2Ev
  virtual void  v3(); // _ZN7S1420C12v3Ev
  S1420C1(); // tgen
};
//SIG(1 S1420C1) C1{ BC2{ BC3{ BC4{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v68 v69 v70 v71 v72 v73 v74 v75 Fp FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC6} vd v76 v77 v78 v79 Fp} vd v1 v2 v3 Fi:1 Fi:1 Fi:1 Fc}


 S1420C1 ::~S1420C1(){ note_dtor("S1420C1", this);}
void  S1420C1 ::v1(){vfunc_called(this, "_ZN7S1420C12v1Ev");}
void  S1420C1 ::v2(){vfunc_called(this, "_ZN7S1420C12v2Ev");}
void  S1420C1 ::v3(){vfunc_called(this, "_ZN7S1420C12v3Ev");}
S1420C1 ::S1420C1(){ note_ctor("S1420C1", this);} // tgen

static void Test_S1420C1()
{
  extern Class_Descriptor cd_S1420C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,28)];
    init_test(&cd_S1420C1, buf);
    S1420C1 *dp, &lv = *(dp=new (buf) S1420C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,108), "sizeof(S1420C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1420C1)");
    check_base_class_offset(lv, (S1420C4*)(S1420C3*)(S1420C2*), 0, "S1420C1");
    check_base_class_offset(lv, (S1420C3*)(S1420C2*), 0, "S1420C1");
    check_base_class_offset(lv, (S1420C2*), 0, "S1420C1");
    set_bf_and_test(lv, s1420c1f0, ABISELECT(168,104), 0, 1, 1, "S1420C1");
    set_bf_and_test(lv, s1420c1f1, ABISELECT(168,104), 1, 1, 1, "S1420C1");
    set_bf_and_test(lv, s1420c1f2, ABISELECT(168,104), 2, 1, 1, "S1420C1");
    check_field_offset(lv, s1420c1f3, ABISELECT(169,105), "S1420C1.s1420c1f3");
    test_class_info(&lv, &cd_S1420C1);
    dp->~S1420C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1420C1(Test_S1420C1, "S1420C1", ABISELECT(176,108));

#else // __cplusplus

extern void _ZN7S1420C1C1Ev();
extern void _ZN7S1420C1D1Ev();
Name_Map name_map_S1420C1[] = {
  NSPAIR(_ZN7S1420C1C1Ev),
  NSPAIR(_ZN7S1420C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1420C4;
extern VTBL_ENTRY _ZTI7S1420C4[];
extern  VTBL_ENTRY _ZTV7S1420C4[];
extern Class_Descriptor cd_S1420C3;
extern VTBL_ENTRY _ZTI7S1420C3[];
extern  VTBL_ENTRY _ZTV7S1420C3[];
extern Class_Descriptor cd_S1420C2;
extern VTBL_ENTRY _ZTI7S1420C2[];
extern  VTBL_ENTRY _ZTV7S1420C2[];
static Base_Class bases_S1420C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1420C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1420C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1420C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1420C1[];
extern void _ZN7S1420C1D1Ev();
extern void _ZN7S1420C1D0Ev();
extern void _ZN7S1420C42v4Ev();
extern void _ZN7S1420C42v5Ev();
extern void _ZN7S1420C42v6Ev();
extern void _ZN7S1420C42v7Ev();
extern void _ZN7S1420C42v8Ev();
extern void _ZN7S1420C42v9Ev();
extern void _ZN7S1420C43v10Ev();
extern void _ZN7S1420C43v11Ev();
extern void _ZN7S1420C43v12Ev();
extern void _ZN7S1420C43v13Ev();
extern void _ZN7S1420C43v14Ev();
extern void _ZN7S1420C43v15Ev();
extern void _ZN7S1420C43v16Ev();
extern void _ZN7S1420C43v17Ev();
extern void _ZN7S1420C43v18Ev();
extern void _ZN7S1420C43v19Ev();
extern void _ZN7S1420C43v20Ev();
extern void _ZN7S1420C43v21Ev();
extern void _ZN7S1420C43v22Ev();
extern void _ZN7S1420C43v23Ev();
extern void _ZN7S1420C43v24Ev();
extern void _ZN7S1420C43v25Ev();
extern void _ZN7S1420C43v26Ev();
extern void _ZN7S1420C43v27Ev();
extern void _ZN7S1420C43v28Ev();
extern void _ZN7S1420C43v29Ev();
extern void _ZN7S1420C43v30Ev();
extern void _ZN7S1420C43v31Ev();
extern void _ZN7S1420C43v32Ev();
extern void _ZN7S1420C43v33Ev();
extern void _ZN7S1420C43v34Ev();
extern void _ZN7S1420C43v35Ev();
extern void _ZN7S1420C43v36Ev();
extern void _ZN7S1420C43v37Ev();
extern void _ZN7S1420C43v38Ev();
extern void _ZN7S1420C43v39Ev();
extern void _ZN7S1420C43v40Ev();
extern void _ZN7S1420C43v41Ev();
extern void _ZN7S1420C43v42Ev();
extern void _ZN7S1420C43v43Ev();
extern void _ZN7S1420C43v44Ev();
extern void _ZN7S1420C43v45Ev();
extern void _ZN7S1420C43v46Ev();
extern void _ZN7S1420C43v47Ev();
extern void _ZN7S1420C43v48Ev();
extern void _ZN7S1420C43v49Ev();
extern void _ZN7S1420C43v50Ev();
extern void _ZN7S1420C43v51Ev();
extern void _ZN7S1420C43v52Ev();
extern void _ZN7S1420C43v53Ev();
extern void _ZN7S1420C43v54Ev();
extern void _ZN7S1420C43v55Ev();
extern void _ZN7S1420C43v56Ev();
extern void _ZN7S1420C43v57Ev();
extern void _ZN7S1420C43v58Ev();
extern void _ZN7S1420C43v59Ev();
extern void _ZN7S1420C43v60Ev();
extern void _ZN7S1420C43v61Ev();
extern void _ZN7S1420C43v62Ev();
extern void _ZN7S1420C43v63Ev();
extern void _ZN7S1420C43v64Ev();
extern void _ZN7S1420C43v65Ev();
extern void _ZN7S1420C43v66Ev();
extern void _ZN7S1420C43v67Ev();
extern void _ZN7S1420C33v68Ev();
extern void _ZN7S1420C33v69Ev();
extern void _ZN7S1420C33v70Ev();
extern void _ZN7S1420C33v71Ev();
extern void _ZN7S1420C33v72Ev();
extern void _ZN7S1420C33v73Ev();
extern void _ZN7S1420C33v74Ev();
extern void _ZN7S1420C33v75Ev();
extern void _ZN7S1420C23v76Ev();
extern void _ZN7S1420C23v77Ev();
extern void _ZN7S1420C23v78Ev();
extern void _ZN7S1420C23v79Ev();
extern void _ZN7S1420C12v1Ev();
extern void _ZN7S1420C12v2Ev();
extern void _ZN7S1420C12v3Ev();
static  VTBL_ENTRY vtc_S1420C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1420C1[0]),
  (VTBL_ENTRY)&_ZN7S1420C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1420C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1420C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1420C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1420C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1420C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1420C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1420C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1420C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1420C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1420C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1420C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1420C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1420C33v72Ev,
  (VTBL_ENTRY)&_ZN7S1420C33v73Ev,
  (VTBL_ENTRY)&_ZN7S1420C33v74Ev,
  (VTBL_ENTRY)&_ZN7S1420C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1420C23v76Ev,
  (VTBL_ENTRY)&_ZN7S1420C23v77Ev,
  (VTBL_ENTRY)&_ZN7S1420C23v78Ev,
  (VTBL_ENTRY)&_ZN7S1420C23v79Ev,
  (VTBL_ENTRY)&_ZN7S1420C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1420C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1420C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S1420C1[];
extern  VTBL_ENTRY _ZTV7S1420C1[];
Class_Descriptor cd_S1420C1 = {  "S1420C1", // class name
  bases_S1420C1, 3,
  &(vtc_S1420C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,108), // object size
  NSPAIRA(_ZTI7S1420C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1420C1),83, //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  S3396C3  {
  int s3396c3f0;
  __tsi64 s3396c3f1;
  void *s3396c3f2[4];
  int s3396c3f3[2];
  void *s3396c3f4;
  ::S28C9_nt s3396c3f5;
  void *s3396c3f6[2];
  virtual  ~S3396C3(); // _ZN7S3396C3D1Ev
  virtual void  v7(); // _ZN7S3396C32v7Ev
  virtual void  v8(); // _ZN7S3396C32v8Ev
  virtual void  v9(); // _ZN7S3396C32v9Ev
  virtual void  v10(); // _ZN7S3396C33v10Ev
  virtual void  v11(); // _ZN7S3396C33v11Ev
  virtual void  v12(); // _ZN7S3396C33v12Ev
  virtual void  v13(); // _ZN7S3396C33v13Ev
  virtual void  v14(); // _ZN7S3396C33v14Ev
  virtual void  v15(); // _ZN7S3396C33v15Ev
  virtual void  v16(); // _ZN7S3396C33v16Ev
  virtual void  v17(); // _ZN7S3396C33v17Ev
  virtual void  v18(); // _ZN7S3396C33v18Ev
  virtual void  v19(); // _ZN7S3396C33v19Ev
  virtual void  v20(); // _ZN7S3396C33v20Ev
  virtual void  v21(); // _ZN7S3396C33v21Ev
  virtual void  v22(); // _ZN7S3396C33v22Ev
  virtual void  v23(); // _ZN7S3396C33v23Ev
  virtual void  v24(); // _ZN7S3396C33v24Ev
  virtual void  v25(); // _ZN7S3396C33v25Ev
  virtual void  v26(); // _ZN7S3396C33v26Ev
  virtual void  v27(); // _ZN7S3396C33v27Ev
  virtual void  v28(); // _ZN7S3396C33v28Ev
  virtual void  v29(); // _ZN7S3396C33v29Ev
  virtual void  v30(); // _ZN7S3396C33v30Ev
  virtual void  v31(); // _ZN7S3396C33v31Ev
  virtual void  v32(); // _ZN7S3396C33v32Ev
  virtual void  v33(); // _ZN7S3396C33v33Ev
  virtual void  v34(); // _ZN7S3396C33v34Ev
  virtual void  v35(); // _ZN7S3396C33v35Ev
  virtual void  v36(); // _ZN7S3396C33v36Ev
  virtual void  v37(); // _ZN7S3396C33v37Ev
  virtual void  v38(); // _ZN7S3396C33v38Ev
  virtual void  v39(); // _ZN7S3396C33v39Ev
  virtual void  v40(); // _ZN7S3396C33v40Ev
  virtual void  v41(); // _ZN7S3396C33v41Ev
  virtual void  v42(); // _ZN7S3396C33v42Ev
  virtual void  v43(); // _ZN7S3396C33v43Ev
  virtual void  v44(); // _ZN7S3396C33v44Ev
  virtual void  v45(); // _ZN7S3396C33v45Ev
  virtual void  v46(); // _ZN7S3396C33v46Ev
  virtual void  v47(); // _ZN7S3396C33v47Ev
  virtual void  v48(); // _ZN7S3396C33v48Ev
  virtual void  v49(); // _ZN7S3396C33v49Ev
  virtual void  v50(); // _ZN7S3396C33v50Ev
  virtual void  v51(); // _ZN7S3396C33v51Ev
  virtual void  v52(); // _ZN7S3396C33v52Ev
  virtual void  v53(); // _ZN7S3396C33v53Ev
  virtual void  v54(); // _ZN7S3396C33v54Ev
  virtual void  v55(); // _ZN7S3396C33v55Ev
  virtual void  v56(); // _ZN7S3396C33v56Ev
  virtual void  v57(); // _ZN7S3396C33v57Ev
  virtual void  v58(); // _ZN7S3396C33v58Ev
  virtual void  v59(); // _ZN7S3396C33v59Ev
  virtual void  v60(); // _ZN7S3396C33v60Ev
  virtual void  v61(); // _ZN7S3396C33v61Ev
  virtual void  v62(); // _ZN7S3396C33v62Ev
  virtual void  v63(); // _ZN7S3396C33v63Ev
  virtual void  v64(); // _ZN7S3396C33v64Ev
  virtual void  v65(); // _ZN7S3396C33v65Ev
  virtual void  v66(); // _ZN7S3396C33v66Ev
  virtual void  v67(); // _ZN7S3396C33v67Ev
  virtual void  v68(); // _ZN7S3396C33v68Ev
  virtual void  v69(); // _ZN7S3396C33v69Ev
  virtual void  v70(); // _ZN7S3396C33v70Ev
  S3396C3(); // tgen
};
//SIG(-1 S3396C3) 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]}


 S3396C3 ::~S3396C3(){ note_dtor("S3396C3", this);}
void  S3396C3 ::v7(){vfunc_called(this, "_ZN7S3396C32v7Ev");}
void  S3396C3 ::v8(){vfunc_called(this, "_ZN7S3396C32v8Ev");}
void  S3396C3 ::v9(){vfunc_called(this, "_ZN7S3396C32v9Ev");}
void  S3396C3 ::v10(){vfunc_called(this, "_ZN7S3396C33v10Ev");}
void  S3396C3 ::v11(){vfunc_called(this, "_ZN7S3396C33v11Ev");}
void  S3396C3 ::v12(){vfunc_called(this, "_ZN7S3396C33v12Ev");}
void  S3396C3 ::v13(){vfunc_called(this, "_ZN7S3396C33v13Ev");}
void  S3396C3 ::v14(){vfunc_called(this, "_ZN7S3396C33v14Ev");}
void  S3396C3 ::v15(){vfunc_called(this, "_ZN7S3396C33v15Ev");}
void  S3396C3 ::v16(){vfunc_called(this, "_ZN7S3396C33v16Ev");}
void  S3396C3 ::v17(){vfunc_called(this, "_ZN7S3396C33v17Ev");}
void  S3396C3 ::v18(){vfunc_called(this, "_ZN7S3396C33v18Ev");}
void  S3396C3 ::v19(){vfunc_called(this, "_ZN7S3396C33v19Ev");}
void  S3396C3 ::v20(){vfunc_called(this, "_ZN7S3396C33v20Ev");}
void  S3396C3 ::v21(){vfunc_called(this, "_ZN7S3396C33v21Ev");}
void  S3396C3 ::v22(){vfunc_called(this, "_ZN7S3396C33v22Ev");}
void  S3396C3 ::v23(){vfunc_called(this, "_ZN7S3396C33v23Ev");}
void  S3396C3 ::v24(){vfunc_called(this, "_ZN7S3396C33v24Ev");}
void  S3396C3 ::v25(){vfunc_called(this, "_ZN7S3396C33v25Ev");}
void  S3396C3 ::v26(){vfunc_called(this, "_ZN7S3396C33v26Ev");}
void  S3396C3 ::v27(){vfunc_called(this, "_ZN7S3396C33v27Ev");}
void  S3396C3 ::v28(){vfunc_called(this, "_ZN7S3396C33v28Ev");}
void  S3396C3 ::v29(){vfunc_called(this, "_ZN7S3396C33v29Ev");}
void  S3396C3 ::v30(){vfunc_called(this, "_ZN7S3396C33v30Ev");}
void  S3396C3 ::v31(){vfunc_called(this, "_ZN7S3396C33v31Ev");}
void  S3396C3 ::v32(){vfunc_called(this, "_ZN7S3396C33v32Ev");}
void  S3396C3 ::v33(){vfunc_called(this, "_ZN7S3396C33v33Ev");}
void  S3396C3 ::v34(){vfunc_called(this, "_ZN7S3396C33v34Ev");}
void  S3396C3 ::v35(){vfunc_called(this, "_ZN7S3396C33v35Ev");}
void  S3396C3 ::v36(){vfunc_called(this, "_ZN7S3396C33v36Ev");}
void  S3396C3 ::v37(){vfunc_called(this, "_ZN7S3396C33v37Ev");}
void  S3396C3 ::v38(){vfunc_called(this, "_ZN7S3396C33v38Ev");}
void  S3396C3 ::v39(){vfunc_called(this, "_ZN7S3396C33v39Ev");}
void  S3396C3 ::v40(){vfunc_called(this, "_ZN7S3396C33v40Ev");}
void  S3396C3 ::v41(){vfunc_called(this, "_ZN7S3396C33v41Ev");}
void  S3396C3 ::v42(){vfunc_called(this, "_ZN7S3396C33v42Ev");}
void  S3396C3 ::v43(){vfunc_called(this, "_ZN7S3396C33v43Ev");}
void  S3396C3 ::v44(){vfunc_called(this, "_ZN7S3396C33v44Ev");}
void  S3396C3 ::v45(){vfunc_called(this, "_ZN7S3396C33v45Ev");}
void  S3396C3 ::v46(){vfunc_called(this, "_ZN7S3396C33v46Ev");}
void  S3396C3 ::v47(){vfunc_called(this, "_ZN7S3396C33v47Ev");}
void  S3396C3 ::v48(){vfunc_called(this, "_ZN7S3396C33v48Ev");}
void  S3396C3 ::v49(){vfunc_called(this, "_ZN7S3396C33v49Ev");}
void  S3396C3 ::v50(){vfunc_called(this, "_ZN7S3396C33v50Ev");}
void  S3396C3 ::v51(){vfunc_called(this, "_ZN7S3396C33v51Ev");}
void  S3396C3 ::v52(){vfunc_called(this, "_ZN7S3396C33v52Ev");}
void  S3396C3 ::v53(){vfunc_called(this, "_ZN7S3396C33v53Ev");}
void  S3396C3 ::v54(){vfunc_called(this, "_ZN7S3396C33v54Ev");}
void  S3396C3 ::v55(){vfunc_called(this, "_ZN7S3396C33v55Ev");}
void  S3396C3 ::v56(){vfunc_called(this, "_ZN7S3396C33v56Ev");}
void  S3396C3 ::v57(){vfunc_called(this, "_ZN7S3396C33v57Ev");}
void  S3396C3 ::v58(){vfunc_called(this, "_ZN7S3396C33v58Ev");}
void  S3396C3 ::v59(){vfunc_called(this, "_ZN7S3396C33v59Ev");}
void  S3396C3 ::v60(){vfunc_called(this, "_ZN7S3396C33v60Ev");}
void  S3396C3 ::v61(){vfunc_called(this, "_ZN7S3396C33v61Ev");}
void  S3396C3 ::v62(){vfunc_called(this, "_ZN7S3396C33v62Ev");}
void  S3396C3 ::v63(){vfunc_called(this, "_ZN7S3396C33v63Ev");}
void  S3396C3 ::v64(){vfunc_called(this, "_ZN7S3396C33v64Ev");}
void  S3396C3 ::v65(){vfunc_called(this, "_ZN7S3396C33v65Ev");}
void  S3396C3 ::v66(){vfunc_called(this, "_ZN7S3396C33v66Ev");}
void  S3396C3 ::v67(){vfunc_called(this, "_ZN7S3396C33v67Ev");}
void  S3396C3 ::v68(){vfunc_called(this, "_ZN7S3396C33v68Ev");}
void  S3396C3 ::v69(){vfunc_called(this, "_ZN7S3396C33v69Ev");}
void  S3396C3 ::v70(){vfunc_called(this, "_ZN7S3396C33v70Ev");}
S3396C3 ::S3396C3(){ note_ctor("S3396C3", this);} // tgen

static void Test_S3396C3()
{
  extern Class_Descriptor cd_S3396C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3396C3, buf);
    S3396C3 *dp, &lv = *(dp=new (buf) S3396C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3396C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3396C3)");
    check_field_offset(lv, s3396c3f0, ABISELECT(8,4), "S3396C3.s3396c3f0");
    check_field_offset(lv, s3396c3f1, ABISELECT(16,8), "S3396C3.s3396c3f1");
    check_field_offset(lv, s3396c3f2, ABISELECT(24,16), "S3396C3.s3396c3f2");
    check_field_offset(lv, s3396c3f3, ABISELECT(56,32), "S3396C3.s3396c3f3");
    check_field_offset(lv, s3396c3f4, ABISELECT(64,40), "S3396C3.s3396c3f4");
    check_field_offset(lv, s3396c3f5, ABISELECT(72,44), "S3396C3.s3396c3f5");
    check_field_offset(lv, s3396c3f6, ABISELECT(80,52), "S3396C3.s3396c3f6");
    test_class_info(&lv, &cd_S3396C3);
    dp->~S3396C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3396C3(Test_S3396C3, "S3396C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3396C3C1Ev();
extern void _ZN7S3396C3D1Ev();
Name_Map name_map_S3396C3[] = {
  NSPAIR(_ZN7S3396C3C1Ev),
  NSPAIR(_ZN7S3396C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3396C3[];
extern void _ZN7S3396C3D1Ev();
extern void _ZN7S3396C3D0Ev();
extern void _ZN7S3396C32v7Ev();
extern void _ZN7S3396C32v8Ev();
extern void _ZN7S3396C32v9Ev();
extern void _ZN7S3396C33v10Ev();
extern void _ZN7S3396C33v11Ev();
extern void _ZN7S3396C33v12Ev();
extern void _ZN7S3396C33v13Ev();
extern void _ZN7S3396C33v14Ev();
extern void _ZN7S3396C33v15Ev();
extern void _ZN7S3396C33v16Ev();
extern void _ZN7S3396C33v17Ev();
extern void _ZN7S3396C33v18Ev();
extern void _ZN7S3396C33v19Ev();
extern void _ZN7S3396C33v20Ev();
extern void _ZN7S3396C33v21Ev();
extern void _ZN7S3396C33v22Ev();
extern void _ZN7S3396C33v23Ev();
extern void _ZN7S3396C33v24Ev();
extern void _ZN7S3396C33v25Ev();
extern void _ZN7S3396C33v26Ev();
extern void _ZN7S3396C33v27Ev();
extern void _ZN7S3396C33v28Ev();
extern void _ZN7S3396C33v29Ev();
extern void _ZN7S3396C33v30Ev();
extern void _ZN7S3396C33v31Ev();
extern void _ZN7S3396C33v32Ev();
extern void _ZN7S3396C33v33Ev();
extern void _ZN7S3396C33v34Ev();
extern void _ZN7S3396C33v35Ev();
extern void _ZN7S3396C33v36Ev();
extern void _ZN7S3396C33v37Ev();
extern void _ZN7S3396C33v38Ev();
extern void _ZN7S3396C33v39Ev();
extern void _ZN7S3396C33v40Ev();
extern void _ZN7S3396C33v41Ev();
extern void _ZN7S3396C33v42Ev();
extern void _ZN7S3396C33v43Ev();
extern void _ZN7S3396C33v44Ev();
extern void _ZN7S3396C33v45Ev();
extern void _ZN7S3396C33v46Ev();
extern void _ZN7S3396C33v47Ev();
extern void _ZN7S3396C33v48Ev();
extern void _ZN7S3396C33v49Ev();
extern void _ZN7S3396C33v50Ev();
extern void _ZN7S3396C33v51Ev();
extern void _ZN7S3396C33v52Ev();
extern void _ZN7S3396C33v53Ev();
extern void _ZN7S3396C33v54Ev();
extern void _ZN7S3396C33v55Ev();
extern void _ZN7S3396C33v56Ev();
extern void _ZN7S3396C33v57Ev();
extern void _ZN7S3396C33v58Ev();
extern void _ZN7S3396C33v59Ev();
extern void _ZN7S3396C33v60Ev();
extern void _ZN7S3396C33v61Ev();
extern void _ZN7S3396C33v62Ev();
extern void _ZN7S3396C33v63Ev();
extern void _ZN7S3396C33v64Ev();
extern void _ZN7S3396C33v65Ev();
extern void _ZN7S3396C33v66Ev();
extern void _ZN7S3396C33v67Ev();
extern void _ZN7S3396C33v68Ev();
extern void _ZN7S3396C33v69Ev();
extern void _ZN7S3396C33v70Ev();
static  VTBL_ENTRY vtc_S3396C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3396C3[0]),
  (VTBL_ENTRY)&_ZN7S3396C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3396C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3396C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3396C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3396C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v70Ev,
};
extern VTBL_ENTRY _ZTI7S3396C3[];
extern  VTBL_ENTRY _ZTV7S3396C3[];
Class_Descriptor cd_S3396C3 = {  "S3396C3", // class name
  0,0,//no base classes
  &(vtc_S3396C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3396C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3396C3),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  S3396C2  : S3396C3 {
  void *s3396c2f0;
  ::S28C31_nt s3396c2f1;
  int s3396c2f2;
  void *s3396c2f3;
  unsigned int s3396c2f4:1;
  ::S28C31_nt s3396c2f5;
  virtual  ~S3396C2(); // _ZN7S3396C2D1Ev
  virtual void  v71(); // _ZN7S3396C23v71Ev
  virtual void  v72(); // _ZN7S3396C23v72Ev
  virtual void  v73(); // _ZN7S3396C23v73Ev
  virtual void  v74(); // _ZN7S3396C23v74Ev
  virtual void  v75(); // _ZN7S3396C23v75Ev
  virtual void  v76(); // _ZN7S3396C23v76Ev
  virtual void  v77(); // _ZN7S3396C23v77Ev
  virtual void  v78(); // _ZN7S3396C23v78Ev
  S3396C2(); // tgen
};
//SIG(-1 S3396C2) C1{ BC2{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 Fp FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC4}


 S3396C2 ::~S3396C2(){ note_dtor("S3396C2", this);}
void  S3396C2 ::v71(){vfunc_called(this, "_ZN7S3396C23v71Ev");}
void  S3396C2 ::v72(){vfunc_called(this, "_ZN7S3396C23v72Ev");}
void  S3396C2 ::v73(){vfunc_called(this, "_ZN7S3396C23v73Ev");}
void  S3396C2 ::v74(){vfunc_called(this, "_ZN7S3396C23v74Ev");}
void  S3396C2 ::v75(){vfunc_called(this, "_ZN7S3396C23v75Ev");}
void  S3396C2 ::v76(){vfunc_called(this, "_ZN7S3396C23v76Ev");}
void  S3396C2 ::v77(){vfunc_called(this, "_ZN7S3396C23v77Ev");}
void  S3396C2 ::v78(){vfunc_called(this, "_ZN7S3396C23v78Ev");}
S3396C2 ::S3396C2(){ note_ctor("S3396C2", this);} // tgen

static void Test_S3396C2()
{
  extern Class_Descriptor cd_S3396C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,26)];
    init_test(&cd_S3396C2, buf);
    S3396C2 *dp, &lv = *(dp=new (buf) S3396C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,100), "sizeof(S3396C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3396C2)");
    check_base_class_offset(lv, (S3396C3*), 0, "S3396C2");
    check_field_offset(lv, s3396c2f0, ABISELECT(96,60), "S3396C2.s3396c2f0");
    check_field_offset(lv, s3396c2f1, ABISELECT(104,64), "S3396C2.s3396c2f1");
    check_field_offset(lv, s3396c2f2, ABISELECT(120,76), "S3396C2.s3396c2f2");
    check_field_offset(lv, s3396c2f3, ABISELECT(128,80), "S3396C2.s3396c2f3");
    set_bf_and_test(lv, s3396c2f4, ABISELECT(136,84), 0, 1, 1, "S3396C2");
    check_field_offset(lv, s3396c2f5, ABISELECT(144,88), "S3396C2.s3396c2f5");
    test_class_info(&lv, &cd_S3396C2);
    dp->~S3396C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3396C2(Test_S3396C2, "S3396C2", ABISELECT(160,100));

#else // __cplusplus

extern void _ZN7S3396C2C1Ev();
extern void _ZN7S3396C2D1Ev();
Name_Map name_map_S3396C2[] = {
  NSPAIR(_ZN7S3396C2C1Ev),
  NSPAIR(_ZN7S3396C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3396C3;
extern VTBL_ENTRY _ZTI7S3396C3[];
extern  VTBL_ENTRY _ZTV7S3396C3[];
static Base_Class bases_S3396C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3396C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3396C2[];
extern void _ZN7S3396C2D1Ev();
extern void _ZN7S3396C2D0Ev();
extern void _ZN7S3396C32v7Ev();
extern void _ZN7S3396C32v8Ev();
extern void _ZN7S3396C32v9Ev();
extern void _ZN7S3396C33v10Ev();
extern void _ZN7S3396C33v11Ev();
extern void _ZN7S3396C33v12Ev();
extern void _ZN7S3396C33v13Ev();
extern void _ZN7S3396C33v14Ev();
extern void _ZN7S3396C33v15Ev();
extern void _ZN7S3396C33v16Ev();
extern void _ZN7S3396C33v17Ev();
extern void _ZN7S3396C33v18Ev();
extern void _ZN7S3396C33v19Ev();
extern void _ZN7S3396C33v20Ev();
extern void _ZN7S3396C33v21Ev();
extern void _ZN7S3396C33v22Ev();
extern void _ZN7S3396C33v23Ev();
extern void _ZN7S3396C33v24Ev();
extern void _ZN7S3396C33v25Ev();
extern void _ZN7S3396C33v26Ev();
extern void _ZN7S3396C33v27Ev();
extern void _ZN7S3396C33v28Ev();
extern void _ZN7S3396C33v29Ev();
extern void _ZN7S3396C33v30Ev();
extern void _ZN7S3396C33v31Ev();
extern void _ZN7S3396C33v32Ev();
extern void _ZN7S3396C33v33Ev();
extern void _ZN7S3396C33v34Ev();
extern void _ZN7S3396C33v35Ev();
extern void _ZN7S3396C33v36Ev();
extern void _ZN7S3396C33v37Ev();
extern void _ZN7S3396C33v38Ev();
extern void _ZN7S3396C33v39Ev();
extern void _ZN7S3396C33v40Ev();
extern void _ZN7S3396C33v41Ev();
extern void _ZN7S3396C33v42Ev();
extern void _ZN7S3396C33v43Ev();
extern void _ZN7S3396C33v44Ev();
extern void _ZN7S3396C33v45Ev();
extern void _ZN7S3396C33v46Ev();
extern void _ZN7S3396C33v47Ev();
extern void _ZN7S3396C33v48Ev();
extern void _ZN7S3396C33v49Ev();
extern void _ZN7S3396C33v50Ev();
extern void _ZN7S3396C33v51Ev();
extern void _ZN7S3396C33v52Ev();
extern void _ZN7S3396C33v53Ev();
extern void _ZN7S3396C33v54Ev();
extern void _ZN7S3396C33v55Ev();
extern void _ZN7S3396C33v56Ev();
extern void _ZN7S3396C33v57Ev();
extern void _ZN7S3396C33v58Ev();
extern void _ZN7S3396C33v59Ev();
extern void _ZN7S3396C33v60Ev();
extern void _ZN7S3396C33v61Ev();
extern void _ZN7S3396C33v62Ev();
extern void _ZN7S3396C33v63Ev();
extern void _ZN7S3396C33v64Ev();
extern void _ZN7S3396C33v65Ev();
extern void _ZN7S3396C33v66Ev();
extern void _ZN7S3396C33v67Ev();
extern void _ZN7S3396C33v68Ev();
extern void _ZN7S3396C33v69Ev();
extern void _ZN7S3396C33v70Ev();
extern void _ZN7S3396C23v71Ev();
extern void _ZN7S3396C23v72Ev();
extern void _ZN7S3396C23v73Ev();
extern void _ZN7S3396C23v74Ev();
extern void _ZN7S3396C23v75Ev();
extern void _ZN7S3396C23v76Ev();
extern void _ZN7S3396C23v77Ev();
extern void _ZN7S3396C23v78Ev();
static  VTBL_ENTRY vtc_S3396C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3396C2[0]),
  (VTBL_ENTRY)&_ZN7S3396C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3396C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3396C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3396C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3396C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3396C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3396C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3396C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3396C23v74Ev,
  (VTBL_ENTRY)&_ZN7S3396C23v75Ev,
  (VTBL_ENTRY)&_ZN7S3396C23v76Ev,
  (VTBL_ENTRY)&_ZN7S3396C23v77Ev,
  (VTBL_ENTRY)&_ZN7S3396C23v78Ev,
};
extern VTBL_ENTRY _ZTI7S3396C2[];
extern  VTBL_ENTRY _ZTV7S3396C2[];
Class_Descriptor cd_S3396C2 = {  "S3396C2", // class name
  bases_S3396C2, 1,
  &(vtc_S3396C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,100), // object size
  NSPAIRA(_ZTI7S3396C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3396C2),76, //virtual function table var
  2, // 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  S3396C1  : S3396C2 {
  void *s3396c1f0;
  ::S48C18 s3396c1f1;
  virtual  ~S3396C1(); // _ZN7S3396C1D1Ev
  virtual void  v1(); // _ZN7S3396C12v1Ev
  virtual void  v2(); // _ZN7S3396C12v2Ev
  virtual void  v3(); // _ZN7S3396C12v3Ev
  virtual void  v4(); // _ZN7S3396C12v4Ev
  virtual void  v5(); // _ZN7S3396C12v5Ev
  virtual void  v6(); // _ZN7S3396C12v6Ev
  S3396C1(); // tgen
};
//SIG(1 S3396C1) C1{ BC2{ BC3{ 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 FC4{ m Fi[2]} Fp[2]} vd v71 v72 v73 v74 v75 v76 v77 v78 Fp FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC5} vd v1 v2 v3 v4 v5 v6 Fp FC9{ m Fi[3]}}


 S3396C1 ::~S3396C1(){ note_dtor("S3396C1", this);}
void  S3396C1 ::v1(){vfunc_called(this, "_ZN7S3396C12v1Ev");}
void  S3396C1 ::v2(){vfunc_called(this, "_ZN7S3396C12v2Ev");}
void  S3396C1 ::v3(){vfunc_called(this, "_ZN7S3396C12v3Ev");}
void  S3396C1 ::v4(){vfunc_called(this, "_ZN7S3396C12v4Ev");}
void  S3396C1 ::v5(){vfunc_called(this, "_ZN7S3396C12v5Ev");}
void  S3396C1 ::v6(){vfunc_called(this, "_ZN7S3396C12v6Ev");}
S3396C1 ::S3396C1(){ note_ctor("S3396C1", this);} // tgen

static void Test_S3396C1()
{
  extern Class_Descriptor cd_S3396C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,30)];
    init_test(&cd_S3396C1, buf);
    S3396C1 *dp, &lv = *(dp=new (buf) S3396C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,116), "sizeof(S3396C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3396C1)");
    check_base_class_offset(lv, (S3396C3*)(S3396C2*), 0, "S3396C1");
    check_base_class_offset(lv, (S3396C2*), 0, "S3396C1");
    check_field_offset(lv, s3396c1f0, ABISELECT(160,100), "S3396C1.s3396c1f0");
    check_field_offset(lv, s3396c1f1, ABISELECT(168,104), "S3396C1.s3396c1f1");
    test_class_info(&lv, &cd_S3396C1);
    dp->~S3396C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3396C1(Test_S3396C1, "S3396C1", ABISELECT(184,116));

#else // __cplusplus

extern void _ZN7S3396C1C1Ev();
extern void _ZN7S3396C1D1Ev();
Name_Map name_map_S3396C1[] = {
  NSPAIR(_ZN7S3396C1C1Ev),
  NSPAIR(_ZN7S3396C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3396C3;
extern VTBL_ENTRY _ZTI7S3396C3[];
extern  VTBL_ENTRY _ZTV7S3396C3[];
extern Class_Descriptor cd_S3396C2;
extern VTBL_ENTRY _ZTI7S3396C2[];
extern  VTBL_ENTRY _ZTV7S3396C2[];
static Base_Class bases_S3396C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3396C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3396C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3396C1[];
extern void _ZN7S3396C1D1Ev();
extern void _ZN7S3396C1D0Ev();
extern void _ZN7S3396C32v7Ev();
extern void _ZN7S3396C32v8Ev();
extern void _ZN7S3396C32v9Ev();
extern void _ZN7S3396C33v10Ev();
extern void _ZN7S3396C33v11Ev();
extern void _ZN7S3396C33v12Ev();
extern void _ZN7S3396C33v13Ev();
extern void _ZN7S3396C33v14Ev();
extern void _ZN7S3396C33v15Ev();
extern void _ZN7S3396C33v16Ev();
extern void _ZN7S3396C33v17Ev();
extern void _ZN7S3396C33v18Ev();
extern void _ZN7S3396C33v19Ev();
extern void _ZN7S3396C33v20Ev();
extern void _ZN7S3396C33v21Ev();
extern void _ZN7S3396C33v22Ev();
extern void _ZN7S3396C33v23Ev();
extern void _ZN7S3396C33v24Ev();
extern void _ZN7S3396C33v25Ev();
extern void _ZN7S3396C33v26Ev();
extern void _ZN7S3396C33v27Ev();
extern void _ZN7S3396C33v28Ev();
extern void _ZN7S3396C33v29Ev();
extern void _ZN7S3396C33v30Ev();
extern void _ZN7S3396C33v31Ev();
extern void _ZN7S3396C33v32Ev();
extern void _ZN7S3396C33v33Ev();
extern void _ZN7S3396C33v34Ev();
extern void _ZN7S3396C33v35Ev();
extern void _ZN7S3396C33v36Ev();
extern void _ZN7S3396C33v37Ev();
extern void _ZN7S3396C33v38Ev();
extern void _ZN7S3396C33v39Ev();
extern void _ZN7S3396C33v40Ev();
extern void _ZN7S3396C33v41Ev();
extern void _ZN7S3396C33v42Ev();
extern void _ZN7S3396C33v43Ev();
extern void _ZN7S3396C33v44Ev();
extern void _ZN7S3396C33v45Ev();
extern void _ZN7S3396C33v46Ev();
extern void _ZN7S3396C33v47Ev();
extern void _ZN7S3396C33v48Ev();
extern void _ZN7S3396C33v49Ev();
extern void _ZN7S3396C33v50Ev();
extern void _ZN7S3396C33v51Ev();
extern void _ZN7S3396C33v52Ev();
extern void _ZN7S3396C33v53Ev();
extern void _ZN7S3396C33v54Ev();
extern void _ZN7S3396C33v55Ev();
extern void _ZN7S3396C33v56Ev();
extern void _ZN7S3396C33v57Ev();
extern void _ZN7S3396C33v58Ev();
extern void _ZN7S3396C33v59Ev();
extern void _ZN7S3396C33v60Ev();
extern void _ZN7S3396C33v61Ev();
extern void _ZN7S3396C33v62Ev();
extern void _ZN7S3396C33v63Ev();
extern void _ZN7S3396C33v64Ev();
extern void _ZN7S3396C33v65Ev();
extern void _ZN7S3396C33v66Ev();
extern void _ZN7S3396C33v67Ev();
extern void _ZN7S3396C33v68Ev();
extern void _ZN7S3396C33v69Ev();
extern void _ZN7S3396C33v70Ev();
extern void _ZN7S3396C23v71Ev();
extern void _ZN7S3396C23v72Ev();
extern void _ZN7S3396C23v73Ev();
extern void _ZN7S3396C23v74Ev();
extern void _ZN7S3396C23v75Ev();
extern void _ZN7S3396C23v76Ev();
extern void _ZN7S3396C23v77Ev();
extern void _ZN7S3396C23v78Ev();
extern void _ZN7S3396C12v1Ev();
extern void _ZN7S3396C12v2Ev();
extern void _ZN7S3396C12v3Ev();
extern void _ZN7S3396C12v4Ev();
extern void _ZN7S3396C12v5Ev();
extern void _ZN7S3396C12v6Ev();
static  VTBL_ENTRY vtc_S3396C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3396C1[0]),
  (VTBL_ENTRY)&_ZN7S3396C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3396C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3396C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3396C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3396C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3396C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3396C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3396C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3396C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3396C23v74Ev,
  (VTBL_ENTRY)&_ZN7S3396C23v75Ev,
  (VTBL_ENTRY)&_ZN7S3396C23v76Ev,
  (VTBL_ENTRY)&_ZN7S3396C23v77Ev,
  (VTBL_ENTRY)&_ZN7S3396C23v78Ev,
  (VTBL_ENTRY)&_ZN7S3396C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3396C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3396C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3396C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3396C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3396C12v6Ev,
};
extern VTBL_ENTRY _ZTI7S3396C1[];
extern  VTBL_ENTRY _ZTV7S3396C1[];
Class_Descriptor cd_S3396C1 = {  "S3396C1", // class name
  bases_S3396C1, 2,
  &(vtc_S3396C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,116), // object size
  NSPAIRA(_ZTI7S3396C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3396C1),82, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3397C3  {
  int s3397c3f0;
  __tsi64 s3397c3f1;
  void *s3397c3f2[4];
  int s3397c3f3[2];
  void *s3397c3f4;
  ::S28C9_nt s3397c3f5;
  void *s3397c3f6[2];
  virtual  ~S3397C3(); // _ZN7S3397C3D1Ev
  virtual void  v7(); // _ZN7S3397C32v7Ev
  virtual void  v8(); // _ZN7S3397C32v8Ev
  virtual void  v9(); // _ZN7S3397C32v9Ev
  virtual void  v10(); // _ZN7S3397C33v10Ev
  virtual void  v11(); // _ZN7S3397C33v11Ev
  virtual void  v12(); // _ZN7S3397C33v12Ev
  virtual void  v13(); // _ZN7S3397C33v13Ev
  virtual void  v14(); // _ZN7S3397C33v14Ev
  virtual void  v15(); // _ZN7S3397C33v15Ev
  virtual void  v16(); // _ZN7S3397C33v16Ev
  virtual void  v17(); // _ZN7S3397C33v17Ev
  virtual void  v18(); // _ZN7S3397C33v18Ev
  virtual void  v19(); // _ZN7S3397C33v19Ev
  virtual void  v20(); // _ZN7S3397C33v20Ev
  virtual void  v21(); // _ZN7S3397C33v21Ev
  virtual void  v22(); // _ZN7S3397C33v22Ev
  virtual void  v23(); // _ZN7S3397C33v23Ev
  virtual void  v24(); // _ZN7S3397C33v24Ev
  virtual void  v25(); // _ZN7S3397C33v25Ev
  virtual void  v26(); // _ZN7S3397C33v26Ev
  virtual void  v27(); // _ZN7S3397C33v27Ev
  virtual void  v28(); // _ZN7S3397C33v28Ev
  virtual void  v29(); // _ZN7S3397C33v29Ev
  virtual void  v30(); // _ZN7S3397C33v30Ev
  virtual void  v31(); // _ZN7S3397C33v31Ev
  virtual void  v32(); // _ZN7S3397C33v32Ev
  virtual void  v33(); // _ZN7S3397C33v33Ev
  virtual void  v34(); // _ZN7S3397C33v34Ev
  virtual void  v35(); // _ZN7S3397C33v35Ev
  virtual void  v36(); // _ZN7S3397C33v36Ev
  virtual void  v37(); // _ZN7S3397C33v37Ev
  virtual void  v38(); // _ZN7S3397C33v38Ev
  virtual void  v39(); // _ZN7S3397C33v39Ev
  virtual void  v40(); // _ZN7S3397C33v40Ev
  virtual void  v41(); // _ZN7S3397C33v41Ev
  virtual void  v42(); // _ZN7S3397C33v42Ev
  virtual void  v43(); // _ZN7S3397C33v43Ev
  virtual void  v44(); // _ZN7S3397C33v44Ev
  virtual void  v45(); // _ZN7S3397C33v45Ev
  virtual void  v46(); // _ZN7S3397C33v46Ev
  virtual void  v47(); // _ZN7S3397C33v47Ev
  virtual void  v48(); // _ZN7S3397C33v48Ev
  virtual void  v49(); // _ZN7S3397C33v49Ev
  virtual void  v50(); // _ZN7S3397C33v50Ev
  virtual void  v51(); // _ZN7S3397C33v51Ev
  virtual void  v52(); // _ZN7S3397C33v52Ev
  virtual void  v53(); // _ZN7S3397C33v53Ev
  virtual void  v54(); // _ZN7S3397C33v54Ev
  virtual void  v55(); // _ZN7S3397C33v55Ev
  virtual void  v56(); // _ZN7S3397C33v56Ev
  virtual void  v57(); // _ZN7S3397C33v57Ev
  virtual void  v58(); // _ZN7S3397C33v58Ev
  virtual void  v59(); // _ZN7S3397C33v59Ev
  virtual void  v60(); // _ZN7S3397C33v60Ev
  virtual void  v61(); // _ZN7S3397C33v61Ev
  virtual void  v62(); // _ZN7S3397C33v62Ev
  virtual void  v63(); // _ZN7S3397C33v63Ev
  virtual void  v64(); // _ZN7S3397C33v64Ev
  virtual void  v65(); // _ZN7S3397C33v65Ev
  virtual void  v66(); // _ZN7S3397C33v66Ev
  virtual void  v67(); // _ZN7S3397C33v67Ev
  virtual void  v68(); // _ZN7S3397C33v68Ev
  virtual void  v69(); // _ZN7S3397C33v69Ev
  virtual void  v70(); // _ZN7S3397C33v70Ev
  S3397C3(); // tgen
};
//SIG(-1 S3397C3) 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]}


 S3397C3 ::~S3397C3(){ note_dtor("S3397C3", this);}
void  S3397C3 ::v7(){vfunc_called(this, "_ZN7S3397C32v7Ev");}
void  S3397C3 ::v8(){vfunc_called(this, "_ZN7S3397C32v8Ev");}
void  S3397C3 ::v9(){vfunc_called(this, "_ZN7S3397C32v9Ev");}
void  S3397C3 ::v10(){vfunc_called(this, "_ZN7S3397C33v10Ev");}
void  S3397C3 ::v11(){vfunc_called(this, "_ZN7S3397C33v11Ev");}
void  S3397C3 ::v12(){vfunc_called(this, "_ZN7S3397C33v12Ev");}
void  S3397C3 ::v13(){vfunc_called(this, "_ZN7S3397C33v13Ev");}
void  S3397C3 ::v14(){vfunc_called(this, "_ZN7S3397C33v14Ev");}
void  S3397C3 ::v15(){vfunc_called(this, "_ZN7S3397C33v15Ev");}
void  S3397C3 ::v16(){vfunc_called(this, "_ZN7S3397C33v16Ev");}
void  S3397C3 ::v17(){vfunc_called(this, "_ZN7S3397C33v17Ev");}
void  S3397C3 ::v18(){vfunc_called(this, "_ZN7S3397C33v18Ev");}
void  S3397C3 ::v19(){vfunc_called(this, "_ZN7S3397C33v19Ev");}
void  S3397C3 ::v20(){vfunc_called(this, "_ZN7S3397C33v20Ev");}
void  S3397C3 ::v21(){vfunc_called(this, "_ZN7S3397C33v21Ev");}
void  S3397C3 ::v22(){vfunc_called(this, "_ZN7S3397C33v22Ev");}
void  S3397C3 ::v23(){vfunc_called(this, "_ZN7S3397C33v23Ev");}
void  S3397C3 ::v24(){vfunc_called(this, "_ZN7S3397C33v24Ev");}
void  S3397C3 ::v25(){vfunc_called(this, "_ZN7S3397C33v25Ev");}
void  S3397C3 ::v26(){vfunc_called(this, "_ZN7S3397C33v26Ev");}
void  S3397C3 ::v27(){vfunc_called(this, "_ZN7S3397C33v27Ev");}
void  S3397C3 ::v28(){vfunc_called(this, "_ZN7S3397C33v28Ev");}
void  S3397C3 ::v29(){vfunc_called(this, "_ZN7S3397C33v29Ev");}
void  S3397C3 ::v30(){vfunc_called(this, "_ZN7S3397C33v30Ev");}
void  S3397C3 ::v31(){vfunc_called(this, "_ZN7S3397C33v31Ev");}
void  S3397C3 ::v32(){vfunc_called(this, "_ZN7S3397C33v32Ev");}
void  S3397C3 ::v33(){vfunc_called(this, "_ZN7S3397C33v33Ev");}
void  S3397C3 ::v34(){vfunc_called(this, "_ZN7S3397C33v34Ev");}
void  S3397C3 ::v35(){vfunc_called(this, "_ZN7S3397C33v35Ev");}
void  S3397C3 ::v36(){vfunc_called(this, "_ZN7S3397C33v36Ev");}
void  S3397C3 ::v37(){vfunc_called(this, "_ZN7S3397C33v37Ev");}
void  S3397C3 ::v38(){vfunc_called(this, "_ZN7S3397C33v38Ev");}
void  S3397C3 ::v39(){vfunc_called(this, "_ZN7S3397C33v39Ev");}
void  S3397C3 ::v40(){vfunc_called(this, "_ZN7S3397C33v40Ev");}
void  S3397C3 ::v41(){vfunc_called(this, "_ZN7S3397C33v41Ev");}
void  S3397C3 ::v42(){vfunc_called(this, "_ZN7S3397C33v42Ev");}
void  S3397C3 ::v43(){vfunc_called(this, "_ZN7S3397C33v43Ev");}
void  S3397C3 ::v44(){vfunc_called(this, "_ZN7S3397C33v44Ev");}
void  S3397C3 ::v45(){vfunc_called(this, "_ZN7S3397C33v45Ev");}
void  S3397C3 ::v46(){vfunc_called(this, "_ZN7S3397C33v46Ev");}
void  S3397C3 ::v47(){vfunc_called(this, "_ZN7S3397C33v47Ev");}
void  S3397C3 ::v48(){vfunc_called(this, "_ZN7S3397C33v48Ev");}
void  S3397C3 ::v49(){vfunc_called(this, "_ZN7S3397C33v49Ev");}
void  S3397C3 ::v50(){vfunc_called(this, "_ZN7S3397C33v50Ev");}
void  S3397C3 ::v51(){vfunc_called(this, "_ZN7S3397C33v51Ev");}
void  S3397C3 ::v52(){vfunc_called(this, "_ZN7S3397C33v52Ev");}
void  S3397C3 ::v53(){vfunc_called(this, "_ZN7S3397C33v53Ev");}
void  S3397C3 ::v54(){vfunc_called(this, "_ZN7S3397C33v54Ev");}
void  S3397C3 ::v55(){vfunc_called(this, "_ZN7S3397C33v55Ev");}
void  S3397C3 ::v56(){vfunc_called(this, "_ZN7S3397C33v56Ev");}
void  S3397C3 ::v57(){vfunc_called(this, "_ZN7S3397C33v57Ev");}
void  S3397C3 ::v58(){vfunc_called(this, "_ZN7S3397C33v58Ev");}
void  S3397C3 ::v59(){vfunc_called(this, "_ZN7S3397C33v59Ev");}
void  S3397C3 ::v60(){vfunc_called(this, "_ZN7S3397C33v60Ev");}
void  S3397C3 ::v61(){vfunc_called(this, "_ZN7S3397C33v61Ev");}
void  S3397C3 ::v62(){vfunc_called(this, "_ZN7S3397C33v62Ev");}
void  S3397C3 ::v63(){vfunc_called(this, "_ZN7S3397C33v63Ev");}
void  S3397C3 ::v64(){vfunc_called(this, "_ZN7S3397C33v64Ev");}
void  S3397C3 ::v65(){vfunc_called(this, "_ZN7S3397C33v65Ev");}
void  S3397C3 ::v66(){vfunc_called(this, "_ZN7S3397C33v66Ev");}
void  S3397C3 ::v67(){vfunc_called(this, "_ZN7S3397C33v67Ev");}
void  S3397C3 ::v68(){vfunc_called(this, "_ZN7S3397C33v68Ev");}
void  S3397C3 ::v69(){vfunc_called(this, "_ZN7S3397C33v69Ev");}
void  S3397C3 ::v70(){vfunc_called(this, "_ZN7S3397C33v70Ev");}
S3397C3 ::S3397C3(){ note_ctor("S3397C3", this);} // tgen

static void Test_S3397C3()
{
  extern Class_Descriptor cd_S3397C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3397C3, buf);
    S3397C3 *dp, &lv = *(dp=new (buf) S3397C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3397C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3397C3)");
    check_field_offset(lv, s3397c3f0, ABISELECT(8,4), "S3397C3.s3397c3f0");
    check_field_offset(lv, s3397c3f1, ABISELECT(16,8), "S3397C3.s3397c3f1");
    check_field_offset(lv, s3397c3f2, ABISELECT(24,16), "S3397C3.s3397c3f2");
    check_field_offset(lv, s3397c3f3, ABISELECT(56,32), "S3397C3.s3397c3f3");
    check_field_offset(lv, s3397c3f4, ABISELECT(64,40), "S3397C3.s3397c3f4");
    check_field_offset(lv, s3397c3f5, ABISELECT(72,44), "S3397C3.s3397c3f5");
    check_field_offset(lv, s3397c3f6, ABISELECT(80,52), "S3397C3.s3397c3f6");
    test_class_info(&lv, &cd_S3397C3);
    dp->~S3397C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3397C3(Test_S3397C3, "S3397C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3397C3C1Ev();
extern void _ZN7S3397C3D1Ev();
Name_Map name_map_S3397C3[] = {
  NSPAIR(_ZN7S3397C3C1Ev),
  NSPAIR(_ZN7S3397C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3397C3[];
extern void _ZN7S3397C3D1Ev();
extern void _ZN7S3397C3D0Ev();
extern void _ZN7S3397C32v7Ev();
extern void _ZN7S3397C32v8Ev();
extern void _ZN7S3397C32v9Ev();
extern void _ZN7S3397C33v10Ev();
extern void _ZN7S3397C33v11Ev();
extern void _ZN7S3397C33v12Ev();
extern void _ZN7S3397C33v13Ev();
extern void _ZN7S3397C33v14Ev();
extern void _ZN7S3397C33v15Ev();
extern void _ZN7S3397C33v16Ev();
extern void _ZN7S3397C33v17Ev();
extern void _ZN7S3397C33v18Ev();
extern void _ZN7S3397C33v19Ev();
extern void _ZN7S3397C33v20Ev();
extern void _ZN7S3397C33v21Ev();
extern void _ZN7S3397C33v22Ev();
extern void _ZN7S3397C33v23Ev();
extern void _ZN7S3397C33v24Ev();
extern void _ZN7S3397C33v25Ev();
extern void _ZN7S3397C33v26Ev();
extern void _ZN7S3397C33v27Ev();
extern void _ZN7S3397C33v28Ev();
extern void _ZN7S3397C33v29Ev();
extern void _ZN7S3397C33v30Ev();
extern void _ZN7S3397C33v31Ev();
extern void _ZN7S3397C33v32Ev();
extern void _ZN7S3397C33v33Ev();
extern void _ZN7S3397C33v34Ev();
extern void _ZN7S3397C33v35Ev();
extern void _ZN7S3397C33v36Ev();
extern void _ZN7S3397C33v37Ev();
extern void _ZN7S3397C33v38Ev();
extern void _ZN7S3397C33v39Ev();
extern void _ZN7S3397C33v40Ev();
extern void _ZN7S3397C33v41Ev();
extern void _ZN7S3397C33v42Ev();
extern void _ZN7S3397C33v43Ev();
extern void _ZN7S3397C33v44Ev();
extern void _ZN7S3397C33v45Ev();
extern void _ZN7S3397C33v46Ev();
extern void _ZN7S3397C33v47Ev();
extern void _ZN7S3397C33v48Ev();
extern void _ZN7S3397C33v49Ev();
extern void _ZN7S3397C33v50Ev();
extern void _ZN7S3397C33v51Ev();
extern void _ZN7S3397C33v52Ev();
extern void _ZN7S3397C33v53Ev();
extern void _ZN7S3397C33v54Ev();
extern void _ZN7S3397C33v55Ev();
extern void _ZN7S3397C33v56Ev();
extern void _ZN7S3397C33v57Ev();
extern void _ZN7S3397C33v58Ev();
extern void _ZN7S3397C33v59Ev();
extern void _ZN7S3397C33v60Ev();
extern void _ZN7S3397C33v61Ev();
extern void _ZN7S3397C33v62Ev();
extern void _ZN7S3397C33v63Ev();
extern void _ZN7S3397C33v64Ev();
extern void _ZN7S3397C33v65Ev();
extern void _ZN7S3397C33v66Ev();
extern void _ZN7S3397C33v67Ev();
extern void _ZN7S3397C33v68Ev();
extern void _ZN7S3397C33v69Ev();
extern void _ZN7S3397C33v70Ev();
static  VTBL_ENTRY vtc_S3397C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3397C3[0]),
  (VTBL_ENTRY)&_ZN7S3397C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3397C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3397C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3397C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3397C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v70Ev,
};
extern VTBL_ENTRY _ZTI7S3397C3[];
extern  VTBL_ENTRY _ZTV7S3397C3[];
Class_Descriptor cd_S3397C3 = {  "S3397C3", // class name
  0,0,//no base classes
  &(vtc_S3397C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3397C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3397C3),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  S3397C2  : S3397C3 {
  void *s3397c2f0;
  ::S28C31_nt s3397c2f1;
  int s3397c2f2;
  void *s3397c2f3;
  unsigned int s3397c2f4:1;
  ::S28C31_nt s3397c2f5;
  virtual  ~S3397C2(); // _ZN7S3397C2D1Ev
  virtual void  v71(); // _ZN7S3397C23v71Ev
  virtual void  v72(); // _ZN7S3397C23v72Ev
  virtual void  v73(); // _ZN7S3397C23v73Ev
  virtual void  v74(); // _ZN7S3397C23v74Ev
  virtual void  v75(); // _ZN7S3397C23v75Ev
  virtual void  v76(); // _ZN7S3397C23v76Ev
  virtual void  v77(); // _ZN7S3397C23v77Ev
  virtual void  v78(); // _ZN7S3397C23v78Ev
  S3397C2(); // tgen
};
//SIG(-1 S3397C2) C1{ BC2{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 Fp FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC4}


 S3397C2 ::~S3397C2(){ note_dtor("S3397C2", this);}
void  S3397C2 ::v71(){vfunc_called(this, "_ZN7S3397C23v71Ev");}
void  S3397C2 ::v72(){vfunc_called(this, "_ZN7S3397C23v72Ev");}
void  S3397C2 ::v73(){vfunc_called(this, "_ZN7S3397C23v73Ev");}
void  S3397C2 ::v74(){vfunc_called(this, "_ZN7S3397C23v74Ev");}
void  S3397C2 ::v75(){vfunc_called(this, "_ZN7S3397C23v75Ev");}
void  S3397C2 ::v76(){vfunc_called(this, "_ZN7S3397C23v76Ev");}
void  S3397C2 ::v77(){vfunc_called(this, "_ZN7S3397C23v77Ev");}
void  S3397C2 ::v78(){vfunc_called(this, "_ZN7S3397C23v78Ev");}
S3397C2 ::S3397C2(){ note_ctor("S3397C2", this);} // tgen

static void Test_S3397C2()
{
  extern Class_Descriptor cd_S3397C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,26)];
    init_test(&cd_S3397C2, buf);
    S3397C2 *dp, &lv = *(dp=new (buf) S3397C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,100), "sizeof(S3397C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3397C2)");
    check_base_class_offset(lv, (S3397C3*), 0, "S3397C2");
    check_field_offset(lv, s3397c2f0, ABISELECT(96,60), "S3397C2.s3397c2f0");
    check_field_offset(lv, s3397c2f1, ABISELECT(104,64), "S3397C2.s3397c2f1");
    check_field_offset(lv, s3397c2f2, ABISELECT(120,76), "S3397C2.s3397c2f2");
    check_field_offset(lv, s3397c2f3, ABISELECT(128,80), "S3397C2.s3397c2f3");
    set_bf_and_test(lv, s3397c2f4, ABISELECT(136,84), 0, 1, 1, "S3397C2");
    check_field_offset(lv, s3397c2f5, ABISELECT(144,88), "S3397C2.s3397c2f5");
    test_class_info(&lv, &cd_S3397C2);
    dp->~S3397C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3397C2(Test_S3397C2, "S3397C2", ABISELECT(160,100));

#else // __cplusplus

extern void _ZN7S3397C2C1Ev();
extern void _ZN7S3397C2D1Ev();
Name_Map name_map_S3397C2[] = {
  NSPAIR(_ZN7S3397C2C1Ev),
  NSPAIR(_ZN7S3397C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3397C3;
extern VTBL_ENTRY _ZTI7S3397C3[];
extern  VTBL_ENTRY _ZTV7S3397C3[];
static Base_Class bases_S3397C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3397C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3397C2[];
extern void _ZN7S3397C2D1Ev();
extern void _ZN7S3397C2D0Ev();
extern void _ZN7S3397C32v7Ev();
extern void _ZN7S3397C32v8Ev();
extern void _ZN7S3397C32v9Ev();
extern void _ZN7S3397C33v10Ev();
extern void _ZN7S3397C33v11Ev();
extern void _ZN7S3397C33v12Ev();
extern void _ZN7S3397C33v13Ev();
extern void _ZN7S3397C33v14Ev();
extern void _ZN7S3397C33v15Ev();
extern void _ZN7S3397C33v16Ev();
extern void _ZN7S3397C33v17Ev();
extern void _ZN7S3397C33v18Ev();
extern void _ZN7S3397C33v19Ev();
extern void _ZN7S3397C33v20Ev();
extern void _ZN7S3397C33v21Ev();
extern void _ZN7S3397C33v22Ev();
extern void _ZN7S3397C33v23Ev();
extern void _ZN7S3397C33v24Ev();
extern void _ZN7S3397C33v25Ev();
extern void _ZN7S3397C33v26Ev();
extern void _ZN7S3397C33v27Ev();
extern void _ZN7S3397C33v28Ev();
extern void _ZN7S3397C33v29Ev();
extern void _ZN7S3397C33v30Ev();
extern void _ZN7S3397C33v31Ev();
extern void _ZN7S3397C33v32Ev();
extern void _ZN7S3397C33v33Ev();
extern void _ZN7S3397C33v34Ev();
extern void _ZN7S3397C33v35Ev();
extern void _ZN7S3397C33v36Ev();
extern void _ZN7S3397C33v37Ev();
extern void _ZN7S3397C33v38Ev();
extern void _ZN7S3397C33v39Ev();
extern void _ZN7S3397C33v40Ev();
extern void _ZN7S3397C33v41Ev();
extern void _ZN7S3397C33v42Ev();
extern void _ZN7S3397C33v43Ev();
extern void _ZN7S3397C33v44Ev();
extern void _ZN7S3397C33v45Ev();
extern void _ZN7S3397C33v46Ev();
extern void _ZN7S3397C33v47Ev();
extern void _ZN7S3397C33v48Ev();
extern void _ZN7S3397C33v49Ev();
extern void _ZN7S3397C33v50Ev();
extern void _ZN7S3397C33v51Ev();
extern void _ZN7S3397C33v52Ev();
extern void _ZN7S3397C33v53Ev();
extern void _ZN7S3397C33v54Ev();
extern void _ZN7S3397C33v55Ev();
extern void _ZN7S3397C33v56Ev();
extern void _ZN7S3397C33v57Ev();
extern void _ZN7S3397C33v58Ev();
extern void _ZN7S3397C33v59Ev();
extern void _ZN7S3397C33v60Ev();
extern void _ZN7S3397C33v61Ev();
extern void _ZN7S3397C33v62Ev();
extern void _ZN7S3397C33v63Ev();
extern void _ZN7S3397C33v64Ev();
extern void _ZN7S3397C33v65Ev();
extern void _ZN7S3397C33v66Ev();
extern void _ZN7S3397C33v67Ev();
extern void _ZN7S3397C33v68Ev();
extern void _ZN7S3397C33v69Ev();
extern void _ZN7S3397C33v70Ev();
extern void _ZN7S3397C23v71Ev();
extern void _ZN7S3397C23v72Ev();
extern void _ZN7S3397C23v73Ev();
extern void _ZN7S3397C23v74Ev();
extern void _ZN7S3397C23v75Ev();
extern void _ZN7S3397C23v76Ev();
extern void _ZN7S3397C23v77Ev();
extern void _ZN7S3397C23v78Ev();
static  VTBL_ENTRY vtc_S3397C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3397C2[0]),
  (VTBL_ENTRY)&_ZN7S3397C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3397C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3397C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3397C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3397C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3397C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3397C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3397C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3397C23v74Ev,
  (VTBL_ENTRY)&_ZN7S3397C23v75Ev,
  (VTBL_ENTRY)&_ZN7S3397C23v76Ev,
  (VTBL_ENTRY)&_ZN7S3397C23v77Ev,
  (VTBL_ENTRY)&_ZN7S3397C23v78Ev,
};
extern VTBL_ENTRY _ZTI7S3397C2[];
extern  VTBL_ENTRY _ZTV7S3397C2[];
Class_Descriptor cd_S3397C2 = {  "S3397C2", // class name
  bases_S3397C2, 1,
  &(vtc_S3397C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,100), // object size
  NSPAIRA(_ZTI7S3397C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3397C2),76, //virtual function table var
  2, // 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  S3397C1  : S3397C2 {
  void *s3397c1f0[2];
  ::S28C9_nt s3397c1f1;
  virtual  ~S3397C1(); // _ZN7S3397C1D1Ev
  virtual void  v1(); // _ZN7S3397C12v1Ev
  virtual void  v2(); // _ZN7S3397C12v2Ev
  virtual void  v3(); // _ZN7S3397C12v3Ev
  virtual void  v4(); // _ZN7S3397C12v4Ev
  virtual void  v5(); // _ZN7S3397C12v5Ev
  virtual void  v6(); // _ZN7S3397C12v6Ev
  S3397C1(); // tgen
};
//SIG(1 S3397C1) C1{ BC2{ BC3{ 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 FC4{ m Fi[2]} Fp[2]} vd v71 v72 v73 v74 v75 v76 v77 v78 Fp FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC5} vd v1 v2 v3 v4 v5 v6 Fp[2] FC4}


 S3397C1 ::~S3397C1(){ note_dtor("S3397C1", this);}
void  S3397C1 ::v1(){vfunc_called(this, "_ZN7S3397C12v1Ev");}
void  S3397C1 ::v2(){vfunc_called(this, "_ZN7S3397C12v2Ev");}
void  S3397C1 ::v3(){vfunc_called(this, "_ZN7S3397C12v3Ev");}
void  S3397C1 ::v4(){vfunc_called(this, "_ZN7S3397C12v4Ev");}
void  S3397C1 ::v5(){vfunc_called(this, "_ZN7S3397C12v5Ev");}
void  S3397C1 ::v6(){vfunc_called(this, "_ZN7S3397C12v6Ev");}
S3397C1 ::S3397C1(){ note_ctor("S3397C1", this);} // tgen

static void Test_S3397C1()
{
  extern Class_Descriptor cd_S3397C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,30)];
    init_test(&cd_S3397C1, buf);
    S3397C1 *dp, &lv = *(dp=new (buf) S3397C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,116), "sizeof(S3397C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3397C1)");
    check_base_class_offset(lv, (S3397C3*)(S3397C2*), 0, "S3397C1");
    check_base_class_offset(lv, (S3397C2*), 0, "S3397C1");
    check_field_offset(lv, s3397c1f0, ABISELECT(160,100), "S3397C1.s3397c1f0");
    check_field_offset(lv, s3397c1f1, ABISELECT(176,108), "S3397C1.s3397c1f1");
    test_class_info(&lv, &cd_S3397C1);
    dp->~S3397C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3397C1(Test_S3397C1, "S3397C1", ABISELECT(184,116));

#else // __cplusplus

extern void _ZN7S3397C1C1Ev();
extern void _ZN7S3397C1D1Ev();
Name_Map name_map_S3397C1[] = {
  NSPAIR(_ZN7S3397C1C1Ev),
  NSPAIR(_ZN7S3397C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3397C3;
extern VTBL_ENTRY _ZTI7S3397C3[];
extern  VTBL_ENTRY _ZTV7S3397C3[];
extern Class_Descriptor cd_S3397C2;
extern VTBL_ENTRY _ZTI7S3397C2[];
extern  VTBL_ENTRY _ZTV7S3397C2[];
static Base_Class bases_S3397C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3397C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3397C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3397C1[];
extern void _ZN7S3397C1D1Ev();
extern void _ZN7S3397C1D0Ev();
extern void _ZN7S3397C32v7Ev();
extern void _ZN7S3397C32v8Ev();
extern void _ZN7S3397C32v9Ev();
extern void _ZN7S3397C33v10Ev();
extern void _ZN7S3397C33v11Ev();
extern void _ZN7S3397C33v12Ev();
extern void _ZN7S3397C33v13Ev();
extern void _ZN7S3397C33v14Ev();
extern void _ZN7S3397C33v15Ev();
extern void _ZN7S3397C33v16Ev();
extern void _ZN7S3397C33v17Ev();
extern void _ZN7S3397C33v18Ev();
extern void _ZN7S3397C33v19Ev();
extern void _ZN7S3397C33v20Ev();
extern void _ZN7S3397C33v21Ev();
extern void _ZN7S3397C33v22Ev();
extern void _ZN7S3397C33v23Ev();
extern void _ZN7S3397C33v24Ev();
extern void _ZN7S3397C33v25Ev();
extern void _ZN7S3397C33v26Ev();
extern void _ZN7S3397C33v27Ev();
extern void _ZN7S3397C33v28Ev();
extern void _ZN7S3397C33v29Ev();
extern void _ZN7S3397C33v30Ev();
extern void _ZN7S3397C33v31Ev();
extern void _ZN7S3397C33v32Ev();
extern void _ZN7S3397C33v33Ev();
extern void _ZN7S3397C33v34Ev();
extern void _ZN7S3397C33v35Ev();
extern void _ZN7S3397C33v36Ev();
extern void _ZN7S3397C33v37Ev();
extern void _ZN7S3397C33v38Ev();
extern void _ZN7S3397C33v39Ev();
extern void _ZN7S3397C33v40Ev();
extern void _ZN7S3397C33v41Ev();
extern void _ZN7S3397C33v42Ev();
extern void _ZN7S3397C33v43Ev();
extern void _ZN7S3397C33v44Ev();
extern void _ZN7S3397C33v45Ev();
extern void _ZN7S3397C33v46Ev();
extern void _ZN7S3397C33v47Ev();
extern void _ZN7S3397C33v48Ev();
extern void _ZN7S3397C33v49Ev();
extern void _ZN7S3397C33v50Ev();
extern void _ZN7S3397C33v51Ev();
extern void _ZN7S3397C33v52Ev();
extern void _ZN7S3397C33v53Ev();
extern void _ZN7S3397C33v54Ev();
extern void _ZN7S3397C33v55Ev();
extern void _ZN7S3397C33v56Ev();
extern void _ZN7S3397C33v57Ev();
extern void _ZN7S3397C33v58Ev();
extern void _ZN7S3397C33v59Ev();
extern void _ZN7S3397C33v60Ev();
extern void _ZN7S3397C33v61Ev();
extern void _ZN7S3397C33v62Ev();
extern void _ZN7S3397C33v63Ev();
extern void _ZN7S3397C33v64Ev();
extern void _ZN7S3397C33v65Ev();
extern void _ZN7S3397C33v66Ev();
extern void _ZN7S3397C33v67Ev();
extern void _ZN7S3397C33v68Ev();
extern void _ZN7S3397C33v69Ev();
extern void _ZN7S3397C33v70Ev();
extern void _ZN7S3397C23v71Ev();
extern void _ZN7S3397C23v72Ev();
extern void _ZN7S3397C23v73Ev();
extern void _ZN7S3397C23v74Ev();
extern void _ZN7S3397C23v75Ev();
extern void _ZN7S3397C23v76Ev();
extern void _ZN7S3397C23v77Ev();
extern void _ZN7S3397C23v78Ev();
extern void _ZN7S3397C12v1Ev();
extern void _ZN7S3397C12v2Ev();
extern void _ZN7S3397C12v3Ev();
extern void _ZN7S3397C12v4Ev();
extern void _ZN7S3397C12v5Ev();
extern void _ZN7S3397C12v6Ev();
static  VTBL_ENTRY vtc_S3397C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3397C1[0]),
  (VTBL_ENTRY)&_ZN7S3397C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3397C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3397C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3397C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3397C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3397C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3397C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3397C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3397C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3397C23v74Ev,
  (VTBL_ENTRY)&_ZN7S3397C23v75Ev,
  (VTBL_ENTRY)&_ZN7S3397C23v76Ev,
  (VTBL_ENTRY)&_ZN7S3397C23v77Ev,
  (VTBL_ENTRY)&_ZN7S3397C23v78Ev,
  (VTBL_ENTRY)&_ZN7S3397C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3397C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3397C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3397C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3397C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3397C12v6Ev,
};
extern VTBL_ENTRY _ZTI7S3397C1[];
extern  VTBL_ENTRY _ZTV7S3397C1[];
Class_Descriptor cd_S3397C1 = {  "S3397C1", // class name
  bases_S3397C1, 2,
  &(vtc_S3397C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,116), // object size
  NSPAIRA(_ZTI7S3397C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3397C1),82, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3425C3  {
  int s3425c3f0;
  __tsi64 s3425c3f1;
  void *s3425c3f2[4];
  int s3425c3f3[2];
  void *s3425c3f4;
  ::S28C9_nt s3425c3f5;
  void *s3425c3f6[2];
  virtual  ~S3425C3(); // _ZN7S3425C3D1Ev
  virtual void  v8(); // _ZN7S3425C32v8Ev
  virtual void  v9(); // _ZN7S3425C32v9Ev
  virtual void  v10(); // _ZN7S3425C33v10Ev
  virtual void  v11(); // _ZN7S3425C33v11Ev
  virtual void  v12(); // _ZN7S3425C33v12Ev
  virtual void  v13(); // _ZN7S3425C33v13Ev
  virtual void  v14(); // _ZN7S3425C33v14Ev
  virtual void  v15(); // _ZN7S3425C33v15Ev
  virtual void  v16(); // _ZN7S3425C33v16Ev
  virtual void  v17(); // _ZN7S3425C33v17Ev
  virtual void  v18(); // _ZN7S3425C33v18Ev
  virtual void  v19(); // _ZN7S3425C33v19Ev
  virtual void  v20(); // _ZN7S3425C33v20Ev
  virtual void  v21(); // _ZN7S3425C33v21Ev
  virtual void  v22(); // _ZN7S3425C33v22Ev
  virtual void  v23(); // _ZN7S3425C33v23Ev
  virtual void  v24(); // _ZN7S3425C33v24Ev
  virtual void  v25(); // _ZN7S3425C33v25Ev
  virtual void  v26(); // _ZN7S3425C33v26Ev
  virtual void  v27(); // _ZN7S3425C33v27Ev
  virtual void  v28(); // _ZN7S3425C33v28Ev
  virtual void  v29(); // _ZN7S3425C33v29Ev
  virtual void  v30(); // _ZN7S3425C33v30Ev
  virtual void  v31(); // _ZN7S3425C33v31Ev
  virtual void  v32(); // _ZN7S3425C33v32Ev
  virtual void  v33(); // _ZN7S3425C33v33Ev
  virtual void  v34(); // _ZN7S3425C33v34Ev
  virtual void  v35(); // _ZN7S3425C33v35Ev
  virtual void  v36(); // _ZN7S3425C33v36Ev
  virtual void  v37(); // _ZN7S3425C33v37Ev
  virtual void  v38(); // _ZN7S3425C33v38Ev
  virtual void  v39(); // _ZN7S3425C33v39Ev
  virtual void  v40(); // _ZN7S3425C33v40Ev
  virtual void  v41(); // _ZN7S3425C33v41Ev
  virtual void  v42(); // _ZN7S3425C33v42Ev
  virtual void  v43(); // _ZN7S3425C33v43Ev
  virtual void  v44(); // _ZN7S3425C33v44Ev
  virtual void  v45(); // _ZN7S3425C33v45Ev
  virtual void  v46(); // _ZN7S3425C33v46Ev
  virtual void  v47(); // _ZN7S3425C33v47Ev
  virtual void  v48(); // _ZN7S3425C33v48Ev
  virtual void  v49(); // _ZN7S3425C33v49Ev
  virtual void  v50(); // _ZN7S3425C33v50Ev
  virtual void  v51(); // _ZN7S3425C33v51Ev
  virtual void  v52(); // _ZN7S3425C33v52Ev
  virtual void  v53(); // _ZN7S3425C33v53Ev
  virtual void  v54(); // _ZN7S3425C33v54Ev
  virtual void  v55(); // _ZN7S3425C33v55Ev
  virtual void  v56(); // _ZN7S3425C33v56Ev
  virtual void  v57(); // _ZN7S3425C33v57Ev
  virtual void  v58(); // _ZN7S3425C33v58Ev
  virtual void  v59(); // _ZN7S3425C33v59Ev
  virtual void  v60(); // _ZN7S3425C33v60Ev
  virtual void  v61(); // _ZN7S3425C33v61Ev
  virtual void  v62(); // _ZN7S3425C33v62Ev
  virtual void  v63(); // _ZN7S3425C33v63Ev
  virtual void  v64(); // _ZN7S3425C33v64Ev
  virtual void  v65(); // _ZN7S3425C33v65Ev
  virtual void  v66(); // _ZN7S3425C33v66Ev
  virtual void  v67(); // _ZN7S3425C33v67Ev
  virtual void  v68(); // _ZN7S3425C33v68Ev
  virtual void  v69(); // _ZN7S3425C33v69Ev
  virtual void  v70(); // _ZN7S3425C33v70Ev
  virtual void  v71(); // _ZN7S3425C33v71Ev
  S3425C3(); // tgen
};
//SIG(-1 S3425C3) 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]}


 S3425C3 ::~S3425C3(){ note_dtor("S3425C3", this);}
void  S3425C3 ::v8(){vfunc_called(this, "_ZN7S3425C32v8Ev");}
void  S3425C3 ::v9(){vfunc_called(this, "_ZN7S3425C32v9Ev");}
void  S3425C3 ::v10(){vfunc_called(this, "_ZN7S3425C33v10Ev");}
void  S3425C3 ::v11(){vfunc_called(this, "_ZN7S3425C33v11Ev");}
void  S3425C3 ::v12(){vfunc_called(this, "_ZN7S3425C33v12Ev");}
void  S3425C3 ::v13(){vfunc_called(this, "_ZN7S3425C33v13Ev");}
void  S3425C3 ::v14(){vfunc_called(this, "_ZN7S3425C33v14Ev");}
void  S3425C3 ::v15(){vfunc_called(this, "_ZN7S3425C33v15Ev");}
void  S3425C3 ::v16(){vfunc_called(this, "_ZN7S3425C33v16Ev");}
void  S3425C3 ::v17(){vfunc_called(this, "_ZN7S3425C33v17Ev");}
void  S3425C3 ::v18(){vfunc_called(this, "_ZN7S3425C33v18Ev");}
void  S3425C3 ::v19(){vfunc_called(this, "_ZN7S3425C33v19Ev");}
void  S3425C3 ::v20(){vfunc_called(this, "_ZN7S3425C33v20Ev");}
void  S3425C3 ::v21(){vfunc_called(this, "_ZN7S3425C33v21Ev");}
void  S3425C3 ::v22(){vfunc_called(this, "_ZN7S3425C33v22Ev");}
void  S3425C3 ::v23(){vfunc_called(this, "_ZN7S3425C33v23Ev");}
void  S3425C3 ::v24(){vfunc_called(this, "_ZN7S3425C33v24Ev");}
void  S3425C3 ::v25(){vfunc_called(this, "_ZN7S3425C33v25Ev");}
void  S3425C3 ::v26(){vfunc_called(this, "_ZN7S3425C33v26Ev");}
void  S3425C3 ::v27(){vfunc_called(this, "_ZN7S3425C33v27Ev");}
void  S3425C3 ::v28(){vfunc_called(this, "_ZN7S3425C33v28Ev");}
void  S3425C3 ::v29(){vfunc_called(this, "_ZN7S3425C33v29Ev");}
void  S3425C3 ::v30(){vfunc_called(this, "_ZN7S3425C33v30Ev");}
void  S3425C3 ::v31(){vfunc_called(this, "_ZN7S3425C33v31Ev");}
void  S3425C3 ::v32(){vfunc_called(this, "_ZN7S3425C33v32Ev");}
void  S3425C3 ::v33(){vfunc_called(this, "_ZN7S3425C33v33Ev");}
void  S3425C3 ::v34(){vfunc_called(this, "_ZN7S3425C33v34Ev");}
void  S3425C3 ::v35(){vfunc_called(this, "_ZN7S3425C33v35Ev");}
void  S3425C3 ::v36(){vfunc_called(this, "_ZN7S3425C33v36Ev");}
void  S3425C3 ::v37(){vfunc_called(this, "_ZN7S3425C33v37Ev");}
void  S3425C3 ::v38(){vfunc_called(this, "_ZN7S3425C33v38Ev");}
void  S3425C3 ::v39(){vfunc_called(this, "_ZN7S3425C33v39Ev");}
void  S3425C3 ::v40(){vfunc_called(this, "_ZN7S3425C33v40Ev");}
void  S3425C3 ::v41(){vfunc_called(this, "_ZN7S3425C33v41Ev");}
void  S3425C3 ::v42(){vfunc_called(this, "_ZN7S3425C33v42Ev");}
void  S3425C3 ::v43(){vfunc_called(this, "_ZN7S3425C33v43Ev");}
void  S3425C3 ::v44(){vfunc_called(this, "_ZN7S3425C33v44Ev");}
void  S3425C3 ::v45(){vfunc_called(this, "_ZN7S3425C33v45Ev");}
void  S3425C3 ::v46(){vfunc_called(this, "_ZN7S3425C33v46Ev");}
void  S3425C3 ::v47(){vfunc_called(this, "_ZN7S3425C33v47Ev");}
void  S3425C3 ::v48(){vfunc_called(this, "_ZN7S3425C33v48Ev");}
void  S3425C3 ::v49(){vfunc_called(this, "_ZN7S3425C33v49Ev");}
void  S3425C3 ::v50(){vfunc_called(this, "_ZN7S3425C33v50Ev");}
void  S3425C3 ::v51(){vfunc_called(this, "_ZN7S3425C33v51Ev");}
void  S3425C3 ::v52(){vfunc_called(this, "_ZN7S3425C33v52Ev");}
void  S3425C3 ::v53(){vfunc_called(this, "_ZN7S3425C33v53Ev");}
void  S3425C3 ::v54(){vfunc_called(this, "_ZN7S3425C33v54Ev");}
void  S3425C3 ::v55(){vfunc_called(this, "_ZN7S3425C33v55Ev");}
void  S3425C3 ::v56(){vfunc_called(this, "_ZN7S3425C33v56Ev");}
void  S3425C3 ::v57(){vfunc_called(this, "_ZN7S3425C33v57Ev");}
void  S3425C3 ::v58(){vfunc_called(this, "_ZN7S3425C33v58Ev");}
void  S3425C3 ::v59(){vfunc_called(this, "_ZN7S3425C33v59Ev");}
void  S3425C3 ::v60(){vfunc_called(this, "_ZN7S3425C33v60Ev");}
void  S3425C3 ::v61(){vfunc_called(this, "_ZN7S3425C33v61Ev");}
void  S3425C3 ::v62(){vfunc_called(this, "_ZN7S3425C33v62Ev");}
void  S3425C3 ::v63(){vfunc_called(this, "_ZN7S3425C33v63Ev");}
void  S3425C3 ::v64(){vfunc_called(this, "_ZN7S3425C33v64Ev");}
void  S3425C3 ::v65(){vfunc_called(this, "_ZN7S3425C33v65Ev");}
void  S3425C3 ::v66(){vfunc_called(this, "_ZN7S3425C33v66Ev");}
void  S3425C3 ::v67(){vfunc_called(this, "_ZN7S3425C33v67Ev");}
void  S3425C3 ::v68(){vfunc_called(this, "_ZN7S3425C33v68Ev");}
void  S3425C3 ::v69(){vfunc_called(this, "_ZN7S3425C33v69Ev");}
void  S3425C3 ::v70(){vfunc_called(this, "_ZN7S3425C33v70Ev");}
void  S3425C3 ::v71(){vfunc_called(this, "_ZN7S3425C33v71Ev");}
S3425C3 ::S3425C3(){ note_ctor("S3425C3", this);} // tgen

static void Test_S3425C3()
{
  extern Class_Descriptor cd_S3425C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3425C3, buf);
    S3425C3 *dp, &lv = *(dp=new (buf) S3425C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3425C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3425C3)");
    check_field_offset(lv, s3425c3f0, ABISELECT(8,4), "S3425C3.s3425c3f0");
    check_field_offset(lv, s3425c3f1, ABISELECT(16,8), "S3425C3.s3425c3f1");
    check_field_offset(lv, s3425c3f2, ABISELECT(24,16), "S3425C3.s3425c3f2");
    check_field_offset(lv, s3425c3f3, ABISELECT(56,32), "S3425C3.s3425c3f3");
    check_field_offset(lv, s3425c3f4, ABISELECT(64,40), "S3425C3.s3425c3f4");
    check_field_offset(lv, s3425c3f5, ABISELECT(72,44), "S3425C3.s3425c3f5");
    check_field_offset(lv, s3425c3f6, ABISELECT(80,52), "S3425C3.s3425c3f6");
    test_class_info(&lv, &cd_S3425C3);
    dp->~S3425C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3425C3(Test_S3425C3, "S3425C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3425C3C1Ev();
extern void _ZN7S3425C3D1Ev();
Name_Map name_map_S3425C3[] = {
  NSPAIR(_ZN7S3425C3C1Ev),
  NSPAIR(_ZN7S3425C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3425C3[];
extern void _ZN7S3425C3D1Ev();
extern void _ZN7S3425C3D0Ev();
extern void _ZN7S3425C32v8Ev();
extern void _ZN7S3425C32v9Ev();
extern void _ZN7S3425C33v10Ev();
extern void _ZN7S3425C33v11Ev();
extern void _ZN7S3425C33v12Ev();
extern void _ZN7S3425C33v13Ev();
extern void _ZN7S3425C33v14Ev();
extern void _ZN7S3425C33v15Ev();
extern void _ZN7S3425C33v16Ev();
extern void _ZN7S3425C33v17Ev();
extern void _ZN7S3425C33v18Ev();
extern void _ZN7S3425C33v19Ev();
extern void _ZN7S3425C33v20Ev();
extern void _ZN7S3425C33v21Ev();
extern void _ZN7S3425C33v22Ev();
extern void _ZN7S3425C33v23Ev();
extern void _ZN7S3425C33v24Ev();
extern void _ZN7S3425C33v25Ev();
extern void _ZN7S3425C33v26Ev();
extern void _ZN7S3425C33v27Ev();
extern void _ZN7S3425C33v28Ev();
extern void _ZN7S3425C33v29Ev();
extern void _ZN7S3425C33v30Ev();
extern void _ZN7S3425C33v31Ev();
extern void _ZN7S3425C33v32Ev();
extern void _ZN7S3425C33v33Ev();
extern void _ZN7S3425C33v34Ev();
extern void _ZN7S3425C33v35Ev();
extern void _ZN7S3425C33v36Ev();
extern void _ZN7S3425C33v37Ev();
extern void _ZN7S3425C33v38Ev();
extern void _ZN7S3425C33v39Ev();
extern void _ZN7S3425C33v40Ev();
extern void _ZN7S3425C33v41Ev();
extern void _ZN7S3425C33v42Ev();
extern void _ZN7S3425C33v43Ev();
extern void _ZN7S3425C33v44Ev();
extern void _ZN7S3425C33v45Ev();
extern void _ZN7S3425C33v46Ev();
extern void _ZN7S3425C33v47Ev();
extern void _ZN7S3425C33v48Ev();
extern void _ZN7S3425C33v49Ev();
extern void _ZN7S3425C33v50Ev();
extern void _ZN7S3425C33v51Ev();
extern void _ZN7S3425C33v52Ev();
extern void _ZN7S3425C33v53Ev();
extern void _ZN7S3425C33v54Ev();
extern void _ZN7S3425C33v55Ev();
extern void _ZN7S3425C33v56Ev();
extern void _ZN7S3425C33v57Ev();
extern void _ZN7S3425C33v58Ev();
extern void _ZN7S3425C33v59Ev();
extern void _ZN7S3425C33v60Ev();
extern void _ZN7S3425C33v61Ev();
extern void _ZN7S3425C33v62Ev();
extern void _ZN7S3425C33v63Ev();
extern void _ZN7S3425C33v64Ev();
extern void _ZN7S3425C33v65Ev();
extern void _ZN7S3425C33v66Ev();
extern void _ZN7S3425C33v67Ev();
extern void _ZN7S3425C33v68Ev();
extern void _ZN7S3425C33v69Ev();
extern void _ZN7S3425C33v70Ev();
extern void _ZN7S3425C33v71Ev();
static  VTBL_ENTRY vtc_S3425C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3425C3[0]),
  (VTBL_ENTRY)&_ZN7S3425C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3425C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3425C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3425C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v71Ev,
};
extern VTBL_ENTRY _ZTI7S3425C3[];
extern  VTBL_ENTRY _ZTV7S3425C3[];
Class_Descriptor cd_S3425C3 = {  "S3425C3", // class name
  0,0,//no base classes
  &(vtc_S3425C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3425C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3425C3),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  S3425C2  : S3425C3 {
  void *s3425c2f0;
  ::S28C31_nt s3425c2f1;
  int s3425c2f2;
  void *s3425c2f3;
  unsigned int s3425c2f4:1;
  ::S28C31_nt s3425c2f5;
  virtual  ~S3425C2(); // _ZN7S3425C2D1Ev
  virtual void  v72(); // _ZN7S3425C23v72Ev
  virtual void  v73(); // _ZN7S3425C23v73Ev
  virtual void  v74(); // _ZN7S3425C23v74Ev
  virtual void  v75(); // _ZN7S3425C23v75Ev
  virtual void  v76(); // _ZN7S3425C23v76Ev
  virtual void  v77(); // _ZN7S3425C23v77Ev
  virtual void  v78(); // _ZN7S3425C23v78Ev
  virtual void  v79(); // _ZN7S3425C23v79Ev
  S3425C2(); // tgen
};
//SIG(-1 S3425C2) C1{ BC2{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 Fp FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC4}


 S3425C2 ::~S3425C2(){ note_dtor("S3425C2", this);}
void  S3425C2 ::v72(){vfunc_called(this, "_ZN7S3425C23v72Ev");}
void  S3425C2 ::v73(){vfunc_called(this, "_ZN7S3425C23v73Ev");}
void  S3425C2 ::v74(){vfunc_called(this, "_ZN7S3425C23v74Ev");}
void  S3425C2 ::v75(){vfunc_called(this, "_ZN7S3425C23v75Ev");}
void  S3425C2 ::v76(){vfunc_called(this, "_ZN7S3425C23v76Ev");}
void  S3425C2 ::v77(){vfunc_called(this, "_ZN7S3425C23v77Ev");}
void  S3425C2 ::v78(){vfunc_called(this, "_ZN7S3425C23v78Ev");}
void  S3425C2 ::v79(){vfunc_called(this, "_ZN7S3425C23v79Ev");}
S3425C2 ::S3425C2(){ note_ctor("S3425C2", this);} // tgen

static void Test_S3425C2()
{
  extern Class_Descriptor cd_S3425C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,26)];
    init_test(&cd_S3425C2, buf);
    S3425C2 *dp, &lv = *(dp=new (buf) S3425C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,100), "sizeof(S3425C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3425C2)");
    check_base_class_offset(lv, (S3425C3*), 0, "S3425C2");
    check_field_offset(lv, s3425c2f0, ABISELECT(96,60), "S3425C2.s3425c2f0");
    check_field_offset(lv, s3425c2f1, ABISELECT(104,64), "S3425C2.s3425c2f1");
    check_field_offset(lv, s3425c2f2, ABISELECT(120,76), "S3425C2.s3425c2f2");
    check_field_offset(lv, s3425c2f3, ABISELECT(128,80), "S3425C2.s3425c2f3");
    set_bf_and_test(lv, s3425c2f4, ABISELECT(136,84), 0, 1, 1, "S3425C2");
    check_field_offset(lv, s3425c2f5, ABISELECT(144,88), "S3425C2.s3425c2f5");
    test_class_info(&lv, &cd_S3425C2);
    dp->~S3425C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3425C2(Test_S3425C2, "S3425C2", ABISELECT(160,100));

#else // __cplusplus

extern void _ZN7S3425C2C1Ev();
extern void _ZN7S3425C2D1Ev();
Name_Map name_map_S3425C2[] = {
  NSPAIR(_ZN7S3425C2C1Ev),
  NSPAIR(_ZN7S3425C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3425C3;
extern VTBL_ENTRY _ZTI7S3425C3[];
extern  VTBL_ENTRY _ZTV7S3425C3[];
static Base_Class bases_S3425C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3425C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3425C2[];
extern void _ZN7S3425C2D1Ev();
extern void _ZN7S3425C2D0Ev();
extern void _ZN7S3425C32v8Ev();
extern void _ZN7S3425C32v9Ev();
extern void _ZN7S3425C33v10Ev();
extern void _ZN7S3425C33v11Ev();
extern void _ZN7S3425C33v12Ev();
extern void _ZN7S3425C33v13Ev();
extern void _ZN7S3425C33v14Ev();
extern void _ZN7S3425C33v15Ev();
extern void _ZN7S3425C33v16Ev();
extern void _ZN7S3425C33v17Ev();
extern void _ZN7S3425C33v18Ev();
extern void _ZN7S3425C33v19Ev();
extern void _ZN7S3425C33v20Ev();
extern void _ZN7S3425C33v21Ev();
extern void _ZN7S3425C33v22Ev();
extern void _ZN7S3425C33v23Ev();
extern void _ZN7S3425C33v24Ev();
extern void _ZN7S3425C33v25Ev();
extern void _ZN7S3425C33v26Ev();
extern void _ZN7S3425C33v27Ev();
extern void _ZN7S3425C33v28Ev();
extern void _ZN7S3425C33v29Ev();
extern void _ZN7S3425C33v30Ev();
extern void _ZN7S3425C33v31Ev();
extern void _ZN7S3425C33v32Ev();
extern void _ZN7S3425C33v33Ev();
extern void _ZN7S3425C33v34Ev();
extern void _ZN7S3425C33v35Ev();
extern void _ZN7S3425C33v36Ev();
extern void _ZN7S3425C33v37Ev();
extern void _ZN7S3425C33v38Ev();
extern void _ZN7S3425C33v39Ev();
extern void _ZN7S3425C33v40Ev();
extern void _ZN7S3425C33v41Ev();
extern void _ZN7S3425C33v42Ev();
extern void _ZN7S3425C33v43Ev();
extern void _ZN7S3425C33v44Ev();
extern void _ZN7S3425C33v45Ev();
extern void _ZN7S3425C33v46Ev();
extern void _ZN7S3425C33v47Ev();
extern void _ZN7S3425C33v48Ev();
extern void _ZN7S3425C33v49Ev();
extern void _ZN7S3425C33v50Ev();
extern void _ZN7S3425C33v51Ev();
extern void _ZN7S3425C33v52Ev();
extern void _ZN7S3425C33v53Ev();
extern void _ZN7S3425C33v54Ev();
extern void _ZN7S3425C33v55Ev();
extern void _ZN7S3425C33v56Ev();
extern void _ZN7S3425C33v57Ev();
extern void _ZN7S3425C33v58Ev();
extern void _ZN7S3425C33v59Ev();
extern void _ZN7S3425C33v60Ev();
extern void _ZN7S3425C33v61Ev();
extern void _ZN7S3425C33v62Ev();
extern void _ZN7S3425C33v63Ev();
extern void _ZN7S3425C33v64Ev();
extern void _ZN7S3425C33v65Ev();
extern void _ZN7S3425C33v66Ev();
extern void _ZN7S3425C33v67Ev();
extern void _ZN7S3425C33v68Ev();
extern void _ZN7S3425C33v69Ev();
extern void _ZN7S3425C33v70Ev();
extern void _ZN7S3425C33v71Ev();
extern void _ZN7S3425C23v72Ev();
extern void _ZN7S3425C23v73Ev();
extern void _ZN7S3425C23v74Ev();
extern void _ZN7S3425C23v75Ev();
extern void _ZN7S3425C23v76Ev();
extern void _ZN7S3425C23v77Ev();
extern void _ZN7S3425C23v78Ev();
extern void _ZN7S3425C23v79Ev();
static  VTBL_ENTRY vtc_S3425C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3425C2[0]),
  (VTBL_ENTRY)&_ZN7S3425C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3425C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3425C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3425C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3425C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3425C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3425C23v74Ev,
  (VTBL_ENTRY)&_ZN7S3425C23v75Ev,
  (VTBL_ENTRY)&_ZN7S3425C23v76Ev,
  (VTBL_ENTRY)&_ZN7S3425C23v77Ev,
  (VTBL_ENTRY)&_ZN7S3425C23v78Ev,
  (VTBL_ENTRY)&_ZN7S3425C23v79Ev,
};
extern VTBL_ENTRY _ZTI7S3425C2[];
extern  VTBL_ENTRY _ZTV7S3425C2[];
Class_Descriptor cd_S3425C2 = {  "S3425C2", // class name
  bases_S3425C2, 1,
  &(vtc_S3425C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,100), // object size
  NSPAIRA(_ZTI7S3425C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3425C2),76, //virtual function table var
  2, // 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  S3425C1  : S3425C2 {
  void *s3425c1f0;
  virtual  ~S3425C1(); // _ZN7S3425C1D1Ev
  virtual void  v1(); // _ZN7S3425C12v1Ev
  virtual void  v2(); // _ZN7S3425C12v2Ev
  virtual void  v3(); // _ZN7S3425C12v3Ev
  virtual void  v4(); // _ZN7S3425C12v4Ev
  virtual void  v5(); // _ZN7S3425C12v5Ev
  virtual void  v6(); // _ZN7S3425C12v6Ev
  virtual void  v7(); // _ZN7S3425C12v7Ev
  S3425C1(); // tgen
};
//SIG(1 S3425C1) C1{ BC2{ BC3{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v72 v73 v74 v75 v76 v77 v78 v79 Fp FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC5} vd v1 v2 v3 v4 v5 v6 v7 Fp}


 S3425C1 ::~S3425C1(){ note_dtor("S3425C1", this);}
void  S3425C1 ::v1(){vfunc_called(this, "_ZN7S3425C12v1Ev");}
void  S3425C1 ::v2(){vfunc_called(this, "_ZN7S3425C12v2Ev");}
void  S3425C1 ::v3(){vfunc_called(this, "_ZN7S3425C12v3Ev");}
void  S3425C1 ::v4(){vfunc_called(this, "_ZN7S3425C12v4Ev");}
void  S3425C1 ::v5(){vfunc_called(this, "_ZN7S3425C12v5Ev");}
void  S3425C1 ::v6(){vfunc_called(this, "_ZN7S3425C12v6Ev");}
void  S3425C1 ::v7(){vfunc_called(this, "_ZN7S3425C12v7Ev");}
S3425C1 ::S3425C1(){ note_ctor("S3425C1", this);} // tgen

static void Test_S3425C1()
{
  extern Class_Descriptor cd_S3425C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,27)];
    init_test(&cd_S3425C1, buf);
    S3425C1 *dp, &lv = *(dp=new (buf) S3425C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,104), "sizeof(S3425C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3425C1)");
    check_base_class_offset(lv, (S3425C3*)(S3425C2*), 0, "S3425C1");
    check_base_class_offset(lv, (S3425C2*), 0, "S3425C1");
    check_field_offset(lv, s3425c1f0, ABISELECT(160,100), "S3425C1.s3425c1f0");
    test_class_info(&lv, &cd_S3425C1);
    dp->~S3425C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3425C1(Test_S3425C1, "S3425C1", ABISELECT(168,104));

#else // __cplusplus

extern void _ZN7S3425C1C1Ev();
extern void _ZN7S3425C1D1Ev();
Name_Map name_map_S3425C1[] = {
  NSPAIR(_ZN7S3425C1C1Ev),
  NSPAIR(_ZN7S3425C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3425C3;
extern VTBL_ENTRY _ZTI7S3425C3[];
extern  VTBL_ENTRY _ZTV7S3425C3[];
extern Class_Descriptor cd_S3425C2;
extern VTBL_ENTRY _ZTI7S3425C2[];
extern  VTBL_ENTRY _ZTV7S3425C2[];
static Base_Class bases_S3425C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3425C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3425C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3425C1[];
extern void _ZN7S3425C1D1Ev();
extern void _ZN7S3425C1D0Ev();
extern void _ZN7S3425C32v8Ev();
extern void _ZN7S3425C32v9Ev();
extern void _ZN7S3425C33v10Ev();
extern void _ZN7S3425C33v11Ev();
extern void _ZN7S3425C33v12Ev();
extern void _ZN7S3425C33v13Ev();
extern void _ZN7S3425C33v14Ev();
extern void _ZN7S3425C33v15Ev();
extern void _ZN7S3425C33v16Ev();
extern void _ZN7S3425C33v17Ev();
extern void _ZN7S3425C33v18Ev();
extern void _ZN7S3425C33v19Ev();
extern void _ZN7S3425C33v20Ev();
extern void _ZN7S3425C33v21Ev();
extern void _ZN7S3425C33v22Ev();
extern void _ZN7S3425C33v23Ev();
extern void _ZN7S3425C33v24Ev();
extern void _ZN7S3425C33v25Ev();
extern void _ZN7S3425C33v26Ev();
extern void _ZN7S3425C33v27Ev();
extern void _ZN7S3425C33v28Ev();
extern void _ZN7S3425C33v29Ev();
extern void _ZN7S3425C33v30Ev();
extern void _ZN7S3425C33v31Ev();
extern void _ZN7S3425C33v32Ev();
extern void _ZN7S3425C33v33Ev();
extern void _ZN7S3425C33v34Ev();
extern void _ZN7S3425C33v35Ev();
extern void _ZN7S3425C33v36Ev();
extern void _ZN7S3425C33v37Ev();
extern void _ZN7S3425C33v38Ev();
extern void _ZN7S3425C33v39Ev();
extern void _ZN7S3425C33v40Ev();
extern void _ZN7S3425C33v41Ev();
extern void _ZN7S3425C33v42Ev();
extern void _ZN7S3425C33v43Ev();
extern void _ZN7S3425C33v44Ev();
extern void _ZN7S3425C33v45Ev();
extern void _ZN7S3425C33v46Ev();
extern void _ZN7S3425C33v47Ev();
extern void _ZN7S3425C33v48Ev();
extern void _ZN7S3425C33v49Ev();
extern void _ZN7S3425C33v50Ev();
extern void _ZN7S3425C33v51Ev();
extern void _ZN7S3425C33v52Ev();
extern void _ZN7S3425C33v53Ev();
extern void _ZN7S3425C33v54Ev();
extern void _ZN7S3425C33v55Ev();
extern void _ZN7S3425C33v56Ev();
extern void _ZN7S3425C33v57Ev();
extern void _ZN7S3425C33v58Ev();
extern void _ZN7S3425C33v59Ev();
extern void _ZN7S3425C33v60Ev();
extern void _ZN7S3425C33v61Ev();
extern void _ZN7S3425C33v62Ev();
extern void _ZN7S3425C33v63Ev();
extern void _ZN7S3425C33v64Ev();
extern void _ZN7S3425C33v65Ev();
extern void _ZN7S3425C33v66Ev();
extern void _ZN7S3425C33v67Ev();
extern void _ZN7S3425C33v68Ev();
extern void _ZN7S3425C33v69Ev();
extern void _ZN7S3425C33v70Ev();
extern void _ZN7S3425C33v71Ev();
extern void _ZN7S3425C23v72Ev();
extern void _ZN7S3425C23v73Ev();
extern void _ZN7S3425C23v74Ev();
extern void _ZN7S3425C23v75Ev();
extern void _ZN7S3425C23v76Ev();
extern void _ZN7S3425C23v77Ev();
extern void _ZN7S3425C23v78Ev();
extern void _ZN7S3425C23v79Ev();
extern void _ZN7S3425C12v1Ev();
extern void _ZN7S3425C12v2Ev();
extern void _ZN7S3425C12v3Ev();
extern void _ZN7S3425C12v4Ev();
extern void _ZN7S3425C12v5Ev();
extern void _ZN7S3425C12v6Ev();
extern void _ZN7S3425C12v7Ev();
static  VTBL_ENTRY vtc_S3425C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3425C1[0]),
  (VTBL_ENTRY)&_ZN7S3425C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3425C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3425C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3425C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3425C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3425C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3425C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3425C23v74Ev,
  (VTBL_ENTRY)&_ZN7S3425C23v75Ev,
  (VTBL_ENTRY)&_ZN7S3425C23v76Ev,
  (VTBL_ENTRY)&_ZN7S3425C23v77Ev,
  (VTBL_ENTRY)&_ZN7S3425C23v78Ev,
  (VTBL_ENTRY)&_ZN7S3425C23v79Ev,
  (VTBL_ENTRY)&_ZN7S3425C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3425C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3425C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3425C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3425C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3425C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3425C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S3425C1[];
extern  VTBL_ENTRY _ZTV7S3425C1[];
Class_Descriptor cd_S3425C1 = {  "S3425C1", // class name
  bases_S3425C1, 2,
  &(vtc_S3425C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,104), // object size
  NSPAIRA(_ZTI7S3425C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3425C1),83, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3398C3  {
  int s3398c3f0;
  __tsi64 s3398c3f1;
  void *s3398c3f2[4];
  int s3398c3f3[2];
  void *s3398c3f4;
  ::S28C9_nt s3398c3f5;
  void *s3398c3f6[2];
  virtual  ~S3398C3(); // _ZN7S3398C3D1Ev
  virtual void  v7(); // _ZN7S3398C32v7Ev
  virtual void  v8(); // _ZN7S3398C32v8Ev
  virtual void  v9(); // _ZN7S3398C32v9Ev
  virtual void  v10(); // _ZN7S3398C33v10Ev
  virtual void  v11(); // _ZN7S3398C33v11Ev
  virtual void  v12(); // _ZN7S3398C33v12Ev
  virtual void  v13(); // _ZN7S3398C33v13Ev
  virtual void  v14(); // _ZN7S3398C33v14Ev
  virtual void  v15(); // _ZN7S3398C33v15Ev
  virtual void  v16(); // _ZN7S3398C33v16Ev
  virtual void  v17(); // _ZN7S3398C33v17Ev
  virtual void  v18(); // _ZN7S3398C33v18Ev
  virtual void  v19(); // _ZN7S3398C33v19Ev
  virtual void  v20(); // _ZN7S3398C33v20Ev
  virtual void  v21(); // _ZN7S3398C33v21Ev
  virtual void  v22(); // _ZN7S3398C33v22Ev
  virtual void  v23(); // _ZN7S3398C33v23Ev
  virtual void  v24(); // _ZN7S3398C33v24Ev
  virtual void  v25(); // _ZN7S3398C33v25Ev
  virtual void  v26(); // _ZN7S3398C33v26Ev
  virtual void  v27(); // _ZN7S3398C33v27Ev
  virtual void  v28(); // _ZN7S3398C33v28Ev
  virtual void  v29(); // _ZN7S3398C33v29Ev
  virtual void  v30(); // _ZN7S3398C33v30Ev
  virtual void  v31(); // _ZN7S3398C33v31Ev
  virtual void  v32(); // _ZN7S3398C33v32Ev
  virtual void  v33(); // _ZN7S3398C33v33Ev
  virtual void  v34(); // _ZN7S3398C33v34Ev
  virtual void  v35(); // _ZN7S3398C33v35Ev
  virtual void  v36(); // _ZN7S3398C33v36Ev
  virtual void  v37(); // _ZN7S3398C33v37Ev
  virtual void  v38(); // _ZN7S3398C33v38Ev
  virtual void  v39(); // _ZN7S3398C33v39Ev
  virtual void  v40(); // _ZN7S3398C33v40Ev
  virtual void  v41(); // _ZN7S3398C33v41Ev
  virtual void  v42(); // _ZN7S3398C33v42Ev
  virtual void  v43(); // _ZN7S3398C33v43Ev
  virtual void  v44(); // _ZN7S3398C33v44Ev
  virtual void  v45(); // _ZN7S3398C33v45Ev
  virtual void  v46(); // _ZN7S3398C33v46Ev
  virtual void  v47(); // _ZN7S3398C33v47Ev
  virtual void  v48(); // _ZN7S3398C33v48Ev
  virtual void  v49(); // _ZN7S3398C33v49Ev
  virtual void  v50(); // _ZN7S3398C33v50Ev
  virtual void  v51(); // _ZN7S3398C33v51Ev
  virtual void  v52(); // _ZN7S3398C33v52Ev
  virtual void  v53(); // _ZN7S3398C33v53Ev
  virtual void  v54(); // _ZN7S3398C33v54Ev
  virtual void  v55(); // _ZN7S3398C33v55Ev
  virtual void  v56(); // _ZN7S3398C33v56Ev
  virtual void  v57(); // _ZN7S3398C33v57Ev
  virtual void  v58(); // _ZN7S3398C33v58Ev
  virtual void  v59(); // _ZN7S3398C33v59Ev
  virtual void  v60(); // _ZN7S3398C33v60Ev
  virtual void  v61(); // _ZN7S3398C33v61Ev
  virtual void  v62(); // _ZN7S3398C33v62Ev
  virtual void  v63(); // _ZN7S3398C33v63Ev
  virtual void  v64(); // _ZN7S3398C33v64Ev
  virtual void  v65(); // _ZN7S3398C33v65Ev
  virtual void  v66(); // _ZN7S3398C33v66Ev
  virtual void  v67(); // _ZN7S3398C33v67Ev
  virtual void  v68(); // _ZN7S3398C33v68Ev
  virtual void  v69(); // _ZN7S3398C33v69Ev
  virtual void  v70(); // _ZN7S3398C33v70Ev
  S3398C3(); // tgen
};
//SIG(-1 S3398C3) 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]}


 S3398C3 ::~S3398C3(){ note_dtor("S3398C3", this);}
void  S3398C3 ::v7(){vfunc_called(this, "_ZN7S3398C32v7Ev");}
void  S3398C3 ::v8(){vfunc_called(this, "_ZN7S3398C32v8Ev");}
void  S3398C3 ::v9(){vfunc_called(this, "_ZN7S3398C32v9Ev");}
void  S3398C3 ::v10(){vfunc_called(this, "_ZN7S3398C33v10Ev");}
void  S3398C3 ::v11(){vfunc_called(this, "_ZN7S3398C33v11Ev");}
void  S3398C3 ::v12(){vfunc_called(this, "_ZN7S3398C33v12Ev");}
void  S3398C3 ::v13(){vfunc_called(this, "_ZN7S3398C33v13Ev");}
void  S3398C3 ::v14(){vfunc_called(this, "_ZN7S3398C33v14Ev");}
void  S3398C3 ::v15(){vfunc_called(this, "_ZN7S3398C33v15Ev");}
void  S3398C3 ::v16(){vfunc_called(this, "_ZN7S3398C33v16Ev");}
void  S3398C3 ::v17(){vfunc_called(this, "_ZN7S3398C33v17Ev");}
void  S3398C3 ::v18(){vfunc_called(this, "_ZN7S3398C33v18Ev");}
void  S3398C3 ::v19(){vfunc_called(this, "_ZN7S3398C33v19Ev");}
void  S3398C3 ::v20(){vfunc_called(this, "_ZN7S3398C33v20Ev");}
void  S3398C3 ::v21(){vfunc_called(this, "_ZN7S3398C33v21Ev");}
void  S3398C3 ::v22(){vfunc_called(this, "_ZN7S3398C33v22Ev");}
void  S3398C3 ::v23(){vfunc_called(this, "_ZN7S3398C33v23Ev");}
void  S3398C3 ::v24(){vfunc_called(this, "_ZN7S3398C33v24Ev");}
void  S3398C3 ::v25(){vfunc_called(this, "_ZN7S3398C33v25Ev");}
void  S3398C3 ::v26(){vfunc_called(this, "_ZN7S3398C33v26Ev");}
void  S3398C3 ::v27(){vfunc_called(this, "_ZN7S3398C33v27Ev");}
void  S3398C3 ::v28(){vfunc_called(this, "_ZN7S3398C33v28Ev");}
void  S3398C3 ::v29(){vfunc_called(this, "_ZN7S3398C33v29Ev");}
void  S3398C3 ::v30(){vfunc_called(this, "_ZN7S3398C33v30Ev");}
void  S3398C3 ::v31(){vfunc_called(this, "_ZN7S3398C33v31Ev");}
void  S3398C3 ::v32(){vfunc_called(this, "_ZN7S3398C33v32Ev");}
void  S3398C3 ::v33(){vfunc_called(this, "_ZN7S3398C33v33Ev");}
void  S3398C3 ::v34(){vfunc_called(this, "_ZN7S3398C33v34Ev");}
void  S3398C3 ::v35(){vfunc_called(this, "_ZN7S3398C33v35Ev");}
void  S3398C3 ::v36(){vfunc_called(this, "_ZN7S3398C33v36Ev");}
void  S3398C3 ::v37(){vfunc_called(this, "_ZN7S3398C33v37Ev");}
void  S3398C3 ::v38(){vfunc_called(this, "_ZN7S3398C33v38Ev");}
void  S3398C3 ::v39(){vfunc_called(this, "_ZN7S3398C33v39Ev");}
void  S3398C3 ::v40(){vfunc_called(this, "_ZN7S3398C33v40Ev");}
void  S3398C3 ::v41(){vfunc_called(this, "_ZN7S3398C33v41Ev");}
void  S3398C3 ::v42(){vfunc_called(this, "_ZN7S3398C33v42Ev");}
void  S3398C3 ::v43(){vfunc_called(this, "_ZN7S3398C33v43Ev");}
void  S3398C3 ::v44(){vfunc_called(this, "_ZN7S3398C33v44Ev");}
void  S3398C3 ::v45(){vfunc_called(this, "_ZN7S3398C33v45Ev");}
void  S3398C3 ::v46(){vfunc_called(this, "_ZN7S3398C33v46Ev");}
void  S3398C3 ::v47(){vfunc_called(this, "_ZN7S3398C33v47Ev");}
void  S3398C3 ::v48(){vfunc_called(this, "_ZN7S3398C33v48Ev");}
void  S3398C3 ::v49(){vfunc_called(this, "_ZN7S3398C33v49Ev");}
void  S3398C3 ::v50(){vfunc_called(this, "_ZN7S3398C33v50Ev");}
void  S3398C3 ::v51(){vfunc_called(this, "_ZN7S3398C33v51Ev");}
void  S3398C3 ::v52(){vfunc_called(this, "_ZN7S3398C33v52Ev");}
void  S3398C3 ::v53(){vfunc_called(this, "_ZN7S3398C33v53Ev");}
void  S3398C3 ::v54(){vfunc_called(this, "_ZN7S3398C33v54Ev");}
void  S3398C3 ::v55(){vfunc_called(this, "_ZN7S3398C33v55Ev");}
void  S3398C3 ::v56(){vfunc_called(this, "_ZN7S3398C33v56Ev");}
void  S3398C3 ::v57(){vfunc_called(this, "_ZN7S3398C33v57Ev");}
void  S3398C3 ::v58(){vfunc_called(this, "_ZN7S3398C33v58Ev");}
void  S3398C3 ::v59(){vfunc_called(this, "_ZN7S3398C33v59Ev");}
void  S3398C3 ::v60(){vfunc_called(this, "_ZN7S3398C33v60Ev");}
void  S3398C3 ::v61(){vfunc_called(this, "_ZN7S3398C33v61Ev");}
void  S3398C3 ::v62(){vfunc_called(this, "_ZN7S3398C33v62Ev");}
void  S3398C3 ::v63(){vfunc_called(this, "_ZN7S3398C33v63Ev");}
void  S3398C3 ::v64(){vfunc_called(this, "_ZN7S3398C33v64Ev");}
void  S3398C3 ::v65(){vfunc_called(this, "_ZN7S3398C33v65Ev");}
void  S3398C3 ::v66(){vfunc_called(this, "_ZN7S3398C33v66Ev");}
void  S3398C3 ::v67(){vfunc_called(this, "_ZN7S3398C33v67Ev");}
void  S3398C3 ::v68(){vfunc_called(this, "_ZN7S3398C33v68Ev");}
void  S3398C3 ::v69(){vfunc_called(this, "_ZN7S3398C33v69Ev");}
void  S3398C3 ::v70(){vfunc_called(this, "_ZN7S3398C33v70Ev");}
S3398C3 ::S3398C3(){ note_ctor("S3398C3", this);} // tgen

static void Test_S3398C3()
{
  extern Class_Descriptor cd_S3398C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3398C3, buf);
    S3398C3 *dp, &lv = *(dp=new (buf) S3398C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3398C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3398C3)");
    check_field_offset(lv, s3398c3f0, ABISELECT(8,4), "S3398C3.s3398c3f0");
    check_field_offset(lv, s3398c3f1, ABISELECT(16,8), "S3398C3.s3398c3f1");
    check_field_offset(lv, s3398c3f2, ABISELECT(24,16), "S3398C3.s3398c3f2");
    check_field_offset(lv, s3398c3f3, ABISELECT(56,32), "S3398C3.s3398c3f3");
    check_field_offset(lv, s3398c3f4, ABISELECT(64,40), "S3398C3.s3398c3f4");
    check_field_offset(lv, s3398c3f5, ABISELECT(72,44), "S3398C3.s3398c3f5");
    check_field_offset(lv, s3398c3f6, ABISELECT(80,52), "S3398C3.s3398c3f6");
    test_class_info(&lv, &cd_S3398C3);
    dp->~S3398C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3398C3(Test_S3398C3, "S3398C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3398C3C1Ev();
extern void _ZN7S3398C3D1Ev();
Name_Map name_map_S3398C3[] = {
  NSPAIR(_ZN7S3398C3C1Ev),
  NSPAIR(_ZN7S3398C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3398C3[];
extern void _ZN7S3398C3D1Ev();
extern void _ZN7S3398C3D0Ev();
extern void _ZN7S3398C32v7Ev();
extern void _ZN7S3398C32v8Ev();
extern void _ZN7S3398C32v9Ev();
extern void _ZN7S3398C33v10Ev();
extern void _ZN7S3398C33v11Ev();
extern void _ZN7S3398C33v12Ev();
extern void _ZN7S3398C33v13Ev();
extern void _ZN7S3398C33v14Ev();
extern void _ZN7S3398C33v15Ev();
extern void _ZN7S3398C33v16Ev();
extern void _ZN7S3398C33v17Ev();
extern void _ZN7S3398C33v18Ev();
extern void _ZN7S3398C33v19Ev();
extern void _ZN7S3398C33v20Ev();
extern void _ZN7S3398C33v21Ev();
extern void _ZN7S3398C33v22Ev();
extern void _ZN7S3398C33v23Ev();
extern void _ZN7S3398C33v24Ev();
extern void _ZN7S3398C33v25Ev();
extern void _ZN7S3398C33v26Ev();
extern void _ZN7S3398C33v27Ev();
extern void _ZN7S3398C33v28Ev();
extern void _ZN7S3398C33v29Ev();
extern void _ZN7S3398C33v30Ev();
extern void _ZN7S3398C33v31Ev();
extern void _ZN7S3398C33v32Ev();
extern void _ZN7S3398C33v33Ev();
extern void _ZN7S3398C33v34Ev();
extern void _ZN7S3398C33v35Ev();
extern void _ZN7S3398C33v36Ev();
extern void _ZN7S3398C33v37Ev();
extern void _ZN7S3398C33v38Ev();
extern void _ZN7S3398C33v39Ev();
extern void _ZN7S3398C33v40Ev();
extern void _ZN7S3398C33v41Ev();
extern void _ZN7S3398C33v42Ev();
extern void _ZN7S3398C33v43Ev();
extern void _ZN7S3398C33v44Ev();
extern void _ZN7S3398C33v45Ev();
extern void _ZN7S3398C33v46Ev();
extern void _ZN7S3398C33v47Ev();
extern void _ZN7S3398C33v48Ev();
extern void _ZN7S3398C33v49Ev();
extern void _ZN7S3398C33v50Ev();
extern void _ZN7S3398C33v51Ev();
extern void _ZN7S3398C33v52Ev();
extern void _ZN7S3398C33v53Ev();
extern void _ZN7S3398C33v54Ev();
extern void _ZN7S3398C33v55Ev();
extern void _ZN7S3398C33v56Ev();
extern void _ZN7S3398C33v57Ev();
extern void _ZN7S3398C33v58Ev();
extern void _ZN7S3398C33v59Ev();
extern void _ZN7S3398C33v60Ev();
extern void _ZN7S3398C33v61Ev();
extern void _ZN7S3398C33v62Ev();
extern void _ZN7S3398C33v63Ev();
extern void _ZN7S3398C33v64Ev();
extern void _ZN7S3398C33v65Ev();
extern void _ZN7S3398C33v66Ev();
extern void _ZN7S3398C33v67Ev();
extern void _ZN7S3398C33v68Ev();
extern void _ZN7S3398C33v69Ev();
extern void _ZN7S3398C33v70Ev();
static  VTBL_ENTRY vtc_S3398C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3398C3[0]),
  (VTBL_ENTRY)&_ZN7S3398C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3398C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3398C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3398C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3398C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v70Ev,
};
extern VTBL_ENTRY _ZTI7S3398C3[];
extern  VTBL_ENTRY _ZTV7S3398C3[];
Class_Descriptor cd_S3398C3 = {  "S3398C3", // class name
  0,0,//no base classes
  &(vtc_S3398C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3398C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3398C3),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  S3398C2  : S3398C3 {
  void *s3398c2f0;
  ::S28C31_nt s3398c2f1;
  int s3398c2f2;
  void *s3398c2f3;
  unsigned int s3398c2f4:1;
  ::S28C31_nt s3398c2f5;
  virtual  ~S3398C2(); // _ZN7S3398C2D1Ev
  virtual void  v71(); // _ZN7S3398C23v71Ev
  virtual void  v72(); // _ZN7S3398C23v72Ev
  virtual void  v73(); // _ZN7S3398C23v73Ev
  virtual void  v74(); // _ZN7S3398C23v74Ev
  virtual void  v75(); // _ZN7S3398C23v75Ev
  virtual void  v76(); // _ZN7S3398C23v76Ev
  virtual void  v77(); // _ZN7S3398C23v77Ev
  virtual void  v78(); // _ZN7S3398C23v78Ev
  S3398C2(); // tgen
};
//SIG(-1 S3398C2) C1{ BC2{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 Fp FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC4}


 S3398C2 ::~S3398C2(){ note_dtor("S3398C2", this);}
void  S3398C2 ::v71(){vfunc_called(this, "_ZN7S3398C23v71Ev");}
void  S3398C2 ::v72(){vfunc_called(this, "_ZN7S3398C23v72Ev");}
void  S3398C2 ::v73(){vfunc_called(this, "_ZN7S3398C23v73Ev");}
void  S3398C2 ::v74(){vfunc_called(this, "_ZN7S3398C23v74Ev");}
void  S3398C2 ::v75(){vfunc_called(this, "_ZN7S3398C23v75Ev");}
void  S3398C2 ::v76(){vfunc_called(this, "_ZN7S3398C23v76Ev");}
void  S3398C2 ::v77(){vfunc_called(this, "_ZN7S3398C23v77Ev");}
void  S3398C2 ::v78(){vfunc_called(this, "_ZN7S3398C23v78Ev");}
S3398C2 ::S3398C2(){ note_ctor("S3398C2", this);} // tgen

static void Test_S3398C2()
{
  extern Class_Descriptor cd_S3398C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,26)];
    init_test(&cd_S3398C2, buf);
    S3398C2 *dp, &lv = *(dp=new (buf) S3398C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,100), "sizeof(S3398C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3398C2)");
    check_base_class_offset(lv, (S3398C3*), 0, "S3398C2");
    check_field_offset(lv, s3398c2f0, ABISELECT(96,60), "S3398C2.s3398c2f0");
    check_field_offset(lv, s3398c2f1, ABISELECT(104,64), "S3398C2.s3398c2f1");
    check_field_offset(lv, s3398c2f2, ABISELECT(120,76), "S3398C2.s3398c2f2");
    check_field_offset(lv, s3398c2f3, ABISELECT(128,80), "S3398C2.s3398c2f3");
    set_bf_and_test(lv, s3398c2f4, ABISELECT(136,84), 0, 1, 1, "S3398C2");
    check_field_offset(lv, s3398c2f5, ABISELECT(144,88), "S3398C2.s3398c2f5");
    test_class_info(&lv, &cd_S3398C2);
    dp->~S3398C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3398C2(Test_S3398C2, "S3398C2", ABISELECT(160,100));

#else // __cplusplus

extern void _ZN7S3398C2C1Ev();
extern void _ZN7S3398C2D1Ev();
Name_Map name_map_S3398C2[] = {
  NSPAIR(_ZN7S3398C2C1Ev),
  NSPAIR(_ZN7S3398C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3398C3;
extern VTBL_ENTRY _ZTI7S3398C3[];
extern  VTBL_ENTRY _ZTV7S3398C3[];
static Base_Class bases_S3398C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3398C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3398C2[];
extern void _ZN7S3398C2D1Ev();
extern void _ZN7S3398C2D0Ev();
extern void _ZN7S3398C32v7Ev();
extern void _ZN7S3398C32v8Ev();
extern void _ZN7S3398C32v9Ev();
extern void _ZN7S3398C33v10Ev();
extern void _ZN7S3398C33v11Ev();
extern void _ZN7S3398C33v12Ev();
extern void _ZN7S3398C33v13Ev();
extern void _ZN7S3398C33v14Ev();
extern void _ZN7S3398C33v15Ev();
extern void _ZN7S3398C33v16Ev();
extern void _ZN7S3398C33v17Ev();
extern void _ZN7S3398C33v18Ev();
extern void _ZN7S3398C33v19Ev();
extern void _ZN7S3398C33v20Ev();
extern void _ZN7S3398C33v21Ev();
extern void _ZN7S3398C33v22Ev();
extern void _ZN7S3398C33v23Ev();
extern void _ZN7S3398C33v24Ev();
extern void _ZN7S3398C33v25Ev();
extern void _ZN7S3398C33v26Ev();
extern void _ZN7S3398C33v27Ev();
extern void _ZN7S3398C33v28Ev();
extern void _ZN7S3398C33v29Ev();
extern void _ZN7S3398C33v30Ev();
extern void _ZN7S3398C33v31Ev();
extern void _ZN7S3398C33v32Ev();
extern void _ZN7S3398C33v33Ev();
extern void _ZN7S3398C33v34Ev();
extern void _ZN7S3398C33v35Ev();
extern void _ZN7S3398C33v36Ev();
extern void _ZN7S3398C33v37Ev();
extern void _ZN7S3398C33v38Ev();
extern void _ZN7S3398C33v39Ev();
extern void _ZN7S3398C33v40Ev();
extern void _ZN7S3398C33v41Ev();
extern void _ZN7S3398C33v42Ev();
extern void _ZN7S3398C33v43Ev();
extern void _ZN7S3398C33v44Ev();
extern void _ZN7S3398C33v45Ev();
extern void _ZN7S3398C33v46Ev();
extern void _ZN7S3398C33v47Ev();
extern void _ZN7S3398C33v48Ev();
extern void _ZN7S3398C33v49Ev();
extern void _ZN7S3398C33v50Ev();
extern void _ZN7S3398C33v51Ev();
extern void _ZN7S3398C33v52Ev();
extern void _ZN7S3398C33v53Ev();
extern void _ZN7S3398C33v54Ev();
extern void _ZN7S3398C33v55Ev();
extern void _ZN7S3398C33v56Ev();
extern void _ZN7S3398C33v57Ev();
extern void _ZN7S3398C33v58Ev();
extern void _ZN7S3398C33v59Ev();
extern void _ZN7S3398C33v60Ev();
extern void _ZN7S3398C33v61Ev();
extern void _ZN7S3398C33v62Ev();
extern void _ZN7S3398C33v63Ev();
extern void _ZN7S3398C33v64Ev();
extern void _ZN7S3398C33v65Ev();
extern void _ZN7S3398C33v66Ev();
extern void _ZN7S3398C33v67Ev();
extern void _ZN7S3398C33v68Ev();
extern void _ZN7S3398C33v69Ev();
extern void _ZN7S3398C33v70Ev();
extern void _ZN7S3398C23v71Ev();
extern void _ZN7S3398C23v72Ev();
extern void _ZN7S3398C23v73Ev();
extern void _ZN7S3398C23v74Ev();
extern void _ZN7S3398C23v75Ev();
extern void _ZN7S3398C23v76Ev();
extern void _ZN7S3398C23v77Ev();
extern void _ZN7S3398C23v78Ev();
static  VTBL_ENTRY vtc_S3398C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3398C2[0]),
  (VTBL_ENTRY)&_ZN7S3398C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3398C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3398C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3398C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3398C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3398C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3398C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3398C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3398C23v74Ev,
  (VTBL_ENTRY)&_ZN7S3398C23v75Ev,
  (VTBL_ENTRY)&_ZN7S3398C23v76Ev,
  (VTBL_ENTRY)&_ZN7S3398C23v77Ev,
  (VTBL_ENTRY)&_ZN7S3398C23v78Ev,
};
extern VTBL_ENTRY _ZTI7S3398C2[];
extern  VTBL_ENTRY _ZTV7S3398C2[];
Class_Descriptor cd_S3398C2 = {  "S3398C2", // class name
  bases_S3398C2, 1,
  &(vtc_S3398C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,100), // object size
  NSPAIRA(_ZTI7S3398C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3398C2),76, //virtual function table var
  2, // 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  S3398C1  : S3398C2 {
  void *s3398c1f0;
  virtual  ~S3398C1(); // _ZN7S3398C1D1Ev
  virtual void  v1(); // _ZN7S3398C12v1Ev
  virtual void  v2(); // _ZN7S3398C12v2Ev
  virtual void  v3(); // _ZN7S3398C12v3Ev
  virtual void  v4(); // _ZN7S3398C12v4Ev
  virtual void  v5(); // _ZN7S3398C12v5Ev
  virtual void  v6(); // _ZN7S3398C12v6Ev
  S3398C1(); // tgen
};
//SIG(1 S3398C1) C1{ BC2{ BC3{ 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 FC4{ m Fi[2]} Fp[2]} vd v71 v72 v73 v74 v75 v76 v77 v78 Fp FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC5} vd v1 v2 v3 v4 v5 v6 Fp}


 S3398C1 ::~S3398C1(){ note_dtor("S3398C1", this);}
void  S3398C1 ::v1(){vfunc_called(this, "_ZN7S3398C12v1Ev");}
void  S3398C1 ::v2(){vfunc_called(this, "_ZN7S3398C12v2Ev");}
void  S3398C1 ::v3(){vfunc_called(this, "_ZN7S3398C12v3Ev");}
void  S3398C1 ::v4(){vfunc_called(this, "_ZN7S3398C12v4Ev");}
void  S3398C1 ::v5(){vfunc_called(this, "_ZN7S3398C12v5Ev");}
void  S3398C1 ::v6(){vfunc_called(this, "_ZN7S3398C12v6Ev");}
S3398C1 ::S3398C1(){ note_ctor("S3398C1", this);} // tgen

static void Test_S3398C1()
{
  extern Class_Descriptor cd_S3398C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,27)];
    init_test(&cd_S3398C1, buf);
    S3398C1 *dp, &lv = *(dp=new (buf) S3398C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,104), "sizeof(S3398C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3398C1)");
    check_base_class_offset(lv, (S3398C3*)(S3398C2*), 0, "S3398C1");
    check_base_class_offset(lv, (S3398C2*), 0, "S3398C1");
    check_field_offset(lv, s3398c1f0, ABISELECT(160,100), "S3398C1.s3398c1f0");
    test_class_info(&lv, &cd_S3398C1);
    dp->~S3398C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3398C1(Test_S3398C1, "S3398C1", ABISELECT(168,104));

#else // __cplusplus

extern void _ZN7S3398C1C1Ev();
extern void _ZN7S3398C1D1Ev();
Name_Map name_map_S3398C1[] = {
  NSPAIR(_ZN7S3398C1C1Ev),
  NSPAIR(_ZN7S3398C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3398C3;
extern VTBL_ENTRY _ZTI7S3398C3[];
extern  VTBL_ENTRY _ZTV7S3398C3[];
extern Class_Descriptor cd_S3398C2;
extern VTBL_ENTRY _ZTI7S3398C2[];
extern  VTBL_ENTRY _ZTV7S3398C2[];
static Base_Class bases_S3398C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3398C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3398C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3398C1[];
extern void _ZN7S3398C1D1Ev();
extern void _ZN7S3398C1D0Ev();
extern void _ZN7S3398C32v7Ev();
extern void _ZN7S3398C32v8Ev();
extern void _ZN7S3398C32v9Ev();
extern void _ZN7S3398C33v10Ev();
extern void _ZN7S3398C33v11Ev();
extern void _ZN7S3398C33v12Ev();
extern void _ZN7S3398C33v13Ev();
extern void _ZN7S3398C33v14Ev();
extern void _ZN7S3398C33v15Ev();
extern void _ZN7S3398C33v16Ev();
extern void _ZN7S3398C33v17Ev();
extern void _ZN7S3398C33v18Ev();
extern void _ZN7S3398C33v19Ev();
extern void _ZN7S3398C33v20Ev();
extern void _ZN7S3398C33v21Ev();
extern void _ZN7S3398C33v22Ev();
extern void _ZN7S3398C33v23Ev();
extern void _ZN7S3398C33v24Ev();
extern void _ZN7S3398C33v25Ev();
extern void _ZN7S3398C33v26Ev();
extern void _ZN7S3398C33v27Ev();
extern void _ZN7S3398C33v28Ev();
extern void _ZN7S3398C33v29Ev();
extern void _ZN7S3398C33v30Ev();
extern void _ZN7S3398C33v31Ev();
extern void _ZN7S3398C33v32Ev();
extern void _ZN7S3398C33v33Ev();
extern void _ZN7S3398C33v34Ev();
extern void _ZN7S3398C33v35Ev();
extern void _ZN7S3398C33v36Ev();
extern void _ZN7S3398C33v37Ev();
extern void _ZN7S3398C33v38Ev();
extern void _ZN7S3398C33v39Ev();
extern void _ZN7S3398C33v40Ev();
extern void _ZN7S3398C33v41Ev();
extern void _ZN7S3398C33v42Ev();
extern void _ZN7S3398C33v43Ev();
extern void _ZN7S3398C33v44Ev();
extern void _ZN7S3398C33v45Ev();
extern void _ZN7S3398C33v46Ev();
extern void _ZN7S3398C33v47Ev();
extern void _ZN7S3398C33v48Ev();
extern void _ZN7S3398C33v49Ev();
extern void _ZN7S3398C33v50Ev();
extern void _ZN7S3398C33v51Ev();
extern void _ZN7S3398C33v52Ev();
extern void _ZN7S3398C33v53Ev();
extern void _ZN7S3398C33v54Ev();
extern void _ZN7S3398C33v55Ev();
extern void _ZN7S3398C33v56Ev();
extern void _ZN7S3398C33v57Ev();
extern void _ZN7S3398C33v58Ev();
extern void _ZN7S3398C33v59Ev();
extern void _ZN7S3398C33v60Ev();
extern void _ZN7S3398C33v61Ev();
extern void _ZN7S3398C33v62Ev();
extern void _ZN7S3398C33v63Ev();
extern void _ZN7S3398C33v64Ev();
extern void _ZN7S3398C33v65Ev();
extern void _ZN7S3398C33v66Ev();
extern void _ZN7S3398C33v67Ev();
extern void _ZN7S3398C33v68Ev();
extern void _ZN7S3398C33v69Ev();
extern void _ZN7S3398C33v70Ev();
extern void _ZN7S3398C23v71Ev();
extern void _ZN7S3398C23v72Ev();
extern void _ZN7S3398C23v73Ev();
extern void _ZN7S3398C23v74Ev();
extern void _ZN7S3398C23v75Ev();
extern void _ZN7S3398C23v76Ev();
extern void _ZN7S3398C23v77Ev();
extern void _ZN7S3398C23v78Ev();
extern void _ZN7S3398C12v1Ev();
extern void _ZN7S3398C12v2Ev();
extern void _ZN7S3398C12v3Ev();
extern void _ZN7S3398C12v4Ev();
extern void _ZN7S3398C12v5Ev();
extern void _ZN7S3398C12v6Ev();
static  VTBL_ENTRY vtc_S3398C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3398C1[0]),
  (VTBL_ENTRY)&_ZN7S3398C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3398C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3398C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3398C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3398C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3398C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3398C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3398C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3398C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3398C23v74Ev,
  (VTBL_ENTRY)&_ZN7S3398C23v75Ev,
  (VTBL_ENTRY)&_ZN7S3398C23v76Ev,
  (VTBL_ENTRY)&_ZN7S3398C23v77Ev,
  (VTBL_ENTRY)&_ZN7S3398C23v78Ev,
  (VTBL_ENTRY)&_ZN7S3398C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3398C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3398C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3398C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3398C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3398C12v6Ev,
};
extern VTBL_ENTRY _ZTI7S3398C1[];
extern  VTBL_ENTRY _ZTV7S3398C1[];
Class_Descriptor cd_S3398C1 = {  "S3398C1", // class name
  bases_S3398C1, 2,
  &(vtc_S3398C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,104), // object size
  NSPAIRA(_ZTI7S3398C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3398C1),82, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21114C4  : virtual S3461C5_nt , S731C17_nt {
  virtual void  v1(); // _ZN8S21114C42v1Ev
  ~S21114C4(); // tgen
  S21114C4(); // tgen
};
//SIG(-1 S21114C4) C1{ VBC2{ m FL} BC3{ m} v1}


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

static void Test_S21114C4()
{
  extern Class_Descriptor cd_S21114C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S21114C4, buf);
    S21114C4 *dp, &lv = *(dp=new (buf) S21114C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S21114C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21114C4)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S21114C4");
    check_base_class_offset(lv, (S731C17_nt*), 0, "S21114C4");
    test_class_info(&lv, &cd_S21114C4);
    dp->~S21114C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21114C4(Test_S21114C4, "S21114C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S21114C4C1Ev();
extern void _ZN8S21114C4D1Ev();
Name_Map name_map_S21114C4[] = {
  NSPAIR(_ZN8S21114C4C1Ev),
  NSPAIR(_ZN8S21114C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S21114C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21114C4[];
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY vtc_S21114C4[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern VTBL_ENTRY _ZTV8S21114C4[];
static  VTT_ENTRY vtt_S21114C4[] = {
  {&(_ZTV8S21114C4[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
Class_Descriptor cd_S21114C4 = {  "S21114C4", // class name
  bases_S21114C4, 2,
  &(vtc_S21114C4[0]), // expected_vtbl_contents
  &(vtt_S21114C4[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S21114C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21114C4),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21114C4),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  S21114C8  : S21114C4 {
  ~S21114C8(); // tgen
  S21114C8(); // tgen
};
//SIG(-1 S21114C8) C1{ BC2{ VBC3{ m FL} BC4{ m} v1}}


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

static void Test_S21114C8()
{
  extern Class_Descriptor cd_S21114C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S21114C8, buf);
    S21114C8 *dp, &lv = *(dp=new (buf) S21114C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S21114C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21114C8)");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*), ABISELECT(8,4), "S21114C8");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*), 0, "S21114C8");
    check_base_class_offset(lv, (S21114C4*), 0, "S21114C8");
    test_class_info(&lv, &cd_S21114C8);
    dp->~S21114C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21114C8(Test_S21114C8, "S21114C8", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S21114C8C1Ev();
extern void _ZN8S21114C8D1Ev();
Name_Map name_map_S21114C8[] = {
  NSPAIR(_ZN8S21114C8C1Ev),
  NSPAIR(_ZN8S21114C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
static Base_Class bases_S21114C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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 _ZTI8S21114C8[];
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY vtc_S21114C8[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern VTBL_ENTRY _ZTV8S21114C8[];
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__8S21114C8[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
static  VTT_ENTRY vtt_S21114C8[] = {
  {&(_ZTV8S21114C8[3]),  3,4},
  {&(_tg__ZTV8S21114C4__8S21114C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
Class_Descriptor cd_S21114C8 = {  "S21114C8", // class name
  bases_S21114C8, 3,
  &(vtc_S21114C8[0]), // expected_vtbl_contents
  &(vtt_S21114C8[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S21114C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S21114C8),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21114C8),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  S21114C7  : S3461C5_nt , virtual S731C17_nt , S21114C8 {
  virtual  ~S21114C7(); // _ZN8S21114C7D2Ev
  virtual void  v3(); // _ZN8S21114C72v3Ev
  S21114C7(); // tgen
};
//SIG(-1 S21114C7) C1{ BC2{ m FL} VBC3{ m} BC4{ BC5{ VBC2 BC3 v2}} vd v1}


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

static void Test_S21114C7()
{
  extern Class_Descriptor cd_S21114C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S21114C7, buf);
    S21114C7 *dp, &lv = *(dp=new (buf) S21114C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S21114C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21114C7)");
    /*is_ambiguous_... S21114C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S21114C7");
    /*is_ambiguous_... S21114C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(16,12), "S21114C7");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*), ABISELECT(16,12), "S21114C7");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*), 0, "S21114C7");
    check_base_class_offset(lv, (S21114C4*)(S21114C8*), 0, "S21114C7");
    check_base_class_offset(lv, (S21114C8*), 0, "S21114C7");
    test_class_info(&lv, &cd_S21114C7);
    dp->~S21114C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21114C7(Test_S21114C7, "S21114C7", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN8S21114C7C1Ev();
extern void _ZN8S21114C7D2Ev();
Name_Map name_map_S21114C7[] = {
  NSPAIR(_ZN8S21114C7C1Ev),
  NSPAIR(_ZN8S21114C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
static Base_Class bases_S21114C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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_S3461C5_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
    4, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21114C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21114C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21114C7[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY vtc_S21114C7[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern VTBL_ENTRY _ZTV8S21114C7[];
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C8__8S21114C7[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C8__8S21114C7[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
static  VTT_ENTRY vtt_S21114C7[] = {
  {&(_ZTV8S21114C7[4]),  4,8},
  {&(_tg__ZTV8S21114C8__8S21114C7[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C8__8S21114C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
Class_Descriptor cd_S21114C7 = {  "S21114C7", // class name
  bases_S21114C7, 6,
  &(vtc_S21114C7[0]), // expected_vtbl_contents
  &(vtt_S21114C7[0]), // expected_vtt_contents
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI8S21114C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21114C7),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21114C7),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  S21114C3  : virtual S21114C4 , S21114C7 {
  virtual  ~S21114C3(); // _ZN8S21114C3D2Ev
  virtual void  v4(); // _ZN8S21114C32v4Ev
  S21114C3(); // tgen
};
//SIG(-1 S21114C3) C1{ VBC2{ VBC3{ m FL} BC4{ m} v2} BC5{ BC3 VBC4 BC6{ BC2} vd v3} vd v1}


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

static void Test_S21114C3()
{
  extern Class_Descriptor cd_S21114C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S21114C3, buf);
    S21114C3 *dp, &lv = *(dp=new (buf) S21114C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S21114C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21114C3)");
    /*is_ambiguous_... S21114C3::S21114C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*), ABISELECT(24,16), "S21114C3");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(24,16), "S21114C3");
    /*is_ambiguous_... S21114C3::S21114C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*), ABISELECT(16,12), "S21114C3");
    /*is_ambiguous_... S21114C3::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*), ABISELECT(16,12), "S21114C3");
    /*is_ambiguous_... S21114C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*), ABISELECT(8,4), "S21114C3");
    /*is_ambiguous_... S21114C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*), ABISELECT(32,24), "S21114C3");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*), 0, "S21114C3");
    check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*), 0, "S21114C3");
    check_base_class_offset(lv, (S21114C8*)(S21114C7*), 0, "S21114C3");
    check_base_class_offset(lv, (S21114C7*), 0, "S21114C3");
    test_class_info(&lv, &cd_S21114C3);
    dp->~S21114C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21114C3(Test_S21114C3, "S21114C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN8S21114C3C1Ev();
extern void _ZN8S21114C3D2Ev();
Name_Map name_map_S21114C3[] = {
  NSPAIR(_ZN8S21114C3C1Ev),
  NSPAIR(_ZN8S21114C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
static Base_Class bases_S21114C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(16,12), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21114C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21114C7,    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 _ZTI8S21114C3[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C3D1Ev();
extern void _ZN8S21114C3D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY vtc_S21114C3[] = {
  ABISELECT(16,12),
  ABISELECT(32,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern VTBL_ENTRY _ZTV8S21114C3[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__8S21114C3[] = {
  ABISELECT(32,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C7__8S21114C3[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C7__A1__8S21114C3[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__8S21114C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
static  VTT_ENTRY vtt_S21114C3[] = {
  {&(_ZTV8S21114C3[5]),  5,15},
  {&(_tg__ZTV8S21114C7__8S21114C3[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C7__8S21114C3[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C7__A1__8S21114C3[3]),  3,4},
  {&(_ZTV8S21114C3[14]),  14,15},
  {&(_tg__ZTV8S21114C4__8S21114C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S21114C3[];
extern  VTBL_ENTRY _ZTV8S21114C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C3[];
Class_Descriptor cd_S21114C3 = {  "S21114C3", // class name
  bases_S21114C3, 9,
  &(vtc_S21114C3[0]), // expected_vtbl_contents
  &(vtt_S21114C3[0]), // expected_vtt_contents
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI8S21114C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21114C3),15, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21114C3),6, //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  S21114C11  : S3461C5_nt , virtual S21114C4 , S731C17_nt {
  virtual  ~S21114C11(); // _ZN9S21114C11D2Ev
  S21114C11(); // tgen
};
//SIG(-1 S21114C11) C1{ BC2{ m FL} VBC3{ VBC2 BC4{ m} v1} BC4 vd}


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

static void Test_S21114C11()
{
  extern Class_Descriptor cd_S21114C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S21114C11, buf);
    S21114C11 *dp, &lv = *(dp=new (buf) S21114C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S21114C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21114C11)");
    /*is_ambiguous_... S21114C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S21114C11");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*), ABISELECT(16,12), "S21114C11");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*), 0, "S21114C11");
    check_base_class_offset(lv, (S21114C4*), 0, "S21114C11");
    /*is_ambiguous_... S21114C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(16,12), "S21114C11");
    test_class_info(&lv, &cd_S21114C11);
    dp->~S21114C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21114C11(Test_S21114C11, "S21114C11", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN9S21114C11C1Ev();
extern void _ZN9S21114C11D2Ev();
Name_Map name_map_S21114C11[] = {
  NSPAIR(_ZN9S21114C11C1Ev),
  NSPAIR(_ZN9S21114C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S21114C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21114C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21114C11[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY vtc_S21114C11[] = {
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern VTBL_ENTRY _ZTV9S21114C11[];
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C11[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
static  VTT_ENTRY vtt_S21114C11[] = {
  {&(_ZTV9S21114C11[5]),  5,8},
  {&(_ZTV9S21114C11[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
Class_Descriptor cd_S21114C11 = {  "S21114C11", // class name
  bases_S21114C11, 5,
  &(vtc_S21114C11[0]), // expected_vtbl_contents
  &(vtt_S21114C11[0]), // expected_vtt_contents
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI9S21114C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21114C11),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21114C11),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  S21114C10  : S731C17_nt , virtual S21114C4 , S21114C11 , S3461C5_nt {
  __tsi64 s21114c10f0;
  virtual  ~S21114C10(); // _ZN9S21114C10D2Ev
  S21114C10(); // tgen
};
//SIG(-1 S21114C10) C1{ BC2{ m} VBC3{ VBC4{ m FL} BC2 v1} BC5{ BC4 VBC3 BC2 vd} BC4 vd FL}


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

static void Test_S21114C10()
{
  extern Class_Descriptor cd_S21114C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,11)];
    init_test(&cd_S21114C10, buf);
    S21114C10 *dp, &lv = *(dp=new (buf) S21114C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S21114C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21114C10)");
    /*is_ambiguous_... S21114C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(17,13), "S21114C10");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*), ABISELECT(40,32), "S21114C10");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*), 0, "S21114C10");
    check_base_class_offset(lv, (S21114C4*), 0, "S21114C10");
    check_base_class_offset(lv, (S21114C4*)(S21114C11*), 0, "S21114C10");
    /*is_ambiguous_... S21114C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*), ABISELECT(8,4), "S21114C10");
    /*is_ambiguous_... S21114C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*), ABISELECT(16,12), "S21114C10");
    check_base_class_offset(lv, (S21114C11*), 0, "S21114C10");
    /*is_ambiguous_... S21114C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(24,16), "S21114C10");
    check_field_offset(lv, s21114c10f0, ABISELECT(32,24), "S21114C10.s21114c10f0");
    test_class_info(&lv, &cd_S21114C10);
    dp->~S21114C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21114C10(Test_S21114C10, "S21114C10", ABISELECT(48,40));

#else // __cplusplus

extern void _ZN9S21114C10C1Ev();
extern void _ZN9S21114C10D2Ev();
Name_Map name_map_S21114C10[] = {
  NSPAIR(_ZN9S21114C10C1Ev),
  NSPAIR(_ZN9S21114C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
static Base_Class bases_S21114C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    ABISELECT(17,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21114C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    6, //immediately_derived
  0, 0},
  {&cd_S21114C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21114C10[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C10D1Ev();
extern void _ZN9S21114C10D0Ev();
static  VTBL_ENTRY vtc_S21114C10[] = {
  0,
  0,
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C10[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C10D0Ev,
};
extern VTBL_ENTRY _ZTV9S21114C10[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C11__9S21114C10[] = {
  0,
  0,
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C10[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
static  VTT_ENTRY vtt_S21114C10[] = {
  {&(_ZTV9S21114C10[5]),  5,8},
  {&(_tg__ZTV9S21114C11__9S21114C10[5]),  5,8},
  {&(_tg__ZTV9S21114C11__9S21114C10[5]),  5,8},
  {&(_ZTV9S21114C10[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S21114C10[];
extern  VTBL_ENTRY _ZTV9S21114C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C10[];
Class_Descriptor cd_S21114C10 = {  "S21114C10", // class name
  bases_S21114C10, 8,
  &(vtc_S21114C10[0]), // expected_vtbl_contents
  &(vtt_S21114C10[0]), // expected_vtt_contents
  ABISELECT(48,40), // object size
  NSPAIRA(_ZTI9S21114C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21114C10),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21114C10),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  S21114C13  : virtual S3461C5_nt , S21114C4 , S731C17_nt {
  ~S21114C13(); // tgen
  S21114C13(); // tgen
};
//SIG(-1 S21114C13) C1{ VBC2{ m FL} BC3{ VBC2 BC4{ m} v1} BC4}


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

static void Test_S21114C13()
{
  extern Class_Descriptor cd_S21114C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S21114C13, buf);
    S21114C13 *dp, &lv = *(dp=new (buf) S21114C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S21114C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21114C13)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S21114C13");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*), ABISELECT(8,4), "S21114C13");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*), 0, "S21114C13");
    check_base_class_offset(lv, (S21114C4*), 0, "S21114C13");
    /*is_ambiguous_... S21114C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(8,4), "S21114C13");
    test_class_info(&lv, &cd_S21114C13);
    dp->~S21114C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21114C13(Test_S21114C13, "S21114C13", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN9S21114C13C1Ev();
extern void _ZN9S21114C13D1Ev();
Name_Map name_map_S21114C13[] = {
  NSPAIR(_ZN9S21114C13C1Ev),
  NSPAIR(_ZN9S21114C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S21114C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21114C13[];
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY vtc_S21114C13[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern VTBL_ENTRY _ZTV9S21114C13[];
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C13[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
static  VTT_ENTRY vtt_S21114C13[] = {
  {&(_ZTV9S21114C13[3]),  3,4},
  {&(_tg__ZTV8S21114C4__9S21114C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
Class_Descriptor cd_S21114C13 = {  "S21114C13", // class name
  bases_S21114C13, 4,
  &(vtc_S21114C13[0]), // expected_vtbl_contents
  &(vtt_S21114C13[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI9S21114C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21114C13),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21114C13),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  S21114C16  : virtual S3461C5_nt , S21114C13 , virtual S21114C4 {
  virtual void  v2(); // _ZN9S21114C162v2Ev
  ~S21114C16(); // tgen
  S21114C16(); // tgen
};
//SIG(-1 S21114C16) C1{ VBC2{ m FL} BC3{ VBC2 BC4{ VBC2 BC5{ m} v2} BC5} VBC4 v1}


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

static void Test_S21114C16()
{
  extern Class_Descriptor cd_S21114C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S21114C16, buf);
    S21114C16 *dp, &lv = *(dp=new (buf) S21114C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S21114C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21114C16)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(16,8), "S21114C16");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*), ABISELECT(16,8), "S21114C16");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*), ABISELECT(16,8), "S21114C16");
    /*is_ambiguous_... S21114C16::S21114C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*), ABISELECT(16,8), "S21114C16");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*), 0, "S21114C16");
    check_base_class_offset(lv, (S21114C4*)(S21114C13*), 0, "S21114C16");
    /*is_ambiguous_... S21114C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*), ABISELECT(8,4), "S21114C16");
    check_base_class_offset(lv, (S21114C13*), 0, "S21114C16");
    /*is_ambiguous_... S21114C16::S21114C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*), ABISELECT(24,16), "S21114C16");
    /*is_ambiguous_... S21114C16::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*), ABISELECT(24,16), "S21114C16");
    test_class_info(&lv, &cd_S21114C16);
    dp->~S21114C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21114C16(Test_S21114C16, "S21114C16", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN9S21114C16C1Ev();
extern void _ZN9S21114C16D1Ev();
Name_Map name_map_S21114C16[] = {
  NSPAIR(_ZN9S21114C16C1Ev),
  NSPAIR(_ZN9S21114C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
static Base_Class bases_S21114C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21114C13,    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_S731C17_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_S21114C4,    ABISELECT(24,16), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21114C16[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY vtc_S21114C16[] = {
  ABISELECT(24,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  0,
  -8,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern VTBL_ENTRY _ZTV9S21114C16[];
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__9S21114C16[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C13__9S21114C16[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C16[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
static  VTT_ENTRY vtt_S21114C16[] = {
  {&(_ZTV9S21114C16[4]),  4,11},
  {&(_tg__ZTV9S21114C13__9S21114C16[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C13__9S21114C16[3]),  3,4},
  {&(_ZTV9S21114C16[10]),  10,11},
  {&(_tg__ZTV8S21114C4__A1__9S21114C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S21114C16[];
extern  VTBL_ENTRY _ZTV9S21114C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C16[];
Class_Descriptor cd_S21114C16 = {  "S21114C16", // class name
  bases_S21114C16, 7,
  &(vtc_S21114C16[0]), // expected_vtbl_contents
  &(vtt_S21114C16[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI9S21114C16),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21114C16),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21114C16),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  S21114C14  : S3461C5_nt , S21114C7 , S28C52_nt , virtual S21114C16 , virtual S21114C11 {
  virtual  ~S21114C14(); // _ZN9S21114C14D2Ev
  S21114C14(); // tgen
};
//SIG(-1 S21114C14) C1{ BC2{ m FL} BC3{ BC2 VBC4{ m} BC5{ BC6{ VBC2 BC4 v1}} vd v2} BC7{ m} VBC8{ VBC2 BC9{ VBC2 BC6 BC4} VBC6 v3} VBC10{ BC2 VBC6 BC4 vd} vd}


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

static void Test_S21114C14()
{
  extern Class_Descriptor cd_S21114C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,14)];
    init_test(&cd_S21114C14, buf);
    S21114C14 *dp, &lv = *(dp=new (buf) S21114C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S21114C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21114C14)");
    /*is_ambiguous_... S21114C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(16,12), "S21114C14");
    /*is_ambiguous_... S21114C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*), ABISELECT(8,4), "S21114C14");
    /*is_ambiguous_... S21114C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*), ABISELECT(24,20), "S21114C14");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(24,20), "S21114C14");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C16*), ABISELECT(24,20), "S21114C14");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C16*), ABISELECT(24,20), "S21114C14");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(24,20), "S21114C14");
    /*is_ambiguous_... S21114C14::S21114C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*), ABISELECT(24,20), "S21114C14");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*), 0, "S21114C14");
    check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*), 0, "S21114C14");
    check_base_class_offset(lv, (S21114C8*)(S21114C7*), 0, "S21114C14");
    check_base_class_offset(lv, (S21114C7*), 0, "S21114C14");
    check_base_class_offset(lv, (S28C52_nt*), 0, "S21114C14");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(32,28), "S21114C14");
    check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(32,28), "S21114C14");
    /*is_ambiguous_... S21114C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C16*), ABISELECT(40,32), "S21114C14");
    check_base_class_offset(lv, (S21114C13*)(S21114C16*), ABISELECT(32,28), "S21114C14");
    /*is_ambiguous_... S21114C14::S21114C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*), ABISELECT(48,36), "S21114C14");
    /*is_ambiguous_... S21114C16::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C16*), ABISELECT(48,36), "S21114C14");
    check_base_class_offset(lv, (S21114C4*)(S21114C11*), ABISELECT(48,36), "S21114C14");
    check_base_class_offset(lv, (S21114C16*), ABISELECT(32,28), "S21114C14");
    /*is_ambiguous_... S21114C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*), ABISELECT(56,40), "S21114C14");
    /*is_ambiguous_... S21114C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*), ABISELECT(64,48), "S21114C14");
    check_base_class_offset(lv, (S21114C11*), ABISELECT(48,36), "S21114C14");
    test_class_info(&lv, &cd_S21114C14);
    dp->~S21114C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21114C14(Test_S21114C14, "S21114C14", ABISELECT(72,52));

#else // __cplusplus

extern void _ZN9S21114C14C1Ev();
extern void _ZN9S21114C14D2Ev();
Name_Map name_map_S21114C14[] = {
  NSPAIR(_ZN9S21114C14C1Ev),
  NSPAIR(_ZN9S21114C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C16;
extern VTBL_ENTRY _ZTI9S21114C16[];
extern  VTBL_ENTRY _ZTV9S21114C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C16[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
static Base_Class bases_S21114C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21114C4,    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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21114C8,    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_S21114C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S28C52_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(32,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(32,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
    3, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    14, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(48,36), //bcp->offset
    -1, //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
    1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S21114C16,    ABISELECT(32,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_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
    18, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    18, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(48,36), //bcp->offset
    19, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21114C14[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C14D1Ev();
extern void _ZN9S21114C14D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S21114C14D1Ev,_ZThn36_N9S21114C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev)();
extern void ABISELECT(_ZThn48_N9S21114C14D0Ev,_ZThn36_N9S21114C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21114C14[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C14D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  ABISELECT(-48,-36),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S21114C14[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__9S21114C14[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C7__9S21114C14[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C7__9S21114C14[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C14[] = {
  ABISELECT(16,8),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C16__9S21114C14[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C139S21114C16__A1__9S21114C14[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C16__9S21114C14[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A2__9S21114C14[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C11__9S21114C14[] = {
  0,
  0,
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
static  VTT_ENTRY vtt_S21114C14[] = {
  {&(_ZTV9S21114C14[7]),  7,28},
  {&(_tg__ZTV8S21114C7__9S21114C14[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C7__9S21114C14[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C7__9S21114C14[3]),  3,4},
  {&(_ZTV9S21114C14[17]),  17,28},
  {&(_ZTV9S21114C14[25]),  25,28},
  {&(_ZTV9S21114C14[25]),  25,28},
  {&(_tg__ZTV9S21114C16__9S21114C14[4]),  4,6},
  {&(_tg__ZTV9S21114C139S21114C16__9S21114C14[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C139S21114C16__A1__9S21114C14[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C16__9S21114C14[4]),  4,5},
  {&(_tg__ZTV8S21114C4__A2__9S21114C14[3]),  3,4},
  {&(_tg__ZTV9S21114C11__9S21114C14[5]),  5,8},
  {&(_tg__ZTV9S21114C11__9S21114C14[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S21114C14[];
extern  VTBL_ENTRY _ZTV9S21114C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C14[];
static VTBL_ENTRY alt_thunk_names23[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21114C14D0Ev,_ZThn36_N9S21114C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21114C14D1Ev,_ZThn36_N9S21114C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21114C14 = {  "S21114C14", // class name
  bases_S21114C14, 19,
  &(vtc_S21114C14[0]), // expected_vtbl_contents
  &(vtt_S21114C14[0]), // expected_vtt_contents
  ABISELECT(72,52), // object size
  NSPAIRA(_ZTI9S21114C14),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21114C14),28, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21114C14),14, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names23,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21114C12  : virtual S3461C5_nt , virtual S21114C13 , S21114C11 , virtual S21114C7 , S21114C14 {
  ~S21114C12(); // tgen
  S21114C12(); // tgen
};
//SIG(-1 S21114C12) C1{ VBC2{ m FL} VBC3{ VBC2 BC4{ VBC2 BC5{ m} v1} BC5} BC6{ BC2 VBC4 BC5 vd} VBC7{ BC2 VBC5 BC8{ BC4} vd v2} BC9{ BC2 BC7 BC10{ m} VBC11{ VBC2 BC3 VBC4 v3} VBC6 vd}}


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

static void Test_S21114C12()
{
  extern Class_Descriptor cd_S21114C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,24)];
    init_test(&cd_S21114C12, buf);
    S21114C12 *dp, &lv = *(dp=new (buf) S21114C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S21114C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21114C12)");
    /*is_ambiguous_... S21114C12::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(48,36), "S21114C12");
    /*is_ambiguous_... S21114C12::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*), ABISELECT(48,36), "S21114C12");
    /*is_ambiguous_... S21114C12::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*), ABISELECT(48,36), "S21114C12");
    /*is_ambiguous_... S21114C12::S21114C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*), ABISELECT(48,36), "S21114C12");
    /*is_ambiguous_... S21114C12::S21114C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(48,36), "S21114C12");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*), ABISELECT(48,36), "S21114C12");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C16*), ABISELECT(48,36), "S21114C12");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C16*), ABISELECT(48,36), "S21114C12");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(48,36), "S21114C12");
    /*is_ambiguous_... S21114C12::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*), ABISELECT(56,44), "S21114C12");
    /*is_ambiguous_... S21114C12::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*), ABISELECT(56,44), "S21114C12");
    /*is_ambiguous_... S21114C12::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*), ABISELECT(64,48), "S21114C12");
    /*is_ambiguous_... S21114C12::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C13*), ABISELECT(56,44), "S21114C12");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*), ABISELECT(8,4), "S21114C12");
    /*is_ambiguous_... S21114C12::S21114C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*), 0, "S21114C12");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*), 0, "S21114C12");
    /*is_ambiguous_... S21114C16::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C16*), 0, "S21114C12");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*), 0, "S21114C12");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*), ABISELECT(16,12), "S21114C12");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C11*), 0, "S21114C12");
    /*is_ambiguous_... S21114C12::S21114C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*), ABISELECT(80,56), "S21114C12");
    /*is_ambiguous_... S21114C12::S21114C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*), ABISELECT(88,64), "S21114C12");
    /*is_ambiguous_... S21114C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C14*), ABISELECT(88,64), "S21114C12");
    /*is_ambiguous_... S21114C12::S21114C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(72,52), "S21114C12");
    /*is_ambiguous_... S21114C12::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(72,52), "S21114C12");
    /*is_ambiguous_... S21114C12::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C8*)(S21114C7*), ABISELECT(72,52), "S21114C12");
    /*is_ambiguous_... S21114C12::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C7*), ABISELECT(72,52), "S21114C12");
    /*is_ambiguous_... S21114C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C14*), ABISELECT(40,28), "S21114C12");
    /*is_ambiguous_... S21114C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C14*), ABISELECT(32,20), "S21114C12");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*), ABISELECT(24,16), "S21114C12");
    check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*), ABISELECT(24,16), "S21114C12");
    check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C14*), ABISELECT(24,16), "S21114C12");
    check_base_class_offset(lv, (S21114C7*)(S21114C14*), ABISELECT(24,16), "S21114C12");
    check_base_class_offset(lv, (S28C52_nt*)(S21114C14*), ABISELECT(24,16), "S21114C12");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(96,68), "S21114C12");
    check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(96,68), "S21114C12");
    /*is_ambiguous_... S21114C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C16*), ABISELECT(104,72), "S21114C12");
    check_base_class_offset(lv, (S21114C13*)(S21114C16*), ABISELECT(96,68), "S21114C12");
    check_base_class_offset(lv, (S21114C16*)(S21114C14*), ABISELECT(96,68), "S21114C12");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*), ABISELECT(120,80), "S21114C12");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*), ABISELECT(128,88), "S21114C12");
    check_base_class_offset(lv, (S21114C11*)(S21114C14*), ABISELECT(112,76), "S21114C12");
    check_base_class_offset(lv, (S21114C14*), ABISELECT(24,16), "S21114C12");
    test_class_info(&lv, &cd_S21114C12);
    dp->~S21114C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21114C12(Test_S21114C12, "S21114C12", ABISELECT(136,92));

#else // __cplusplus

extern void _ZN9S21114C12C1Ev();
extern void _ZN9S21114C12D1Ev();
Name_Map name_map_S21114C12[] = {
  NSPAIR(_ZN9S21114C12C1Ev),
  NSPAIR(_ZN9S21114C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S21114C16;
extern VTBL_ENTRY _ZTI9S21114C16[];
extern  VTBL_ENTRY _ZTV9S21114C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C16[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S21114C14;
extern VTBL_ENTRY _ZTI9S21114C14[];
extern  VTBL_ENTRY _ZTV9S21114C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C14[];
static Base_Class bases_S21114C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(56,44), //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
    4, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(64,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(56,44), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21114C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21114C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(88,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_S731C17_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
    13, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(72,52), //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
    14, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(72,52), //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
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(72,52), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_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
    31, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21114C8,    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
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(104,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(96,68), //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
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S21114C16,    ABISELECT(96,68), //bcp->offset
    40, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(120,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(128,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(112,76), //bcp->offset
    48, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S21114C14,    ABISELECT(24,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21114C12[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C12D1Ev();
extern void _ZN9S21114C12D0Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn24_N9S21114C12D1Ev,_ZThn16_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn24_N9S21114C12D0Ev,_ZThn16_N9S21114C12D0Ev)();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn72_N9S21114C12D1Ev,_ZThn52_N9S21114C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev)();
extern void ABISELECT(_ZThn72_N9S21114C12D0Ev,_ZThn52_N9S21114C12D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S21114C12D1Ev,_ZThn76_N9S21114C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S21114C12D0Ev,_ZThn76_N9S21114C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21114C12[] = {
  ABISELECT(112,76),
  ABISELECT(96,68),
  ABISELECT(88,64),
  ABISELECT(72,52),
  ABISELECT(56,44),
  0,
  0,
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C12D0Ev,
  ABISELECT(88,60),
  ABISELECT(-24,-16),
  ABISELECT(72,52),
  ABISELECT(64,48),
  ABISELECT(24,20),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C12D1Ev,_ZThn16_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C12D0Ev,_ZThn16_N9S21114C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  0,
  -8,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  0,
  0,
  ABISELECT(-96,-68),
  ABISELECT(-48,-32),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-64,-40),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S21114C12[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C11__A__9S21114C12[] = {
  0,
  0,
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C14D1Ev();
extern void _ZN9S21114C14D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C14__9S21114C12[] = {
  ABISELECT(88,60),
  ABISELECT(-24,-16),
  ABISELECT(72,52),
  ABISELECT(64,48),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C14D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C79S21114C14__A1__9S21114C12[] = {
  ABISELECT(64,48),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C79S21114C14__A1__9S21114C12[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C79S21114C14__A3__9S21114C12[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C14__9S21114C12[] = {
  0,
  0,
  ABISELECT(-96,-68),
  ABISELECT(-48,-32),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A2__9S21114C14__9S21114C12[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev)();
extern void ABISELECT(_ZThn88_N9S21114C14D1Ev,_ZThn60_N9S21114C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev)();
extern void ABISELECT(_ZThn88_N9S21114C14D0Ev,_ZThn60_N9S21114C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__9S21114C14__9S21114C12[] = {
  ABISELECT(-88,-60),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-64,-40),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__9S21114C12[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C13__9S21114C12[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C12[] = {
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__9S21114C12[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C7__9S21114C12[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C7__A2__9S21114C12[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C12[] = {
  ABISELECT(-96,-68),
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C16__A1__9S21114C12[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C139S21114C16__A4__9S21114C12[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C16__9S21114C12[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C11__A1__9S21114C12[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C11__A1__9S21114C12[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(112,76),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
static  VTT_ENTRY vtt_S21114C12[] = {
  {&(_ZTV9S21114C12[10]),  10,57},
  {&(_tg__ZTV9S21114C11__A__9S21114C12[5]),  5,8},
  {&(_tg__ZTV9S21114C11__A__9S21114C12[5]),  5,8},
  {&(_tg__ZTV9S21114C14__9S21114C12[7]),  7,11},
  {&(_tg__ZTV8S21114C79S21114C14__A1__9S21114C12[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C79S21114C14__A1__9S21114C12[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C79S21114C14__A3__9S21114C12[3]),  3,4},
  {&(_tg__ZTV9S21114C16__9S21114C14__9S21114C12[6]),  6,8},
  {&(_tg__ZTV8S21114C4__A2__9S21114C14__9S21114C12[4]),  4,5},
  {&(_tg__ZTV9S21114C11__9S21114C14__9S21114C12[6]),  6,9},
  {&(_ZTV9S21114C12[28]),  28,57},
  {&(_ZTV9S21114C12[10]),  10,57},
  {&(_ZTV9S21114C12[36]),  36,57},
  {&(_ZTV9S21114C12[20]),  20,57},
  {&(_ZTV9S21114C12[46]),  46,57},
  {&(_ZTV9S21114C12[54]),  54,57},
  {&(_tg__ZTV9S21114C13__9S21114C12[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C13__9S21114C12[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C12[3]),  3,4},
  {&(_tg__ZTV8S21114C7__9S21114C12[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C7__9S21114C12[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C7__A2__9S21114C12[3]),  3,4},
  {&(_tg__ZTV9S21114C16__9S21114C12[4]),  4,6},
  {&(_tg__ZTV9S21114C139S21114C16__A1__9S21114C12[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C139S21114C16__A4__9S21114C12[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C16__9S21114C12[4]),  4,5},
  {&(_tg__ZTV9S21114C11__A1__9S21114C12[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C11__A1__9S21114C12[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S21114C12[];
extern  VTBL_ENTRY _ZTV9S21114C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C12[];
static VTBL_ENTRY alt_thunk_names24[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21114C14D0Ev,_ZThn60_N9S21114C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21114C14D1Ev,_ZThn60_N9S21114C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21114C12D0Ev,_ZThn76_N9S21114C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21114C12D0Ev,_ZThn52_N9S21114C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21114C12D1Ev,_ZThn76_N9S21114C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21114C12D1Ev,_ZThn52_N9S21114C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21114C12 = {  "S21114C12", // class name
  bases_S21114C12, 32,
  &(vtc_S21114C12[0]), // expected_vtbl_contents
  &(vtt_S21114C12[0]), // expected_vtt_contents
  ABISELECT(136,92), // object size
  NSPAIRA(_ZTI9S21114C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21114C12),57, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21114C12),28, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names24,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21114C18  : virtual S21114C8 {
  int s21114c18f0;
  ~S21114C18(); // tgen
  S21114C18(); // tgen
};
//SIG(-1 S21114C18) C1{ VBC2{ BC3{ VBC4{ m FL} BC5{ m} v1}} Fi}


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

static void Test_S21114C18()
{
  extern Class_Descriptor cd_S21114C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S21114C18, buf);
    S21114C18 *dp, &lv = *(dp=new (buf) S21114C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S21114C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21114C18)");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*), ABISELECT(16,8), "S21114C18");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*), 0, "S21114C18");
    check_base_class_offset(lv, (S21114C4*)(S21114C8*), 0, "S21114C18");
    check_base_class_offset(lv, (S21114C8*), 0, "S21114C18");
    check_field_offset(lv, s21114c18f0, ABISELECT(8,4), "S21114C18.s21114c18f0");
    test_class_info(&lv, &cd_S21114C18);
    dp->~S21114C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21114C18(Test_S21114C18, "S21114C18", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S21114C18C1Ev();
extern void _ZN9S21114C18D1Ev();
Name_Map name_map_S21114C18[] = {
  NSPAIR(_ZN9S21114C18C1Ev),
  NSPAIR(_ZN9S21114C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
static Base_Class bases_S21114C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21114C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21114C18[];
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY vtc_S21114C18[] = {
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C18[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern VTBL_ENTRY _ZTV9S21114C18[];
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C8__9S21114C18[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C8__9S21114C18[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
static  VTT_ENTRY vtt_S21114C18[] = {
  {&(_ZTV9S21114C18[5]),  5,6},
  {&(_ZTV9S21114C18[5]),  5,6},
  {&(_tg__ZTV8S21114C8__9S21114C18[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C8__9S21114C18[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S21114C18[];
extern  VTBL_ENTRY _ZTV9S21114C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C18[];
Class_Descriptor cd_S21114C18 = {  "S21114C18", // class name
  bases_S21114C18, 4,
  &(vtc_S21114C18[0]), // expected_vtbl_contents
  &(vtt_S21114C18[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S21114C18),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21114C18),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21114C18),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  S21114C17  : virtual S21114C18 , S21114C3 , virtual S21114C11 , virtual S21114C12 {
  void *s21114c17f0[9];
  virtual  ~S21114C17(); // _ZN9S21114C17D2Ev
  S21114C17(); // tgen
};
//SIG(-1 S21114C17) C1{ VBC2{ VBC3{ BC4{ VBC5{ m FL} BC6{ m} v1}} Fi} BC7{ VBC4 BC8{ BC5 VBC6 BC3 vd v2} vd v3} VBC9{ BC5 VBC4 BC6 vd} VBC10{ VBC5 VBC11{ VBC5 BC4 BC6} BC9 VBC8 BC12{ BC5 BC8 BC13{ m} VBC14{ VBC5 BC11 VBC4 v4} VBC9 vd}} vd Fp[9]}


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

static void Test_S21114C17()
{
  extern Class_Descriptor cd_S21114C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,38)];
    init_test(&cd_S21114C17, buf);
    S21114C17 *dp, &lv = *(dp=new (buf) S21114C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,148), "sizeof(S21114C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21114C17)");
    /*is_ambiguous_... S21114C17::S21114C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*), ABISELECT(104,56), "S21114C17");
    /*is_ambiguous_... S21114C17::S21114C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*), ABISELECT(104,56), "S21114C17");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(104,56), "S21114C17");
    /*is_ambiguous_... S21114C12::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C12*), ABISELECT(104,56), "S21114C17");
    /*is_ambiguous_... S21114C17::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*), ABISELECT(104,56), "S21114C17");
    /*is_ambiguous_... S21114C17::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*), ABISELECT(104,56), "S21114C17");
    /*is_ambiguous_... S21114C17::S21114C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(104,56), "S21114C17");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(104,56), "S21114C17");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C16*), ABISELECT(104,56), "S21114C17");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C16*), ABISELECT(104,56), "S21114C17");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(104,56), "S21114C17");
    /*is_ambiguous_... S21114C17::S21114C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*), ABISELECT(88,48), "S21114C17");
    /*is_ambiguous_... S21114C17::S21114C8 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C8*), ABISELECT(88,48), "S21114C17");
    check_base_class_offset(lv, (S21114C8*)(S21114C18*), ABISELECT(88,48), "S21114C17");
    check_base_class_offset(lv, (S21114C18*), ABISELECT(88,48), "S21114C17");
    /*is_ambiguous_... S21114C17::S21114C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*), ABISELECT(120,68), "S21114C17");
    /*is_ambiguous_... S21114C3::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C3*), ABISELECT(120,68), "S21114C17");
    /*is_ambiguous_... S21114C17::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*), ABISELECT(120,68), "S21114C17");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C12*), ABISELECT(120,68), "S21114C17");
    /*is_ambiguous_... S21114C16::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C16*), ABISELECT(120,68), "S21114C17");
    /*is_ambiguous_... S21114C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C3*), ABISELECT(8,4), "S21114C17");
    /*is_ambiguous_... S21114C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C3*), ABISELECT(112,64), "S21114C17");
    /*is_ambiguous_... S21114C17::S21114C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*), ABISELECT(112,64), "S21114C17");
    /*is_ambiguous_... S21114C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(112,64), "S21114C17");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*), 0, "S21114C17");
    check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*), 0, "S21114C17");
    check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C3*), 0, "S21114C17");
    check_base_class_offset(lv, (S21114C7*)(S21114C3*), 0, "S21114C17");
    check_base_class_offset(lv, (S21114C3*), 0, "S21114C17");
    /*is_ambiguous_... S21114C17::S21114C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*), ABISELECT(128,72), "S21114C17");
    /*is_ambiguous_... S21114C17::S21114C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*), ABISELECT(136,80), "S21114C17");
    /*is_ambiguous_... S21114C17::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C11*), ABISELECT(120,68), "S21114C17");
    check_base_class_offset(lv, (S21114C11*)(S21114C14*)(S21114C12*), ABISELECT(120,68), "S21114C17");
    /*is_ambiguous_... S21114C17::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*), ABISELECT(192,120), "S21114C17");
    /*is_ambiguous_... S21114C17::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*), ABISELECT(192,120), "S21114C17");
    /*is_ambiguous_... S21114C17::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*), ABISELECT(200,124), "S21114C17");
    /*is_ambiguous_... S21114C12::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C12*), ABISELECT(192,120), "S21114C17");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C12*), ABISELECT(152,88), "S21114C17");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C12*), ABISELECT(160,96), "S21114C17");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C11*)(S21114C12*), ABISELECT(144,84), "S21114C17");
    /*is_ambiguous_... S21114C17::S21114C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*), ABISELECT(216,132), "S21114C17");
    /*is_ambiguous_... S21114C17::S21114C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(208,128), "S21114C17");
    /*is_ambiguous_... S21114C17::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(208,128), "S21114C17");
    /*is_ambiguous_... S21114C17::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C8*)(S21114C7*), ABISELECT(208,128), "S21114C17");
    /*is_ambiguous_... S21114C12::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C7*)(S21114C12*), ABISELECT(208,128), "S21114C17");
    /*is_ambiguous_... S21114C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C14*)(S21114C12*), ABISELECT(184,112), "S21114C17");
    /*is_ambiguous_... S21114C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(176,104), "S21114C17");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(168,100), "S21114C17");
    check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(168,100), "S21114C17");
    check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(168,100), "S21114C17");
    check_base_class_offset(lv, (S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(168,100), "S21114C17");
    check_base_class_offset(lv, (S28C52_nt*)(S21114C14*)(S21114C12*), ABISELECT(168,100), "S21114C17");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(224,140), "S21114C17");
    check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(224,140), "S21114C17");
    /*is_ambiguous_... S21114C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C16*), ABISELECT(232,144), "S21114C17");
    check_base_class_offset(lv, (S21114C13*)(S21114C16*), ABISELECT(224,140), "S21114C17");
    check_base_class_offset(lv, (S21114C16*)(S21114C14*)(S21114C12*), ABISELECT(224,140), "S21114C17");
    check_base_class_offset(lv, (S21114C14*)(S21114C12*), ABISELECT(168,100), "S21114C17");
    check_base_class_offset(lv, (S21114C12*), ABISELECT(144,84), "S21114C17");
    check_field_offset(lv, s21114c17f0, ABISELECT(16,12), "S21114C17.s21114c17f0");
    test_class_info(&lv, &cd_S21114C17);
    dp->~S21114C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21114C17(Test_S21114C17, "S21114C17", ABISELECT(240,148));

#else // __cplusplus

extern void _ZN9S21114C17C1Ev();
extern void _ZN9S21114C17D2Ev();
Name_Map name_map_S21114C17[] = {
  NSPAIR(_ZN9S21114C17C1Ev),
  NSPAIR(_ZN9S21114C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C18;
extern VTBL_ENTRY _ZTI9S21114C18[];
extern  VTBL_ENTRY _ZTV9S21114C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C18[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S21114C3;
extern VTBL_ENTRY _ZTI8S21114C3[];
extern  VTBL_ENTRY _ZTV8S21114C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S21114C16;
extern VTBL_ENTRY _ZTI9S21114C16[];
extern  VTBL_ENTRY _ZTV9S21114C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C16[];
extern Class_Descriptor cd_S21114C14;
extern VTBL_ENTRY _ZTI9S21114C14[];
extern  VTBL_ENTRY _ZTV9S21114C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C14[];
extern Class_Descriptor cd_S21114C12;
extern VTBL_ENTRY _ZTI9S21114C12[];
extern  VTBL_ENTRY _ZTV9S21114C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C12[];
static Base_Class bases_S21114C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(88,48), //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_S21114C8,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S21114C18,    ABISELECT(88,48), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    20, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21114C8,    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
    21, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21114C7,    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
    22, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21114C3,    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
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    16, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(120,68), //bcp->offset
    23, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    20, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(192,120), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(152,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    23, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(216,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    26, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(208,128), //bcp->offset
    63, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S3461C5_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
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(176,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
    34, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    32, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(168,100), //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
    17, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    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
    41, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(232,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S21114C16,    ABISELECT(224,140), //bcp->offset
    74, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S21114C14,    ABISELECT(168,100), //bcp->offset
    47, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S21114C12,    ABISELECT(144,84), //bcp->offset
    32, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21114C17[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C17D1Ev();
extern void _ZN9S21114C17D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev)();
extern void ABISELECT(_ZThn120_N9S21114C17D1Ev,_ZThn68_N9S21114C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev)();
extern void ABISELECT(_ZThn120_N9S21114C17D0Ev,_ZThn68_N9S21114C17D0Ev)() __attribute__((weak));
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21114C17D1Ev,_ZTv0_n44_N9S21114C17D1Ev)();
extern void ABISELECT(_ZThn144_N9S21114C17D1Ev,_ZThn84_N9S21114C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21114C17D0Ev,_ZTv0_n44_N9S21114C17D0Ev)();
extern void ABISELECT(_ZThn144_N9S21114C17D0Ev,_ZThn84_N9S21114C17D0Ev)() __attribute__((weak));
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N9S21114C17D1Ev,_ZTvn16_n44_N9S21114C17D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N9S21114C17D0Ev,_ZTvn16_n44_N9S21114C17D0Ev)();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev)();
extern void ABISELECT(_ZThn208_N9S21114C17D1Ev,_ZThn128_N9S21114C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev)();
extern void ABISELECT(_ZThn208_N9S21114C17D0Ev,_ZThn128_N9S21114C17D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY vtc_S21114C17[] = {
  ABISELECT(224,140),
  ABISELECT(208,128),
  ABISELECT(192,120),
  ABISELECT(144,84),
  ABISELECT(120,68),
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(120,68),
  ABISELECT(112,64),
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C17D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  ABISELECT(-120,-68),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev),
  ABISELECT(24,16),
  ABISELECT(-144,-84),
  ABISELECT(-24,-16),
  ABISELECT(80,56),
  ABISELECT(-32,-20),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-40,-28),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C17D1Ev,_ZTv0_n44_N9S21114C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C17D0Ev,_ZTv0_n44_N9S21114C17D0Ev),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(56,40),
  ABISELECT(-56,-36),
  ABISELECT(-64,-44),
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C17D1Ev,_ZTvn16_n44_N9S21114C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C17D0Ev,_ZTvn16_n44_N9S21114C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  0,
  ABISELECT(-88,-64),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  0,
  ABISELECT(-208,-128),
  0,
  ABISELECT(-96,-64),
  ABISELECT(-104,-72),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  0,
  0,
  ABISELECT(-104,-72),
  ABISELECT(-120,-84),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern VTBL_ENTRY _ZTV9S21114C17[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C3D1Ev();
extern void _ZN8S21114C3D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C3__9S21114C17[] = {
  ABISELECT(120,68),
  ABISELECT(112,64),
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C78S21114C3__9S21114C17[] = {
  ABISELECT(112,64),
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C78S21114C3__A1__9S21114C17[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C78S21114C3__A2__9S21114C17[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__8S21114C3__9S21114C17[] = {
  0,
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__9S21114C17[] = {
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C18[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C8__9S21114C17[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C8__9S21114C17[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C17[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C11__9S21114C17[] = {
  0,
  0,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C12D1Ev();
extern void _ZN9S21114C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C12__9S21114C17[] = {
  ABISELECT(-24,-16),
  ABISELECT(80,56),
  ABISELECT(-32,-20),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C12D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C119S21114C12__A1__9S21114C17[] = {
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C119S21114C12__A1__9S21114C17[] = {
  0,
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C14D1Ev();
extern void _ZN9S21114C14D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__9S21114C17[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(56,40),
  ABISELECT(-56,-36),
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C14D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C79S21114C149S21114C12__A2__9S21114C17[] = {
  ABISELECT(-56,-36),
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C79S21114C149S21114C12__A3__9S21114C17[] = {
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C79S21114C149S21114C12__A5__9S21114C17[] = {
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C149S21114C12__9S21114C17[] = {
  0,
  0,
  ABISELECT(-104,-72),
  ABISELECT(-120,-84),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21114C11__9S21114C149S21114C12__9S21114C17[] = {
  ABISELECT(48,32),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__9S21114C12__9S21114C17[] = {
  0,
  ABISELECT(-88,-64),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21114C11__A1__9S21114C12__9S21114C17[] = {
  ABISELECT(24,16),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S21114C12D1Ev,_ZThn44_N9S21114C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S21114C12D0Ev,_ZThn44_N9S21114C12D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__9S21114C12__9S21114C17[] = {
  0,
  ABISELECT(-64,-44),
  0,
  ABISELECT(-96,-64),
  ABISELECT(-104,-72),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn24_N9S21114C12D1Ev,_ZThn16_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn24_N9S21114C12D0Ev,_ZThn16_N9S21114C12D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C14__9S21114C12__9S21114C17[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(56,40),
  ABISELECT(-56,-36),
  ABISELECT(-64,-44),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C12D1Ev,_ZThn16_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C12D0Ev,_ZThn16_N9S21114C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C12__9S21114C17[] = {
  0,
  0,
  ABISELECT(-104,-72),
  ABISELECT(-120,-84),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__9S21114C17[] = {
  ABISELECT(-88,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C13__A3__9S21114C17[] = {
  ABISELECT(-88,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__A1__9S21114C17[] = {
  ABISELECT(-96,-64),
  ABISELECT(-104,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C7__A2__9S21114C17[] = {
  ABISELECT(-104,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C7__A4__9S21114C17[] = {
  ABISELECT(-104,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C17[] = {
  ABISELECT(-104,-72),
  ABISELECT(-120,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C16__A1__9S21114C17[] = {
  ABISELECT(-120,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C139S21114C16__A6__9S21114C17[] = {
  ABISELECT(-120,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C16__9S21114C17[] = {
  0,
  ABISELECT(-16,-12),
  ABISELECT(104,72),
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
static  VTT_ENTRY vtt_S21114C17[] = {
  {&(_ZTV9S21114C17[12]),  12,82},
  {&(_tg__ZTV8S21114C3__9S21114C17[5]),  5,10},
  {&(_tg__ZTV8S21114C78S21114C3__9S21114C17[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C78S21114C3__A1__9S21114C17[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C78S21114C3__A2__9S21114C17[3]),  3,4},
  {&(_tg__ZTV8S21114C4__8S21114C3__9S21114C17[4]),  4,5},
  {&(_ZTV9S21114C17[22]),  22,82},
  {&(_ZTV9S21114C17[22]),  22,82},
  {&(_ZTV9S21114C17[29]),  29,82},
  {&(_ZTV9S21114C17[29]),  29,82},
  {&(_ZTV9S21114C17[44]),  44,82},
  {&(_ZTV9S21114C17[62]),  62,82},
  {&(_ZTV9S21114C17[70]),  70,82},
  {&(_ZTV9S21114C17[54]),  54,82},
  {&(_ZTV9S21114C17[80]),  80,82},
  {&(_tg__ZTV9S21114C18__9S21114C17[5]),  5,6},
  {&(_tg__ZTV9S21114C18__9S21114C17[5]),  5,6},
  {&(_tg__ZTV8S21114C8__9S21114C17[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C8__9S21114C17[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C17[3]),  3,4},
  {&(_tg__ZTV9S21114C11__9S21114C17[5]),  5,8},
  {&(_tg__ZTV9S21114C11__9S21114C17[5]),  5,8},
  {&(_tg__ZTV9S21114C12__9S21114C17[10]),  10,13},
  {&(_tg__ZTV9S21114C119S21114C12__A1__9S21114C17[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C119S21114C12__A1__9S21114C17[4]),  4,5},
  {&(_tg__ZTV9S21114C149S21114C12__9S21114C17[7]),  7,11},
  {&(_tg__ZTV8S21114C79S21114C149S21114C12__A2__9S21114C17[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C79S21114C149S21114C12__A3__9S21114C17[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C79S21114C149S21114C12__A5__9S21114C17[3]),  3,4},
  {&(_tg__ZTV9S21114C16__9S21114C149S21114C12__9S21114C17[6]),  6,8},
  {&(_tg__ZTV9S21114C11__9S21114C149S21114C12__9S21114C17[6]),  6,9},
  {&(_tg__ZTV9S21114C11__9S21114C149S21114C12__9S21114C17[6]),  6,9},
  {&(_tg__ZTV9S21114C13__9S21114C12__9S21114C17[4]),  4,5},
  {&(_tg__ZTV9S21114C11__A1__9S21114C12__9S21114C17[6]),  6,9},
  {&(_tg__ZTV8S21114C7__9S21114C12__9S21114C17[7]),  7,11},
  {&(_tg__ZTV9S21114C14__9S21114C12__9S21114C17[7]),  7,11},
  {&(_tg__ZTV9S21114C16__9S21114C12__9S21114C17[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A1__9S21114C12__9S21114C17[6]),  6,9},
  {&(_tg__ZTV9S21114C13__9S21114C17[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C13__A3__9S21114C17[3]),  3,4},
  {&(_tg__ZTV8S21114C7__A1__9S21114C17[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C7__A2__9S21114C17[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C7__A4__9S21114C17[3]),  3,4},
  {&(_tg__ZTV9S21114C16__9S21114C17[4]),  4,6},
  {&(_tg__ZTV9S21114C139S21114C16__A1__9S21114C17[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C139S21114C16__A6__9S21114C17[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C16__9S21114C17[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S21114C17[];
extern  VTBL_ENTRY _ZTV9S21114C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C17[];
static VTBL_ENTRY alt_thunk_names25[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21114C12D0Ev,_ZThn44_N9S21114C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21114C12D1Ev,_ZThn44_N9S21114C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21114C17D0Ev,_ZTv0_n44_N9S21114C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S21114C17D0Ev,_ZThn84_N9S21114C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21114C17D1Ev,_ZTv0_n44_N9S21114C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S21114C17D1Ev,_ZThn84_N9S21114C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S21114C17D0Ev,_ZThn128_N9S21114C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21114C17D0Ev,_ZThn68_N9S21114C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S21114C17D1Ev,_ZThn128_N9S21114C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21114C17D1Ev,_ZThn68_N9S21114C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21114C17 = {  "S21114C17", // class name
  bases_S21114C17, 43,
  &(vtc_S21114C17[0]), // expected_vtbl_contents
  &(vtt_S21114C17[0]), // expected_vtt_contents
  ABISELECT(240,148), // object size
  NSPAIRA(_ZTI9S21114C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21114C17),82, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21114C17),47, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names25,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21114C9  : virtual S21114C4 , virtual S21114C10 , virtual S21114C12 , S21114C17 {
  virtual  ~S21114C9(); // _ZN8S21114C9D2Ev
  S21114C9(); // tgen
};
//SIG(-1 S21114C9) C1{ VBC2{ VBC3{ m FL} BC4{ m} v1} VBC5{ BC4 VBC2 BC6{ BC3 VBC2 BC4 vd} BC3 vd FL} VBC7{ VBC3 VBC8{ VBC3 BC2 BC4} BC6 VBC9{ BC3 VBC4 BC10{ BC2} vd v2} BC11{ BC3 BC9 BC12{ m} VBC13{ VBC3 BC8 VBC2 v3} VBC6 vd}} BC14{ VBC15{ VBC10 Fi} BC16{ VBC2 BC9 vd v4} VBC6 VBC7 vd Fp[9]} vd}


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

static void Test_S21114C9()
{
  extern Class_Descriptor cd_S21114C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,46)];
    init_test(&cd_S21114C9, buf);
    S21114C9 *dp, &lv = *(dp=new (buf) S21114C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,180), "sizeof(S21114C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21114C9)");
    /*is_ambiguous_... S21114C9::S21114C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*), ABISELECT(88,48), "S21114C9");
    /*is_ambiguous_... S21114C12::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C12*), ABISELECT(88,48), "S21114C9");
    /*is_ambiguous_... S21114C9::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*), ABISELECT(88,48), "S21114C9");
    /*is_ambiguous_... S21114C9::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*), ABISELECT(88,48), "S21114C9");
    /*is_ambiguous_... S21114C9::S21114C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(88,48), "S21114C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(88,48), "S21114C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C16*), ABISELECT(88,48), "S21114C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C16*), ABISELECT(88,48), "S21114C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(88,48), "S21114C9");
    /*is_ambiguous_... S21114C9::S21114C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*), ABISELECT(88,48), "S21114C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*)(S21114C17*), ABISELECT(88,48), "S21114C9");
    /*is_ambiguous_... S21114C9::S21114C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*), ABISELECT(96,56), "S21114C9");
    /*is_ambiguous_... S21114C9::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*), ABISELECT(96,56), "S21114C9");
    check_base_class_offset(lv, (S21114C4*)(S21114C10*), ABISELECT(96,56), "S21114C9");
    check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C10*), ABISELECT(96,56), "S21114C9");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C12*), ABISELECT(96,56), "S21114C9");
    /*is_ambiguous_... S21114C16::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C16*), ABISELECT(96,56), "S21114C9");
    /*is_ambiguous_... S21114C9::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*), ABISELECT(96,56), "S21114C9");
    /*is_ambiguous_... S21114C3::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C3*)(S21114C17*), ABISELECT(96,56), "S21114C9");
    /*is_ambiguous_... S21114C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C10*), ABISELECT(113,69), "S21114C9");
    /*is_ambiguous_... S21114C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C10*), ABISELECT(104,60), "S21114C9");
    /*is_ambiguous_... S21114C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C10*), ABISELECT(112,68), "S21114C9");
    check_base_class_offset(lv, (S21114C11*)(S21114C10*), ABISELECT(96,56), "S21114C9");
    /*is_ambiguous_... S21114C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C10*), ABISELECT(120,72), "S21114C9");
    check_base_class_offset(lv, (S21114C10*), ABISELECT(96,56), "S21114C9");
    /*is_ambiguous_... S21114C9::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*), ABISELECT(184,124), "S21114C9");
    /*is_ambiguous_... S21114C9::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*), ABISELECT(184,124), "S21114C9");
    /*is_ambiguous_... S21114C9::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*), ABISELECT(192,128), "S21114C9");
    /*is_ambiguous_... S21114C12::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C12*), ABISELECT(184,124), "S21114C9");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C12*), ABISELECT(144,92), "S21114C9");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C12*), ABISELECT(152,100), "S21114C9");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C11*)(S21114C12*), ABISELECT(136,88), "S21114C9");
    /*is_ambiguous_... S21114C9::S21114C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*), ABISELECT(208,136), "S21114C9");
    /*is_ambiguous_... S21114C9::S21114C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*), ABISELECT(216,144), "S21114C9");
    /*is_ambiguous_... S21114C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(216,144), "S21114C9");
    /*is_ambiguous_... S21114C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C3*)(S21114C17*), ABISELECT(216,144), "S21114C9");
    /*is_ambiguous_... S21114C9::S21114C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(200,132), "S21114C9");
    /*is_ambiguous_... S21114C9::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(200,132), "S21114C9");
    /*is_ambiguous_... S21114C9::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C8*)(S21114C7*), ABISELECT(200,132), "S21114C9");
    /*is_ambiguous_... S21114C12::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C7*)(S21114C12*), ABISELECT(200,132), "S21114C9");
    /*is_ambiguous_... S21114C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C14*)(S21114C12*), ABISELECT(176,116), "S21114C9");
    /*is_ambiguous_... S21114C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(168,108), "S21114C9");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(160,104), "S21114C9");
    check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(160,104), "S21114C9");
    check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(160,104), "S21114C9");
    check_base_class_offset(lv, (S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(160,104), "S21114C9");
    check_base_class_offset(lv, (S28C52_nt*)(S21114C14*)(S21114C12*), ABISELECT(160,104), "S21114C9");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(224,148), "S21114C9");
    check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(224,148), "S21114C9");
    /*is_ambiguous_... S21114C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C16*), ABISELECT(232,152), "S21114C9");
    check_base_class_offset(lv, (S21114C13*)(S21114C16*), ABISELECT(224,148), "S21114C9");
    check_base_class_offset(lv, (S21114C16*)(S21114C14*)(S21114C12*), ABISELECT(224,148), "S21114C9");
    /*is_ambiguous_... S21114C9::S21114C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*), ABISELECT(248,160), "S21114C9");
    /*is_ambiguous_... S21114C9::S21114C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*), ABISELECT(256,168), "S21114C9");
    check_base_class_offset(lv, (S21114C11*)(S21114C14*)(S21114C12*), ABISELECT(240,156), "S21114C9");
    /*is_ambiguous_... S21114C17::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C11*)(S21114C17*), ABISELECT(240,156), "S21114C9");
    check_base_class_offset(lv, (S21114C14*)(S21114C12*), ABISELECT(160,104), "S21114C9");
    check_base_class_offset(lv, (S21114C12*), ABISELECT(136,88), "S21114C9");
    check_base_class_offset(lv, (S21114C12*)(S21114C17*), ABISELECT(136,88), "S21114C9");
    /*is_ambiguous_... S21114C9::S21114C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*), ABISELECT(264,172), "S21114C9");
    /*is_ambiguous_... S21114C9::S21114C8 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C8*), ABISELECT(264,172), "S21114C9");
    check_base_class_offset(lv, (S21114C8*)(S21114C18*), ABISELECT(264,172), "S21114C9");
    check_base_class_offset(lv, (S21114C18*)(S21114C17*), ABISELECT(264,172), "S21114C9");
    /*is_ambiguous_... S21114C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C3*)(S21114C17*), ABISELECT(8,4), "S21114C9");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*)(S21114C17*), 0, "S21114C9");
    check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*)(S21114C17*), 0, "S21114C9");
    check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C3*)(S21114C17*), 0, "S21114C9");
    check_base_class_offset(lv, (S21114C7*)(S21114C3*)(S21114C17*), 0, "S21114C9");
    check_base_class_offset(lv, (S21114C3*)(S21114C17*), 0, "S21114C9");
    check_base_class_offset(lv, (S21114C17*), 0, "S21114C9");
    test_class_info(&lv, &cd_S21114C9);
    dp->~S21114C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21114C9(Test_S21114C9, "S21114C9", ABISELECT(280,180));

#else // __cplusplus

extern void _ZN8S21114C9C1Ev();
extern void _ZN8S21114C9D2Ev();
Name_Map name_map_S21114C9[] = {
  NSPAIR(_ZN8S21114C9C1Ev),
  NSPAIR(_ZN8S21114C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S21114C10;
extern VTBL_ENTRY _ZTI9S21114C10[];
extern  VTBL_ENTRY _ZTV9S21114C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C10[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S21114C16;
extern VTBL_ENTRY _ZTI9S21114C16[];
extern  VTBL_ENTRY _ZTV9S21114C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C16[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S21114C14;
extern VTBL_ENTRY _ZTI9S21114C14[];
extern  VTBL_ENTRY _ZTV9S21114C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C14[];
extern Class_Descriptor cd_S21114C12;
extern VTBL_ENTRY _ZTI9S21114C12[];
extern  VTBL_ENTRY _ZTV9S21114C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C18;
extern VTBL_ENTRY _ZTI9S21114C18[];
extern  VTBL_ENTRY _ZTV9S21114C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C18[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S21114C3;
extern VTBL_ENTRY _ZTI8S21114C3[];
extern  VTBL_ENTRY _ZTV8S21114C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C3[];
extern Class_Descriptor cd_S21114C17;
extern VTBL_ENTRY _ZTI9S21114C17[];
extern  VTBL_ENTRY _ZTV9S21114C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C17[];
static Base_Class bases_S21114C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    2, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(113,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
    8, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    6, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    6, //immediately_derived
  0, 0},
  {&cd_S21114C11,    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
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    8, //immediately_derived
  0, 0},
  {&cd_S21114C10,    ABISELECT(96,56), //bcp->offset
    18, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    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
    10, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(184,124), //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
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(192,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
    12, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(184,124), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    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
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(136,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(208,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(216,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
    21, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    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
    19, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(200,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(200,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(200,132), //bcp->offset
    58, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(176,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
    37, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(168,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(160,104), //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
    16, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(232,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
    32, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S21114C16,    ABISELECT(224,148), //bcp->offset
    69, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(248,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(256,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
    36, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(240,156), //bcp->offset
    77, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S21114C14,    ABISELECT(160,104), //bcp->offset
    42, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S21114C12,    ABISELECT(136,88), //bcp->offset
    27, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(264,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
    40, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(264,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(264,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S21114C18,    ABISELECT(264,172), //bcp->offset
    86, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21114C4,    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
    22, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S21114C8,    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
    23, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S21114C7,    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
    24, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S21114C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S21114C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21114C9[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C9D1Ev();
extern void _ZN8S21114C9D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S21114C9D1Ev,_ZThn56_N8S21114C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S21114C9D0Ev,_ZThn56_N8S21114C9D0Ev)() __attribute__((weak));
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S21114C9D1Ev,_ZTv0_n44_N8S21114C9D1Ev)();
extern void ABISELECT(_ZThn136_N8S21114C9D1Ev,_ZThn88_N8S21114C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21114C9D0Ev,_ZTv0_n44_N8S21114C9D0Ev)();
extern void ABISELECT(_ZThn136_N8S21114C9D0Ev,_ZThn88_N8S21114C9D0Ev)() __attribute__((weak));
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S21114C9D1Ev,_ZTvn16_n44_N8S21114C9D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S21114C9D0Ev,_ZTvn16_n44_N8S21114C9D0Ev)();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev)();
extern void ABISELECT(_ZThn200_N8S21114C9D1Ev,_ZThn132_N8S21114C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev)();
extern void ABISELECT(_ZThn200_N8S21114C9D0Ev,_ZThn132_N8S21114C9D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev)();
extern void ABISELECT(_ZThn240_N8S21114C9D1Ev,_ZThn156_N8S21114C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev)();
extern void ABISELECT(_ZThn240_N8S21114C9D0Ev,_ZThn156_N8S21114C9D0Ev)() __attribute__((weak));
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY vtc_S21114C9[] = {
  ABISELECT(96,56),
  ABISELECT(224,148),
  ABISELECT(200,132),
  ABISELECT(184,124),
  ABISELECT(136,88),
  ABISELECT(240,156),
  ABISELECT(264,172),
  ABISELECT(264,172),
  ABISELECT(96,56),
  ABISELECT(216,144),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
  ABISELECT(-96,-56),
  0,
  0,
  -8,
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev),
  ABISELECT(24,16),
  ABISELECT(-136,-88),
  ABISELECT(104,68),
  ABISELECT(88,60),
  ABISELECT(80,56),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-48,-40),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C9D1Ev,_ZTv0_n44_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C9D0Ev,_ZTv0_n44_N8S21114C9D0Ev),
  ABISELECT(80,52),
  ABISELECT(-64,-48),
  ABISELECT(64,44),
  ABISELECT(56,40),
  ABISELECT(-72,-56),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C9D1Ev,_ZTvn16_n44_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C9D0Ev,_ZTvn16_n44_N8S21114C9D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  0,
  ABISELECT(-96,-76),
  ABISELECT(-184,-124),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  0,
  ABISELECT(-200,-132),
  0,
  ABISELECT(16,12),
  ABISELECT(-112,-84),
  ABISELECT(-200,-132),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  0,
  0,
  ABISELECT(-128,-92),
  ABISELECT(-136,-100),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  ABISELECT(-240,-156),
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  ABISELECT(-152,-108),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev),
  0,
  0,
  ABISELECT(-176,-124),
  ABISELECT(-264,-172),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern VTBL_ENTRY _ZTV8S21114C9[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C17D1Ev();
extern void _ZN9S21114C17D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C17__8S21114C9[] = {
  ABISELECT(224,148),
  ABISELECT(200,132),
  ABISELECT(184,124),
  ABISELECT(136,88),
  ABISELECT(240,156),
  ABISELECT(264,172),
  ABISELECT(264,172),
  ABISELECT(96,56),
  ABISELECT(216,144),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C17D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C3D1Ev();
extern void _ZN8S21114C3D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C39S21114C17__8S21114C9[] = {
  ABISELECT(96,56),
  ABISELECT(216,144),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C78S21114C39S21114C17__A2__8S21114C9[] = {
  ABISELECT(216,144),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C78S21114C39S21114C17__A3__8S21114C9[] = {
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C78S21114C39S21114C17__A6__8S21114C9[] = {
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__8S21114C39S21114C17__8S21114C9[] = {
  0,
  -8,
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__9S21114C17__8S21114C9[] = {
  0,
  0,
  ABISELECT(-176,-124),
  ABISELECT(-264,-172),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C17__8S21114C9[] = {
  0,
  -8,
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev)();
extern void ABISELECT(_ZThn240_N9S21114C17D1Ev,_ZThn156_N9S21114C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev)();
extern void ABISELECT(_ZThn240_N9S21114C17D0Ev,_ZThn156_N9S21114C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__9S21114C17__8S21114C9[] = {
  ABISELECT(-240,-156),
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  ABISELECT(-152,-108),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21114C17D1Ev,_ZTv0_n44_N9S21114C17D1Ev)();
extern void ABISELECT(_ZThn136_N9S21114C17D1Ev,_ZThn88_N9S21114C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21114C17D0Ev,_ZTv0_n44_N9S21114C17D0Ev)();
extern void ABISELECT(_ZThn136_N9S21114C17D0Ev,_ZThn88_N9S21114C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C12__9S21114C17__8S21114C9[] = {
  ABISELECT(24,16),
  ABISELECT(-136,-88),
  ABISELECT(104,68),
  ABISELECT(88,60),
  ABISELECT(80,56),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-48,-40),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C17D1Ev,_ZTv0_n44_N9S21114C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C17D0Ev,_ZTv0_n44_N9S21114C17D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__9S21114C17__8S21114C9[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-184,-124),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev)();
extern void ABISELECT(_ZThn200_N9S21114C17D1Ev,_ZThn132_N9S21114C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev)();
extern void ABISELECT(_ZThn200_N9S21114C17D0Ev,_ZThn132_N9S21114C17D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__A1__9S21114C17__8S21114C9[] = {
  0,
  ABISELECT(-200,-132),
  0,
  ABISELECT(16,12),
  ABISELECT(-112,-84),
  ABISELECT(-200,-132),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N9S21114C17D1Ev,_ZTvn16_n44_N9S21114C17D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N9S21114C17D0Ev,_ZTvn16_n44_N9S21114C17D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__9S21114C17__8S21114C9[] = {
  ABISELECT(80,52),
  ABISELECT(-64,-48),
  ABISELECT(64,44),
  ABISELECT(56,40),
  ABISELECT(-72,-56),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C17D1Ev,_ZTvn16_n44_N9S21114C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C17D0Ev,_ZTvn16_n44_N9S21114C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C17__8S21114C9[] = {
  0,
  0,
  ABISELECT(-128,-92),
  ABISELECT(-136,-100),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__8S21114C9[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C10D1Ev();
extern void _ZN9S21114C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C10__8S21114C9[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C10[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C10D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C119S21114C10__8S21114C9[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C12D1Ev();
extern void _ZN9S21114C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C12__8S21114C9[] = {
  ABISELECT(104,68),
  ABISELECT(88,60),
  ABISELECT(80,56),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-48,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C12D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C119S21114C12__A1__8S21114C9[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-48,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C119S21114C12__A1__8S21114C9[] = {
  0,
  -8,
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C14D1Ev();
extern void _ZN9S21114C14D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__8S21114C9[] = {
  ABISELECT(80,52),
  ABISELECT(-64,-48),
  ABISELECT(64,44),
  ABISELECT(56,40),
  ABISELECT(-72,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C14D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C79S21114C149S21114C12__A1__8S21114C9[] = {
  ABISELECT(56,40),
  ABISELECT(-72,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C79S21114C149S21114C12__A1__8S21114C9[] = {
  ABISELECT(-72,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C79S21114C149S21114C12__A3__8S21114C9[] = {
  ABISELECT(-72,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C149S21114C12__8S21114C9[] = {
  0,
  0,
  ABISELECT(-128,-92),
  ABISELECT(-136,-100),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A2__9S21114C149S21114C12__8S21114C9[] = {
  0,
  -8,
  ABISELECT(64,48),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev)();
extern void ABISELECT(_ZThn80_N9S21114C14D1Ev,_ZThn52_N9S21114C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev)();
extern void ABISELECT(_ZThn80_N9S21114C14D0Ev,_ZThn52_N9S21114C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__9S21114C149S21114C12__8S21114C9[] = {
  ABISELECT(-80,-52),
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  ABISELECT(-152,-108),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__9S21114C12__8S21114C9[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C12__8S21114C9[] = {
  0,
  -8,
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S21114C12D1Ev,_ZThn44_N9S21114C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S21114C12D0Ev,_ZThn44_N9S21114C12D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__9S21114C12__8S21114C9[] = {
  0,
  ABISELECT(-64,-44),
  0,
  ABISELECT(16,12),
  ABISELECT(-112,-84),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn24_N9S21114C12D1Ev,_ZThn16_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn24_N9S21114C12D0Ev,_ZThn16_N9S21114C12D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C14__9S21114C12__8S21114C9[] = {
  ABISELECT(80,52),
  ABISELECT(-64,-48),
  ABISELECT(64,44),
  ABISELECT(56,40),
  ABISELECT(-72,-56),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C12D1Ev,_ZThn16_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C12D0Ev,_ZThn16_N9S21114C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C12__8S21114C9[] = {
  0,
  0,
  ABISELECT(-128,-92),
  ABISELECT(-136,-100),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn104_N9S21114C12D1Ev,_ZThn68_N9S21114C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev)();
extern void ABISELECT(_ZThn104_N9S21114C12D0Ev,_ZThn68_N9S21114C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__A1__9S21114C12__8S21114C9[] = {
  ABISELECT(-104,-68),
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  ABISELECT(-152,-108),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__8S21114C9[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C13__A1__8S21114C9[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__8S21114C9[] = {
  ABISELECT(16,12),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C7__8S21114C9[] = {
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C7__A2__8S21114C9[] = {
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__8S21114C9[] = {
  ABISELECT(-128,-92),
  ABISELECT(-136,-100),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C16__A1__8S21114C9[] = {
  ABISELECT(-136,-100),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C139S21114C16__A4__8S21114C9[] = {
  ABISELECT(-136,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C16__8S21114C9[] = {
  0,
  -8,
  ABISELECT(128,92),
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C11__A2__8S21114C9[] = {
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  ABISELECT(-152,-108),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C11__A2__8S21114C9[] = {
  0,
  -8,
  ABISELECT(144,100),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__8S21114C9[] = {
  0,
  0,
  ABISELECT(-176,-124),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C18[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C8__A2__8S21114C9[] = {
  ABISELECT(-176,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C8__A5__8S21114C9[] = {
  ABISELECT(-176,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
static  VTT_ENTRY vtt_S21114C9[] = {
  {&(_ZTV8S21114C9[13]),  13,92},
  {&(_tg__ZTV9S21114C17__8S21114C9[12]),  12,17},
  {&(_tg__ZTV8S21114C39S21114C17__8S21114C9[5]),  5,10},
  {&(_tg__ZTV8S21114C78S21114C39S21114C17__A2__8S21114C9[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C78S21114C39S21114C17__A3__8S21114C9[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C78S21114C39S21114C17__A6__8S21114C9[3]),  3,4},
  {&(_tg__ZTV8S21114C4__8S21114C39S21114C17__8S21114C9[4]),  4,5},
  {&(_tg__ZTV9S21114C18__9S21114C17__8S21114C9[5]),  5,6},
  {&(_tg__ZTV9S21114C18__9S21114C17__8S21114C9[5]),  5,6},
  {&(_tg__ZTV8S21114C4__A1__9S21114C17__8S21114C9[4]),  4,5},
  {&(_tg__ZTV9S21114C11__9S21114C17__8S21114C9[6]),  6,9},
  {&(_tg__ZTV9S21114C12__9S21114C17__8S21114C9[12]),  12,15},
  {&(_tg__ZTV9S21114C13__9S21114C17__8S21114C9[4]),  4,5},
  {&(_tg__ZTV8S21114C7__A1__9S21114C17__8S21114C9[7]),  7,11},
  {&(_tg__ZTV9S21114C149S21114C12__9S21114C17__8S21114C9[7]),  7,11},
  {&(_tg__ZTV9S21114C16__9S21114C17__8S21114C9[6]),  6,8},
  {&(_ZTV8S21114C9[24]),  24,92},
  {&(_ZTV8S21114C9[24]),  24,92},
  {&(_ZTV8S21114C9[39]),  39,92},
  {&(_ZTV8S21114C9[57]),  57,92},
  {&(_ZTV8S21114C9[65]),  65,92},
  {&(_ZTV8S21114C9[49]),  49,92},
  {&(_ZTV8S21114C9[75]),  75,92},
  {&(_ZTV8S21114C9[83]),  83,92},
  {&(_ZTV8S21114C9[91]),  91,92},
  {&(_ZTV8S21114C9[91]),  91,92},
  {&(_tg__ZTV8S21114C4__8S21114C9[3]),  3,4},
  {&(_tg__ZTV9S21114C10__8S21114C9[5]),  5,8},
  {&(_tg__ZTV9S21114C119S21114C10__8S21114C9[5]),  5,8},
  {&(_tg__ZTV9S21114C119S21114C10__8S21114C9[5]),  5,8},
  {&(_tg__ZTV9S21114C10__8S21114C9[5]),  5,8},
  {&(_tg__ZTV9S21114C12__8S21114C9[10]),  10,13},
  {&(_tg__ZTV9S21114C119S21114C12__A1__8S21114C9[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C119S21114C12__A1__8S21114C9[4]),  4,5},
  {&(_tg__ZTV9S21114C149S21114C12__8S21114C9[7]),  7,11},
  {&(_tg__ZTV8S21114C79S21114C149S21114C12__A1__8S21114C9[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C79S21114C149S21114C12__A1__8S21114C9[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C79S21114C149S21114C12__A3__8S21114C9[3]),  3,4},
  {&(_tg__ZTV9S21114C16__9S21114C149S21114C12__8S21114C9[6]),  6,8},
  {&(_tg__ZTV8S21114C4__A2__9S21114C149S21114C12__8S21114C9[4]),  4,5},
  {&(_tg__ZTV9S21114C11__9S21114C149S21114C12__8S21114C9[6]),  6,9},
  {&(_tg__ZTV9S21114C13__9S21114C12__8S21114C9[4]),  4,5},
  {&(_tg__ZTV8S21114C4__A1__9S21114C12__8S21114C9[4]),  4,5},
  {&(_tg__ZTV8S21114C7__9S21114C12__8S21114C9[7]),  7,11},
  {&(_tg__ZTV9S21114C14__9S21114C12__8S21114C9[7]),  7,11},
  {&(_tg__ZTV9S21114C16__9S21114C12__8S21114C9[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A1__9S21114C12__8S21114C9[6]),  6,9},
  {&(_tg__ZTV9S21114C13__8S21114C9[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C13__A1__8S21114C9[3]),  3,4},
  {&(_tg__ZTV8S21114C7__8S21114C9[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C7__8S21114C9[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C7__A2__8S21114C9[3]),  3,4},
  {&(_tg__ZTV9S21114C16__8S21114C9[4]),  4,6},
  {&(_tg__ZTV9S21114C139S21114C16__A1__8S21114C9[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C139S21114C16__A4__8S21114C9[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C16__8S21114C9[4]),  4,5},
  {&(_tg__ZTV9S21114C11__A2__8S21114C9[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C11__A2__8S21114C9[4]),  4,5},
  {&(_tg__ZTV9S21114C18__8S21114C9[5]),  5,6},
  {&(_tg__ZTV9S21114C18__8S21114C9[5]),  5,6},
  {&(_tg__ZTV8S21114C8__A2__8S21114C9[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C8__A5__8S21114C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S21114C9[];
extern  VTBL_ENTRY _ZTV8S21114C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C9[];
static VTBL_ENTRY alt_thunk_names26[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21114C12D0Ev,_ZThn68_N9S21114C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21114C12D0Ev,_ZThn44_N9S21114C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21114C12D1Ev,_ZThn68_N9S21114C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21114C12D1Ev,_ZThn44_N9S21114C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21114C14D0Ev,_ZThn52_N9S21114C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21114C14D1Ev,_ZThn52_N9S21114C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21114C17D0Ev,_ZTv0_n44_N9S21114C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21114C17D0Ev,_ZThn88_N9S21114C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21114C17D1Ev,_ZTv0_n44_N9S21114C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21114C17D1Ev,_ZThn88_N9S21114C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S21114C17D0Ev,_ZThn132_N9S21114C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S21114C17D0Ev,_ZThn156_N9S21114C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S21114C17D1Ev,_ZThn132_N9S21114C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S21114C17D1Ev,_ZThn156_N9S21114C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21114C9D0Ev,_ZTv0_n44_N8S21114C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21114C9D0Ev,_ZThn88_N8S21114C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21114C9D1Ev,_ZTv0_n44_N8S21114C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21114C9D1Ev,_ZThn88_N8S21114C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S21114C9D0Ev,_ZThn156_N8S21114C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21114C9D0Ev,_ZThn132_N8S21114C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21114C9D0Ev,_ZThn56_N8S21114C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S21114C9D1Ev,_ZThn156_N8S21114C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21114C9D1Ev,_ZThn132_N8S21114C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21114C9D1Ev,_ZThn56_N8S21114C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21114C9 = {  "S21114C9", // class name
  bases_S21114C9, 50,
  &(vtc_S21114C9[0]), // expected_vtbl_contents
  &(vtt_S21114C9[0]), // expected_vtt_contents
  ABISELECT(280,180), // object size
  NSPAIRA(_ZTI8S21114C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21114C9),92, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21114C9),62, //virtual table table var
  26, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names26,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21114C2  : virtual S21114C3 , S3461C5_nt , virtual S21114C9 , S21114C11 , S21114C13 {
  char s21114c2f0;
  virtual  ~S21114C2(); // _ZN8S21114C2D2Ev
  virtual void  v5(); // _ZN8S21114C22v5Ev
  S21114C2(); // tgen
};
//SIG(-1 S21114C2) C1{ VBC2{ VBC3{ VBC4{ m FL} BC5{ m} v2} BC6{ BC4 VBC5 BC7{ BC3} vd v3} vd v4} BC4 VBC8{ VBC3 VBC9{ BC5 VBC3 BC10{ BC4 VBC3 BC5 vd} BC4 vd FL} VBC11{ VBC4 VBC12{ VBC4 BC3 BC5} BC10 VBC6 BC13{ BC4 BC6 BC14{ m} VBC15{ VBC4 BC12 VBC3 v5} VBC10 vd}} BC16{ VBC17{ VBC7 Fi} BC2 VBC10 VBC11 vd Fp[9]} vd} BC10 BC12 vd v1 Fc}


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

static void Test_S21114C2()
{
  extern Class_Descriptor cd_S21114C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(43,56)];
    init_test(&cd_S21114C2, buf);
    S21114C2 *dp, &lv = *(dp=new (buf) S21114C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,220), "sizeof(S21114C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21114C2)");
    /*is_ambiguous_... S21114C2::S21114C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*), ABISELECT(64,44), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(64,44), "S21114C2");
    /*is_ambiguous_... S21114C12::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C12*), ABISELECT(64,44), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*), ABISELECT(64,44), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*), ABISELECT(64,44), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(64,44), "S21114C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(64,44), "S21114C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C16*), ABISELECT(64,44), "S21114C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C16*), ABISELECT(64,44), "S21114C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(64,44), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*), ABISELECT(64,44), "S21114C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(64,44), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*), ABISELECT(64,44), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*), ABISELECT(64,44), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*), ABISELECT(160,100), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C3*), ABISELECT(160,100), "S21114C2");
    /*is_ambiguous_... S21114C9::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C9*), ABISELECT(160,100), "S21114C2");
    check_base_class_offset(lv, (S21114C4*)(S21114C10*), ABISELECT(160,100), "S21114C2");
    check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C10*), ABISELECT(160,100), "S21114C2");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C12*), ABISELECT(160,100), "S21114C2");
    /*is_ambiguous_... S21114C16::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C16*), ABISELECT(160,100), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*), ABISELECT(160,100), "S21114C2");
    /*is_ambiguous_... S21114C3::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(160,100), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*), ABISELECT(160,100), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C3*), ABISELECT(56,36), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C3*), 0, "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*), 0, "S21114C2");
    /*is_ambiguous_... S21114C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C14*)(S21114C12*), 0, "S21114C2");
    /*is_ambiguous_... S21114C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), 0, "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(48,32), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(48,32), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(48,32), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C7*)(S21114C3*), ABISELECT(48,32), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C3*), ABISELECT(48,32), "S21114C2");
    /*is_ambiguous_... S21114C2::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(24,16), "S21114C2");
    /*is_ambiguous_... S21114C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C10*), ABISELECT(177,113), "S21114C2");
    /*is_ambiguous_... S21114C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C10*), ABISELECT(168,104), "S21114C2");
    /*is_ambiguous_... S21114C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C10*), ABISELECT(176,112), "S21114C2");
    check_base_class_offset(lv, (S21114C11*)(S21114C10*), ABISELECT(160,100), "S21114C2");
    /*is_ambiguous_... S21114C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C10*), ABISELECT(184,116), "S21114C2");
    check_base_class_offset(lv, (S21114C10*)(S21114C9*), ABISELECT(160,100), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*), ABISELECT(248,168), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*), ABISELECT(248,168), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*), ABISELECT(256,172), "S21114C2");
    /*is_ambiguous_... S21114C12::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C12*), ABISELECT(248,168), "S21114C2");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C12*), ABISELECT(208,136), "S21114C2");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C12*), ABISELECT(216,144), "S21114C2");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C11*)(S21114C12*), ABISELECT(200,132), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*), ABISELECT(272,180), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(264,176), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(264,176), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C8*)(S21114C7*), ABISELECT(264,176), "S21114C2");
    /*is_ambiguous_... S21114C12::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C7*)(S21114C12*), ABISELECT(264,176), "S21114C2");
    /*is_ambiguous_... S21114C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C14*)(S21114C12*), ABISELECT(240,160), "S21114C2");
    /*is_ambiguous_... S21114C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(232,152), "S21114C2");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(224,148), "S21114C2");
    check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(224,148), "S21114C2");
    check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(224,148), "S21114C2");
    check_base_class_offset(lv, (S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(224,148), "S21114C2");
    check_base_class_offset(lv, (S28C52_nt*)(S21114C14*)(S21114C12*), ABISELECT(224,148), "S21114C2");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(280,188), "S21114C2");
    check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(280,188), "S21114C2");
    /*is_ambiguous_... S21114C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C16*), ABISELECT(288,192), "S21114C2");
    check_base_class_offset(lv, (S21114C13*)(S21114C16*), ABISELECT(280,188), "S21114C2");
    check_base_class_offset(lv, (S21114C16*)(S21114C14*)(S21114C12*), ABISELECT(280,188), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*), ABISELECT(304,200), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*), ABISELECT(312,208), "S21114C2");
    check_base_class_offset(lv, (S21114C11*)(S21114C14*)(S21114C12*), ABISELECT(296,196), "S21114C2");
    /*is_ambiguous_... S21114C17::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C11*)(S21114C17*)(S21114C9*), ABISELECT(296,196), "S21114C2");
    check_base_class_offset(lv, (S21114C14*)(S21114C12*), ABISELECT(224,148), "S21114C2");
    check_base_class_offset(lv, (S21114C12*)(S21114C9*), ABISELECT(200,132), "S21114C2");
    check_base_class_offset(lv, (S21114C12*)(S21114C17*)(S21114C9*), ABISELECT(200,132), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*), ABISELECT(320,212), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C8 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C8*), ABISELECT(320,212), "S21114C2");
    check_base_class_offset(lv, (S21114C8*)(S21114C18*), ABISELECT(320,212), "S21114C2");
    check_base_class_offset(lv, (S21114C18*)(S21114C17*)(S21114C9*), ABISELECT(320,212), "S21114C2");
    /*is_ambiguous_... S21114C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(80,56), "S21114C2");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(72,52), "S21114C2");
    check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(72,52), "S21114C2");
    check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(72,52), "S21114C2");
    check_base_class_offset(lv, (S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(72,52), "S21114C2");
    check_base_class_offset(lv, (S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(72,52), "S21114C2");
    check_base_class_offset(lv, (S21114C17*)(S21114C9*), ABISELECT(72,52), "S21114C2");
    check_base_class_offset(lv, (S21114C9*), ABISELECT(72,52), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*), ABISELECT(8,4), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*), ABISELECT(16,12), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C11*), 0, "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*), ABISELECT(32,24), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*), ABISELECT(32,24), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*), ABISELECT(40,28), "S21114C2");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C13*), ABISELECT(32,24), "S21114C2");
    check_field_offset(lv, s21114c2f0, ABISELECT(41,29), "S21114C2.s21114c2f0");
    test_class_info(&lv, &cd_S21114C2);
    dp->~S21114C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21114C2(Test_S21114C2, "S21114C2", ABISELECT(336,220));

#else // __cplusplus

extern void _ZN8S21114C2C1Ev();
extern void _ZN8S21114C2D2Ev();
Name_Map name_map_S21114C2[] = {
  NSPAIR(_ZN8S21114C2C1Ev),
  NSPAIR(_ZN8S21114C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S21114C3;
extern VTBL_ENTRY _ZTI8S21114C3[];
extern  VTBL_ENTRY _ZTV8S21114C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S21114C10;
extern VTBL_ENTRY _ZTI9S21114C10[];
extern  VTBL_ENTRY _ZTV9S21114C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C10[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S21114C16;
extern VTBL_ENTRY _ZTI9S21114C16[];
extern  VTBL_ENTRY _ZTV9S21114C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C16[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S21114C14;
extern VTBL_ENTRY _ZTI9S21114C14[];
extern  VTBL_ENTRY _ZTV9S21114C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C14[];
extern Class_Descriptor cd_S21114C12;
extern VTBL_ENTRY _ZTI9S21114C12[];
extern  VTBL_ENTRY _ZTV9S21114C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C18;
extern VTBL_ENTRY _ZTI9S21114C18[];
extern  VTBL_ENTRY _ZTV9S21114C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C18[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S21114C3;
extern VTBL_ENTRY _ZTI8S21114C3[];
extern  VTBL_ENTRY _ZTV8S21114C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C3[];
extern Class_Descriptor cd_S21114C17;
extern VTBL_ENTRY _ZTI9S21114C17[];
extern  VTBL_ENTRY _ZTV9S21114C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C17[];
extern Class_Descriptor cd_S21114C9;
extern VTBL_ENTRY _ZTI8S21114C9[];
extern  VTBL_ENTRY _ZTV8S21114C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
static Base_Class bases_S21114C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3461C5_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
    8, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21114C8,    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
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21114C7,    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
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21114C3,    ABISELECT(48,32), //bcp->offset
    24, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    ABISELECT(177,113), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3461C5_nt,    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
    14, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(160,100), //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
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(184,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
    16, //immediately_derived
  0, 0},
  {&cd_S21114C10,    ABISELECT(160,100), //bcp->offset
    60, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    57, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(248,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(248,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(256,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(248,168), //bcp->offset
    95, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(208,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(216,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
    23, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(200,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(272,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(264,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(264,176), //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
    10, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(264,176), //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
    11, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(264,176), //bcp->offset
    100, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(240,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
    44, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(232,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
    34, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(224,148), //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
    18, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(280,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(280,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(288,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(280,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S21114C16,    ABISELECT(280,188), //bcp->offset
    111, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(304,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
    43, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(312,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
    43, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(296,196), //bcp->offset
    119, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S21114C14,    ABISELECT(224,148), //bcp->offset
    84, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S21114C12,    ABISELECT(200,132), //bcp->offset
    69, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    56, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(320,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(320,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(320,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S21114C18,    ABISELECT(320,212), //bcp->offset
    128, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    56, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    52, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(72,52), //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
    26, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(72,52), //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
    28, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S21114C3,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S21114C17,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S21114C9,    ABISELECT(72,52), //bcp->offset
    38, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_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
    60, //immediately_derived
  0, 0},
  {&cd_S21114C11,    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_S731C17_nt,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    64, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(32,24), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21114C2[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C2D1Ev();
extern void _ZN8S21114C2D0Ev();
extern void _ZN8S21114C22v5Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21114C2D1Ev,_ZTv0_n28_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S21114C2D1Ev,_ZThn32_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21114C2D0Ev,_ZTv0_n28_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S21114C2D0Ev,_ZThn32_N8S21114C2D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S21114C2D1Ev,_ZTv0_n60_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn72_N8S21114C2D1Ev,_ZThn52_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S21114C2D0Ev,_ZTv0_n60_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn72_N8S21114C2D0Ev,_ZThn52_N8S21114C2D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S21114C2D1Ev,_ZThn100_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S21114C2D0Ev,_ZThn100_N8S21114C2D0Ev)() __attribute__((weak));
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S21114C2D1Ev,_ZTv0_n44_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn200_N8S21114C2D1Ev,_ZThn132_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21114C2D0Ev,_ZTv0_n44_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn200_N8S21114C2D0Ev,_ZThn132_N8S21114C2D0Ev)() __attribute__((weak));
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S21114C2D1Ev,_ZTvn16_n44_N8S21114C2D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S21114C2D0Ev,_ZTvn16_n44_N8S21114C2D0Ev)();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn264_N8S21114C2D1Ev,_ZThn176_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn264_N8S21114C2D0Ev,_ZThn176_N8S21114C2D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn296_N8S21114C2D1Ev,_ZThn196_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn296_N8S21114C2D0Ev,_ZThn196_N8S21114C2D0Ev)() __attribute__((weak));
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY vtc_S21114C2[] = {
  ABISELECT(320,212),
  ABISELECT(320,212),
  ABISELECT(296,196),
  ABISELECT(280,188),
  ABISELECT(264,176),
  ABISELECT(248,168),
  ABISELECT(200,132),
  ABISELECT(160,100),
  ABISELECT(72,52),
  0,
  ABISELECT(48,32),
  ABISELECT(160,100),
  ABISELECT(160,100),
  ABISELECT(64,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C22v5Ev,
  ABISELECT(32,20),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  0,
  0,
  ABISELECT(-48,-32),
  0,
  ABISELECT(112,68),
  ABISELECT(-48,-32),
  ABISELECT(16,12),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21114C2D1Ev,_ZTv0_n28_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21114C2D0Ev,_ZTv0_n28_N8S21114C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
  0,
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-72,-52),
  -8,
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21114C2D1Ev,_ZTv0_n60_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21114C2D0Ev,_ZTv0_n60_N8S21114C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
  ABISELECT(-160,-100),
  0,
  0,
  ABISELECT(-96,-56),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev),
  ABISELECT(24,16),
  ABISELECT(-200,-132),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-200,-132),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  ABISELECT(-200,-132),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C2D1Ev,_ZTv0_n44_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C2D0Ev,_ZTv0_n44_N8S21114C2D0Ev),
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C2D1Ev,_ZTvn16_n44_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C2D0Ev,_ZTvn16_n44_N8S21114C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  0,
  ABISELECT(-184,-124),
  ABISELECT(-248,-168),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  0,
  ABISELECT(-264,-176),
  0,
  ABISELECT(-264,-176),
  ABISELECT(-200,-132),
  ABISELECT(-264,-176),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-280,-188),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  ABISELECT(-296,-196),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  ABISELECT(-296,-196),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev),
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-320,-212),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern VTBL_ENTRY _ZTV8S21114C2[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C11__A__8S21114C2[] = {
  ABISELECT(160,100),
  ABISELECT(160,100),
  ABISELECT(64,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C11__A__8S21114C2[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__A__8S21114C2[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C13__A8__8S21114C2[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C3D1Ev();
extern void _ZN8S21114C3D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C3__8S21114C2[] = {
  ABISELECT(112,68),
  ABISELECT(-48,-32),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C78S21114C3__8S21114C2[] = {
  ABISELECT(-48,-32),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C78S21114C3__8S21114C2[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C78S21114C3__A1__8S21114C2[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__8S21114C3__8S21114C2[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__8S21114C2[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C9D1Ev();
extern void _ZN8S21114C9D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C9__8S21114C2[] = {
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-72,-52),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C17D1Ev();
extern void _ZN9S21114C17D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C178S21114C9__8S21114C2[] = {
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-72,-52),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C17D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C3D1Ev();
extern void _ZN8S21114C3D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C39S21114C178S21114C9__A1__8S21114C2[] = {
  ABISELECT(88,48),
  ABISELECT(-72,-52),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C78S21114C39S21114C178S21114C9__A3__8S21114C2[] = {
  ABISELECT(-72,-52),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C78S21114C39S21114C178S21114C9__A4__8S21114C2[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C78S21114C39S21114C178S21114C9__A7__8S21114C2[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__8S21114C39S21114C178S21114C9__A1__8S21114C2[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__9S21114C178S21114C9__8S21114C2[] = {
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C178S21114C9__8S21114C2[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev)();
extern void ABISELECT(_ZThn224_N9S21114C17D1Ev,_ZThn144_N9S21114C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev)();
extern void ABISELECT(_ZThn224_N9S21114C17D0Ev,_ZThn144_N9S21114C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__9S21114C178S21114C9__8S21114C2[] = {
  ABISELECT(-224,-144),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21114C17D1Ev,_ZTv0_n44_N9S21114C17D1Ev)();
extern void ABISELECT(_ZThn128_N9S21114C17D1Ev,_ZThn80_N9S21114C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21114C17D0Ev,_ZTv0_n44_N9S21114C17D0Ev)();
extern void ABISELECT(_ZThn128_N9S21114C17D0Ev,_ZThn80_N9S21114C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C12__9S21114C178S21114C9__8S21114C2[] = {
  ABISELECT(24,16),
  ABISELECT(-128,-80),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-200,-132),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C17D1Ev,_ZTv0_n44_N9S21114C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C17D0Ev,_ZTv0_n44_N9S21114C17D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__9S21114C178S21114C9__8S21114C2[] = {
  0,
  ABISELECT(-184,-124),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev)();
extern void ABISELECT(_ZThn192_N9S21114C17D1Ev,_ZThn124_N9S21114C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev)();
extern void ABISELECT(_ZThn192_N9S21114C17D0Ev,_ZThn124_N9S21114C17D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__A1__9S21114C178S21114C9__8S21114C2[] = {
  0,
  ABISELECT(-192,-124),
  0,
  ABISELECT(-264,-176),
  ABISELECT(-200,-132),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N9S21114C17D1Ev,_ZTvn16_n44_N9S21114C17D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N9S21114C17D0Ev,_ZTvn16_n44_N9S21114C17D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__9S21114C178S21114C9__8S21114C2[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C17D1Ev,_ZTvn16_n44_N9S21114C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C17D0Ev,_ZTvn16_n44_N9S21114C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C178S21114C9__8S21114C2[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev)();
extern void ABISELECT(_ZThn88_N8S21114C9D1Ev,_ZThn48_N8S21114C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev)();
extern void ABISELECT(_ZThn88_N8S21114C9D0Ev,_ZThn48_N8S21114C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C10__8S21114C9__8S21114C2[] = {
  ABISELECT(-88,-48),
  0,
  0,
  ABISELECT(-96,-56),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S21114C9D1Ev,_ZTv0_n44_N8S21114C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S21114C9D1Ev,_ZThn80_N8S21114C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21114C9D0Ev,_ZTv0_n44_N8S21114C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S21114C9D0Ev,_ZThn80_N8S21114C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C12__8S21114C9__8S21114C2[] = {
  ABISELECT(24,16),
  ABISELECT(-128,-80),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-200,-132),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C9D1Ev,_ZTv0_n44_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C9D0Ev,_ZTv0_n44_N8S21114C9D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__8S21114C9__8S21114C2[] = {
  0,
  ABISELECT(-184,-124),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev)();
extern void ABISELECT(_ZThn192_N8S21114C9D1Ev,_ZThn124_N8S21114C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev)();
extern void ABISELECT(_ZThn192_N8S21114C9D0Ev,_ZThn124_N8S21114C9D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__8S21114C9__8S21114C2[] = {
  0,
  ABISELECT(-192,-124),
  0,
  ABISELECT(-264,-176),
  ABISELECT(-200,-132),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S21114C9D1Ev,_ZTvn16_n44_N8S21114C9D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S21114C9D0Ev,_ZTvn16_n44_N8S21114C9D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__8S21114C9__8S21114C2[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C9D1Ev,_ZTvn16_n44_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C9D0Ev,_ZTvn16_n44_N8S21114C9D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__8S21114C9__8S21114C2[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev)();
extern void ABISELECT(_ZThn224_N8S21114C9D1Ev,_ZThn144_N8S21114C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev)();
extern void ABISELECT(_ZThn224_N8S21114C9D0Ev,_ZThn144_N8S21114C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__A2__8S21114C9__8S21114C2[] = {
  ABISELECT(-224,-144),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__8S21114C9__8S21114C2[] = {
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C10D1Ev();
extern void _ZN9S21114C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C10__8S21114C2[] = {
  0,
  0,
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C10[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C10D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C119S21114C10__8S21114C2[] = {
  0,
  0,
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C12D1Ev();
extern void _ZN9S21114C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C12__8S21114C2[] = {
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-200,-132),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C12D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C119S21114C12__A1__8S21114C2[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C119S21114C12__A1__8S21114C2[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C14D1Ev();
extern void _ZN9S21114C14D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__8S21114C2[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C14D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C79S21114C149S21114C12__A2__8S21114C2[] = {
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C79S21114C149S21114C12__A2__8S21114C2[] = {
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C79S21114C149S21114C12__A4__8S21114C2[] = {
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C149S21114C12__8S21114C2[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A2__9S21114C149S21114C12__8S21114C2[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(64,48),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev)();
extern void ABISELECT(_ZThn72_N9S21114C14D1Ev,_ZThn48_N9S21114C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev)();
extern void ABISELECT(_ZThn72_N9S21114C14D0Ev,_ZThn48_N9S21114C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__9S21114C149S21114C12__8S21114C2[] = {
  ABISELECT(-72,-48),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__9S21114C12__8S21114C2[] = {
  0,
  ABISELECT(-184,-124),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C12__8S21114C2[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S21114C12D1Ev,_ZThn44_N9S21114C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S21114C12D0Ev,_ZThn44_N9S21114C12D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__9S21114C12__8S21114C2[] = {
  0,
  ABISELECT(-64,-44),
  0,
  ABISELECT(-264,-176),
  ABISELECT(-200,-132),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn24_N9S21114C12D1Ev,_ZThn16_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn24_N9S21114C12D0Ev,_ZThn16_N9S21114C12D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C14__9S21114C12__8S21114C2[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C12D1Ev,_ZThn16_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C12D0Ev,_ZThn16_N9S21114C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C12__8S21114C2[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn96_N9S21114C12D1Ev,_ZThn64_N9S21114C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev)();
extern void ABISELECT(_ZThn96_N9S21114C12D0Ev,_ZThn64_N9S21114C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__A1__9S21114C12__8S21114C2[] = {
  ABISELECT(-96,-64),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__8S21114C2[] = {
  ABISELECT(-184,-124),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C13__A2__8S21114C2[] = {
  ABISELECT(-184,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__A1__8S21114C2[] = {
  ABISELECT(-264,-176),
  ABISELECT(-200,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C7__A1__8S21114C2[] = {
  ABISELECT(-200,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C7__A3__8S21114C2[] = {
  ABISELECT(-200,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__8S21114C2[] = {
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C16__A1__8S21114C2[] = {
  ABISELECT(-216,-144),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C139S21114C16__A5__8S21114C2[] = {
  ABISELECT(-216,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C16__8S21114C2[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C11__A2__8S21114C2[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C11__A2__8S21114C2[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(136,96),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__8S21114C2[] = {
  0,
  0,
  ABISELECT(-256,-168),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C18[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C8__A3__8S21114C2[] = {
  ABISELECT(-256,-168),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C8__A6__8S21114C2[] = {
  ABISELECT(-256,-168),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
static  VTT_ENTRY vtt_S21114C2[] = {
  {&(_ZTV8S21114C2[16]),  16,134},
  {&(_tg__ZTV9S21114C11__A__8S21114C2[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C11__A__8S21114C2[4]),  4,5},
  {&(_tg__ZTV9S21114C13__A__8S21114C2[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C13__A8__8S21114C2[3]),  3,4},
  {&(_ZTV8S21114C2[33]),  33,134},
  {&(_ZTV8S21114C2[66]),  66,134},
  {&(_ZTV8S21114C2[55]),  55,134},
  {&(_ZTV8S21114C2[66]),  66,134},
  {&(_ZTV8S21114C2[81]),  81,134},
  {&(_ZTV8S21114C2[99]),  99,134},
  {&(_ZTV8S21114C2[107]),  107,134},
  {&(_ZTV8S21114C2[91]),  91,134},
  {&(_ZTV8S21114C2[117]),  117,134},
  {&(_ZTV8S21114C2[125]),  125,134},
  {&(_ZTV8S21114C2[133]),  133,134},
  {&(_ZTV8S21114C2[133]),  133,134},
  {&(_ZTV8S21114C2[23]),  23,134},
  {&(_tg__ZTV8S21114C3__8S21114C2[5]),  5,10},
  {&(_tg__ZTV8S21114C78S21114C3__8S21114C2[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C78S21114C3__8S21114C2[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C78S21114C3__A1__8S21114C2[3]),  3,4},
  {&(_tg__ZTV8S21114C4__8S21114C3__8S21114C2[4]),  4,5},
  {&(_tg__ZTV8S21114C4__8S21114C2[3]),  3,4},
  {&(_tg__ZTV8S21114C9__8S21114C2[13]),  13,18},
  {&(_tg__ZTV9S21114C178S21114C9__8S21114C2[12]),  12,17},
  {&(_tg__ZTV8S21114C39S21114C178S21114C9__A1__8S21114C2[5]),  5,10},
  {&(_tg__ZTV8S21114C78S21114C39S21114C178S21114C9__A3__8S21114C2[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C78S21114C39S21114C178S21114C9__A4__8S21114C2[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C78S21114C39S21114C178S21114C9__A7__8S21114C2[3]),  3,4},
  {&(_tg__ZTV8S21114C4__8S21114C39S21114C178S21114C9__A1__8S21114C2[4]),  4,5},
  {&(_tg__ZTV9S21114C18__9S21114C178S21114C9__8S21114C2[5]),  5,6},
  {&(_tg__ZTV9S21114C18__9S21114C178S21114C9__8S21114C2[5]),  5,6},
  {&(_tg__ZTV8S21114C4__A1__9S21114C178S21114C9__8S21114C2[4]),  4,5},
  {&(_tg__ZTV9S21114C11__9S21114C178S21114C9__8S21114C2[6]),  6,9},
  {&(_tg__ZTV9S21114C12__9S21114C178S21114C9__8S21114C2[12]),  12,15},
  {&(_tg__ZTV9S21114C13__9S21114C178S21114C9__8S21114C2[4]),  4,5},
  {&(_tg__ZTV8S21114C7__A1__9S21114C178S21114C9__8S21114C2[7]),  7,11},
  {&(_tg__ZTV9S21114C149S21114C12__9S21114C178S21114C9__8S21114C2[7]),  7,11},
  {&(_tg__ZTV9S21114C16__9S21114C178S21114C9__8S21114C2[6]),  6,8},
  {&(_tg__ZTV9S21114C10__8S21114C9__8S21114C2[6]),  6,9},
  {&(_tg__ZTV9S21114C10__8S21114C9__8S21114C2[6]),  6,9},
  {&(_tg__ZTV9S21114C12__8S21114C9__8S21114C2[12]),  12,15},
  {&(_tg__ZTV9S21114C13__8S21114C9__8S21114C2[4]),  4,5},
  {&(_tg__ZTV8S21114C7__8S21114C9__8S21114C2[7]),  7,11},
  {&(_tg__ZTV9S21114C149S21114C12__8S21114C9__8S21114C2[7]),  7,11},
  {&(_tg__ZTV9S21114C16__8S21114C9__8S21114C2[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A2__8S21114C9__8S21114C2[6]),  6,9},
  {&(_tg__ZTV9S21114C18__8S21114C9__8S21114C2[5]),  5,6},
  {&(_tg__ZTV9S21114C18__8S21114C9__8S21114C2[5]),  5,6},
  {&(_tg__ZTV9S21114C10__8S21114C2[5]),  5,8},
  {&(_tg__ZTV9S21114C119S21114C10__8S21114C2[5]),  5,8},
  {&(_tg__ZTV9S21114C119S21114C10__8S21114C2[5]),  5,8},
  {&(_tg__ZTV9S21114C10__8S21114C2[5]),  5,8},
  {&(_tg__ZTV9S21114C12__8S21114C2[10]),  10,13},
  {&(_tg__ZTV9S21114C119S21114C12__A1__8S21114C2[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C119S21114C12__A1__8S21114C2[4]),  4,5},
  {&(_tg__ZTV9S21114C149S21114C12__8S21114C2[7]),  7,11},
  {&(_tg__ZTV8S21114C79S21114C149S21114C12__A2__8S21114C2[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C79S21114C149S21114C12__A2__8S21114C2[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C79S21114C149S21114C12__A4__8S21114C2[3]),  3,4},
  {&(_tg__ZTV9S21114C16__9S21114C149S21114C12__8S21114C2[6]),  6,8},
  {&(_tg__ZTV8S21114C4__A2__9S21114C149S21114C12__8S21114C2[4]),  4,5},
  {&(_tg__ZTV9S21114C11__9S21114C149S21114C12__8S21114C2[6]),  6,9},
  {&(_tg__ZTV9S21114C13__9S21114C12__8S21114C2[4]),  4,5},
  {&(_tg__ZTV8S21114C4__A1__9S21114C12__8S21114C2[4]),  4,5},
  {&(_tg__ZTV8S21114C7__9S21114C12__8S21114C2[7]),  7,11},
  {&(_tg__ZTV9S21114C14__9S21114C12__8S21114C2[7]),  7,11},
  {&(_tg__ZTV9S21114C16__9S21114C12__8S21114C2[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A1__9S21114C12__8S21114C2[6]),  6,9},
  {&(_tg__ZTV9S21114C13__8S21114C2[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C13__A2__8S21114C2[3]),  3,4},
  {&(_tg__ZTV8S21114C7__A1__8S21114C2[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C7__A1__8S21114C2[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C7__A3__8S21114C2[3]),  3,4},
  {&(_tg__ZTV9S21114C16__8S21114C2[4]),  4,6},
  {&(_tg__ZTV9S21114C139S21114C16__A1__8S21114C2[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C139S21114C16__A5__8S21114C2[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C16__8S21114C2[4]),  4,5},
  {&(_tg__ZTV9S21114C11__A2__8S21114C2[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C11__A2__8S21114C2[4]),  4,5},
  {&(_tg__ZTV9S21114C18__8S21114C2[5]),  5,6},
  {&(_tg__ZTV9S21114C18__8S21114C2[5]),  5,6},
  {&(_tg__ZTV8S21114C8__A3__8S21114C2[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C8__A6__8S21114C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S21114C2[];
extern  VTBL_ENTRY _ZTV8S21114C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C2[];
static VTBL_ENTRY alt_thunk_names27[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21114C12D0Ev,_ZThn64_N9S21114C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21114C12D0Ev,_ZThn44_N9S21114C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21114C12D1Ev,_ZThn64_N9S21114C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21114C12D1Ev,_ZThn44_N9S21114C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21114C14D0Ev,_ZThn48_N9S21114C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21114C14D1Ev,_ZThn48_N9S21114C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21114C9D0Ev,_ZTv0_n44_N8S21114C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21114C9D0Ev,_ZThn80_N8S21114C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21114C9D1Ev,_ZTv0_n44_N8S21114C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21114C9D1Ev,_ZThn80_N8S21114C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21114C9D0Ev,_ZThn144_N8S21114C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21114C9D0Ev,_ZThn124_N8S21114C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21114C9D0Ev,_ZThn48_N8S21114C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21114C9D1Ev,_ZThn144_N8S21114C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21114C9D1Ev,_ZThn124_N8S21114C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21114C9D1Ev,_ZThn48_N8S21114C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21114C17D0Ev,_ZTv0_n44_N9S21114C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21114C17D0Ev,_ZThn80_N9S21114C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21114C17D1Ev,_ZTv0_n44_N9S21114C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21114C17D1Ev,_ZThn80_N9S21114C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21114C17D0Ev,_ZThn124_N9S21114C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21114C17D0Ev,_ZThn144_N9S21114C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21114C17D1Ev,_ZThn124_N9S21114C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21114C17D1Ev,_ZThn144_N9S21114C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21114C2D0Ev,_ZTv0_n44_N8S21114C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21114C2D0Ev,_ZThn132_N8S21114C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21114C2D1Ev,_ZTv0_n44_N8S21114C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21114C2D1Ev,_ZThn132_N8S21114C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S21114C2D0Ev,_ZThn196_N8S21114C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S21114C2D0Ev,_ZThn176_N8S21114C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21114C2D0Ev,_ZThn100_N8S21114C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S21114C2D1Ev,_ZThn196_N8S21114C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S21114C2D1Ev,_ZThn176_N8S21114C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21114C2D1Ev,_ZThn100_N8S21114C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S21114C2D0Ev,_ZTv0_n60_N8S21114C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21114C2D0Ev,_ZThn52_N8S21114C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S21114C2D1Ev,_ZTv0_n60_N8S21114C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21114C2D1Ev,_ZThn52_N8S21114C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21114C2D0Ev,_ZTv0_n28_N8S21114C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21114C2D0Ev,_ZThn32_N8S21114C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21114C2D1Ev,_ZTv0_n28_N8S21114C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21114C2D1Ev,_ZThn32_N8S21114C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21114C2 = {  "S21114C2", // class name
  bases_S21114C2, 65,
  &(vtc_S21114C2[0]), // expected_vtbl_contents
  &(vtt_S21114C2[0]), // expected_vtt_contents
  ABISELECT(336,220), // object size
  NSPAIRA(_ZTI8S21114C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S21114C2),134, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21114C2),85, //virtual table table var
  34, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names27,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21114C21  : virtual S21114C7 , S21114C12 , S21114C3 {
  int s21114c21f0;
  ~S21114C21(); // tgen
  S21114C21(); // tgen
};
//SIG(-1 S21114C21) C1{ VBC2{ BC3{ m FL} VBC4{ m} BC5{ BC6{ VBC3 BC4 v1}} vd v2} BC7{ VBC3 VBC8{ VBC3 BC6 BC4} BC9{ BC3 VBC6 BC4 vd} VBC2 BC10{ BC3 BC2 BC11{ m} VBC12{ VBC3 BC8 VBC6 v3} VBC9 vd}} BC13{ VBC6 BC2 vd v4} Fi}


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

static void Test_S21114C21()
{
  extern Class_Descriptor cd_S21114C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,27)];
    init_test(&cd_S21114C21, buf);
    S21114C21 *dp, &lv = *(dp=new (buf) S21114C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,104), "sizeof(S21114C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21114C21)");
    /*is_ambiguous_... S21114C21::S21114C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*), ABISELECT(80,56), "S21114C21");
    /*is_ambiguous_... S21114C21::S21114C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*), ABISELECT(88,64), "S21114C21");
    /*is_ambiguous_... S21114C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(88,64), "S21114C21");
    /*is_ambiguous_... S21114C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C3*), ABISELECT(88,64), "S21114C21");
    /*is_ambiguous_... S21114C21::S21114C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(88,64), "S21114C21");
    /*is_ambiguous_... S21114C12::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C12*), ABISELECT(88,64), "S21114C21");
    /*is_ambiguous_... S21114C21::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*), ABISELECT(88,64), "S21114C21");
    /*is_ambiguous_... S21114C21::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*), ABISELECT(88,64), "S21114C21");
    /*is_ambiguous_... S21114C21::S21114C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*), ABISELECT(88,64), "S21114C21");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(88,64), "S21114C21");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C16*), ABISELECT(88,64), "S21114C21");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C16*), ABISELECT(88,64), "S21114C21");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(88,64), "S21114C21");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(88,64), "S21114C21");
    /*is_ambiguous_... S21114C21::S21114C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(72,52), "S21114C21");
    /*is_ambiguous_... S21114C21::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(72,52), "S21114C21");
    /*is_ambiguous_... S21114C21::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C8*)(S21114C7*), ABISELECT(72,52), "S21114C21");
    /*is_ambiguous_... S21114C21::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C7*), ABISELECT(72,52), "S21114C21");
    /*is_ambiguous_... S21114C12::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C7*)(S21114C12*), ABISELECT(72,52), "S21114C21");
    /*is_ambiguous_... S21114C21::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*), ABISELECT(96,72), "S21114C21");
    /*is_ambiguous_... S21114C21::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*), ABISELECT(96,72), "S21114C21");
    /*is_ambiguous_... S21114C21::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*), ABISELECT(104,76), "S21114C21");
    /*is_ambiguous_... S21114C12::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C12*), ABISELECT(96,72), "S21114C21");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C12*), ABISELECT(8,4), "S21114C21");
    /*is_ambiguous_... S21114C21::S21114C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*), 0, "S21114C21");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C12*), 0, "S21114C21");
    /*is_ambiguous_... S21114C16::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C16*), 0, "S21114C21");
    /*is_ambiguous_... S21114C21::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*), 0, "S21114C21");
    /*is_ambiguous_... S21114C3::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C3*), 0, "S21114C21");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C12*), ABISELECT(16,12), "S21114C21");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C11*)(S21114C12*), 0, "S21114C21");
    /*is_ambiguous_... S21114C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C14*)(S21114C12*), ABISELECT(40,28), "S21114C21");
    /*is_ambiguous_... S21114C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(32,20), "S21114C21");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(24,16), "S21114C21");
    check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(24,16), "S21114C21");
    check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(24,16), "S21114C21");
    check_base_class_offset(lv, (S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(24,16), "S21114C21");
    check_base_class_offset(lv, (S28C52_nt*)(S21114C14*)(S21114C12*), ABISELECT(24,16), "S21114C21");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(112,80), "S21114C21");
    check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(112,80), "S21114C21");
    /*is_ambiguous_... S21114C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C16*), ABISELECT(120,84), "S21114C21");
    check_base_class_offset(lv, (S21114C13*)(S21114C16*), ABISELECT(112,80), "S21114C21");
    check_base_class_offset(lv, (S21114C16*)(S21114C14*)(S21114C12*), ABISELECT(112,80), "S21114C21");
    /*is_ambiguous_... S21114C21::S21114C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*), ABISELECT(136,92), "S21114C21");
    /*is_ambiguous_... S21114C21::S21114C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*), ABISELECT(144,100), "S21114C21");
    check_base_class_offset(lv, (S21114C11*)(S21114C14*)(S21114C12*), ABISELECT(128,88), "S21114C21");
    check_base_class_offset(lv, (S21114C14*)(S21114C12*), ABISELECT(24,16), "S21114C21");
    check_base_class_offset(lv, (S21114C12*), 0, "S21114C21");
    /*is_ambiguous_... S21114C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C3*), ABISELECT(56,40), "S21114C21");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(48,36), "S21114C21");
    check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(48,36), "S21114C21");
    check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(48,36), "S21114C21");
    check_base_class_offset(lv, (S21114C7*)(S21114C3*), ABISELECT(48,36), "S21114C21");
    check_base_class_offset(lv, (S21114C3*), ABISELECT(48,36), "S21114C21");
    check_field_offset(lv, s21114c21f0, ABISELECT(64,48), "S21114C21.s21114c21f0");
    test_class_info(&lv, &cd_S21114C21);
    dp->~S21114C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21114C21(Test_S21114C21, "S21114C21", ABISELECT(152,104));

#else // __cplusplus

extern void _ZN9S21114C21C1Ev();
extern void _ZN9S21114C21D1Ev();
Name_Map name_map_S21114C21[] = {
  NSPAIR(_ZN9S21114C21C1Ev),
  NSPAIR(_ZN9S21114C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S21114C16;
extern VTBL_ENTRY _ZTI9S21114C16[];
extern  VTBL_ENTRY _ZTV9S21114C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C16[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S21114C14;
extern VTBL_ENTRY _ZTI9S21114C14[];
extern  VTBL_ENTRY _ZTV9S21114C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C14[];
extern Class_Descriptor cd_S21114C12;
extern VTBL_ENTRY _ZTI9S21114C12[];
extern  VTBL_ENTRY _ZTV9S21114C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C12[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S21114C3;
extern VTBL_ENTRY _ZTI8S21114C3[];
extern  VTBL_ENTRY _ZTV8S21114C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C3[];
static Base_Class bases_S21114C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(88,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(88,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    4, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(72,52), //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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(72,52), //bcp->offset
    34, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(104,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(96,72), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21114C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    15, //immediately_derived
  0, 0},
  {&cd_S21114C11,    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
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    31, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21114C8,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(112,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(112,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(120,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
    26, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(112,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S21114C16,    ABISELECT(112,80), //bcp->offset
    50, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(136,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(144,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(128,88), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S21114C14,    ABISELECT(24,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21114C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_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
    37, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    35, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S21114C8,    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
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(48,36), //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
    19, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S21114C3,    ABISELECT(48,36), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21114C21[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C21D1Ev();
extern void _ZN9S21114C21D0Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn24_N9S21114C21D1Ev,_ZThn16_N9S21114C21D1Ev)();
extern void ABISELECT(_ZThn24_N9S21114C21D0Ev,_ZThn16_N9S21114C21D0Ev)();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn48_N9S21114C21D1Ev,_ZThn36_N9S21114C21D1Ev)();
extern void ABISELECT(_ZThn48_N9S21114C21D0Ev,_ZThn36_N9S21114C21D0Ev)();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C21D1Ev,_ZTv0_n24_N9S21114C21D1Ev)();
extern void ABISELECT(_ZThn72_N9S21114C21D1Ev,_ZThn52_N9S21114C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C21D0Ev,_ZTv0_n24_N9S21114C21D0Ev)();
extern void ABISELECT(_ZThn72_N9S21114C21D0Ev,_ZThn52_N9S21114C21D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C21D1Ev,_ZTv0_n24_N9S21114C21D1Ev)();
extern void ABISELECT(_ZThn128_N9S21114C21D1Ev,_ZThn88_N9S21114C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C21D0Ev,_ZTv0_n24_N9S21114C21D0Ev)();
extern void ABISELECT(_ZThn128_N9S21114C21D0Ev,_ZThn88_N9S21114C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21114C21[] = {
  ABISELECT(128,88),
  ABISELECT(112,80),
  ABISELECT(88,64),
  ABISELECT(72,52),
  ABISELECT(96,72),
  0,
  0,
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C21D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C21D0Ev,
  ABISELECT(104,72),
  ABISELECT(-24,-16),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(64,48),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C21D1Ev,_ZThn16_N9S21114C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C21D0Ev,_ZThn16_N9S21114C21D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  ABISELECT(-48,-36),
  ABISELECT(40,28),
  ABISELECT(40,28),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S21114C21D1Ev,_ZThn36_N9S21114C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S21114C21D0Ev,_ZThn36_N9S21114C21D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C21D1Ev,_ZTv0_n24_N9S21114C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C21D0Ev,_ZTv0_n24_N9S21114C21D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  0,
  -8,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  0,
  0,
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C21D1Ev,_ZTv0_n24_N9S21114C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C21D0Ev,_ZTv0_n24_N9S21114C21D0Ev),
};
extern VTBL_ENTRY _ZTV9S21114C21[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C12D1Ev();
extern void _ZN9S21114C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C12__9S21114C21[] = {
  ABISELECT(128,88),
  ABISELECT(112,80),
  ABISELECT(88,64),
  ABISELECT(72,52),
  ABISELECT(96,72),
  0,
  0,
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C12D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C119S21114C12__9S21114C21[] = {
  0,
  0,
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C14D1Ev();
extern void _ZN9S21114C14D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__9S21114C21[] = {
  ABISELECT(104,72),
  ABISELECT(-24,-16),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C14D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C79S21114C149S21114C12__A1__9S21114C21[] = {
  ABISELECT(64,48),
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C79S21114C149S21114C12__A1__9S21114C21[] = {
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C79S21114C149S21114C12__A3__9S21114C21[] = {
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C149S21114C12__9S21114C21[] = {
  0,
  0,
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A2__9S21114C149S21114C12__9S21114C21[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev)();
extern void ABISELECT(_ZThn104_N9S21114C14D1Ev,_ZThn72_N9S21114C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev)();
extern void ABISELECT(_ZThn104_N9S21114C14D0Ev,_ZThn72_N9S21114C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__9S21114C149S21114C12__9S21114C21[] = {
  ABISELECT(-104,-72),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__9S21114C12__9S21114C21[] = {
  0,
  -8,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn72_N9S21114C12D1Ev,_ZThn52_N9S21114C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev)();
extern void ABISELECT(_ZThn72_N9S21114C12D0Ev,_ZThn52_N9S21114C12D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__9S21114C12__9S21114C21[] = {
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn24_N9S21114C12D1Ev,_ZThn16_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn24_N9S21114C12D0Ev,_ZThn16_N9S21114C12D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C14__9S21114C12__9S21114C21[] = {
  ABISELECT(104,72),
  ABISELECT(-24,-16),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(64,48),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C12D1Ev,_ZThn16_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C12D0Ev,_ZThn16_N9S21114C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C12__9S21114C21[] = {
  0,
  0,
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn128_N9S21114C12D1Ev,_ZThn88_N9S21114C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev)();
extern void ABISELECT(_ZThn128_N9S21114C12D0Ev,_ZThn88_N9S21114C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__A1__9S21114C12__9S21114C21[] = {
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C3D1Ev();
extern void _ZN8S21114C3D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C3__9S21114C21[] = {
  ABISELECT(-48,-36),
  ABISELECT(40,28),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C78S21114C3__A2__9S21114C21[] = {
  ABISELECT(40,28),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C78S21114C3__A2__9S21114C21[] = {
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C78S21114C3__A5__9S21114C21[] = {
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__8S21114C3__9S21114C21[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__9S21114C21[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C7__9S21114C21[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C7__9S21114C21[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__9S21114C21[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C13__A1__9S21114C21[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A2__9S21114C21[] = {
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C21[] = {
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C16__A1__9S21114C21[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C139S21114C16__A4__9S21114C21[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C16__9S21114C21[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(112,80),
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C11__A1__9S21114C21[] = {
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C11__A1__9S21114C21[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
static  VTT_ENTRY vtt_S21114C21[] = {
  {&(_ZTV9S21114C21[10]),  10,67},
  {&(_tg__ZTV9S21114C12__9S21114C21[10]),  10,13},
  {&(_tg__ZTV9S21114C119S21114C12__9S21114C21[5]),  5,8},
  {&(_tg__ZTV9S21114C119S21114C12__9S21114C21[5]),  5,8},
  {&(_tg__ZTV9S21114C149S21114C12__9S21114C21[7]),  7,11},
  {&(_tg__ZTV8S21114C79S21114C149S21114C12__A1__9S21114C21[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C79S21114C149S21114C12__A1__9S21114C21[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C79S21114C149S21114C12__A3__9S21114C21[3]),  3,4},
  {&(_tg__ZTV9S21114C16__9S21114C149S21114C12__9S21114C21[6]),  6,8},
  {&(_tg__ZTV8S21114C4__A2__9S21114C149S21114C12__9S21114C21[4]),  4,5},
  {&(_tg__ZTV9S21114C11__9S21114C149S21114C12__9S21114C21[6]),  6,9},
  {&(_tg__ZTV9S21114C13__9S21114C12__9S21114C21[4]),  4,5},
  {&(_tg__ZTV9S21114C12__9S21114C21[10]),  10,13},
  {&(_tg__ZTV8S21114C7__9S21114C12__9S21114C21[7]),  7,11},
  {&(_tg__ZTV9S21114C14__9S21114C12__9S21114C21[7]),  7,11},
  {&(_tg__ZTV9S21114C16__9S21114C12__9S21114C21[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A1__9S21114C12__9S21114C21[6]),  6,9},
  {&(_tg__ZTV8S21114C3__9S21114C21[5]),  5,10},
  {&(_tg__ZTV8S21114C78S21114C3__A2__9S21114C21[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C78S21114C3__A2__9S21114C21[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C78S21114C3__A5__9S21114C21[3]),  3,4},
  {&(_tg__ZTV8S21114C4__8S21114C3__9S21114C21[4]),  4,5},
  {&(_ZTV9S21114C21[41]),  41,67},
  {&(_ZTV9S21114C21[49]),  49,67},
  {&(_ZTV9S21114C21[10]),  10,67},
  {&(_ZTV9S21114C21[20]),  20,67},
  {&(_ZTV9S21114C21[56]),  56,67},
  {&(_ZTV9S21114C21[64]),  64,67},
  {&(_ZTV9S21114C21[29]),  29,67},
  {&(_tg__ZTV8S21114C7__9S21114C21[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C7__9S21114C21[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C7__9S21114C21[3]),  3,4},
  {&(_tg__ZTV9S21114C13__9S21114C21[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C13__A1__9S21114C21[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A2__9S21114C21[3]),  3,4},
  {&(_tg__ZTV9S21114C16__9S21114C21[4]),  4,6},
  {&(_tg__ZTV9S21114C139S21114C16__A1__9S21114C21[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C139S21114C16__A4__9S21114C21[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C16__9S21114C21[4]),  4,5},
  {&(_tg__ZTV9S21114C11__A1__9S21114C21[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C11__A1__9S21114C21[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S21114C21[];
extern  VTBL_ENTRY _ZTV9S21114C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C21[];
static VTBL_ENTRY alt_thunk_names28[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21114C12D0Ev,_ZThn88_N9S21114C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21114C12D0Ev,_ZThn52_N9S21114C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21114C12D1Ev,_ZThn88_N9S21114C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21114C12D1Ev,_ZThn52_N9S21114C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21114C14D0Ev,_ZThn72_N9S21114C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S21114C14D1Ev,_ZThn72_N9S21114C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C21D0Ev,_ZTv0_n24_N9S21114C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21114C21D0Ev,_ZThn88_N9S21114C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21114C21D0Ev,_ZThn52_N9S21114C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C21D1Ev,_ZTv0_n24_N9S21114C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21114C21D1Ev,_ZThn88_N9S21114C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21114C21D1Ev,_ZThn52_N9S21114C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21114C21 = {  "S21114C21", // class name
  bases_S21114C21, 39,
  &(vtc_S21114C21[0]), // expected_vtbl_contents
  &(vtt_S21114C21[0]), // expected_vtt_contents
  ABISELECT(152,104), // object size
  NSPAIRA(_ZTI9S21114C21),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21114C21),67, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21114C21),41, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names28,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21114C24  : S21114C11 {
  virtual void  v6(); // _ZN9S21114C242v6Ev
  ~S21114C24(); // tgen
  S21114C24(); // tgen
};
//SIG(-1 S21114C24) C1{ BC2{ BC3{ m FL} VBC4{ VBC3 BC5{ m} v2} BC5 vd} v1}


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

static void Test_S21114C24()
{
  extern Class_Descriptor cd_S21114C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S21114C24, buf);
    S21114C24 *dp, &lv = *(dp=new (buf) S21114C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S21114C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21114C24)");
    /*is_ambiguous_... S21114C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*), ABISELECT(8,4), "S21114C24");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*), ABISELECT(24,16), "S21114C24");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*), 0, "S21114C24");
    check_base_class_offset(lv, (S21114C4*)(S21114C11*), 0, "S21114C24");
    /*is_ambiguous_... S21114C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*), ABISELECT(16,12), "S21114C24");
    check_base_class_offset(lv, (S21114C11*), 0, "S21114C24");
    test_class_info(&lv, &cd_S21114C24);
    dp->~S21114C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21114C24(Test_S21114C24, "S21114C24", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN9S21114C24C1Ev();
extern void _ZN9S21114C24D1Ev();
Name_Map name_map_S21114C24[] = {
  NSPAIR(_ZN9S21114C24C1Ev),
  NSPAIR(_ZN9S21114C24D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
static Base_Class bases_S21114C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3461C5_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21114C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    5, //immediately_derived
  0, 0},
  {&cd_S21114C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21114C24[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C24D1Ev();
extern void _ZN9S21114C24D0Ev();
extern void _ZN9S21114C242v6Ev();
static  VTBL_ENTRY vtc_S21114C24[] = {
  0,
  0,
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C24[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C24D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C24D0Ev,
  (VTBL_ENTRY)&_ZN9S21114C242v6Ev,
};
extern VTBL_ENTRY _ZTV9S21114C24[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C11__9S21114C24[] = {
  0,
  0,
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C24[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
static  VTT_ENTRY vtt_S21114C24[] = {
  {&(_ZTV9S21114C24[5]),  5,9},
  {&(_tg__ZTV9S21114C11__9S21114C24[5]),  5,8},
  {&(_tg__ZTV9S21114C11__9S21114C24[5]),  5,8},
  {&(_ZTV9S21114C24[5]),  5,9},
  {&(_tg__ZTV8S21114C4__9S21114C24[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S21114C24[];
extern  VTBL_ENTRY _ZTV9S21114C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C24[];
Class_Descriptor cd_S21114C24 = {  "S21114C24", // class name
  bases_S21114C24, 6,
  &(vtc_S21114C24[0]), // expected_vtbl_contents
  &(vtt_S21114C24[0]), // expected_vtt_contents
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI9S21114C24),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S21114C24),9, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21114C24),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  S21114C23  : S21114C16 , S21114C4 , virtual S21114C24 , S21114C13 {
  ~S21114C23(); // tgen
  S21114C23(); // tgen
};
//SIG(-1 S21114C23) C1{ BC2{ VBC3{ m FL} BC4{ VBC3 BC5{ VBC3 BC6{ m} v1} BC6} VBC5 v2} BC5 VBC7{ BC8{ BC3 VBC5 BC6 vd} v3} BC4}


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

static void Test_S21114C23()
{
  extern Class_Descriptor cd_S21114C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S21114C23, buf);
    S21114C23 *dp, &lv = *(dp=new (buf) S21114C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S21114C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21114C23)");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C16*), ABISELECT(40,20), "S21114C23");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C16*), ABISELECT(40,20), "S21114C23");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(40,20), "S21114C23");
    /*is_ambiguous_... S21114C23::S21114C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*), ABISELECT(40,20), "S21114C23");
    /*is_ambiguous_... S21114C23::S21114C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*), ABISELECT(40,20), "S21114C23");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*), ABISELECT(40,20), "S21114C23");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*), ABISELECT(40,20), "S21114C23");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C16*), 0, "S21114C23");
    check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C16*), 0, "S21114C23");
    /*is_ambiguous_... S21114C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C16*), ABISELECT(8,4), "S21114C23");
    check_base_class_offset(lv, (S21114C13*)(S21114C16*), 0, "S21114C23");
    /*is_ambiguous_... S21114C23::S21114C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*), ABISELECT(48,28), "S21114C23");
    /*is_ambiguous_... S21114C16::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C16*), ABISELECT(48,28), "S21114C23");
    check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C24*), ABISELECT(48,28), "S21114C23");
    check_base_class_offset(lv, (S21114C16*), 0, "S21114C23");
    /*is_ambiguous_... S21114C23::S21114C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*), ABISELECT(16,8), "S21114C23");
    /*is_ambiguous_... S21114C23::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*), ABISELECT(16,8), "S21114C23");
    /*is_ambiguous_... S21114C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C24*), ABISELECT(56,32), "S21114C23");
    /*is_ambiguous_... S21114C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C24*), ABISELECT(64,40), "S21114C23");
    check_base_class_offset(lv, (S21114C11*)(S21114C24*), ABISELECT(48,28), "S21114C23");
    check_base_class_offset(lv, (S21114C24*), ABISELECT(48,28), "S21114C23");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*), ABISELECT(24,12), "S21114C23");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*), ABISELECT(24,12), "S21114C23");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*), ABISELECT(32,16), "S21114C23");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C13*), ABISELECT(24,12), "S21114C23");
    test_class_info(&lv, &cd_S21114C23);
    dp->~S21114C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21114C23(Test_S21114C23, "S21114C23", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN9S21114C23C1Ev();
extern void _ZN9S21114C23D1Ev();
Name_Map name_map_S21114C23[] = {
  NSPAIR(_ZN9S21114C23C1Ev),
  NSPAIR(_ZN9S21114C23D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C16;
extern VTBL_ENTRY _ZTI9S21114C16[];
extern  VTBL_ENTRY _ZTV9S21114C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C16[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S21114C24;
extern VTBL_ENTRY _ZTI9S21114C24[];
extern  VTBL_ENTRY _ZTV9S21114C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C24[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
static Base_Class bases_S21114C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    4, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21114C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21114C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21114C24,    ABISELECT(48,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_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
    15, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(24,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //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 _ZTI9S21114C23[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void _ZN9S21114C23D1Ev();
extern void _ZN9S21114C23D0Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C23D1Ev,_ZTv0_n24_N9S21114C23D1Ev)();
extern void ABISELECT(_ZThn48_N9S21114C23D1Ev,_ZThn28_N9S21114C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C23D0Ev,_ZTv0_n24_N9S21114C23D0Ev)();
extern void ABISELECT(_ZThn48_N9S21114C23D0Ev,_ZThn28_N9S21114C23D0Ev)() __attribute__((weak));
extern void _ZN9S21114C242v6Ev();
static  VTBL_ENTRY vtc_S21114C23[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C23[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  (VTBL_ENTRY)&_ZN9S21114C23D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C23D0Ev,
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21114C23[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21114C23[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  0,
  ABISELECT(-48,-28),
  0,
  0,
  -8,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S21114C23[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C23D1Ev,_ZTv0_n24_N9S21114C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C23D0Ev,_ZTv0_n24_N9S21114C23D0Ev),
  (VTBL_ENTRY)&_ZN9S21114C242v6Ev,
};
extern VTBL_ENTRY _ZTV9S21114C23[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C23[] = {
  ABISELECT(48,28),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C16__9S21114C23[] = {
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C139S21114C16__9S21114C23[] = {
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C16__9S21114C23[] = {
  0,
  -8,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A__9S21114C23[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__A1__9S21114C23[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C13__A3__9S21114C23[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C23[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C24D1Ev();
extern void _ZN9S21114C24D0Ev();
extern void _ZN9S21114C242v6Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C24__9S21114C23[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C24[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C24D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C24D0Ev,
  (VTBL_ENTRY)&_ZN9S21114C242v6Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C119S21114C24__9S21114C23[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
static  VTT_ENTRY vtt_S21114C23[] = {
  {&(_ZTV9S21114C23[5]),  5,28},
  {&(_tg__ZTV9S21114C16__9S21114C23[4]),  4,6},
  {&(_tg__ZTV9S21114C139S21114C16__9S21114C23[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C139S21114C16__9S21114C23[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C16__9S21114C23[4]),  4,5},
  {&(_tg__ZTV8S21114C4__A__9S21114C23[3]),  3,4},
  {&(_tg__ZTV9S21114C13__A1__9S21114C23[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C13__A3__9S21114C23[3]),  3,4},
  {&(_ZTV9S21114C23[24]),  24,28},
  {&(_ZTV9S21114C23[12]),  12,28},
  {&(_ZTV9S21114C23[24]),  24,28},
  {&(_ZTV9S21114C23[16]),  16,28},
  {&(_tg__ZTV8S21114C4__A1__9S21114C23[3]),  3,4},
  {&(_tg__ZTV9S21114C24__9S21114C23[5]),  5,9},
  {&(_tg__ZTV9S21114C119S21114C24__9S21114C23[5]),  5,8},
  {&(_tg__ZTV9S21114C119S21114C24__9S21114C23[5]),  5,8},
  {&(_tg__ZTV9S21114C24__9S21114C23[5]),  5,9},
};
extern VTBL_ENTRY _ZTI9S21114C23[];
extern  VTBL_ENTRY _ZTV9S21114C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C23[];
static VTBL_ENTRY alt_thunk_names29[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C23D0Ev,_ZTv0_n24_N9S21114C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21114C23D0Ev,_ZThn28_N9S21114C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C23D1Ev,_ZTv0_n24_N9S21114C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21114C23D1Ev,_ZThn28_N9S21114C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21114C23 = {  "S21114C23", // class name
  bases_S21114C23, 18,
  &(vtc_S21114C23[0]), // expected_vtbl_contents
  &(vtt_S21114C23[0]), // expected_vtt_contents
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI9S21114C23),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21114C23),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21114C23),17, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names29,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21114C22  : S21114C23 , virtual S731C17_nt , virtual S21114C18 {
  int s21114c22f0;
  ~S21114C22(); // tgen
  S21114C22(); // tgen
};
//SIG(-1 S21114C22) C1{ BC2{ BC3{ VBC4{ m FL} BC5{ VBC4 BC6{ VBC4 BC7{ m} v1} BC7} VBC6 v2} BC6 VBC8{ BC9{ BC4 VBC6 BC7 vd} v3} BC5} VBC7 VBC10{ VBC11{ BC6} Fi} Fi}


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

static void Test_S21114C22()
{
  extern Class_Descriptor cd_S21114C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S21114C22, buf);
    S21114C22 *dp, &lv = *(dp=new (buf) S21114C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S21114C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21114C22)");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C16*)(S21114C23*), ABISELECT(40,24), "S21114C22");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C16*)(S21114C23*), ABISELECT(40,24), "S21114C22");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C16*)(S21114C23*), ABISELECT(40,24), "S21114C22");
    /*is_ambiguous_... S21114C22::S21114C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*), ABISELECT(40,24), "S21114C22");
    /*is_ambiguous_... S21114C23::S21114C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C23*), ABISELECT(40,24), "S21114C22");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C23*), ABISELECT(40,24), "S21114C22");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C23*), ABISELECT(40,24), "S21114C22");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*), ABISELECT(40,24), "S21114C22");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C16*)(S21114C23*), 0, "S21114C22");
    check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C16*)(S21114C23*), 0, "S21114C22");
    /*is_ambiguous_... S21114C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C16*)(S21114C23*), ABISELECT(8,4), "S21114C22");
    check_base_class_offset(lv, (S21114C13*)(S21114C16*)(S21114C23*), 0, "S21114C22");
    /*is_ambiguous_... S21114C22::S21114C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*), ABISELECT(48,32), "S21114C22");
    /*is_ambiguous_... S21114C16::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C16*)(S21114C23*), ABISELECT(48,32), "S21114C22");
    check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C24*), ABISELECT(48,32), "S21114C22");
    check_base_class_offset(lv, (S21114C16*)(S21114C23*), 0, "S21114C22");
    /*is_ambiguous_... S21114C23::S21114C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C23*), ABISELECT(16,8), "S21114C22");
    /*is_ambiguous_... S21114C23::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C23*), ABISELECT(16,8), "S21114C22");
    /*is_ambiguous_... S21114C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C24*), ABISELECT(56,36), "S21114C22");
    /*is_ambiguous_... S21114C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C24*), ABISELECT(64,44), "S21114C22");
    check_base_class_offset(lv, (S21114C11*)(S21114C24*), ABISELECT(48,32), "S21114C22");
    check_base_class_offset(lv, (S21114C24*)(S21114C23*), ABISELECT(48,32), "S21114C22");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C23*), ABISELECT(24,12), "S21114C22");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C23*), ABISELECT(24,12), "S21114C22");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C23*), ABISELECT(32,16), "S21114C22");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C23*), ABISELECT(24,12), "S21114C22");
    check_base_class_offset(lv, (S21114C23*), 0, "S21114C22");
    /*is_ambiguous_... S21114C22::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(65,45), "S21114C22");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*), ABISELECT(72,48), "S21114C22");
    check_base_class_offset(lv, (S21114C4*)(S21114C8*), ABISELECT(72,48), "S21114C22");
    check_base_class_offset(lv, (S21114C8*)(S21114C18*), ABISELECT(72,48), "S21114C22");
    check_base_class_offset(lv, (S21114C18*), ABISELECT(72,48), "S21114C22");
    check_field_offset(lv, s21114c22f0, ABISELECT(36,20), "S21114C22.s21114c22f0");
    test_class_info(&lv, &cd_S21114C22);
    dp->~S21114C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21114C22(Test_S21114C22, "S21114C22", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN9S21114C22C1Ev();
extern void _ZN9S21114C22D1Ev();
Name_Map name_map_S21114C22[] = {
  NSPAIR(_ZN9S21114C22C1Ev),
  NSPAIR(_ZN9S21114C22D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C16;
extern VTBL_ENTRY _ZTI9S21114C16[];
extern  VTBL_ENTRY _ZTV9S21114C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C16[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S21114C24;
extern VTBL_ENTRY _ZTI9S21114C24[];
extern  VTBL_ENTRY _ZTV9S21114C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C24[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S21114C23;
extern VTBL_ENTRY _ZTI9S21114C23[];
extern  VTBL_ENTRY _ZTV9S21114C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C23[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C18;
extern VTBL_ENTRY _ZTI9S21114C18[];
extern  VTBL_ENTRY _ZTV9S21114C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C18[];
static Base_Class bases_S21114C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21114C13,    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
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21114C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    12, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21114C24,    ABISELECT(48,32), //bcp->offset
    20, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    15, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21114C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    ABISELECT(65,45), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_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
    21, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(72,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S21114C18,    ABISELECT(72,48), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21114C22[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void _ZN9S21114C22D1Ev();
extern void _ZN9S21114C22D0Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C22D1Ev,_ZTv0_n24_N9S21114C22D1Ev)();
extern void ABISELECT(_ZThn48_N9S21114C22D1Ev,_ZThn32_N9S21114C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C22D0Ev,_ZTv0_n24_N9S21114C22D0Ev)();
extern void ABISELECT(_ZThn48_N9S21114C22D0Ev,_ZThn32_N9S21114C22D0Ev)() __attribute__((weak));
extern void _ZN9S21114C242v6Ev();
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY vtc_S21114C22[] = {
  ABISELECT(72,48),
  ABISELECT(72,48),
  ABISELECT(65,45),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C22[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  (VTBL_ENTRY)&_ZN9S21114C22D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C22D0Ev,
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21114C22[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  ABISELECT(16,12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21114C22[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  0,
  ABISELECT(-48,-32),
  0,
  0,
  -8,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S21114C22[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C22D1Ev,_ZTv0_n24_N9S21114C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C22D0Ev,_ZTv0_n24_N9S21114C22D0Ev),
  (VTBL_ENTRY)&_ZN9S21114C242v6Ev,
  0,
  0,
  ABISELECT(-32,-24),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI9S21114C22[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern VTBL_ENTRY _ZTV9S21114C22[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void _ZN9S21114C23D1Ev();
extern void _ZN9S21114C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C23__9S21114C22[] = {
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C23[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  (VTBL_ENTRY)&_ZN9S21114C23D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C23D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C169S21114C23__9S21114C22[] = {
  ABISELECT(48,32),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C169S21114C23__9S21114C22[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C139S21114C169S21114C23__9S21114C22[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C169S21114C23__9S21114C22[] = {
  0,
  -8,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C23__A2__9S21114C22[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C23__A1__9S21114C22[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C139S21114C23__A3__9S21114C22[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C23D1Ev,_ZTv0_n24_N9S21114C23D1Ev)();
extern void ABISELECT(_ZThn48_N9S21114C23D1Ev,_ZThn32_N9S21114C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C23D0Ev,_ZTv0_n24_N9S21114C23D0Ev)();
extern void ABISELECT(_ZThn48_N9S21114C23D0Ev,_ZThn32_N9S21114C23D0Ev)() __attribute__((weak));
extern void _ZN9S21114C242v6Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C24__9S21114C23__9S21114C22[] = {
  0,
  ABISELECT(-48,-32),
  0,
  0,
  -8,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S21114C23[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C23D1Ev,_ZTv0_n24_N9S21114C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C23D0Ev,_ZTv0_n24_N9S21114C23D0Ev),
  (VTBL_ENTRY)&_ZN9S21114C242v6Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A__9S21114C23__9S21114C22[] = {
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21114C23[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__A1__9S21114C23__9S21114C22[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21114C23[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C22[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C24D1Ev();
extern void _ZN9S21114C24D0Ev();
extern void _ZN9S21114C242v6Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C24__9S21114C22[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C24[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C24D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C24D0Ev,
  (VTBL_ENTRY)&_ZN9S21114C242v6Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C119S21114C24__9S21114C22[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__9S21114C22[] = {
  0,
  0,
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C18[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C8__9S21114C22[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C8__A4__9S21114C22[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
static  VTT_ENTRY vtt_S21114C22[] = {
  {&(_ZTV9S21114C22[8]),  8,37},
  {&(_tg__ZTV9S21114C23__9S21114C22[5]),  5,9},
  {&(_tg__ZTV9S21114C169S21114C23__9S21114C22[4]),  4,6},
  {&(_tg__ZTV9S21114C139S21114C169S21114C23__9S21114C22[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C139S21114C169S21114C23__9S21114C22[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C169S21114C23__9S21114C22[4]),  4,5},
  {&(_tg__ZTV8S21114C49S21114C23__A2__9S21114C22[3]),  3,4},
  {&(_tg__ZTV9S21114C139S21114C23__A1__9S21114C22[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C139S21114C23__A3__9S21114C22[3]),  3,4},
  {&(_tg__ZTV9S21114C24__9S21114C23__9S21114C22[7]),  7,11},
  {&(_tg__ZTV8S21114C4__A__9S21114C23__9S21114C22[3]),  3,4},
  {&(_tg__ZTV9S21114C24__9S21114C23__9S21114C22[7]),  7,11},
  {&(_tg__ZTV9S21114C13__A1__9S21114C23__9S21114C22[3]),  3,4},
  {&(_ZTV9S21114C22[27]),  27,37},
  {&(_ZTV9S21114C22[15]),  15,37},
  {&(_ZTV9S21114C22[27]),  27,37},
  {&(_ZTV9S21114C22[19]),  19,37},
  {&(_ZTV9S21114C22[36]),  36,37},
  {&(_ZTV9S21114C22[36]),  36,37},
  {&(_tg__ZTV8S21114C4__A1__9S21114C22[3]),  3,4},
  {&(_tg__ZTV9S21114C24__9S21114C22[5]),  5,9},
  {&(_tg__ZTV9S21114C119S21114C24__9S21114C22[5]),  5,8},
  {&(_tg__ZTV9S21114C119S21114C24__9S21114C22[5]),  5,8},
  {&(_tg__ZTV9S21114C24__9S21114C22[5]),  5,9},
  {&(_tg__ZTV9S21114C18__9S21114C22[5]),  5,6},
  {&(_tg__ZTV9S21114C18__9S21114C22[5]),  5,6},
  {&(_tg__ZTV8S21114C8__9S21114C22[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C8__A4__9S21114C22[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S21114C22[];
extern  VTBL_ENTRY _ZTV9S21114C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C22[];
static VTBL_ENTRY alt_thunk_names30[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C23D0Ev,_ZTv0_n24_N9S21114C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21114C23D0Ev,_ZThn32_N9S21114C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C23D1Ev,_ZTv0_n24_N9S21114C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21114C23D1Ev,_ZThn32_N9S21114C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C22D0Ev,_ZTv0_n24_N9S21114C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21114C22D0Ev,_ZThn32_N9S21114C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C22D1Ev,_ZTv0_n24_N9S21114C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21114C22D1Ev,_ZThn32_N9S21114C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21114C22 = {  "S21114C22", // class name
  bases_S21114C22, 24,
  &(vtc_S21114C22[0]), // expected_vtbl_contents
  &(vtt_S21114C22[0]), // expected_vtt_contents
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI9S21114C22),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21114C22),37, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21114C22),28, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names30,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21114C20  : S21114C16 , S21114C2 , virtual S21114C21 , S21114C22 {
  virtual  ~S21114C20(); // _ZN9S21114C20D2Ev
  S21114C20(); // tgen
};
//SIG(-1 S21114C20) C1{ BC2{ VBC3{ m FL} BC4{ VBC3 BC5{ VBC3 BC6{ m} v1} BC6} VBC5 v2} BC7{ VBC8{ VBC5 BC9{ BC3 VBC6 BC10{ BC5} vd v3} vd v4} BC3 VBC11{ VBC5 VBC12{ BC6 VBC5 BC13{ BC3 VBC5 BC6 vd} BC3 vd FL} VBC14{ VBC3 VBC4 BC13 VBC9 BC15{ BC3 BC9 BC16{ m} VBC2 VBC13 vd}} BC17{ VBC18{ VBC10 Fi} BC8 VBC13 VBC14 vd Fp[9]} vd} BC13 BC4 vd v5 Fc} VBC19{ VBC9 BC14 BC8 Fi} BC20{ BC21{ BC2 BC5 VBC22{ BC13 v6} BC4} VBC6 VBC18 Fi} vd}


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

static void Test_S21114C20()
{
  extern Class_Descriptor cd_S21114C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(63,82)];
    init_test(&cd_S21114C20, buf);
    S21114C20 *dp, &lv = *(dp=new (buf) S21114C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(496,324), "sizeof(S21114C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21114C20)");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C16*), ABISELECT(104,64), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C16*), ABISELECT(104,64), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(104,64), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*), ABISELECT(104,64), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(104,64), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C12*), ABISELECT(104,64), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*), ABISELECT(104,64), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*), ABISELECT(104,64), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(104,64), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(104,64), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C16*), ABISELECT(104,64), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C16*), ABISELECT(104,64), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(104,64), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*), ABISELECT(104,64), "S21114C20");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(104,64), "S21114C20");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C2*), ABISELECT(104,64), "S21114C20");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C2*), ABISELECT(104,64), "S21114C20");
    /*is_ambiguous_... S21114C12::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C12*)(S21114C21*), ABISELECT(104,64), "S21114C20");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(104,64), "S21114C20");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*)(S21114C21*), ABISELECT(104,64), "S21114C20");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C16*)(S21114C23*)(S21114C22*), ABISELECT(104,64), "S21114C20");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C16*)(S21114C23*)(S21114C22*), ABISELECT(104,64), "S21114C20");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C16*)(S21114C23*)(S21114C22*), ABISELECT(104,64), "S21114C20");
    /*is_ambiguous_... S21114C23::S21114C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C23*)(S21114C22*), ABISELECT(104,64), "S21114C20");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C23*)(S21114C22*), ABISELECT(104,64), "S21114C20");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C23*)(S21114C22*), ABISELECT(104,64), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C16*), 0, "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C16*), 0, "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C16*), ABISELECT(8,4), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C16*), 0, "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*), ABISELECT(224,136), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C16*), ABISELECT(224,136), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C3*), ABISELECT(224,136), "S21114C20");
    /*is_ambiguous_... S21114C9::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C9*), ABISELECT(224,136), "S21114C20");
    check_base_class_offset(lv, (S21114C4*)(S21114C10*), ABISELECT(224,136), "S21114C20");
    check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C10*), ABISELECT(224,136), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C12*), ABISELECT(224,136), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C16*), ABISELECT(224,136), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*), ABISELECT(224,136), "S21114C20");
    /*is_ambiguous_... S21114C3::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(224,136), "S21114C20");
    /*is_ambiguous_... S21114C2::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C2*), ABISELECT(224,136), "S21114C20");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C12*)(S21114C21*), ABISELECT(224,136), "S21114C20");
    /*is_ambiguous_... S21114C3::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C3*)(S21114C21*), ABISELECT(224,136), "S21114C20");
    /*is_ambiguous_... S21114C16::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C16*)(S21114C23*)(S21114C22*), ABISELECT(224,136), "S21114C20");
    check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C24*), ABISELECT(224,136), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S21114C16*), 0, "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C3*), ABISELECT(120,76), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C3*), ABISELECT(128,84), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*), ABISELECT(128,84), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(128,84), "S21114C20");
    /*is_ambiguous_... S21114C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(128,84), "S21114C20");
    /*is_ambiguous_... S21114C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(128,84), "S21114C20");
    /*is_ambiguous_... S21114C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C3*)(S21114C21*), ABISELECT(128,84), "S21114C20");
    /*is_ambiguous_... S21114C22::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C22*), ABISELECT(128,84), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(112,72), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(112,72), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(112,72), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C7*)(S21114C3*), ABISELECT(112,72), "S21114C20");
    /*is_ambiguous_... S21114C2::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C3*)(S21114C2*), ABISELECT(112,72), "S21114C20");
    /*is_ambiguous_... S21114C2::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C2*), ABISELECT(40,24), "S21114C20");
    /*is_ambiguous_... S21114C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C10*), ABISELECT(241,149), "S21114C20");
    /*is_ambiguous_... S21114C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C10*), ABISELECT(232,140), "S21114C20");
    /*is_ambiguous_... S21114C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C10*), ABISELECT(240,148), "S21114C20");
    check_base_class_offset(lv, (S21114C11*)(S21114C10*), ABISELECT(224,136), "S21114C20");
    /*is_ambiguous_... S21114C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C10*), ABISELECT(248,152), "S21114C20");
    check_base_class_offset(lv, (S21114C10*)(S21114C9*), ABISELECT(224,136), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*), ABISELECT(312,204), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*), ABISELECT(312,204), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*), ABISELECT(320,208), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C12*), ABISELECT(312,204), "S21114C20");
    /*is_ambiguous_... S21114C12::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C12*)(S21114C21*), ABISELECT(312,204), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C12*), ABISELECT(272,172), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C12*), ABISELECT(280,180), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C11*)(S21114C12*), ABISELECT(264,168), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*), ABISELECT(336,216), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(328,212), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(328,212), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C8*)(S21114C7*), ABISELECT(328,212), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C7*)(S21114C12*), ABISELECT(328,212), "S21114C20");
    /*is_ambiguous_... S21114C21::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C7*)(S21114C21*), ABISELECT(328,212), "S21114C20");
    /*is_ambiguous_... S21114C12::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C7*)(S21114C12*)(S21114C21*), ABISELECT(328,212), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C14*)(S21114C12*), ABISELECT(304,196), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(296,188), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(288,184), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(288,184), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(288,184), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(288,184), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C12 */ AMB_check_base_class_offset(lv, (S28C52_nt*)(S21114C14*)(S21114C12*), ABISELECT(288,184), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(344,224), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(344,224), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C16*), ABISELECT(352,228), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C16*), ABISELECT(344,224), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C16*)(S21114C14*)(S21114C12*), ABISELECT(344,224), "S21114C20");
    check_base_class_offset(lv, (S21114C16*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(344,224), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*), ABISELECT(368,236), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*), ABISELECT(376,244), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C11*)(S21114C14*)(S21114C12*), ABISELECT(360,232), "S21114C20");
    /*is_ambiguous_... S21114C17::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C11*)(S21114C17*)(S21114C9*), ABISELECT(360,232), "S21114C20");
    check_base_class_offset(lv, (S21114C11*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(360,232), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C14*)(S21114C12*), ABISELECT(288,184), "S21114C20");
    check_base_class_offset(lv, (S21114C12*)(S21114C9*), ABISELECT(264,168), "S21114C20");
    check_base_class_offset(lv, (S21114C12*)(S21114C17*)(S21114C9*), ABISELECT(264,168), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*), ABISELECT(384,248), "S21114C20");
    /*is_ambiguous_... S21114C20::S21114C8 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C8*), ABISELECT(384,248), "S21114C20");
    check_base_class_offset(lv, (S21114C8*)(S21114C18*), ABISELECT(384,248), "S21114C20");
    check_base_class_offset(lv, (S21114C18*)(S21114C17*)(S21114C9*), ABISELECT(384,248), "S21114C20");
    check_base_class_offset(lv, (S21114C18*)(S21114C22*), ABISELECT(384,248), "S21114C20");
    /*is_ambiguous_... S21114C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(144,92), "S21114C20");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(136,88), "S21114C20");
    check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(136,88), "S21114C20");
    check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(136,88), "S21114C20");
    check_base_class_offset(lv, (S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(136,88), "S21114C20");
    check_base_class_offset(lv, (S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(136,88), "S21114C20");
    check_base_class_offset(lv, (S21114C17*)(S21114C9*), ABISELECT(136,88), "S21114C20");
    check_base_class_offset(lv, (S21114C9*)(S21114C2*), ABISELECT(136,88), "S21114C20");
    /*is_ambiguous_... S21114C2::S21114C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C2*), ABISELECT(24,12), "S21114C20");
    /*is_ambiguous_... S21114C2::S21114C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C2*), ABISELECT(32,20), "S21114C20");
    /*is_ambiguous_... S21114C2::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C11*)(S21114C2*), ABISELECT(16,8), "S21114C20");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C2*), ABISELECT(48,32), "S21114C20");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C2*), ABISELECT(48,32), "S21114C20");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C2*), ABISELECT(56,36), "S21114C20");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C2*), ABISELECT(48,32), "S21114C20");
    check_base_class_offset(lv, (S21114C2*), ABISELECT(16,8), "S21114C20");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C12*)(S21114C21*), ABISELECT(408,260), "S21114C20");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C12*)(S21114C21*), ABISELECT(416,268), "S21114C20");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C11*)(S21114C12*)(S21114C21*), ABISELECT(400,256), "S21114C20");
    /*is_ambiguous_... S21114C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(440,284), "S21114C20");
    /*is_ambiguous_... S21114C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(432,276), "S21114C20");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(424,272), "S21114C20");
    check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(424,272), "S21114C20");
    check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(424,272), "S21114C20");
    check_base_class_offset(lv, (S21114C7*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(424,272), "S21114C20");
    check_base_class_offset(lv, (S28C52_nt*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(424,272), "S21114C20");
    check_base_class_offset(lv, (S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(424,272), "S21114C20");
    check_base_class_offset(lv, (S21114C12*)(S21114C21*), ABISELECT(400,256), "S21114C20");
    /*is_ambiguous_... S21114C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C3*)(S21114C21*), ABISELECT(456,296), "S21114C20");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*)(S21114C21*), ABISELECT(448,292), "S21114C20");
    check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*)(S21114C21*), ABISELECT(448,292), "S21114C20");
    check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C3*)(S21114C21*), ABISELECT(448,292), "S21114C20");
    check_base_class_offset(lv, (S21114C7*)(S21114C3*)(S21114C21*), ABISELECT(448,292), "S21114C20");
    check_base_class_offset(lv, (S21114C3*)(S21114C21*), ABISELECT(448,292), "S21114C20");
    check_base_class_offset(lv, (S21114C21*), ABISELECT(400,256), "S21114C20");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C16*)(S21114C23*)(S21114C22*), ABISELECT(64,40), "S21114C20");
    check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C16*)(S21114C23*)(S21114C22*), ABISELECT(64,40), "S21114C20");
    /*is_ambiguous_... S21114C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C16*)(S21114C23*)(S21114C22*), ABISELECT(72,44), "S21114C20");
    check_base_class_offset(lv, (S21114C13*)(S21114C16*)(S21114C23*)(S21114C22*), ABISELECT(64,40), "S21114C20");
    check_base_class_offset(lv, (S21114C16*)(S21114C23*)(S21114C22*), ABISELECT(64,40), "S21114C20");
    /*is_ambiguous_... S21114C23::S21114C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C23*)(S21114C22*), ABISELECT(80,48), "S21114C20");
    /*is_ambiguous_... S21114C23::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C23*)(S21114C22*), ABISELECT(80,48), "S21114C20");
    /*is_ambiguous_... S21114C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C24*), ABISELECT(480,312), "S21114C20");
    /*is_ambiguous_... S21114C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C24*), ABISELECT(488,320), "S21114C20");
    check_base_class_offset(lv, (S21114C11*)(S21114C24*), ABISELECT(472,308), "S21114C20");
    check_base_class_offset(lv, (S21114C24*)(S21114C23*)(S21114C22*), ABISELECT(472,308), "S21114C20");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C23*)(S21114C22*), ABISELECT(88,52), "S21114C20");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C23*)(S21114C22*), ABISELECT(88,52), "S21114C20");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C23*)(S21114C22*), ABISELECT(96,56), "S21114C20");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C23*)(S21114C22*), ABISELECT(88,52), "S21114C20");
    check_base_class_offset(lv, (S21114C23*)(S21114C22*), ABISELECT(64,40), "S21114C20");
    check_base_class_offset(lv, (S21114C22*), ABISELECT(64,40), "S21114C20");
    test_class_info(&lv, &cd_S21114C20);
    dp->~S21114C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21114C20(Test_S21114C20, "S21114C20", ABISELECT(496,324));

#else // __cplusplus

extern void _ZN9S21114C20C1Ev();
extern void _ZN9S21114C20D2Ev();
Name_Map name_map_S21114C20[] = {
  NSPAIR(_ZN9S21114C20C1Ev),
  NSPAIR(_ZN9S21114C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C16;
extern VTBL_ENTRY _ZTI9S21114C16[];
extern  VTBL_ENTRY _ZTV9S21114C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C16[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S21114C3;
extern VTBL_ENTRY _ZTI8S21114C3[];
extern  VTBL_ENTRY _ZTV8S21114C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S21114C10;
extern VTBL_ENTRY _ZTI9S21114C10[];
extern  VTBL_ENTRY _ZTV9S21114C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C10[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S21114C16;
extern VTBL_ENTRY _ZTI9S21114C16[];
extern  VTBL_ENTRY _ZTV9S21114C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C16[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S21114C14;
extern VTBL_ENTRY _ZTI9S21114C14[];
extern  VTBL_ENTRY _ZTV9S21114C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C14[];
extern Class_Descriptor cd_S21114C12;
extern VTBL_ENTRY _ZTI9S21114C12[];
extern  VTBL_ENTRY _ZTV9S21114C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C18;
extern VTBL_ENTRY _ZTI9S21114C18[];
extern  VTBL_ENTRY _ZTV9S21114C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C18[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S21114C3;
extern VTBL_ENTRY _ZTI8S21114C3[];
extern  VTBL_ENTRY _ZTV8S21114C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C3[];
extern Class_Descriptor cd_S21114C17;
extern VTBL_ENTRY _ZTI9S21114C17[];
extern  VTBL_ENTRY _ZTV9S21114C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C17[];
extern Class_Descriptor cd_S21114C9;
extern VTBL_ENTRY _ZTI8S21114C9[];
extern  VTBL_ENTRY _ZTV8S21114C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S21114C2;
extern VTBL_ENTRY _ZTI8S21114C2[];
extern  VTBL_ENTRY _ZTV8S21114C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C2[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S21114C14;
extern VTBL_ENTRY _ZTI9S21114C14[];
extern  VTBL_ENTRY _ZTV9S21114C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C14[];
extern Class_Descriptor cd_S21114C12;
extern VTBL_ENTRY _ZTI9S21114C12[];
extern  VTBL_ENTRY _ZTV9S21114C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C12[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S21114C3;
extern VTBL_ENTRY _ZTI8S21114C3[];
extern  VTBL_ENTRY _ZTV8S21114C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C3[];
extern Class_Descriptor cd_S21114C21;
extern VTBL_ENTRY _ZTI9S21114C21[];
extern  VTBL_ENTRY _ZTV9S21114C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C21[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S21114C16;
extern VTBL_ENTRY _ZTI9S21114C16[];
extern  VTBL_ENTRY _ZTV9S21114C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C16[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S21114C24;
extern VTBL_ENTRY _ZTI9S21114C24[];
extern  VTBL_ENTRY _ZTV9S21114C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C24[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S21114C23;
extern VTBL_ENTRY _ZTI9S21114C23[];
extern  VTBL_ENTRY _ZTV9S21114C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C23[];
extern Class_Descriptor cd_S21114C22;
extern VTBL_ENTRY _ZTI9S21114C22[];
extern  VTBL_ENTRY _ZTV9S21114C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C22[];
static Base_Class bases_S21114C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    45, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21114C13,    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
    46, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(224,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(224,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21114C16,    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
    47, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_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
    13, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    11, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(112,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(112,72), //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
    3, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(112,72), //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
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S21114C3,    ABISELECT(112,72), //bcp->offset
    65, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    70, //immediately_derived
  0, 1},
  {&cd_S3461C5_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
    70, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(241,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
    21, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    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
    19, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(240,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21114C11,    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
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    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
    21, //immediately_derived
  0, 0},
  {&cd_S21114C10,    ABISELECT(224,136), //bcp->offset
    101, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    62, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(312,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
    23, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(312,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(320,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(312,204), //bcp->offset
    136, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(272,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
    28, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(280,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
    28, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(264,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(336,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
    33, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(328,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
    31, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(328,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(328,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(328,212), //bcp->offset
    141, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(296,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
    39, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(288,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(288,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(288,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(288,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(288,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(344,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
    42, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(344,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(352,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
    44, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(344,224), //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
    14, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S21114C16,    ABISELECT(344,224), //bcp->offset
    152, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    121, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(368,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(376,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(360,232), //bcp->offset
    160, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    125, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S21114C14,    ABISELECT(288,184), //bcp->offset
    125, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S21114C12,    ABISELECT(264,168), //bcp->offset
    110, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    61, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(384,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
    52, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(384,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(384,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    129, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    54, //immediately_derived
  0, 1},
  {&cd_S21114C18,    ABISELECT(384,248), //bcp->offset
    169, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    61, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    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
    59, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    57, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S21114C8,    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
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(136,88), //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
    28, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S21114C3,    ABISELECT(136,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S21114C17,    ABISELECT(136,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S21114C9,    ABISELECT(136,88), //bcp->offset
    79, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    70, //immediately_derived
  0, 1},
  {&cd_S3461C5_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
    65, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    65, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    69, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(48,32), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S21114C2,    ABISELECT(16,8), //bcp->offset
    21, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(408,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
    73, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(416,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(400,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(440,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
    81, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(432,276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(424,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
    77, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(424,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    138, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(424,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    137, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(424,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    136, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    81, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(424,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
    81, //immediately_derived
  0, 0},
  {&cd_S21114C14,    ABISELECT(424,272), //bcp->offset
    191, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    135, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S21114C12,    ABISELECT(400,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    132, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    89, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(456,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    87, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(448,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
    85, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(448,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    151, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    86, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(448,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    150, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    87, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(448,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
    40, //init_seq
    88, //immediately_derived
  0, 0},
  {&cd_S21114C3,    ABISELECT(448,292), //bcp->offset
    202, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    148, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    89, //immediately_derived
  0, 0},
  {&cd_S21114C21,    ABISELECT(400,256), //bcp->offset
    175, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    131, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_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
    91, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    93, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    94, //immediately_derived
  0, 0},
  {&cd_S21114C16,    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
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    54, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    96, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(80,48), //bcp->offset
    57, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(480,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
    99, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(488,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
    99, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(472,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    161, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    100, //immediately_derived
  0, 0},
  {&cd_S21114C24,    ABISELECT(472,308), //bcp->offset
    212, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    160, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    105, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    102, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    104, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    104, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(88,52), //bcp->offset
    61, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    57, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S21114C23,    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
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    58, //init_seq
    106, //immediately_derived
  0, 0},
  {&cd_S21114C22,    ABISELECT(64,40), //bcp->offset
    45, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    59, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21114C20[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void _ZN9S21114C20D1Ev();
extern void _ZN9S21114C20D0Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn16_N9S21114C20D1Ev,_ZThn8_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn16_N9S21114C20D0Ev,_ZThn8_N9S21114C20D0Ev)();
extern void _ZN8S21114C22v5Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void ABISELECT(_ZThn64_N9S21114C20D1Ev,_ZThn40_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S21114C20D0Ev,_ZThn40_N9S21114C20D0Ev)();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21114C20D1Ev,_ZTv0_n28_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn112_N9S21114C20D1Ev,_ZThn72_N9S21114C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21114C20D0Ev,_ZTv0_n28_N9S21114C20D0Ev)();
extern void ABISELECT(_ZThn112_N9S21114C20D0Ev,_ZThn72_N9S21114C20D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n120_N9S21114C20D1Ev,_ZTv0_n60_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn136_N9S21114C20D1Ev,_ZThn88_N9S21114C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S21114C20D0Ev,_ZTv0_n60_N9S21114C20D0Ev)();
extern void ABISELECT(_ZThn136_N9S21114C20D0Ev,_ZThn88_N9S21114C20D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn224_N9S21114C20D1Ev,_ZThn136_N9S21114C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev)();
extern void ABISELECT(_ZThn224_N9S21114C20D0Ev,_ZThn136_N9S21114C20D0Ev)() __attribute__((weak));
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21114C20D1Ev,_ZTv0_n44_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn264_N9S21114C20D1Ev,_ZThn168_N9S21114C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21114C20D0Ev,_ZTv0_n44_N9S21114C20D0Ev)();
extern void ABISELECT(_ZThn264_N9S21114C20D0Ev,_ZThn168_N9S21114C20D0Ev)() __attribute__((weak));
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N9S21114C20D1Ev,_ZTvn16_n44_N9S21114C20D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N9S21114C20D0Ev,_ZTvn16_n44_N9S21114C20D0Ev)();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn328_N9S21114C20D1Ev,_ZThn212_N9S21114C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev)();
extern void ABISELECT(_ZThn328_N9S21114C20D0Ev,_ZThn212_N9S21114C20D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn360_N9S21114C20D1Ev,_ZThn232_N9S21114C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev)();
extern void ABISELECT(_ZThn360_N9S21114C20D0Ev,_ZThn232_N9S21114C20D0Ev)() __attribute__((weak));
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21114C20D1Ev,_ZTv0_n44_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn400_N9S21114C20D1Ev,_ZThn256_N9S21114C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21114C20D0Ev,_ZTv0_n44_N9S21114C20D0Ev)();
extern void ABISELECT(_ZThn400_N9S21114C20D0Ev,_ZThn256_N9S21114C20D0Ev)() __attribute__((weak));
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N9S21114C20D1Ev,_ZTvn16_n44_N9S21114C20D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N9S21114C20D0Ev,_ZTvn16_n44_N9S21114C20D0Ev)();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn48_n88_N9S21114C20D1Ev,_ZTvn36_n44_N9S21114C20D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N9S21114C20D0Ev,_ZTvn36_n44_N9S21114C20D0Ev)();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn472_N9S21114C20D1Ev,_ZThn308_N9S21114C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev)();
extern void ABISELECT(_ZThn472_N9S21114C20D0Ev,_ZThn308_N9S21114C20D0Ev)() __attribute__((weak));
extern void _ZN9S21114C242v6Ev();
static  VTBL_ENTRY vtc_S21114C20[] = {
  ABISELECT(472,308),
  ABISELECT(400,256),
  ABISELECT(384,248),
  ABISELECT(384,248),
  ABISELECT(360,232),
  ABISELECT(344,224),
  ABISELECT(328,212),
  ABISELECT(312,204),
  ABISELECT(264,168),
  ABISELECT(224,136),
  ABISELECT(136,88),
  ABISELECT(128,84),
  ABISELECT(112,72),
  ABISELECT(224,136),
  ABISELECT(104,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  (VTBL_ENTRY)&_ZN9S21114C20D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C20D0Ev,
  ABISELECT(368,240),
  ABISELECT(368,240),
  ABISELECT(344,224),
  ABISELECT(328,216),
  ABISELECT(312,204),
  ABISELECT(296,196),
  ABISELECT(248,160),
  ABISELECT(208,128),
  ABISELECT(120,80),
  ABISELECT(112,76),
  ABISELECT(96,64),
  ABISELECT(208,128),
  ABISELECT(208,128),
  ABISELECT(88,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21114C20D1Ev,_ZThn8_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21114C20D0Ev,_ZThn8_N9S21114C20D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C22v5Ev,
  ABISELECT(56,32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  ABISELECT(320,208),
  ABISELECT(320,208),
  ABISELECT(64,44),
  ABISELECT(408,268),
  ABISELECT(160,96),
  ABISELECT(40,24),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S21114C20D1Ev,_ZThn40_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S21114C20D0Ev,_ZThn40_N9S21114C20D0Ev),
  ABISELECT(24,16),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  ABISELECT(16,12),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  0,
  0,
  ABISELECT(-112,-72),
  0,
  ABISELECT(112,64),
  ABISELECT(16,12),
  -8,
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21114C20D1Ev,_ZTv0_n28_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21114C20D0Ev,_ZTv0_n28_N9S21114C20D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
  0,
  0,
  ABISELECT(-136,-88),
  0,
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-32,-24),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S21114C20D1Ev,_ZTv0_n60_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S21114C20D0Ev,_ZTv0_n60_N9S21114C20D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
  ABISELECT(-224,-136),
  0,
  0,
  ABISELECT(-120,-72),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev),
  ABISELECT(24,16),
  ABISELECT(-264,-168),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-160,-104),
  ABISELECT(-264,-168),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C20D1Ev,_ZTv0_n44_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C20D0Ev,_ZTv0_n44_N9S21114C20D0Ev),
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-184,-120),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C20D1Ev,_ZTvn16_n44_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C20D0Ev,_ZTvn16_n44_N9S21114C20D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  0,
  ABISELECT(-208,-140),
  ABISELECT(-312,-204),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  0,
  ABISELECT(-328,-212),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  ABISELECT(-328,-212),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(-344,-224),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  ABISELECT(-360,-232),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(-360,-232),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev),
  0,
  0,
  ABISELECT(-280,-184),
  ABISELECT(-384,-248),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  ABISELECT(48,36),
  ABISELECT(24,16),
  ABISELECT(-400,-256),
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(-272,-172),
  ABISELECT(-72,-44),
  ABISELECT(-88,-52),
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  ABISELECT(-296,-192),
  ABISELECT(-400,-256),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C20D1Ev,_ZTv0_n44_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C20D0Ev,_ZTv0_n44_N9S21114C20D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-200,-136),
  ABISELECT(-80,-48),
  ABISELECT(-296,-188),
  ABISELECT(-320,-208),
  ABISELECT(-424,-272),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C20D1Ev,_ZTvn16_n44_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C20D0Ev,_ZTvn16_n44_N9S21114C20D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  ABISELECT(-224,-156),
  ABISELECT(-320,-208),
  ABISELECT(-344,-228),
  ABISELECT(-448,-292),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N9S21114C20D1Ev,_ZTvn36_n44_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N9S21114C20D0Ev,_ZTvn36_n44_N9S21114C20D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
  0,
  ABISELECT(-472,-308),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-368,-244),
  ABISELECT(-472,-308),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev),
  (VTBL_ENTRY)&_ZN9S21114C242v6Ev,
};
extern VTBL_ENTRY _ZTV9S21114C20[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__A__9S21114C20[] = {
  ABISELECT(224,136),
  ABISELECT(104,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C16__9S21114C20[] = {
  ABISELECT(104,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C139S21114C16__9S21114C20[] = {
  ABISELECT(104,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C16__A__9S21114C20[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C2D1Ev();
extern void _ZN8S21114C2D0Ev();
extern void _ZN8S21114C22v5Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C2__9S21114C20[] = {
  ABISELECT(368,240),
  ABISELECT(368,240),
  ABISELECT(344,224),
  ABISELECT(328,216),
  ABISELECT(312,204),
  ABISELECT(296,196),
  ABISELECT(248,160),
  ABISELECT(208,128),
  ABISELECT(120,80),
  ABISELECT(112,76),
  ABISELECT(96,64),
  ABISELECT(208,128),
  ABISELECT(208,128),
  ABISELECT(88,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C22v5Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C118S21114C2__A3__9S21114C20[] = {
  ABISELECT(208,128),
  ABISELECT(208,128),
  ABISELECT(88,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C118S21114C2__A3__9S21114C20[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C138S21114C2__A3__9S21114C20[] = {
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C138S21114C2__A9__9S21114C20[] = {
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21114C2D1Ev,_ZTv0_n28_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S21114C2D1Ev,_ZThn64_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21114C2D0Ev,_ZTv0_n28_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S21114C2D0Ev,_ZThn64_N8S21114C2D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C3__8S21114C2__9S21114C20[] = {
  0,
  0,
  ABISELECT(-96,-64),
  0,
  ABISELECT(112,64),
  ABISELECT(16,12),
  -8,
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21114C2D1Ev,_ZTv0_n28_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21114C2D0Ev,_ZTv0_n28_N8S21114C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn208_N8S21114C2D1Ev,_ZThn128_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn208_N8S21114C2D0Ev,_ZThn128_N8S21114C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C10__8S21114C2__9S21114C20[] = {
  ABISELECT(-208,-128),
  0,
  0,
  ABISELECT(-120,-72),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S21114C2D1Ev,_ZTv0_n60_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn120_N8S21114C2D1Ev,_ZThn80_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S21114C2D0Ev,_ZTv0_n60_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn120_N8S21114C2D0Ev,_ZThn80_N8S21114C2D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C9__8S21114C2__9S21114C20[] = {
  0,
  0,
  ABISELECT(-120,-80),
  0,
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-32,-24),
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21114C2D1Ev,_ZTv0_n60_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21114C2D0Ev,_ZTv0_n60_N8S21114C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S21114C2D1Ev,_ZTv0_n44_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn248_N8S21114C2D1Ev,_ZThn160_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21114C2D0Ev,_ZTv0_n44_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn248_N8S21114C2D0Ev,_ZThn160_N8S21114C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C12__8S21114C2__9S21114C20[] = {
  ABISELECT(24,16),
  ABISELECT(-248,-160),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-160,-104),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C2D1Ev,_ZTv0_n44_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C2D0Ev,_ZTv0_n44_N8S21114C2D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__8S21114C2__9S21114C20[] = {
  0,
  ABISELECT(-208,-140),
  ABISELECT(-296,-196),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn312_N8S21114C2D1Ev,_ZThn204_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn312_N8S21114C2D0Ev,_ZThn204_N8S21114C2D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__A1__8S21114C2__9S21114C20[] = {
  0,
  ABISELECT(-312,-204),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  ABISELECT(-312,-204),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S21114C2D1Ev,_ZTvn16_n44_N8S21114C2D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S21114C2D0Ev,_ZTvn16_n44_N8S21114C2D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__8S21114C2__9S21114C20[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-184,-120),
  ABISELECT(-272,-176),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C2D1Ev,_ZTvn16_n44_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C2D0Ev,_ZTvn16_n44_N8S21114C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__8S21114C2__9S21114C20[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(-328,-216),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn344_N8S21114C2D1Ev,_ZThn224_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn344_N8S21114C2D0Ev,_ZThn224_N8S21114C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__A2__8S21114C2__9S21114C20[] = {
  ABISELECT(-344,-224),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(-344,-224),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__8S21114C2__9S21114C20[] = {
  0,
  0,
  ABISELECT(-280,-184),
  ABISELECT(-368,-240),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__A__8S21114C2__9S21114C20[] = {
  ABISELECT(56,32),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void _ZN9S21114C22D1Ev();
extern void _ZN9S21114C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C22__9S21114C20[] = {
  ABISELECT(320,208),
  ABISELECT(320,208),
  ABISELECT(64,44),
  ABISELECT(408,268),
  ABISELECT(160,96),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C22[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  (VTBL_ENTRY)&_ZN9S21114C22D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C22D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void _ZN9S21114C23D1Ev();
extern void _ZN9S21114C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C239S21114C22__9S21114C20[] = {
  ABISELECT(408,268),
  ABISELECT(160,96),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C23[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  (VTBL_ENTRY)&_ZN9S21114C23D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C23D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C169S21114C239S21114C22__A2__9S21114C20[] = {
  ABISELECT(160,96),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C169S21114C239S21114C22__A4__9S21114C20[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C139S21114C169S21114C239S21114C22__A12__9S21114C20[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C169S21114C239S21114C22__A2__9S21114C20[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C239S21114C22__A13__9S21114C20[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C239S21114C22__A5__9S21114C20[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C139S21114C239S21114C22__A14__9S21114C20[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C239S21114C22__9S21114C20[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S21114C23[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A__9S21114C239S21114C22__9S21114C20[] = {
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21114C23[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C23D1Ev,_ZTv0_n24_N9S21114C23D1Ev)();
extern void ABISELECT(_ZThn408_N9S21114C23D1Ev,_ZThn268_N9S21114C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C23D0Ev,_ZTv0_n24_N9S21114C23D0Ev)();
extern void ABISELECT(_ZThn408_N9S21114C23D0Ev,_ZThn268_N9S21114C23D0Ev)() __attribute__((weak));
extern void _ZN9S21114C242v6Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C24__9S21114C239S21114C22__9S21114C20[] = {
  0,
  ABISELECT(-408,-268),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-368,-244),
  ABISELECT(-408,-268),
  (VTBL_ENTRY)&(_ZTI9S21114C23[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C23D1Ev,_ZTv0_n24_N9S21114C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C23D0Ev,_ZTv0_n24_N9S21114C23D0Ev),
  (VTBL_ENTRY)&_ZN9S21114C242v6Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__A1__9S21114C239S21114C22__9S21114C20[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21114C23[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C22__9S21114C20[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S21114C22[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C23__A2__9S21114C22__9S21114C20[] = {
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21114C22[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C22D1Ev,_ZTv0_n24_N9S21114C22D1Ev)();
extern void ABISELECT(_ZThn408_N9S21114C22D1Ev,_ZThn268_N9S21114C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C22D0Ev,_ZTv0_n24_N9S21114C22D0Ev)();
extern void ABISELECT(_ZThn408_N9S21114C22D0Ev,_ZThn268_N9S21114C22D0Ev)() __attribute__((weak));
extern void _ZN9S21114C242v6Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C24__9S21114C22__9S21114C20[] = {
  0,
  ABISELECT(-408,-268),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-368,-244),
  ABISELECT(-408,-268),
  (VTBL_ENTRY)&(_ZTI9S21114C22[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C22D1Ev,_ZTv0_n24_N9S21114C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C22D0Ev,_ZTv0_n24_N9S21114C22D0Ev),
  (VTBL_ENTRY)&_ZN9S21114C242v6Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C23__A1__9S21114C22__9S21114C20[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21114C22[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__9S21114C22__9S21114C20[] = {
  0,
  0,
  ABISELECT(-280,-184),
  ABISELECT(-320,-208),
  (VTBL_ENTRY)&(_ZTI9S21114C22[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C20[] = {
  ABISELECT(-120,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C3D1Ev();
extern void _ZN8S21114C3D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C3__9S21114C20[] = {
  ABISELECT(112,64),
  ABISELECT(16,12),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C78S21114C3__9S21114C20[] = {
  ABISELECT(16,12),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C78S21114C3__9S21114C20[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C78S21114C3__A2__9S21114C20[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__8S21114C3__9S21114C20[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C9D1Ev();
extern void _ZN8S21114C9D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C9__9S21114C20[] = {
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C17D1Ev();
extern void _ZN9S21114C17D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C178S21114C9__9S21114C20[] = {
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C17D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C3D1Ev();
extern void _ZN8S21114C3D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C39S21114C178S21114C9__A1__9S21114C20[] = {
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C78S21114C39S21114C178S21114C9__A3__9S21114C20[] = {
  ABISELECT(-8,-4),
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C78S21114C39S21114C178S21114C9__A4__9S21114C20[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C78S21114C39S21114C178S21114C9__A8__9S21114C20[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__8S21114C39S21114C178S21114C9__A1__9S21114C20[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__9S21114C178S21114C9__9S21114C20[] = {
  0,
  0,
  ABISELECT(-280,-184),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C178S21114C9__9S21114C20[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev)();
extern void ABISELECT(_ZThn224_N9S21114C17D1Ev,_ZThn144_N9S21114C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev)();
extern void ABISELECT(_ZThn224_N9S21114C17D0Ev,_ZThn144_N9S21114C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__9S21114C178S21114C9__9S21114C20[] = {
  ABISELECT(-224,-144),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21114C17D1Ev,_ZTv0_n44_N9S21114C17D1Ev)();
extern void ABISELECT(_ZThn128_N9S21114C17D1Ev,_ZThn80_N9S21114C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21114C17D0Ev,_ZTv0_n44_N9S21114C17D0Ev)();
extern void ABISELECT(_ZThn128_N9S21114C17D0Ev,_ZThn80_N9S21114C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C12__9S21114C178S21114C9__9S21114C20[] = {
  ABISELECT(24,16),
  ABISELECT(-128,-80),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-160,-104),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C17D1Ev,_ZTv0_n44_N9S21114C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C17D0Ev,_ZTv0_n44_N9S21114C17D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__9S21114C178S21114C9__9S21114C20[] = {
  0,
  ABISELECT(-208,-140),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev)();
extern void ABISELECT(_ZThn192_N9S21114C17D1Ev,_ZThn124_N9S21114C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev)();
extern void ABISELECT(_ZThn192_N9S21114C17D0Ev,_ZThn124_N9S21114C17D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__A1__9S21114C178S21114C9__9S21114C20[] = {
  0,
  ABISELECT(-192,-124),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N9S21114C17D1Ev,_ZTvn16_n44_N9S21114C17D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N9S21114C17D0Ev,_ZTvn16_n44_N9S21114C17D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__9S21114C178S21114C9__9S21114C20[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-184,-120),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C17D1Ev,_ZTvn16_n44_N9S21114C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C17D0Ev,_ZTvn16_n44_N9S21114C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C178S21114C9__9S21114C20[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev)();
extern void ABISELECT(_ZThn88_N8S21114C9D1Ev,_ZThn48_N8S21114C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev)();
extern void ABISELECT(_ZThn88_N8S21114C9D0Ev,_ZThn48_N8S21114C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C10__8S21114C9__9S21114C20[] = {
  ABISELECT(-88,-48),
  0,
  0,
  ABISELECT(-120,-72),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S21114C9D1Ev,_ZTv0_n44_N8S21114C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S21114C9D1Ev,_ZThn80_N8S21114C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21114C9D0Ev,_ZTv0_n44_N8S21114C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S21114C9D0Ev,_ZThn80_N8S21114C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C12__8S21114C9__9S21114C20[] = {
  ABISELECT(24,16),
  ABISELECT(-128,-80),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-160,-104),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C9D1Ev,_ZTv0_n44_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C9D0Ev,_ZTv0_n44_N8S21114C9D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__8S21114C9__9S21114C20[] = {
  0,
  ABISELECT(-208,-140),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev)();
extern void ABISELECT(_ZThn192_N8S21114C9D1Ev,_ZThn124_N8S21114C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev)();
extern void ABISELECT(_ZThn192_N8S21114C9D0Ev,_ZThn124_N8S21114C9D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__8S21114C9__9S21114C20[] = {
  0,
  ABISELECT(-192,-124),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S21114C9D1Ev,_ZTvn16_n44_N8S21114C9D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S21114C9D0Ev,_ZTvn16_n44_N8S21114C9D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__8S21114C9__9S21114C20[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-184,-120),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C9D1Ev,_ZTvn16_n44_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C9D0Ev,_ZTvn16_n44_N8S21114C9D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__8S21114C9__9S21114C20[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev)();
extern void ABISELECT(_ZThn224_N8S21114C9D1Ev,_ZThn144_N8S21114C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev)();
extern void ABISELECT(_ZThn224_N8S21114C9D0Ev,_ZThn144_N8S21114C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__A2__8S21114C9__9S21114C20[] = {
  ABISELECT(-224,-144),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__8S21114C9__9S21114C20[] = {
  0,
  0,
  ABISELECT(-280,-184),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C10D1Ev();
extern void _ZN9S21114C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C10__9S21114C20[] = {
  0,
  0,
  ABISELECT(-120,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C10[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C10D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C119S21114C10__9S21114C20[] = {
  0,
  0,
  ABISELECT(-120,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C12D1Ev();
extern void _ZN9S21114C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C12__9S21114C20[] = {
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C12D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C119S21114C12__A1__9S21114C20[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C119S21114C12__A1__9S21114C20[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C14D1Ev();
extern void _ZN9S21114C14D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__9S21114C20[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-184,-120),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C14D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C79S21114C149S21114C12__A2__9S21114C20[] = {
  ABISELECT(-160,-100),
  ABISELECT(-184,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C79S21114C149S21114C12__A2__9S21114C20[] = {
  ABISELECT(-184,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C79S21114C149S21114C12__A5__9S21114C20[] = {
  ABISELECT(-184,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C149S21114C12__9S21114C20[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A2__9S21114C149S21114C12__9S21114C20[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(64,48),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev)();
extern void ABISELECT(_ZThn72_N9S21114C14D1Ev,_ZThn48_N9S21114C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev)();
extern void ABISELECT(_ZThn72_N9S21114C14D0Ev,_ZThn48_N9S21114C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__9S21114C149S21114C12__9S21114C20[] = {
  ABISELECT(-72,-48),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__9S21114C12__9S21114C20[] = {
  0,
  ABISELECT(-208,-140),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C12__9S21114C20[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S21114C12D1Ev,_ZThn44_N9S21114C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S21114C12D0Ev,_ZThn44_N9S21114C12D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__9S21114C12__9S21114C20[] = {
  0,
  ABISELECT(-64,-44),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn24_N9S21114C12D1Ev,_ZThn16_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn24_N9S21114C12D0Ev,_ZThn16_N9S21114C12D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C14__9S21114C12__9S21114C20[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-184,-120),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C12D1Ev,_ZThn16_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C12D0Ev,_ZThn16_N9S21114C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C12__9S21114C20[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn96_N9S21114C12D1Ev,_ZThn64_N9S21114C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev)();
extern void ABISELECT(_ZThn96_N9S21114C12D0Ev,_ZThn64_N9S21114C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__A1__9S21114C12__9S21114C20[] = {
  ABISELECT(-96,-64),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__A1__9S21114C20[] = {
  ABISELECT(-208,-140),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C13__A3__9S21114C20[] = {
  ABISELECT(-208,-140),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__A1__9S21114C20[] = {
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C7__A1__9S21114C20[] = {
  ABISELECT(-224,-148),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C7__A4__9S21114C20[] = {
  ABISELECT(-224,-148),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__A1__9S21114C20[] = {
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C16__A2__9S21114C20[] = {
  ABISELECT(-240,-160),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C139S21114C16__A6__9S21114C20[] = {
  ABISELECT(-240,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C16__A1__9S21114C20[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C11__A2__9S21114C20[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C11__A2__9S21114C20[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(136,96),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__9S21114C20[] = {
  0,
  0,
  ABISELECT(-280,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C18[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C8__A3__9S21114C20[] = {
  ABISELECT(-280,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C8__A7__9S21114C20[] = {
  ABISELECT(-280,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C21D1Ev();
extern void _ZN9S21114C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C21__9S21114C20[] = {
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(-272,-172),
  ABISELECT(-72,-44),
  ABISELECT(-88,-52),
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  ABISELECT(-296,-192),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C21D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C21D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C12D1Ev();
extern void _ZN9S21114C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C129S21114C21__A1__9S21114C20[] = {
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(-272,-172),
  ABISELECT(-72,-44),
  ABISELECT(-88,-52),
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  ABISELECT(-296,-192),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C12D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C119S21114C129S21114C21__A4__9S21114C20[] = {
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  ABISELECT(-296,-192),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C119S21114C129S21114C21__A4__9S21114C20[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(176,120),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C14D1Ev();
extern void _ZN9S21114C14D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C129S21114C21__A1__9S21114C20[] = {
  ABISELECT(-64,-40),
  ABISELECT(-200,-136),
  ABISELECT(-80,-48),
  ABISELECT(-296,-188),
  ABISELECT(-320,-208),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C14D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C79S21114C149S21114C129S21114C21__A4__9S21114C20[] = {
  ABISELECT(-296,-188),
  ABISELECT(-320,-208),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C79S21114C149S21114C129S21114C21__A5__9S21114C20[] = {
  ABISELECT(-320,-208),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C79S21114C149S21114C129S21114C21__A10__9S21114C20[] = {
  ABISELECT(-320,-208),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C149S21114C129S21114C21__A1__9S21114C20[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A2__9S21114C149S21114C129S21114C21__A1__9S21114C20[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(200,136),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21114C11__9S21114C149S21114C129S21114C21__A1__9S21114C20[] = {
  ABISELECT(64,40),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__9S21114C129S21114C21__A1__9S21114C20[] = {
  0,
  ABISELECT(-208,-140),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C129S21114C21__A1__9S21114C20[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(176,120),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__9S21114C129S21114C21__A1__9S21114C20[] = {
  0,
  ABISELECT(72,44),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn24_N9S21114C12D1Ev,_ZThn16_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn24_N9S21114C12D0Ev,_ZThn16_N9S21114C12D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C14__9S21114C129S21114C21__A1__9S21114C20[] = {
  ABISELECT(-64,-40),
  ABISELECT(-200,-136),
  ABISELECT(-80,-48),
  ABISELECT(-296,-188),
  ABISELECT(-320,-208),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C12D1Ev,_ZThn16_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C12D0Ev,_ZThn16_N9S21114C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C129S21114C21__A1__9S21114C20[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21114C11__A1__9S21114C129S21114C21__A1__9S21114C20[] = {
  ABISELECT(40,24),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C3D1Ev();
extern void _ZN8S21114C3D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C39S21114C21__A2__9S21114C20[] = {
  ABISELECT(-224,-156),
  ABISELECT(-320,-208),
  ABISELECT(-344,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C78S21114C39S21114C21__A5__9S21114C20[] = {
  ABISELECT(-320,-208),
  ABISELECT(-344,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C78S21114C39S21114C21__A6__9S21114C20[] = {
  ABISELECT(-344,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C78S21114C39S21114C21__A11__9S21114C20[] = {
  ABISELECT(-344,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__8S21114C39S21114C21__A2__9S21114C20[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(224,156),
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C21D1Ev,_ZTv0_n24_N9S21114C21D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21114C21D0Ev,_ZTv0_n24_N9S21114C21D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__9S21114C21__9S21114C20[] = {
  0,
  ABISELECT(72,44),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C21D1Ev,_ZTv0_n24_N9S21114C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C21D0Ev,_ZTv0_n24_N9S21114C21D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__9S21114C21__9S21114C20[] = {
  0,
  ABISELECT(-208,-140),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A2__9S21114C21__9S21114C20[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(176,120),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn24_N9S21114C21D1Ev,_ZThn16_N9S21114C21D1Ev)();
extern void ABISELECT(_ZThn24_N9S21114C21D0Ev,_ZThn16_N9S21114C21D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__9S21114C21__9S21114C20[] = {
  ABISELECT(-64,-40),
  ABISELECT(-200,-136),
  ABISELECT(-80,-48),
  ABISELECT(-296,-188),
  ABISELECT(-320,-208),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C21D1Ev,_ZThn16_N9S21114C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C21D0Ev,_ZThn16_N9S21114C21D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C21__9S21114C20[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C21D1Ev,_ZTv0_n24_N9S21114C21D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21114C21D0Ev,_ZTv0_n24_N9S21114C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21114C11__A1__9S21114C21__9S21114C20[] = {
  ABISELECT(40,24),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C21D1Ev,_ZTv0_n24_N9S21114C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C21D0Ev,_ZTv0_n24_N9S21114C21D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn48_N9S21114C21D1Ev,_ZThn36_N9S21114C21D1Ev)();
extern void ABISELECT(_ZThn48_N9S21114C21D0Ev,_ZThn36_N9S21114C21D0Ev)();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C3__9S21114C21__9S21114C20[] = {
  ABISELECT(-224,-156),
  ABISELECT(-320,-208),
  ABISELECT(-344,-228),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S21114C21D1Ev,_ZThn36_N9S21114C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S21114C21D0Ev,_ZThn36_N9S21114C21D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C24D1Ev();
extern void _ZN9S21114C24D0Ev();
extern void _ZN9S21114C242v6Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C24__9S21114C20[] = {
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-368,-244),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C24[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C24D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C24D0Ev,
  (VTBL_ENTRY)&_ZN9S21114C242v6Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C119S21114C24__A5__9S21114C20[] = {
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-368,-244),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C119S21114C24__A5__9S21114C20[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(248,172),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C24__9S21114C20[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(248,172),
  (VTBL_ENTRY)&(_ZTI9S21114C24[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
static  VTT_ENTRY vtt_S21114C20[] = {
  {&(_ZTV9S21114C20[17]),  17,223},
  {&(_tg__ZTV9S21114C16__A__9S21114C20[4]),  4,6},
  {&(_tg__ZTV9S21114C139S21114C16__9S21114C20[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C139S21114C16__9S21114C20[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C16__A__9S21114C20[4]),  4,5},
  {&(_tg__ZTV8S21114C2__9S21114C20[16]),  16,20},
  {&(_tg__ZTV9S21114C118S21114C2__A3__9S21114C20[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C118S21114C2__A3__9S21114C20[4]),  4,5},
  {&(_tg__ZTV9S21114C138S21114C2__A3__9S21114C20[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C138S21114C2__A9__9S21114C20[3]),  3,4},
  {&(_tg__ZTV8S21114C3__8S21114C2__9S21114C20[9]),  9,14},
  {&(_tg__ZTV9S21114C10__8S21114C2__9S21114C20[6]),  6,9},
  {&(_tg__ZTV8S21114C9__8S21114C2__9S21114C20[17]),  17,22},
  {&(_tg__ZTV9S21114C10__8S21114C2__9S21114C20[6]),  6,9},
  {&(_tg__ZTV9S21114C12__8S21114C2__9S21114C20[12]),  12,15},
  {&(_tg__ZTV9S21114C13__8S21114C2__9S21114C20[4]),  4,5},
  {&(_tg__ZTV8S21114C7__A1__8S21114C2__9S21114C20[7]),  7,11},
  {&(_tg__ZTV9S21114C149S21114C12__8S21114C2__9S21114C20[7]),  7,11},
  {&(_tg__ZTV9S21114C16__8S21114C2__9S21114C20[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A2__8S21114C2__9S21114C20[6]),  6,9},
  {&(_tg__ZTV9S21114C18__8S21114C2__9S21114C20[5]),  5,6},
  {&(_tg__ZTV9S21114C18__8S21114C2__9S21114C20[5]),  5,6},
  {&(_tg__ZTV9S21114C13__A__8S21114C2__9S21114C20[3]),  3,4},
  {&(_tg__ZTV9S21114C22__9S21114C20[8]),  8,12},
  {&(_tg__ZTV9S21114C239S21114C22__9S21114C20[5]),  5,9},
  {&(_tg__ZTV9S21114C169S21114C239S21114C22__A2__9S21114C20[4]),  4,6},
  {&(_tg__ZTV9S21114C139S21114C169S21114C239S21114C22__A4__9S21114C20[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C139S21114C169S21114C239S21114C22__A12__9S21114C20[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C169S21114C239S21114C22__A2__9S21114C20[4]),  4,5},
  {&(_tg__ZTV8S21114C49S21114C239S21114C22__A13__9S21114C20[3]),  3,4},
  {&(_tg__ZTV9S21114C139S21114C239S21114C22__A5__9S21114C20[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C139S21114C239S21114C22__A14__9S21114C20[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C239S21114C22__9S21114C20[4]),  4,5},
  {&(_tg__ZTV8S21114C4__A__9S21114C239S21114C22__9S21114C20[3]),  3,4},
  {&(_tg__ZTV9S21114C24__9S21114C239S21114C22__9S21114C20[7]),  7,11},
  {&(_tg__ZTV9S21114C13__A1__9S21114C239S21114C22__9S21114C20[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C22__9S21114C20[4]),  4,5},
  {&(_tg__ZTV8S21114C49S21114C23__A2__9S21114C22__9S21114C20[3]),  3,4},
  {&(_tg__ZTV9S21114C24__9S21114C22__9S21114C20[7]),  7,11},
  {&(_tg__ZTV9S21114C139S21114C23__A1__9S21114C22__9S21114C20[3]),  3,4},
  {&(_tg__ZTV9S21114C18__9S21114C22__9S21114C20[5]),  5,6},
  {&(_tg__ZTV9S21114C18__9S21114C22__9S21114C20[5]),  5,6},
  {&(_ZTV9S21114C20[107]),  107,223},
  {&(_ZTV9S21114C20[37]),  37,223},
  {&(_ZTV9S21114C20[74]),  74,223},
  {&(_ZTV9S21114C20[96]),  96,223},
  {&(_ZTV9S21114C20[107]),  107,223},
  {&(_ZTV9S21114C20[122]),  122,223},
  {&(_ZTV9S21114C20[140]),  140,223},
  {&(_ZTV9S21114C20[148]),  148,223},
  {&(_ZTV9S21114C20[132]),  132,223},
  {&(_ZTV9S21114C20[158]),  158,223},
  {&(_ZTV9S21114C20[166]),  166,223},
  {&(_ZTV9S21114C20[174]),  174,223},
  {&(_ZTV9S21114C20[174]),  174,223},
  {&(_ZTV9S21114C20[44]),  44,223},
  {&(_ZTV9S21114C20[188]),  188,223},
  {&(_ZTV9S21114C20[198]),  198,223},
  {&(_ZTV9S21114C20[207]),  207,223},
  {&(_ZTV9S21114C20[53]),  53,223},
  {&(_ZTV9S21114C20[60]),  60,223},
  {&(_ZTV9S21114C20[219]),  219,223},
  {&(_ZTV9S21114C20[64]),  64,223},
  {&(_tg__ZTV8S21114C4__A1__9S21114C20[3]),  3,4},
  {&(_tg__ZTV8S21114C3__9S21114C20[5]),  5,10},
  {&(_tg__ZTV8S21114C78S21114C3__9S21114C20[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C78S21114C3__9S21114C20[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C78S21114C3__A2__9S21114C20[3]),  3,4},
  {&(_tg__ZTV8S21114C4__8S21114C3__9S21114C20[4]),  4,5},
  {&(_tg__ZTV8S21114C9__9S21114C20[13]),  13,18},
  {&(_tg__ZTV9S21114C178S21114C9__9S21114C20[12]),  12,17},
  {&(_tg__ZTV8S21114C39S21114C178S21114C9__A1__9S21114C20[5]),  5,10},
  {&(_tg__ZTV8S21114C78S21114C39S21114C178S21114C9__A3__9S21114C20[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C78S21114C39S21114C178S21114C9__A4__9S21114C20[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C78S21114C39S21114C178S21114C9__A8__9S21114C20[3]),  3,4},
  {&(_tg__ZTV8S21114C4__8S21114C39S21114C178S21114C9__A1__9S21114C20[4]),  4,5},
  {&(_tg__ZTV9S21114C18__9S21114C178S21114C9__9S21114C20[5]),  5,6},
  {&(_tg__ZTV9S21114C18__9S21114C178S21114C9__9S21114C20[5]),  5,6},
  {&(_tg__ZTV8S21114C4__A1__9S21114C178S21114C9__9S21114C20[4]),  4,5},
  {&(_tg__ZTV9S21114C11__9S21114C178S21114C9__9S21114C20[6]),  6,9},
  {&(_tg__ZTV9S21114C12__9S21114C178S21114C9__9S21114C20[12]),  12,15},
  {&(_tg__ZTV9S21114C13__9S21114C178S21114C9__9S21114C20[4]),  4,5},
  {&(_tg__ZTV8S21114C7__A1__9S21114C178S21114C9__9S21114C20[7]),  7,11},
  {&(_tg__ZTV9S21114C149S21114C12__9S21114C178S21114C9__9S21114C20[7]),  7,11},
  {&(_tg__ZTV9S21114C16__9S21114C178S21114C9__9S21114C20[6]),  6,8},
  {&(_tg__ZTV9S21114C10__8S21114C9__9S21114C20[6]),  6,9},
  {&(_tg__ZTV9S21114C10__8S21114C9__9S21114C20[6]),  6,9},
  {&(_tg__ZTV9S21114C12__8S21114C9__9S21114C20[12]),  12,15},
  {&(_tg__ZTV9S21114C13__8S21114C9__9S21114C20[4]),  4,5},
  {&(_tg__ZTV8S21114C7__8S21114C9__9S21114C20[7]),  7,11},
  {&(_tg__ZTV9S21114C149S21114C12__8S21114C9__9S21114C20[7]),  7,11},
  {&(_tg__ZTV9S21114C16__8S21114C9__9S21114C20[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A2__8S21114C9__9S21114C20[6]),  6,9},
  {&(_tg__ZTV9S21114C18__8S21114C9__9S21114C20[5]),  5,6},
  {&(_tg__ZTV9S21114C18__8S21114C9__9S21114C20[5]),  5,6},
  {&(_tg__ZTV9S21114C10__9S21114C20[5]),  5,8},
  {&(_tg__ZTV9S21114C119S21114C10__9S21114C20[5]),  5,8},
  {&(_tg__ZTV9S21114C119S21114C10__9S21114C20[5]),  5,8},
  {&(_tg__ZTV9S21114C10__9S21114C20[5]),  5,8},
  {&(_tg__ZTV9S21114C12__9S21114C20[10]),  10,13},
  {&(_tg__ZTV9S21114C119S21114C12__A1__9S21114C20[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C119S21114C12__A1__9S21114C20[4]),  4,5},
  {&(_tg__ZTV9S21114C149S21114C12__9S21114C20[7]),  7,11},
  {&(_tg__ZTV8S21114C79S21114C149S21114C12__A2__9S21114C20[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C79S21114C149S21114C12__A2__9S21114C20[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C79S21114C149S21114C12__A5__9S21114C20[3]),  3,4},
  {&(_tg__ZTV9S21114C16__9S21114C149S21114C12__9S21114C20[6]),  6,8},
  {&(_tg__ZTV8S21114C4__A2__9S21114C149S21114C12__9S21114C20[4]),  4,5},
  {&(_tg__ZTV9S21114C11__9S21114C149S21114C12__9S21114C20[6]),  6,9},
  {&(_tg__ZTV9S21114C13__9S21114C12__9S21114C20[4]),  4,5},
  {&(_tg__ZTV8S21114C4__A1__9S21114C12__9S21114C20[4]),  4,5},
  {&(_tg__ZTV8S21114C7__9S21114C12__9S21114C20[7]),  7,11},
  {&(_tg__ZTV9S21114C14__9S21114C12__9S21114C20[7]),  7,11},
  {&(_tg__ZTV9S21114C16__9S21114C12__9S21114C20[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A1__9S21114C12__9S21114C20[6]),  6,9},
  {&(_tg__ZTV9S21114C13__A1__9S21114C20[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C13__A3__9S21114C20[3]),  3,4},
  {&(_tg__ZTV8S21114C7__A1__9S21114C20[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C7__A1__9S21114C20[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C7__A4__9S21114C20[3]),  3,4},
  {&(_tg__ZTV9S21114C16__A1__9S21114C20[4]),  4,6},
  {&(_tg__ZTV9S21114C139S21114C16__A2__9S21114C20[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C139S21114C16__A6__9S21114C20[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C16__A1__9S21114C20[4]),  4,5},
  {&(_tg__ZTV9S21114C11__A2__9S21114C20[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C11__A2__9S21114C20[4]),  4,5},
  {&(_tg__ZTV9S21114C18__9S21114C20[5]),  5,6},
  {&(_tg__ZTV9S21114C18__9S21114C20[5]),  5,6},
  {&(_tg__ZTV8S21114C8__A3__9S21114C20[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C8__A7__9S21114C20[3]),  3,4},
  {&(_tg__ZTV9S21114C21__9S21114C20[10]),  10,13},
  {&(_tg__ZTV9S21114C129S21114C21__A1__9S21114C20[10]),  10,13},
  {&(_tg__ZTV9S21114C119S21114C129S21114C21__A4__9S21114C20[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C119S21114C129S21114C21__A4__9S21114C20[4]),  4,5},
  {&(_tg__ZTV9S21114C149S21114C129S21114C21__A1__9S21114C20[7]),  7,11},
  {&(_tg__ZTV8S21114C79S21114C149S21114C129S21114C21__A4__9S21114C20[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C79S21114C149S21114C129S21114C21__A5__9S21114C20[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C79S21114C149S21114C129S21114C21__A10__9S21114C20[3]),  3,4},
  {&(_tg__ZTV9S21114C16__9S21114C149S21114C129S21114C21__A1__9S21114C20[6]),  6,8},
  {&(_tg__ZTV8S21114C4__A2__9S21114C149S21114C129S21114C21__A1__9S21114C20[4]),  4,5},
  {&(_tg__ZTV9S21114C11__9S21114C149S21114C129S21114C21__A1__9S21114C20[6]),  6,9},
  {&(_tg__ZTV9S21114C13__9S21114C129S21114C21__A1__9S21114C20[4]),  4,5},
  {&(_tg__ZTV8S21114C4__A1__9S21114C129S21114C21__A1__9S21114C20[4]),  4,5},
  {&(_tg__ZTV8S21114C7__9S21114C129S21114C21__A1__9S21114C20[7]),  7,11},
  {&(_tg__ZTV9S21114C14__9S21114C129S21114C21__A1__9S21114C20[7]),  7,11},
  {&(_tg__ZTV9S21114C16__9S21114C129S21114C21__A1__9S21114C20[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A1__9S21114C129S21114C21__A1__9S21114C20[6]),  6,9},
  {&(_tg__ZTV8S21114C39S21114C21__A2__9S21114C20[5]),  5,10},
  {&(_tg__ZTV8S21114C78S21114C39S21114C21__A5__9S21114C20[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C78S21114C39S21114C21__A6__9S21114C20[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C78S21114C39S21114C21__A11__9S21114C20[3]),  3,4},
  {&(_tg__ZTV8S21114C4__8S21114C39S21114C21__A2__9S21114C20[4]),  4,5},
  {&(_tg__ZTV8S21114C7__9S21114C21__9S21114C20[7]),  7,11},
  {&(_tg__ZTV9S21114C13__9S21114C21__9S21114C20[4]),  4,5},
  {&(_tg__ZTV8S21114C4__A2__9S21114C21__9S21114C20[4]),  4,5},
  {&(_tg__ZTV9S21114C149S21114C12__9S21114C21__9S21114C20[7]),  7,11},
  {&(_tg__ZTV9S21114C16__9S21114C21__9S21114C20[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A1__9S21114C21__9S21114C20[6]),  6,9},
  {&(_tg__ZTV8S21114C3__9S21114C21__9S21114C20[5]),  5,10},
  {&(_tg__ZTV9S21114C24__9S21114C20[5]),  5,9},
  {&(_tg__ZTV9S21114C119S21114C24__A5__9S21114C20[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C119S21114C24__A5__9S21114C20[4]),  4,5},
  {&(_tg__ZTV8S21114C4__9S21114C24__9S21114C20[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S21114C20[];
extern  VTBL_ENTRY _ZTV9S21114C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C20[];
static VTBL_ENTRY alt_thunk_names31[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21114C12D0Ev,_ZThn64_N9S21114C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21114C12D0Ev,_ZThn44_N9S21114C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21114C12D1Ev,_ZThn64_N9S21114C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21114C12D1Ev,_ZThn44_N9S21114C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21114C14D0Ev,_ZThn48_N9S21114C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21114C14D1Ev,_ZThn48_N9S21114C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21114C9D0Ev,_ZTv0_n44_N8S21114C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21114C9D0Ev,_ZThn80_N8S21114C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21114C9D1Ev,_ZTv0_n44_N8S21114C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21114C9D1Ev,_ZThn80_N8S21114C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21114C9D0Ev,_ZThn144_N8S21114C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21114C9D0Ev,_ZThn124_N8S21114C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21114C9D0Ev,_ZThn48_N8S21114C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21114C9D1Ev,_ZThn144_N8S21114C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21114C9D1Ev,_ZThn124_N8S21114C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21114C9D1Ev,_ZThn48_N8S21114C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21114C17D0Ev,_ZTv0_n44_N9S21114C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21114C17D0Ev,_ZThn80_N9S21114C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21114C17D1Ev,_ZTv0_n44_N9S21114C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21114C17D1Ev,_ZThn80_N9S21114C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21114C17D0Ev,_ZThn124_N9S21114C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21114C17D0Ev,_ZThn144_N9S21114C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21114C17D1Ev,_ZThn124_N9S21114C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21114C17D1Ev,_ZThn144_N9S21114C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C22D0Ev,_ZTv0_n24_N9S21114C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S21114C22D0Ev,_ZThn268_N9S21114C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C22D1Ev,_ZTv0_n24_N9S21114C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S21114C22D1Ev,_ZThn268_N9S21114C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C23D0Ev,_ZTv0_n24_N9S21114C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S21114C23D0Ev,_ZThn268_N9S21114C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C23D1Ev,_ZTv0_n24_N9S21114C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S21114C23D1Ev,_ZThn268_N9S21114C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21114C2D0Ev,_ZTv0_n44_N8S21114C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S21114C2D0Ev,_ZThn160_N8S21114C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21114C2D1Ev,_ZTv0_n44_N8S21114C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S21114C2D1Ev,_ZThn160_N8S21114C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S21114C2D0Ev,_ZTv0_n60_N8S21114C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21114C2D0Ev,_ZThn80_N8S21114C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S21114C2D1Ev,_ZTv0_n60_N8S21114C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21114C2D1Ev,_ZThn80_N8S21114C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S21114C2D0Ev,_ZThn224_N8S21114C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21114C2D0Ev,_ZThn204_N8S21114C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21114C2D0Ev,_ZThn128_N8S21114C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S21114C2D1Ev,_ZThn224_N8S21114C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21114C2D1Ev,_ZThn204_N8S21114C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21114C2D1Ev,_ZThn128_N8S21114C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21114C2D0Ev,_ZTv0_n28_N8S21114C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21114C2D0Ev,_ZThn64_N8S21114C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21114C2D1Ev,_ZTv0_n28_N8S21114C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21114C2D1Ev,_ZThn64_N8S21114C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21114C20D0Ev,_ZTv0_n44_N9S21114C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S21114C20D0Ev,_ZThn256_N9S21114C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S21114C20D0Ev,_ZThn168_N9S21114C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21114C20D1Ev,_ZTv0_n44_N9S21114C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S21114C20D1Ev,_ZThn256_N9S21114C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S21114C20D1Ev,_ZThn168_N9S21114C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S21114C20D0Ev,_ZThn308_N9S21114C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn360_N9S21114C20D0Ev,_ZThn232_N9S21114C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N9S21114C20D0Ev,_ZThn212_N9S21114C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21114C20D0Ev,_ZThn136_N9S21114C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S21114C20D1Ev,_ZThn308_N9S21114C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn360_N9S21114C20D1Ev,_ZThn232_N9S21114C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N9S21114C20D1Ev,_ZThn212_N9S21114C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21114C20D1Ev,_ZThn136_N9S21114C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S21114C20D0Ev,_ZTv0_n60_N9S21114C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21114C20D0Ev,_ZThn88_N9S21114C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S21114C20D1Ev,_ZTv0_n60_N9S21114C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21114C20D1Ev,_ZThn88_N9S21114C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21114C20D0Ev,_ZTv0_n28_N9S21114C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21114C20D0Ev,_ZThn72_N9S21114C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21114C20D1Ev,_ZTv0_n28_N9S21114C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21114C20D1Ev,_ZThn72_N9S21114C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21114C20 = {  "S21114C20", // class name
  bases_S21114C20, 107,
  &(vtc_S21114C20[0]), // expected_vtbl_contents
  &(vtt_S21114C20[0]), // expected_vtt_contents
  ABISELECT(496,324), // object size
  NSPAIRA(_ZTI9S21114C20),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21114C20),223, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21114C20),163, //virtual table table var
  59, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names31,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21114C19  : S21114C20 , S21114C18 , virtual S21114C2 {
  ~S21114C19(); // tgen
  S21114C19(); // tgen
};
//SIG(-1 S21114C19) C1{ BC2{ BC3{ VBC4{ m FL} BC5{ VBC4 BC6{ VBC4 BC7{ m} v1} BC7} VBC6 v2} BC8{ VBC9{ VBC6 BC10{ BC4 VBC7 BC11{ BC6} vd v3} vd v4} BC4 VBC12{ VBC6 VBC13{ BC7 VBC6 BC14{ BC4 VBC6 BC7 vd} BC4 vd FL} VBC15{ VBC4 VBC5 BC14 VBC10 BC16{ BC4 BC10 BC17{ m} VBC3 VBC14 vd}} BC18{ VBC19{ VBC11 Fi} BC9 VBC14 VBC15 vd Fp[9]} vd} BC14 BC5 vd v5 Fc} VBC20{ VBC10 BC15 BC9 Fi} BC21{ BC22{ BC3 BC6 VBC23{ BC14 v6} BC5} VBC7 VBC19 Fi} vd} BC19 VBC8}


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

static void Test_S21114C19()
{
  extern Class_Descriptor cd_S21114C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(71,92)];
    init_test(&cd_S21114C19, buf);
    S21114C19 *dp, &lv = *(dp=new (buf) S21114C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(560,364), "sizeof(S21114C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21114C19)");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C16*)(S21114C20*), ABISELECT(120,72), "S21114C19");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C16*)(S21114C20*), ABISELECT(120,72), "S21114C19");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C16*)(S21114C20*), ABISELECT(120,72), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*), ABISELECT(120,72), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(120,72), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C12*), ABISELECT(120,72), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*), ABISELECT(120,72), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*), ABISELECT(120,72), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(120,72), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(120,72), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C16 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C16*), ABISELECT(120,72), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C16 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C16*), ABISELECT(120,72), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C16 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(120,72), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*), ABISELECT(120,72), "S21114C19");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(120,72), "S21114C19");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C2*)(S21114C20*), ABISELECT(120,72), "S21114C19");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C2*)(S21114C20*), ABISELECT(120,72), "S21114C19");
    /*is_ambiguous_... S21114C12::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C12*)(S21114C21*), ABISELECT(120,72), "S21114C19");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(120,72), "S21114C19");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*)(S21114C21*), ABISELECT(120,72), "S21114C19");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C16*)(S21114C23*)(S21114C22*)(S21114C20*), ABISELECT(120,72), "S21114C19");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C16*)(S21114C23*)(S21114C22*)(S21114C20*), ABISELECT(120,72), "S21114C19");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C16*)(S21114C23*)(S21114C22*)(S21114C20*), ABISELECT(120,72), "S21114C19");
    /*is_ambiguous_... S21114C23::S21114C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C23*)(S21114C22*)(S21114C20*), ABISELECT(120,72), "S21114C19");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C23*)(S21114C22*)(S21114C20*), ABISELECT(120,72), "S21114C19");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C23*)(S21114C22*)(S21114C20*), ABISELECT(120,72), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C2 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C2*), ABISELECT(120,72), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C2 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C2*), ABISELECT(120,72), "S21114C19");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C16*)(S21114C20*), 0, "S21114C19");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C16*)(S21114C20*), 0, "S21114C19");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C16*)(S21114C20*), ABISELECT(8,4), "S21114C19");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C16*)(S21114C20*), 0, "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*), ABISELECT(240,144), "S21114C19");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C16*)(S21114C20*), ABISELECT(240,144), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C3*), ABISELECT(240,144), "S21114C19");
    /*is_ambiguous_... S21114C9::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C9*), ABISELECT(240,144), "S21114C19");
    check_base_class_offset(lv, (S21114C4*)(S21114C10*), ABISELECT(240,144), "S21114C19");
    check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C10*), ABISELECT(240,144), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C12*), ABISELECT(240,144), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C16 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C16*), ABISELECT(240,144), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*), ABISELECT(240,144), "S21114C19");
    /*is_ambiguous_... S21114C3::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(240,144), "S21114C19");
    /*is_ambiguous_... S21114C2::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C2*)(S21114C20*), ABISELECT(240,144), "S21114C19");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C12*)(S21114C21*), ABISELECT(240,144), "S21114C19");
    /*is_ambiguous_... S21114C3::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C3*)(S21114C21*), ABISELECT(240,144), "S21114C19");
    /*is_ambiguous_... S21114C16::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C16*)(S21114C23*)(S21114C22*)(S21114C20*), ABISELECT(240,144), "S21114C19");
    check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C24*), ABISELECT(240,144), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C2 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C2*), ABISELECT(240,144), "S21114C19");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S21114C16*)(S21114C20*), 0, "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C3*), ABISELECT(136,84), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C3*), ABISELECT(144,92), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*), ABISELECT(144,92), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(144,92), "S21114C19");
    /*is_ambiguous_... S21114C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(144,92), "S21114C19");
    /*is_ambiguous_... S21114C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(144,92), "S21114C19");
    /*is_ambiguous_... S21114C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C3*)(S21114C21*), ABISELECT(144,92), "S21114C19");
    /*is_ambiguous_... S21114C22::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C22*)(S21114C20*), ABISELECT(144,92), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(128,80), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(128,80), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(128,80), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C7*)(S21114C3*), ABISELECT(128,80), "S21114C19");
    /*is_ambiguous_... S21114C2::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C3*)(S21114C2*)(S21114C20*), ABISELECT(128,80), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C2 */ AMB_check_base_class_offset(lv, (S21114C3*)(S21114C2*), ABISELECT(128,80), "S21114C19");
    /*is_ambiguous_... S21114C2::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C2*)(S21114C20*), ABISELECT(40,24), "S21114C19");
    /*is_ambiguous_... S21114C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C10*), ABISELECT(257,157), "S21114C19");
    /*is_ambiguous_... S21114C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C10*), ABISELECT(248,148), "S21114C19");
    /*is_ambiguous_... S21114C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C10*), ABISELECT(256,156), "S21114C19");
    check_base_class_offset(lv, (S21114C11*)(S21114C10*), ABISELECT(240,144), "S21114C19");
    /*is_ambiguous_... S21114C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C10*), ABISELECT(264,160), "S21114C19");
    check_base_class_offset(lv, (S21114C10*)(S21114C9*), ABISELECT(240,144), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*), ABISELECT(328,212), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*), ABISELECT(328,212), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*), ABISELECT(336,216), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C12*), ABISELECT(328,212), "S21114C19");
    /*is_ambiguous_... S21114C12::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C12*)(S21114C21*), ABISELECT(328,212), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C12*), ABISELECT(288,180), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C12*), ABISELECT(296,188), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C11*)(S21114C12*), ABISELECT(280,176), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*), ABISELECT(352,224), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(344,220), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(344,220), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C8*)(S21114C7*), ABISELECT(344,220), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C7*)(S21114C12*), ABISELECT(344,220), "S21114C19");
    /*is_ambiguous_... S21114C21::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C7*)(S21114C21*), ABISELECT(344,220), "S21114C19");
    /*is_ambiguous_... S21114C12::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C7*)(S21114C12*)(S21114C21*), ABISELECT(344,220), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C14*)(S21114C12*), ABISELECT(320,204), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(312,196), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(304,192), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(304,192), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(304,192), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(304,192), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C12 */ AMB_check_base_class_offset(lv, (S28C52_nt*)(S21114C14*)(S21114C12*), ABISELECT(304,192), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C16 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(360,232), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C16 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(360,232), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C16 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C16*), ABISELECT(368,236), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C16 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C16*), ABISELECT(360,232), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C16*)(S21114C14*)(S21114C12*), ABISELECT(360,232), "S21114C19");
    check_base_class_offset(lv, (S21114C16*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(360,232), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*), ABISELECT(384,244), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*), ABISELECT(392,252), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C11*)(S21114C14*)(S21114C12*), ABISELECT(376,240), "S21114C19");
    /*is_ambiguous_... S21114C17::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C11*)(S21114C17*)(S21114C9*), ABISELECT(376,240), "S21114C19");
    check_base_class_offset(lv, (S21114C11*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(376,240), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C14*)(S21114C12*), ABISELECT(304,192), "S21114C19");
    check_base_class_offset(lv, (S21114C12*)(S21114C9*), ABISELECT(280,176), "S21114C19");
    check_base_class_offset(lv, (S21114C12*)(S21114C17*)(S21114C9*), ABISELECT(280,176), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*), ABISELECT(400,256), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C8 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C8*), ABISELECT(400,256), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C18 */ AMB_check_base_class_offset(lv, (S21114C8*)(S21114C18*), ABISELECT(400,256), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C18 */ AMB_check_base_class_offset(lv, (S21114C8*)(S21114C18*), ABISELECT(400,256), "S21114C19");
    check_base_class_offset(lv, (S21114C18*)(S21114C17*)(S21114C9*), ABISELECT(400,256), "S21114C19");
    check_base_class_offset(lv, (S21114C18*)(S21114C22*)(S21114C20*), ABISELECT(400,256), "S21114C19");
    /*is_ambiguous_... S21114C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(160,100), "S21114C19");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(152,96), "S21114C19");
    check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(152,96), "S21114C19");
    check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(152,96), "S21114C19");
    check_base_class_offset(lv, (S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(152,96), "S21114C19");
    check_base_class_offset(lv, (S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(152,96), "S21114C19");
    check_base_class_offset(lv, (S21114C17*)(S21114C9*), ABISELECT(152,96), "S21114C19");
    check_base_class_offset(lv, (S21114C9*)(S21114C2*)(S21114C20*), ABISELECT(152,96), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C2 */ AMB_check_base_class_offset(lv, (S21114C9*)(S21114C2*), ABISELECT(152,96), "S21114C19");
    /*is_ambiguous_... S21114C2::S21114C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C2*)(S21114C20*), ABISELECT(24,12), "S21114C19");
    /*is_ambiguous_... S21114C2::S21114C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C2*)(S21114C20*), ABISELECT(32,20), "S21114C19");
    /*is_ambiguous_... S21114C2::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C11*)(S21114C2*)(S21114C20*), ABISELECT(16,8), "S21114C19");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C2*)(S21114C20*), ABISELECT(48,32), "S21114C19");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C2*)(S21114C20*), ABISELECT(48,32), "S21114C19");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C2*)(S21114C20*), ABISELECT(56,36), "S21114C19");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C2*)(S21114C20*), ABISELECT(48,32), "S21114C19");
    check_base_class_offset(lv, (S21114C2*)(S21114C20*), ABISELECT(16,8), "S21114C19");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C12*)(S21114C21*), ABISELECT(424,268), "S21114C19");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C12*)(S21114C21*), ABISELECT(432,276), "S21114C19");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C11*)(S21114C12*)(S21114C21*), ABISELECT(416,264), "S21114C19");
    /*is_ambiguous_... S21114C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(456,292), "S21114C19");
    /*is_ambiguous_... S21114C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(448,284), "S21114C19");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(440,280), "S21114C19");
    check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(440,280), "S21114C19");
    check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(440,280), "S21114C19");
    check_base_class_offset(lv, (S21114C7*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(440,280), "S21114C19");
    check_base_class_offset(lv, (S28C52_nt*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(440,280), "S21114C19");
    check_base_class_offset(lv, (S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(440,280), "S21114C19");
    check_base_class_offset(lv, (S21114C12*)(S21114C21*), ABISELECT(416,264), "S21114C19");
    /*is_ambiguous_... S21114C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C3*)(S21114C21*), ABISELECT(472,304), "S21114C19");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*)(S21114C21*), ABISELECT(464,300), "S21114C19");
    check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*)(S21114C21*), ABISELECT(464,300), "S21114C19");
    check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C3*)(S21114C21*), ABISELECT(464,300), "S21114C19");
    check_base_class_offset(lv, (S21114C7*)(S21114C3*)(S21114C21*), ABISELECT(464,300), "S21114C19");
    check_base_class_offset(lv, (S21114C3*)(S21114C21*), ABISELECT(464,300), "S21114C19");
    check_base_class_offset(lv, (S21114C21*)(S21114C20*), ABISELECT(416,264), "S21114C19");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C16*)(S21114C23*)(S21114C22*)(S21114C20*), ABISELECT(64,40), "S21114C19");
    check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C16*)(S21114C23*)(S21114C22*)(S21114C20*), ABISELECT(64,40), "S21114C19");
    /*is_ambiguous_... S21114C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C16*)(S21114C23*)(S21114C22*)(S21114C20*), ABISELECT(72,44), "S21114C19");
    check_base_class_offset(lv, (S21114C13*)(S21114C16*)(S21114C23*)(S21114C22*)(S21114C20*), ABISELECT(64,40), "S21114C19");
    check_base_class_offset(lv, (S21114C16*)(S21114C23*)(S21114C22*)(S21114C20*), ABISELECT(64,40), "S21114C19");
    /*is_ambiguous_... S21114C23::S21114C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C23*)(S21114C22*)(S21114C20*), ABISELECT(80,48), "S21114C19");
    /*is_ambiguous_... S21114C23::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C23*)(S21114C22*)(S21114C20*), ABISELECT(80,48), "S21114C19");
    /*is_ambiguous_... S21114C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C24*), ABISELECT(496,320), "S21114C19");
    /*is_ambiguous_... S21114C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C24*), ABISELECT(504,328), "S21114C19");
    check_base_class_offset(lv, (S21114C11*)(S21114C24*), ABISELECT(488,316), "S21114C19");
    check_base_class_offset(lv, (S21114C24*)(S21114C23*)(S21114C22*)(S21114C20*), ABISELECT(488,316), "S21114C19");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C23*)(S21114C22*)(S21114C20*), ABISELECT(88,52), "S21114C19");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C23*)(S21114C22*)(S21114C20*), ABISELECT(88,52), "S21114C19");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C23*)(S21114C22*)(S21114C20*), ABISELECT(96,56), "S21114C19");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C23*)(S21114C22*)(S21114C20*), ABISELECT(88,52), "S21114C19");
    check_base_class_offset(lv, (S21114C23*)(S21114C22*)(S21114C20*), ABISELECT(64,40), "S21114C19");
    check_base_class_offset(lv, (S21114C22*)(S21114C20*), ABISELECT(64,40), "S21114C19");
    check_base_class_offset(lv, (S21114C20*), 0, "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C18 */ AMB_check_base_class_offset(lv, (S21114C18*), ABISELECT(104,64), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C2 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C2*), ABISELECT(536,348), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C2 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C2*), ABISELECT(520,336), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C2 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C2*), ABISELECT(528,344), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C2 */ AMB_check_base_class_offset(lv, (S21114C11*)(S21114C2*), ABISELECT(512,332), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C2 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C2*), ABISELECT(544,356), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C2 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C2*), ABISELECT(544,356), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C2 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C2*), ABISELECT(552,360), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C2 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C2*), ABISELECT(544,356), "S21114C19");
    /*is_ambiguous_... S21114C19::S21114C2 */ AMB_check_base_class_offset(lv, (S21114C2*), ABISELECT(512,332), "S21114C19");
    test_class_info(&lv, &cd_S21114C19);
    dp->~S21114C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21114C19(Test_S21114C19, "S21114C19", ABISELECT(560,364));

#else // __cplusplus

extern void _ZN9S21114C19C1Ev();
extern void _ZN9S21114C19D1Ev();
Name_Map name_map_S21114C19[] = {
  NSPAIR(_ZN9S21114C19C1Ev),
  NSPAIR(_ZN9S21114C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C16;
extern VTBL_ENTRY _ZTI9S21114C16[];
extern  VTBL_ENTRY _ZTV9S21114C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C16[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S21114C3;
extern VTBL_ENTRY _ZTI8S21114C3[];
extern  VTBL_ENTRY _ZTV8S21114C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S21114C10;
extern VTBL_ENTRY _ZTI9S21114C10[];
extern  VTBL_ENTRY _ZTV9S21114C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C10[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S21114C16;
extern VTBL_ENTRY _ZTI9S21114C16[];
extern  VTBL_ENTRY _ZTV9S21114C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C16[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S21114C14;
extern VTBL_ENTRY _ZTI9S21114C14[];
extern  VTBL_ENTRY _ZTV9S21114C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C14[];
extern Class_Descriptor cd_S21114C12;
extern VTBL_ENTRY _ZTI9S21114C12[];
extern  VTBL_ENTRY _ZTV9S21114C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C18;
extern VTBL_ENTRY _ZTI9S21114C18[];
extern  VTBL_ENTRY _ZTV9S21114C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C18[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S21114C3;
extern VTBL_ENTRY _ZTI8S21114C3[];
extern  VTBL_ENTRY _ZTV8S21114C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C3[];
extern Class_Descriptor cd_S21114C17;
extern VTBL_ENTRY _ZTI9S21114C17[];
extern  VTBL_ENTRY _ZTV9S21114C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C17[];
extern Class_Descriptor cd_S21114C9;
extern VTBL_ENTRY _ZTI8S21114C9[];
extern  VTBL_ENTRY _ZTV8S21114C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S21114C2;
extern VTBL_ENTRY _ZTI8S21114C2[];
extern  VTBL_ENTRY _ZTV8S21114C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C2[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S21114C14;
extern VTBL_ENTRY _ZTI9S21114C14[];
extern  VTBL_ENTRY _ZTV9S21114C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C14[];
extern Class_Descriptor cd_S21114C12;
extern VTBL_ENTRY _ZTI9S21114C12[];
extern  VTBL_ENTRY _ZTV9S21114C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C12[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S21114C3;
extern VTBL_ENTRY _ZTI8S21114C3[];
extern  VTBL_ENTRY _ZTV8S21114C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C3[];
extern Class_Descriptor cd_S21114C21;
extern VTBL_ENTRY _ZTI9S21114C21[];
extern  VTBL_ENTRY _ZTV9S21114C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C21[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S21114C16;
extern VTBL_ENTRY _ZTI9S21114C16[];
extern  VTBL_ENTRY _ZTV9S21114C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C16[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S21114C24;
extern VTBL_ENTRY _ZTI9S21114C24[];
extern  VTBL_ENTRY _ZTV9S21114C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C24[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S21114C23;
extern VTBL_ENTRY _ZTI9S21114C23[];
extern  VTBL_ENTRY _ZTV9S21114C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C23[];
extern Class_Descriptor cd_S21114C22;
extern VTBL_ENTRY _ZTI9S21114C22[];
extern  VTBL_ENTRY _ZTV9S21114C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C22[];
extern Class_Descriptor cd_S21114C20;
extern VTBL_ENTRY _ZTI9S21114C20[];
extern  VTBL_ENTRY _ZTV9S21114C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C20[];
extern Class_Descriptor cd_S21114C18;
extern VTBL_ENTRY _ZTI9S21114C18[];
extern  VTBL_ENTRY _ZTV9S21114C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C18[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S21114C2;
extern VTBL_ENTRY _ZTI8S21114C2[];
extern  VTBL_ENTRY _ZTV8S21114C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C2[];
static Base_Class bases_S21114C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    49, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21114C13,    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
    50, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    6, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(240,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21114C16,    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
    51, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    13, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    13, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    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
    11, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21114C8,    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
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(128,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S21114C3,    ABISELECT(128,80), //bcp->offset
    72, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    70, //immediately_derived
  0, 1},
  {&cd_S3461C5_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
    70, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(257,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
    21, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    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
    19, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(256,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(240,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    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
    21, //immediately_derived
  0, 0},
  {&cd_S21114C10,    ABISELECT(240,144), //bcp->offset
    108, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    62, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(328,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
    23, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(328,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    144, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(336,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
    25, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(328,212), //bcp->offset
    143, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    143, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(288,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(296,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
    28, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(280,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    128, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(352,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
    33, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(344,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
    31, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(344,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(344,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    146, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(344,220), //bcp->offset
    148, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    74, //bcp->index_in_construction_vtbl_array
    145, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(320,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    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
    39, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(304,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(304,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(304,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    132, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(304,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    131, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(304,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(360,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(360,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    150, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(368,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
    44, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(360,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    149, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S21114C16,    ABISELECT(360,232), //bcp->offset
    159, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    76, //bcp->index_in_construction_vtbl_array
    148, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(384,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(392,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
    48, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(376,240), //bcp->offset
    167, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    77, //bcp->index_in_construction_vtbl_array
    152, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S21114C14,    ABISELECT(304,192), //bcp->offset
    132, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    75, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S21114C12,    ABISELECT(280,176), //bcp->offset
    117, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    61, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(400,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(400,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    157, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(400,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    79, //bcp->index_in_construction_vtbl_array
    156, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    54, //immediately_derived
  0, 1},
  {&cd_S21114C18,    ABISELECT(400,256), //bcp->offset
    176, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    78, //bcp->index_in_construction_vtbl_array
    154, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    61, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(160,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
    59, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    57, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S21114C8,    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
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S21114C3,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S21114C17,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S21114C9,    ABISELECT(152,96), //bcp->offset
    86, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    70, //immediately_derived
  0, 1},
  {&cd_S3461C5_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
    65, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    65, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    69, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(48,32), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    80, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    54, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S21114C2,    ABISELECT(16,8), //bcp->offset
    22, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    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
    73, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(432,276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(416,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    160, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(456,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
    81, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(448,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
    79, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(440,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    77, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(440,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    165, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(440,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    164, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(440,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    163, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    81, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(440,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    81, //immediately_derived
  0, 0},
  {&cd_S21114C14,    ABISELECT(440,280), //bcp->offset
    198, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    82, //bcp->index_in_construction_vtbl_array
    162, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S21114C12,    ABISELECT(416,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    159, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    89, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(472,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
    87, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(464,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    85, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(464,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    178, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    86, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(464,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    177, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    87, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(464,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    176, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    88, //immediately_derived
  0, 0},
  {&cd_S21114C3,    ABISELECT(464,300), //bcp->offset
    209, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    83, //bcp->index_in_construction_vtbl_array
    175, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    89, //immediately_derived
  0, 0},
  {&cd_S21114C21,    ABISELECT(416,264), //bcp->offset
    182, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    81, //bcp->index_in_construction_vtbl_array
    158, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    107, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    91, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    93, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    57, //init_seq
    94, //immediately_derived
  0, 0},
  {&cd_S21114C16,    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
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    58, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    96, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(80,48), //bcp->offset
    58, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    85, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    59, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(496,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
    99, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(504,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
    99, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(488,316), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    188, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    100, //immediately_derived
  0, 0},
  {&cd_S21114C24,    ABISELECT(488,316), //bcp->offset
    219, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    86, //bcp->index_in_construction_vtbl_array
    187, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    105, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    102, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    60, //init_seq
    104, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    104, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(88,52), //bcp->offset
    62, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    87, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    61, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S21114C23,    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
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    62, //init_seq
    106, //immediately_derived
  0, 0},
  {&cd_S21114C22,    ABISELECT(64,40), //bcp->offset
    46, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    84, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    63, //init_seq
    107, //immediately_derived
  0, 0},
  {&cd_S21114C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    64, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21114C18,    ABISELECT(104,64), //bcp->offset
    66, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    88, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    65, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(536,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    117, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(520,336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    112, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(528,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    112, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(512,332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    192, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    117, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(544,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    114, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(544,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    195, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    116, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(552,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
    116, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(544,356), //bcp->offset
    252, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    90, //bcp->index_in_construction_vtbl_array
    194, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    117, //immediately_derived
  0, 0},
  {&cd_S21114C2,    ABISELECT(512,332), //bcp->offset
    230, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    89, //bcp->index_in_construction_vtbl_array
    191, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21114C19[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void _ZN9S21114C19D1Ev();
extern void _ZN9S21114C19D0Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn16_N9S21114C19D1Ev,_ZThn8_N9S21114C19D1Ev)();
extern void ABISELECT(_ZThn16_N9S21114C19D0Ev,_ZThn8_N9S21114C19D0Ev)();
extern void _ZN8S21114C22v5Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void ABISELECT(_ZThn64_N9S21114C19D1Ev,_ZThn40_N9S21114C19D1Ev)();
extern void ABISELECT(_ZThn64_N9S21114C19D0Ev,_ZThn40_N9S21114C19D0Ev)();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21114C19D1Ev,_ZTv0_n28_N9S21114C19D1Ev)();
extern void ABISELECT(_ZThn128_N9S21114C19D1Ev,_ZThn80_N9S21114C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21114C19D0Ev,_ZTv0_n28_N9S21114C19D0Ev)();
extern void ABISELECT(_ZThn128_N9S21114C19D0Ev,_ZThn80_N9S21114C19D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n120_N9S21114C19D1Ev,_ZTv0_n60_N9S21114C19D1Ev)();
extern void ABISELECT(_ZThn152_N9S21114C19D1Ev,_ZThn96_N9S21114C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S21114C19D0Ev,_ZTv0_n60_N9S21114C19D0Ev)();
extern void ABISELECT(_ZThn152_N9S21114C19D0Ev,_ZThn96_N9S21114C19D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C19D1Ev,_ZTv0_n24_N9S21114C19D1Ev)();
extern void ABISELECT(_ZThn240_N9S21114C19D1Ev,_ZThn144_N9S21114C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C19D0Ev,_ZTv0_n24_N9S21114C19D0Ev)();
extern void ABISELECT(_ZThn240_N9S21114C19D0Ev,_ZThn144_N9S21114C19D0Ev)() __attribute__((weak));
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21114C19D1Ev,_ZTv0_n44_N9S21114C19D1Ev)();
extern void ABISELECT(_ZThn280_N9S21114C19D1Ev,_ZThn176_N9S21114C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21114C19D0Ev,_ZTv0_n44_N9S21114C19D0Ev)();
extern void ABISELECT(_ZThn280_N9S21114C19D0Ev,_ZThn176_N9S21114C19D0Ev)() __attribute__((weak));
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N9S21114C19D1Ev,_ZTvn16_n44_N9S21114C19D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N9S21114C19D0Ev,_ZTvn16_n44_N9S21114C19D0Ev)();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C19D1Ev,_ZTv0_n24_N9S21114C19D1Ev)();
extern void ABISELECT(_ZThn344_N9S21114C19D1Ev,_ZThn220_N9S21114C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C19D0Ev,_ZTv0_n24_N9S21114C19D0Ev)();
extern void ABISELECT(_ZThn344_N9S21114C19D0Ev,_ZThn220_N9S21114C19D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C19D1Ev,_ZTv0_n24_N9S21114C19D1Ev)();
extern void ABISELECT(_ZThn376_N9S21114C19D1Ev,_ZThn240_N9S21114C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C19D0Ev,_ZTv0_n24_N9S21114C19D0Ev)();
extern void ABISELECT(_ZThn376_N9S21114C19D0Ev,_ZThn240_N9S21114C19D0Ev)() __attribute__((weak));
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21114C19D1Ev,_ZTv0_n44_N9S21114C19D1Ev)();
extern void ABISELECT(_ZThn416_N9S21114C19D1Ev,_ZThn264_N9S21114C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21114C19D0Ev,_ZTv0_n44_N9S21114C19D0Ev)();
extern void ABISELECT(_ZThn416_N9S21114C19D0Ev,_ZThn264_N9S21114C19D0Ev)() __attribute__((weak));
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N9S21114C19D1Ev,_ZTvn16_n44_N9S21114C19D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N9S21114C19D0Ev,_ZTvn16_n44_N9S21114C19D0Ev)();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn48_n88_N9S21114C19D1Ev,_ZTvn36_n44_N9S21114C19D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N9S21114C19D0Ev,_ZTvn36_n44_N9S21114C19D0Ev)();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C19D1Ev,_ZTv0_n24_N9S21114C19D1Ev)();
extern void ABISELECT(_ZThn488_N9S21114C19D1Ev,_ZThn316_N9S21114C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C19D0Ev,_ZTv0_n24_N9S21114C19D0Ev)();
extern void ABISELECT(_ZThn488_N9S21114C19D0Ev,_ZThn316_N9S21114C19D0Ev)() __attribute__((weak));
extern void _ZN9S21114C242v6Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n136_N9S21114C19D1Ev,_ZTv0_n68_N9S21114C19D1Ev)();
extern void ABISELECT(_ZThn512_N9S21114C19D1Ev,_ZThn332_N9S21114C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N9S21114C19D0Ev,_ZTv0_n68_N9S21114C19D0Ev)();
extern void ABISELECT(_ZThn512_N9S21114C19D0Ev,_ZThn332_N9S21114C19D0Ev)() __attribute__((weak));
extern void _ZN8S21114C22v5Ev();
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY vtc_S21114C19[] = {
  ABISELECT(512,332),
  ABISELECT(488,316),
  ABISELECT(416,264),
  ABISELECT(400,256),
  ABISELECT(400,256),
  ABISELECT(376,240),
  ABISELECT(360,232),
  ABISELECT(344,220),
  ABISELECT(328,212),
  ABISELECT(280,176),
  ABISELECT(240,144),
  ABISELECT(152,96),
  ABISELECT(144,92),
  ABISELECT(128,80),
  ABISELECT(240,144),
  ABISELECT(120,72),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  (VTBL_ENTRY)&_ZN9S21114C19D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C19D0Ev,
  ABISELECT(384,248),
  ABISELECT(384,248),
  ABISELECT(360,232),
  ABISELECT(344,224),
  ABISELECT(328,212),
  ABISELECT(312,204),
  ABISELECT(264,168),
  ABISELECT(224,136),
  ABISELECT(136,88),
  ABISELECT(128,84),
  ABISELECT(112,72),
  ABISELECT(224,136),
  ABISELECT(224,136),
  ABISELECT(104,64),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21114C19D1Ev,_ZThn8_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21114C19D0Ev,_ZThn8_N9S21114C19D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C22v5Ev,
  ABISELECT(72,40),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  ABISELECT(336,216),
  ABISELECT(336,216),
  ABISELECT(80,52),
  ABISELECT(424,276),
  ABISELECT(176,104),
  ABISELECT(56,32),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S21114C19D1Ev,_ZThn40_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S21114C19D0Ev,_ZThn40_N9S21114C19D0Ev),
  ABISELECT(40,24),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  ABISELECT(32,20),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  ABISELECT(296,192),
  ABISELECT(296,192),
  ABISELECT(16,8),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  0,
  0,
  ABISELECT(-128,-80),
  0,
  ABISELECT(112,64),
  ABISELECT(16,12),
  -8,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21114C19D1Ev,_ZTv0_n28_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21114C19D0Ev,_ZTv0_n28_N9S21114C19D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
  0,
  0,
  ABISELECT(-152,-96),
  0,
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-32,-24),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S21114C19D1Ev,_ZTv0_n60_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S21114C19D0Ev,_ZTv0_n60_N9S21114C19D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
  ABISELECT(-240,-144),
  0,
  0,
  ABISELECT(-120,-72),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C19D1Ev,_ZTv0_n24_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C19D0Ev,_ZTv0_n24_N9S21114C19D0Ev),
  ABISELECT(24,16),
  ABISELECT(-280,-176),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-160,-104),
  ABISELECT(-280,-176),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C19D1Ev,_ZTv0_n44_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C19D0Ev,_ZTv0_n44_N9S21114C19D0Ev),
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-184,-120),
  ABISELECT(-304,-192),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C19D1Ev,_ZTvn16_n44_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C19D0Ev,_ZTvn16_n44_N9S21114C19D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  0,
  ABISELECT(-208,-140),
  ABISELECT(-328,-212),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  0,
  ABISELECT(-344,-220),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  ABISELECT(-344,-220),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C19D1Ev,_ZTv0_n24_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C19D0Ev,_ZTv0_n24_N9S21114C19D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(-360,-232),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  ABISELECT(-376,-240),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(-376,-240),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C19D1Ev,_ZTv0_n24_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C19D0Ev,_ZTv0_n24_N9S21114C19D0Ev),
  0,
  0,
  ABISELECT(-280,-184),
  ABISELECT(-400,-256),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  ABISELECT(48,36),
  ABISELECT(24,16),
  ABISELECT(-416,-264),
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(-272,-172),
  ABISELECT(-72,-44),
  ABISELECT(-88,-52),
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  ABISELECT(-296,-192),
  ABISELECT(-416,-264),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C19D1Ev,_ZTv0_n44_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C19D0Ev,_ZTv0_n44_N9S21114C19D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-200,-136),
  ABISELECT(-80,-48),
  ABISELECT(-296,-188),
  ABISELECT(-320,-208),
  ABISELECT(-440,-280),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C19D1Ev,_ZTvn16_n44_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C19D0Ev,_ZTvn16_n44_N9S21114C19D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  ABISELECT(-224,-156),
  ABISELECT(-320,-208),
  ABISELECT(-344,-228),
  ABISELECT(-464,-300),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N9S21114C19D1Ev,_ZTvn36_n44_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N9S21114C19D0Ev,_ZTvn36_n44_N9S21114C19D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
  0,
  ABISELECT(-488,-316),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-368,-244),
  ABISELECT(-488,-316),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C19D1Ev,_ZTv0_n24_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C19D0Ev,_ZTv0_n24_N9S21114C19D0Ev),
  (VTBL_ENTRY)&_ZN9S21114C242v6Ev,
  0,
  ABISELECT(-512,-332),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-136,-92),
  ABISELECT(-152,-100),
  ABISELECT(-168,-112),
  ABISELECT(-184,-120),
  ABISELECT(-232,-156),
  ABISELECT(-272,-188),
  ABISELECT(-360,-236),
  ABISELECT(-368,-240),
  ABISELECT(-384,-252),
  ABISELECT(-272,-188),
  ABISELECT(-272,-188),
  ABISELECT(-392,-260),
  ABISELECT(-512,-332),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N9S21114C19D1Ev,_ZTv0_n68_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N9S21114C19D0Ev,_ZTv0_n68_N9S21114C19D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C22v5Ev,
  ABISELECT(-424,-284),
  ABISELECT(-544,-356),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern VTBL_ENTRY _ZTV9S21114C19[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void _ZN9S21114C20D1Ev();
extern void _ZN9S21114C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C20__9S21114C19[] = {
  ABISELECT(488,316),
  ABISELECT(416,264),
  ABISELECT(400,256),
  ABISELECT(400,256),
  ABISELECT(376,240),
  ABISELECT(360,232),
  ABISELECT(344,220),
  ABISELECT(328,212),
  ABISELECT(280,176),
  ABISELECT(240,144),
  ABISELECT(152,96),
  ABISELECT(144,92),
  ABISELECT(128,80),
  ABISELECT(240,144),
  ABISELECT(120,72),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  (VTBL_ENTRY)&_ZN9S21114C20D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C20D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C169S21114C20__9S21114C19[] = {
  ABISELECT(240,144),
  ABISELECT(120,72),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C169S21114C20__9S21114C19[] = {
  ABISELECT(120,72),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C139S21114C169S21114C20__9S21114C19[] = {
  ABISELECT(120,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C169S21114C20__9S21114C19[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C2D1Ev();
extern void _ZN8S21114C2D0Ev();
extern void _ZN8S21114C22v5Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C29S21114C20__9S21114C19[] = {
  ABISELECT(384,248),
  ABISELECT(384,248),
  ABISELECT(360,232),
  ABISELECT(344,224),
  ABISELECT(328,212),
  ABISELECT(312,204),
  ABISELECT(264,168),
  ABISELECT(224,136),
  ABISELECT(136,88),
  ABISELECT(128,84),
  ABISELECT(112,72),
  ABISELECT(224,136),
  ABISELECT(224,136),
  ABISELECT(104,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C22v5Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C118S21114C29S21114C20__A3__9S21114C19[] = {
  ABISELECT(224,136),
  ABISELECT(224,136),
  ABISELECT(104,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C118S21114C29S21114C20__A3__9S21114C19[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C138S21114C29S21114C20__A3__9S21114C19[] = {
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C138S21114C29S21114C20__A9__9S21114C19[] = {
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21114C2D1Ev,_ZTv0_n28_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S21114C2D1Ev,_ZThn72_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21114C2D0Ev,_ZTv0_n28_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S21114C2D0Ev,_ZThn72_N8S21114C2D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C3__8S21114C29S21114C20__9S21114C19[] = {
  0,
  0,
  ABISELECT(-112,-72),
  0,
  ABISELECT(112,64),
  ABISELECT(16,12),
  -8,
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21114C2D1Ev,_ZTv0_n28_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21114C2D0Ev,_ZTv0_n28_N8S21114C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn224_N8S21114C2D1Ev,_ZThn136_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn224_N8S21114C2D0Ev,_ZThn136_N8S21114C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C10__8S21114C29S21114C20__9S21114C19[] = {
  ABISELECT(-224,-136),
  0,
  0,
  ABISELECT(-120,-72),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S21114C2D1Ev,_ZTv0_n60_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn136_N8S21114C2D1Ev,_ZThn88_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S21114C2D0Ev,_ZTv0_n60_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn136_N8S21114C2D0Ev,_ZThn88_N8S21114C2D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C9__8S21114C29S21114C20__9S21114C19[] = {
  0,
  0,
  ABISELECT(-136,-88),
  0,
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-32,-24),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21114C2D1Ev,_ZTv0_n60_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21114C2D0Ev,_ZTv0_n60_N8S21114C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S21114C2D1Ev,_ZTv0_n44_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn264_N8S21114C2D1Ev,_ZThn168_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21114C2D0Ev,_ZTv0_n44_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn264_N8S21114C2D0Ev,_ZThn168_N8S21114C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C12__8S21114C29S21114C20__9S21114C19[] = {
  ABISELECT(24,16),
  ABISELECT(-264,-168),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-160,-104),
  ABISELECT(-264,-168),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C2D1Ev,_ZTv0_n44_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C2D0Ev,_ZTv0_n44_N8S21114C2D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__8S21114C29S21114C20__9S21114C19[] = {
  0,
  ABISELECT(-208,-140),
  ABISELECT(-312,-204),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn328_N8S21114C2D1Ev,_ZThn212_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn328_N8S21114C2D0Ev,_ZThn212_N8S21114C2D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__A1__8S21114C29S21114C20__9S21114C19[] = {
  0,
  ABISELECT(-328,-212),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  ABISELECT(-328,-212),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S21114C2D1Ev,_ZTvn16_n44_N8S21114C2D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S21114C2D0Ev,_ZTvn16_n44_N8S21114C2D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__8S21114C29S21114C20__9S21114C19[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-184,-120),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C2D1Ev,_ZTvn16_n44_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C2D0Ev,_ZTvn16_n44_N8S21114C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__8S21114C29S21114C20__9S21114C19[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(-344,-224),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn360_N8S21114C2D1Ev,_ZThn232_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn360_N8S21114C2D0Ev,_ZThn232_N8S21114C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__A2__8S21114C29S21114C20__9S21114C19[] = {
  ABISELECT(-360,-232),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(-360,-232),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__8S21114C29S21114C20__9S21114C19[] = {
  0,
  0,
  ABISELECT(-280,-184),
  ABISELECT(-384,-248),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__A__8S21114C29S21114C20__9S21114C19[] = {
  ABISELECT(72,40),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void _ZN9S21114C22D1Ev();
extern void _ZN9S21114C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C229S21114C20__9S21114C19[] = {
  ABISELECT(336,216),
  ABISELECT(336,216),
  ABISELECT(80,52),
  ABISELECT(424,276),
  ABISELECT(176,104),
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C22[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  (VTBL_ENTRY)&_ZN9S21114C22D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C22D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void _ZN9S21114C23D1Ev();
extern void _ZN9S21114C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C239S21114C229S21114C20__9S21114C19[] = {
  ABISELECT(424,276),
  ABISELECT(176,104),
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C23[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  (VTBL_ENTRY)&_ZN9S21114C23D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C23D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C169S21114C239S21114C229S21114C20__A2__9S21114C19[] = {
  ABISELECT(176,104),
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C169S21114C239S21114C229S21114C20__A4__9S21114C19[] = {
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C139S21114C169S21114C239S21114C229S21114C20__A12__9S21114C19[] = {
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C169S21114C239S21114C229S21114C20__A2__9S21114C19[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C239S21114C229S21114C20__A13__9S21114C19[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C239S21114C229S21114C20__A5__9S21114C19[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C139S21114C239S21114C229S21114C20__A14__9S21114C19[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C239S21114C229S21114C20__9S21114C19[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S21114C23[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A__9S21114C239S21114C229S21114C20__9S21114C19[] = {
  ABISELECT(40,24),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21114C23[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C23D1Ev,_ZTv0_n24_N9S21114C23D1Ev)();
extern void ABISELECT(_ZThn424_N9S21114C23D1Ev,_ZThn276_N9S21114C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C23D0Ev,_ZTv0_n24_N9S21114C23D0Ev)();
extern void ABISELECT(_ZThn424_N9S21114C23D0Ev,_ZThn276_N9S21114C23D0Ev)() __attribute__((weak));
extern void _ZN9S21114C242v6Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C24__9S21114C239S21114C229S21114C20__9S21114C19[] = {
  0,
  ABISELECT(-424,-276),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-368,-244),
  ABISELECT(-424,-276),
  (VTBL_ENTRY)&(_ZTI9S21114C23[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C23D1Ev,_ZTv0_n24_N9S21114C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C23D0Ev,_ZTv0_n24_N9S21114C23D0Ev),
  (VTBL_ENTRY)&_ZN9S21114C242v6Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__A1__9S21114C239S21114C229S21114C20__9S21114C19[] = {
  ABISELECT(32,20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21114C23[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C229S21114C20__9S21114C19[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S21114C22[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C23__A2__9S21114C229S21114C20__9S21114C19[] = {
  ABISELECT(40,24),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21114C22[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C22D1Ev,_ZTv0_n24_N9S21114C22D1Ev)();
extern void ABISELECT(_ZThn424_N9S21114C22D1Ev,_ZThn276_N9S21114C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C22D0Ev,_ZTv0_n24_N9S21114C22D0Ev)();
extern void ABISELECT(_ZThn424_N9S21114C22D0Ev,_ZThn276_N9S21114C22D0Ev)() __attribute__((weak));
extern void _ZN9S21114C242v6Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C24__9S21114C229S21114C20__9S21114C19[] = {
  0,
  ABISELECT(-424,-276),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-368,-244),
  ABISELECT(-424,-276),
  (VTBL_ENTRY)&(_ZTI9S21114C22[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C22D1Ev,_ZTv0_n24_N9S21114C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C22D0Ev,_ZTv0_n24_N9S21114C22D0Ev),
  (VTBL_ENTRY)&_ZN9S21114C242v6Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C23__A1__9S21114C229S21114C20__9S21114C19[] = {
  ABISELECT(32,20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21114C22[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__9S21114C229S21114C20__9S21114C19[] = {
  0,
  0,
  ABISELECT(-280,-184),
  ABISELECT(-336,-216),
  (VTBL_ENTRY)&(_ZTI9S21114C22[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn240_N9S21114C20D1Ev,_ZThn144_N9S21114C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev)();
extern void ABISELECT(_ZThn240_N9S21114C20D0Ev,_ZThn144_N9S21114C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C10__9S21114C20__9S21114C19[] = {
  ABISELECT(-240,-144),
  0,
  0,
  ABISELECT(-120,-72),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn16_N9S21114C20D1Ev,_ZThn8_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn16_N9S21114C20D0Ev,_ZThn8_N9S21114C20D0Ev)();
extern void _ZN8S21114C22v5Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C2__9S21114C20__9S21114C19[] = {
  ABISELECT(384,248),
  ABISELECT(384,248),
  ABISELECT(360,232),
  ABISELECT(344,224),
  ABISELECT(328,212),
  ABISELECT(312,204),
  ABISELECT(264,168),
  ABISELECT(224,136),
  ABISELECT(136,88),
  ABISELECT(128,84),
  ABISELECT(112,72),
  ABISELECT(224,136),
  ABISELECT(224,136),
  ABISELECT(104,64),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21114C20D1Ev,_ZThn8_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21114C20D0Ev,_ZThn8_N9S21114C20D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C22v5Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21114C20D1Ev,_ZTv0_n28_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn128_N9S21114C20D1Ev,_ZThn80_N9S21114C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21114C20D0Ev,_ZTv0_n28_N9S21114C20D0Ev)();
extern void ABISELECT(_ZThn128_N9S21114C20D0Ev,_ZThn80_N9S21114C20D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C3__9S21114C20__9S21114C19[] = {
  0,
  0,
  ABISELECT(-128,-80),
  0,
  ABISELECT(112,64),
  ABISELECT(16,12),
  -8,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21114C20D1Ev,_ZTv0_n28_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21114C20D0Ev,_ZTv0_n28_N9S21114C20D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n120_N9S21114C20D1Ev,_ZTv0_n60_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn152_N9S21114C20D1Ev,_ZThn96_N9S21114C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S21114C20D0Ev,_ZTv0_n60_N9S21114C20D0Ev)();
extern void ABISELECT(_ZThn152_N9S21114C20D0Ev,_ZThn96_N9S21114C20D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C9__9S21114C20__9S21114C19[] = {
  0,
  0,
  ABISELECT(-152,-96),
  0,
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-32,-24),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S21114C20D1Ev,_ZTv0_n60_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S21114C20D0Ev,_ZTv0_n60_N9S21114C20D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21114C20D1Ev,_ZTv0_n44_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn280_N9S21114C20D1Ev,_ZThn176_N9S21114C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21114C20D0Ev,_ZTv0_n44_N9S21114C20D0Ev)();
extern void ABISELECT(_ZThn280_N9S21114C20D0Ev,_ZThn176_N9S21114C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C12__9S21114C20__9S21114C19[] = {
  ABISELECT(24,16),
  ABISELECT(-280,-176),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-160,-104),
  ABISELECT(-280,-176),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C20D1Ev,_ZTv0_n44_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C20D0Ev,_ZTv0_n44_N9S21114C20D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__A1__9S21114C20__9S21114C19[] = {
  0,
  ABISELECT(-208,-140),
  ABISELECT(-328,-212),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn344_N9S21114C20D1Ev,_ZThn220_N9S21114C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev)();
extern void ABISELECT(_ZThn344_N9S21114C20D0Ev,_ZThn220_N9S21114C20D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__A1__9S21114C20__9S21114C19[] = {
  0,
  ABISELECT(-344,-220),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  ABISELECT(-344,-220),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N9S21114C20D1Ev,_ZTvn16_n44_N9S21114C20D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N9S21114C20D0Ev,_ZTvn16_n44_N9S21114C20D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__9S21114C20__9S21114C19[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-184,-120),
  ABISELECT(-304,-192),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C20D1Ev,_ZTvn16_n44_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C20D0Ev,_ZTvn16_n44_N9S21114C20D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__A1__9S21114C20__9S21114C19[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(-360,-232),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn376_N9S21114C20D1Ev,_ZThn240_N9S21114C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev)();
extern void ABISELECT(_ZThn376_N9S21114C20D0Ev,_ZThn240_N9S21114C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__A2__9S21114C20__9S21114C19[] = {
  ABISELECT(-376,-240),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(-376,-240),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__9S21114C20__9S21114C19[] = {
  0,
  0,
  ABISELECT(-280,-184),
  ABISELECT(-400,-256),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C138S21114C2__A3__9S21114C20__9S21114C19[] = {
  ABISELECT(72,40),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21114C20D1Ev,_ZTv0_n44_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn416_N9S21114C20D1Ev,_ZThn264_N9S21114C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21114C20D0Ev,_ZTv0_n44_N9S21114C20D0Ev)();
extern void ABISELECT(_ZThn416_N9S21114C20D0Ev,_ZThn264_N9S21114C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C21__9S21114C20__9S21114C19[] = {
  ABISELECT(48,36),
  ABISELECT(24,16),
  ABISELECT(-416,-264),
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(-272,-172),
  ABISELECT(-72,-44),
  ABISELECT(-88,-52),
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  ABISELECT(-296,-192),
  ABISELECT(-416,-264),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C20D1Ev,_ZTv0_n44_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C20D0Ev,_ZTv0_n44_N9S21114C20D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N9S21114C20D1Ev,_ZTvn16_n44_N9S21114C20D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N9S21114C20D0Ev,_ZTvn16_n44_N9S21114C20D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C129S21114C21__A1__9S21114C20__9S21114C19[] = {
  ABISELECT(-64,-40),
  ABISELECT(-200,-136),
  ABISELECT(-80,-48),
  ABISELECT(-296,-188),
  ABISELECT(-320,-208),
  ABISELECT(-440,-280),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C20D1Ev,_ZTvn16_n44_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C20D0Ev,_ZTvn16_n44_N9S21114C20D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn48_n88_N9S21114C20D1Ev,_ZTvn36_n44_N9S21114C20D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N9S21114C20D0Ev,_ZTvn36_n44_N9S21114C20D0Ev)();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C39S21114C21__A2__9S21114C20__9S21114C19[] = {
  ABISELECT(-224,-156),
  ABISELECT(-320,-208),
  ABISELECT(-344,-228),
  ABISELECT(-464,-300),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N9S21114C20D1Ev,_ZTvn36_n44_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N9S21114C20D0Ev,_ZTvn36_n44_N9S21114C20D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void ABISELECT(_ZThn64_N9S21114C20D1Ev,_ZThn40_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S21114C20D0Ev,_ZThn40_N9S21114C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21114C22__9S21114C20__9S21114C19[] = {
  ABISELECT(336,216),
  ABISELECT(336,216),
  ABISELECT(80,52),
  ABISELECT(424,276),
  ABISELECT(176,104),
  ABISELECT(56,32),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S21114C20D1Ev,_ZThn40_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S21114C20D0Ev,_ZThn40_N9S21114C20D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C239S21114C22__A13__9S21114C20__9S21114C19[] = {
  ABISELECT(40,24),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn488_N9S21114C20D1Ev,_ZThn316_N9S21114C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev)();
extern void ABISELECT(_ZThn488_N9S21114C20D0Ev,_ZThn316_N9S21114C20D0Ev)() __attribute__((weak));
extern void _ZN9S21114C242v6Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C24__9S21114C20__9S21114C19[] = {
  0,
  ABISELECT(-488,-316),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-368,-244),
  ABISELECT(-488,-316),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev),
  (VTBL_ENTRY)&_ZN9S21114C242v6Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C239S21114C22__A5__9S21114C20__9S21114C19[] = {
  ABISELECT(32,20),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__A__9S21114C19[] = {
  ABISELECT(296,192),
  ABISELECT(296,192),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C18[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C8__9S21114C18__A__9S21114C19[] = {
  0,
  ABISELECT(-280,-184),
  ABISELECT(-296,-192),
  (VTBL_ENTRY)&(_ZTI9S21114C18[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C19[] = {
  ABISELECT(-120,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C3D1Ev();
extern void _ZN8S21114C3D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C3__9S21114C19[] = {
  ABISELECT(112,64),
  ABISELECT(16,12),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C78S21114C3__9S21114C19[] = {
  ABISELECT(16,12),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C78S21114C3__9S21114C19[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C78S21114C3__A2__9S21114C19[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__8S21114C3__9S21114C19[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C9D1Ev();
extern void _ZN8S21114C9D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C9__9S21114C19[] = {
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C17D1Ev();
extern void _ZN9S21114C17D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C178S21114C9__9S21114C19[] = {
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C17D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C3D1Ev();
extern void _ZN8S21114C3D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C39S21114C178S21114C9__A1__9S21114C19[] = {
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C78S21114C39S21114C178S21114C9__A3__9S21114C19[] = {
  ABISELECT(-8,-4),
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C78S21114C39S21114C178S21114C9__A4__9S21114C19[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C78S21114C39S21114C178S21114C9__A8__9S21114C19[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__8S21114C39S21114C178S21114C9__A1__9S21114C19[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__9S21114C178S21114C9__9S21114C19[] = {
  0,
  0,
  ABISELECT(-280,-184),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C178S21114C9__9S21114C19[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev)();
extern void ABISELECT(_ZThn224_N9S21114C17D1Ev,_ZThn144_N9S21114C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev)();
extern void ABISELECT(_ZThn224_N9S21114C17D0Ev,_ZThn144_N9S21114C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__9S21114C178S21114C9__9S21114C19[] = {
  ABISELECT(-224,-144),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21114C17D1Ev,_ZTv0_n44_N9S21114C17D1Ev)();
extern void ABISELECT(_ZThn128_N9S21114C17D1Ev,_ZThn80_N9S21114C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21114C17D0Ev,_ZTv0_n44_N9S21114C17D0Ev)();
extern void ABISELECT(_ZThn128_N9S21114C17D0Ev,_ZThn80_N9S21114C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C12__9S21114C178S21114C9__9S21114C19[] = {
  ABISELECT(24,16),
  ABISELECT(-128,-80),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-160,-104),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C17D1Ev,_ZTv0_n44_N9S21114C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C17D0Ev,_ZTv0_n44_N9S21114C17D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__9S21114C178S21114C9__9S21114C19[] = {
  0,
  ABISELECT(-208,-140),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev)();
extern void ABISELECT(_ZThn192_N9S21114C17D1Ev,_ZThn124_N9S21114C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev)();
extern void ABISELECT(_ZThn192_N9S21114C17D0Ev,_ZThn124_N9S21114C17D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__A1__9S21114C178S21114C9__9S21114C19[] = {
  0,
  ABISELECT(-192,-124),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N9S21114C17D1Ev,_ZTvn16_n44_N9S21114C17D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N9S21114C17D0Ev,_ZTvn16_n44_N9S21114C17D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__9S21114C178S21114C9__9S21114C19[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-184,-120),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C17D1Ev,_ZTvn16_n44_N9S21114C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C17D0Ev,_ZTvn16_n44_N9S21114C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C178S21114C9__9S21114C19[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev)();
extern void ABISELECT(_ZThn88_N8S21114C9D1Ev,_ZThn48_N8S21114C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev)();
extern void ABISELECT(_ZThn88_N8S21114C9D0Ev,_ZThn48_N8S21114C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C10__8S21114C9__9S21114C19[] = {
  ABISELECT(-88,-48),
  0,
  0,
  ABISELECT(-120,-72),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S21114C9D1Ev,_ZTv0_n44_N8S21114C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S21114C9D1Ev,_ZThn80_N8S21114C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21114C9D0Ev,_ZTv0_n44_N8S21114C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S21114C9D0Ev,_ZThn80_N8S21114C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C12__8S21114C9__9S21114C19[] = {
  ABISELECT(24,16),
  ABISELECT(-128,-80),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-160,-104),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C9D1Ev,_ZTv0_n44_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C9D0Ev,_ZTv0_n44_N8S21114C9D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__8S21114C9__9S21114C19[] = {
  0,
  ABISELECT(-208,-140),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev)();
extern void ABISELECT(_ZThn192_N8S21114C9D1Ev,_ZThn124_N8S21114C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev)();
extern void ABISELECT(_ZThn192_N8S21114C9D0Ev,_ZThn124_N8S21114C9D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__8S21114C9__9S21114C19[] = {
  0,
  ABISELECT(-192,-124),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S21114C9D1Ev,_ZTvn16_n44_N8S21114C9D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S21114C9D0Ev,_ZTvn16_n44_N8S21114C9D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__8S21114C9__9S21114C19[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-184,-120),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C9D1Ev,_ZTvn16_n44_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C9D0Ev,_ZTvn16_n44_N8S21114C9D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__8S21114C9__9S21114C19[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev)();
extern void ABISELECT(_ZThn224_N8S21114C9D1Ev,_ZThn144_N8S21114C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev)();
extern void ABISELECT(_ZThn224_N8S21114C9D0Ev,_ZThn144_N8S21114C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__A2__8S21114C9__9S21114C19[] = {
  ABISELECT(-224,-144),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__8S21114C9__9S21114C19[] = {
  0,
  0,
  ABISELECT(-280,-184),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C10D1Ev();
extern void _ZN9S21114C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C10__9S21114C19[] = {
  0,
  0,
  ABISELECT(-120,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C10[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C10D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C119S21114C10__9S21114C19[] = {
  0,
  0,
  ABISELECT(-120,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C12D1Ev();
extern void _ZN9S21114C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C12__9S21114C19[] = {
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C12D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C119S21114C12__A1__9S21114C19[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C119S21114C12__A1__9S21114C19[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C14D1Ev();
extern void _ZN9S21114C14D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__9S21114C19[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-184,-120),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C14D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C79S21114C149S21114C12__A2__9S21114C19[] = {
  ABISELECT(-160,-100),
  ABISELECT(-184,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C79S21114C149S21114C12__A2__9S21114C19[] = {
  ABISELECT(-184,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C79S21114C149S21114C12__A5__9S21114C19[] = {
  ABISELECT(-184,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C149S21114C12__9S21114C19[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A2__9S21114C149S21114C12__9S21114C19[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(64,48),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev)();
extern void ABISELECT(_ZThn72_N9S21114C14D1Ev,_ZThn48_N9S21114C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev)();
extern void ABISELECT(_ZThn72_N9S21114C14D0Ev,_ZThn48_N9S21114C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__9S21114C149S21114C12__9S21114C19[] = {
  ABISELECT(-72,-48),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__9S21114C12__9S21114C19[] = {
  0,
  ABISELECT(-208,-140),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C12__9S21114C19[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S21114C12D1Ev,_ZThn44_N9S21114C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S21114C12D0Ev,_ZThn44_N9S21114C12D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__9S21114C12__9S21114C19[] = {
  0,
  ABISELECT(-64,-44),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn24_N9S21114C12D1Ev,_ZThn16_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn24_N9S21114C12D0Ev,_ZThn16_N9S21114C12D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C14__9S21114C12__9S21114C19[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-184,-120),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C12D1Ev,_ZThn16_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C12D0Ev,_ZThn16_N9S21114C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C12__9S21114C19[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn96_N9S21114C12D1Ev,_ZThn64_N9S21114C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev)();
extern void ABISELECT(_ZThn96_N9S21114C12D0Ev,_ZThn64_N9S21114C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__A1__9S21114C12__9S21114C19[] = {
  ABISELECT(-96,-64),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__A1__9S21114C19[] = {
  ABISELECT(-208,-140),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C13__A3__9S21114C19[] = {
  ABISELECT(-208,-140),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__A1__9S21114C19[] = {
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C7__A1__9S21114C19[] = {
  ABISELECT(-224,-148),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C7__A4__9S21114C19[] = {
  ABISELECT(-224,-148),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__A1__9S21114C19[] = {
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C16__A2__9S21114C19[] = {
  ABISELECT(-240,-160),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C139S21114C16__A6__9S21114C19[] = {
  ABISELECT(-240,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C16__A1__9S21114C19[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C11__A2__9S21114C19[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C11__A2__9S21114C19[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(136,96),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__9S21114C19[] = {
  0,
  0,
  ABISELECT(-280,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C18[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C8__A3__9S21114C19[] = {
  ABISELECT(-280,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C8__A7__9S21114C19[] = {
  ABISELECT(-280,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C21D1Ev();
extern void _ZN9S21114C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C21__9S21114C19[] = {
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(-272,-172),
  ABISELECT(-72,-44),
  ABISELECT(-88,-52),
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  ABISELECT(-296,-192),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C21D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C21D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C12D1Ev();
extern void _ZN9S21114C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C129S21114C21__A1__9S21114C19[] = {
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(-272,-172),
  ABISELECT(-72,-44),
  ABISELECT(-88,-52),
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  ABISELECT(-296,-192),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C12D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C119S21114C129S21114C21__A4__9S21114C19[] = {
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  ABISELECT(-296,-192),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C119S21114C129S21114C21__A4__9S21114C19[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(176,120),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C14D1Ev();
extern void _ZN9S21114C14D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C129S21114C21__A1__9S21114C19[] = {
  ABISELECT(-64,-40),
  ABISELECT(-200,-136),
  ABISELECT(-80,-48),
  ABISELECT(-296,-188),
  ABISELECT(-320,-208),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C14D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C79S21114C149S21114C129S21114C21__A4__9S21114C19[] = {
  ABISELECT(-296,-188),
  ABISELECT(-320,-208),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C79S21114C149S21114C129S21114C21__A5__9S21114C19[] = {
  ABISELECT(-320,-208),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C79S21114C149S21114C129S21114C21__A10__9S21114C19[] = {
  ABISELECT(-320,-208),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C149S21114C129S21114C21__A1__9S21114C19[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A2__9S21114C149S21114C129S21114C21__A1__9S21114C19[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(200,136),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21114C11__9S21114C149S21114C129S21114C21__A1__9S21114C19[] = {
  ABISELECT(64,40),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__9S21114C129S21114C21__A1__9S21114C19[] = {
  0,
  ABISELECT(-208,-140),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C129S21114C21__A1__9S21114C19[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(176,120),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__9S21114C129S21114C21__A1__9S21114C19[] = {
  0,
  ABISELECT(72,44),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn24_N9S21114C12D1Ev,_ZThn16_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn24_N9S21114C12D0Ev,_ZThn16_N9S21114C12D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C14__9S21114C129S21114C21__A1__9S21114C19[] = {
  ABISELECT(-64,-40),
  ABISELECT(-200,-136),
  ABISELECT(-80,-48),
  ABISELECT(-296,-188),
  ABISELECT(-320,-208),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C12D1Ev,_ZThn16_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C12D0Ev,_ZThn16_N9S21114C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C129S21114C21__A1__9S21114C19[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21114C11__A1__9S21114C129S21114C21__A1__9S21114C19[] = {
  ABISELECT(40,24),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C3D1Ev();
extern void _ZN8S21114C3D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C39S21114C21__A2__9S21114C19[] = {
  ABISELECT(-224,-156),
  ABISELECT(-320,-208),
  ABISELECT(-344,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C78S21114C39S21114C21__A5__9S21114C19[] = {
  ABISELECT(-320,-208),
  ABISELECT(-344,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C78S21114C39S21114C21__A6__9S21114C19[] = {
  ABISELECT(-344,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C78S21114C39S21114C21__A11__9S21114C19[] = {
  ABISELECT(-344,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__8S21114C39S21114C21__A2__9S21114C19[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(224,156),
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C21D1Ev,_ZTv0_n24_N9S21114C21D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21114C21D0Ev,_ZTv0_n24_N9S21114C21D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__9S21114C21__9S21114C19[] = {
  0,
  ABISELECT(72,44),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C21D1Ev,_ZTv0_n24_N9S21114C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C21D0Ev,_ZTv0_n24_N9S21114C21D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__9S21114C21__9S21114C19[] = {
  0,
  ABISELECT(-208,-140),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A2__9S21114C21__9S21114C19[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(176,120),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn24_N9S21114C21D1Ev,_ZThn16_N9S21114C21D1Ev)();
extern void ABISELECT(_ZThn24_N9S21114C21D0Ev,_ZThn16_N9S21114C21D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__9S21114C21__9S21114C19[] = {
  ABISELECT(-64,-40),
  ABISELECT(-200,-136),
  ABISELECT(-80,-48),
  ABISELECT(-296,-188),
  ABISELECT(-320,-208),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C21D1Ev,_ZThn16_N9S21114C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C21D0Ev,_ZThn16_N9S21114C21D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C21__9S21114C19[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C21D1Ev,_ZTv0_n24_N9S21114C21D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21114C21D0Ev,_ZTv0_n24_N9S21114C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21114C11__A1__9S21114C21__9S21114C19[] = {
  ABISELECT(40,24),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C21D1Ev,_ZTv0_n24_N9S21114C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C21D0Ev,_ZTv0_n24_N9S21114C21D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn48_N9S21114C21D1Ev,_ZThn36_N9S21114C21D1Ev)();
extern void ABISELECT(_ZThn48_N9S21114C21D0Ev,_ZThn36_N9S21114C21D0Ev)();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C3__9S21114C21__9S21114C19[] = {
  ABISELECT(-224,-156),
  ABISELECT(-320,-208),
  ABISELECT(-344,-228),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S21114C21D1Ev,_ZThn36_N9S21114C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S21114C21D0Ev,_ZThn36_N9S21114C21D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C24D1Ev();
extern void _ZN9S21114C24D0Ev();
extern void _ZN9S21114C242v6Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C24__9S21114C19[] = {
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-368,-244),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C24[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C24D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C24D0Ev,
  (VTBL_ENTRY)&_ZN9S21114C242v6Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C119S21114C24__A5__9S21114C19[] = {
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-368,-244),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C119S21114C24__A5__9S21114C19[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(248,172),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C24__9S21114C19[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(248,172),
  (VTBL_ENTRY)&(_ZTI9S21114C24[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C2D1Ev();
extern void _ZN8S21114C2D0Ev();
extern void _ZN8S21114C22v5Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C2__A1__9S21114C19[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-136,-92),
  ABISELECT(-152,-100),
  ABISELECT(-168,-112),
  ABISELECT(-184,-120),
  ABISELECT(-232,-156),
  ABISELECT(-272,-188),
  ABISELECT(-360,-236),
  ABISELECT(-368,-240),
  ABISELECT(-384,-252),
  ABISELECT(-272,-188),
  ABISELECT(-272,-188),
  ABISELECT(-392,-260),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C22v5Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C118S21114C2__A6__9S21114C19[] = {
  ABISELECT(-272,-188),
  ABISELECT(-272,-188),
  ABISELECT(-392,-260),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C118S21114C2__A6__9S21114C19[] = {
  0,
  ABISELECT(-120,-72),
  ABISELECT(272,188),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C138S21114C2__A6__9S21114C19[] = {
  ABISELECT(-424,-284),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C138S21114C2__A15__9S21114C19[] = {
  ABISELECT(-424,-284),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21114C2D1Ev,_ZTv0_n28_N8S21114C2D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S21114C2D0Ev,_ZTv0_n28_N8S21114C2D0Ev)();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C3__8S21114C2__A1__9S21114C19[] = {
  0,
  0,
  ABISELECT(384,252),
  0,
  ABISELECT(112,64),
  ABISELECT(16,12),
  -8,
  ABISELECT(384,252),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21114C2D1Ev,_ZTv0_n28_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21114C2D0Ev,_ZTv0_n28_N8S21114C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21114C10__8S21114C2__A1__9S21114C19[] = {
  ABISELECT(272,188),
  0,
  0,
  ABISELECT(-120,-72),
  ABISELECT(272,188),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S21114C2D1Ev,_ZTv0_n60_N8S21114C2D1Ev)();
extern void ABISELECT(_ZTv0_n120_N8S21114C2D0Ev,_ZTv0_n60_N8S21114C2D0Ev)();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C9__8S21114C2__A1__9S21114C19[] = {
  0,
  0,
  ABISELECT(360,236),
  0,
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-32,-24),
  ABISELECT(360,236),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21114C2D1Ev,_ZTv0_n60_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21114C2D0Ev,_ZTv0_n60_N8S21114C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S21114C2D1Ev,_ZTv0_n44_N8S21114C2D1Ev)();
extern void ABISELECT(_ZTv0_n88_N8S21114C2D0Ev,_ZTv0_n44_N8S21114C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21114C12__8S21114C2__A1__9S21114C19[] = {
  ABISELECT(24,16),
  ABISELECT(232,156),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-160,-104),
  ABISELECT(232,156),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C2D1Ev,_ZTv0_n44_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C2D0Ev,_ZTv0_n44_N8S21114C2D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__8S21114C2__A1__9S21114C19[] = {
  0,
  ABISELECT(-208,-140),
  ABISELECT(184,120),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__A1__8S21114C2__A1__9S21114C19[] = {
  0,
  ABISELECT(168,112),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-224,-148),
  ABISELECT(168,112),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S21114C2D1Ev,_ZTvn16_n44_N8S21114C2D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S21114C2D0Ev,_ZTvn16_n44_N8S21114C2D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__8S21114C2__A1__9S21114C19[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-184,-120),
  ABISELECT(208,140),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C2D1Ev,_ZTvn16_n44_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C2D0Ev,_ZTvn16_n44_N8S21114C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__8S21114C2__A1__9S21114C19[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-240,-160),
  ABISELECT(152,100),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21114C11__A2__8S21114C2__A1__9S21114C19[] = {
  ABISELECT(136,92),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-256,-168),
  ABISELECT(136,92),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__8S21114C2__A1__9S21114C19[] = {
  0,
  0,
  ABISELECT(-280,-184),
  ABISELECT(112,76),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__A__8S21114C2__A1__9S21114C19[] = {
  ABISELECT(-424,-284),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
static  VTT_ENTRY vtt_S21114C19[] = {
  {&(_ZTV9S21114C19[18]),  18,256},
  {&(_tg__ZTV9S21114C20__9S21114C19[17]),  17,21},
  {&(_tg__ZTV9S21114C169S21114C20__9S21114C19[4]),  4,6},
  {&(_tg__ZTV9S21114C139S21114C169S21114C20__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C139S21114C169S21114C20__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C169S21114C20__9S21114C19[4]),  4,5},
  {&(_tg__ZTV8S21114C29S21114C20__9S21114C19[16]),  16,20},
  {&(_tg__ZTV9S21114C118S21114C29S21114C20__A3__9S21114C19[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C118S21114C29S21114C20__A3__9S21114C19[4]),  4,5},
  {&(_tg__ZTV9S21114C138S21114C29S21114C20__A3__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C138S21114C29S21114C20__A9__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C3__8S21114C29S21114C20__9S21114C19[9]),  9,14},
  {&(_tg__ZTV9S21114C10__8S21114C29S21114C20__9S21114C19[6]),  6,9},
  {&(_tg__ZTV8S21114C9__8S21114C29S21114C20__9S21114C19[17]),  17,22},
  {&(_tg__ZTV9S21114C10__8S21114C29S21114C20__9S21114C19[6]),  6,9},
  {&(_tg__ZTV9S21114C12__8S21114C29S21114C20__9S21114C19[12]),  12,15},
  {&(_tg__ZTV9S21114C13__8S21114C29S21114C20__9S21114C19[4]),  4,5},
  {&(_tg__ZTV8S21114C7__A1__8S21114C29S21114C20__9S21114C19[7]),  7,11},
  {&(_tg__ZTV9S21114C149S21114C12__8S21114C29S21114C20__9S21114C19[7]),  7,11},
  {&(_tg__ZTV9S21114C16__8S21114C29S21114C20__9S21114C19[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A2__8S21114C29S21114C20__9S21114C19[6]),  6,9},
  {&(_tg__ZTV9S21114C18__8S21114C29S21114C20__9S21114C19[5]),  5,6},
  {&(_tg__ZTV9S21114C18__8S21114C29S21114C20__9S21114C19[5]),  5,6},
  {&(_tg__ZTV9S21114C13__A__8S21114C29S21114C20__9S21114C19[3]),  3,4},
  {&(_tg__ZTV9S21114C229S21114C20__9S21114C19[8]),  8,12},
  {&(_tg__ZTV9S21114C239S21114C229S21114C20__9S21114C19[5]),  5,9},
  {&(_tg__ZTV9S21114C169S21114C239S21114C229S21114C20__A2__9S21114C19[4]),  4,6},
  {&(_tg__ZTV9S21114C139S21114C169S21114C239S21114C229S21114C20__A4__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C139S21114C169S21114C239S21114C229S21114C20__A12__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C169S21114C239S21114C229S21114C20__A2__9S21114C19[4]),  4,5},
  {&(_tg__ZTV8S21114C49S21114C239S21114C229S21114C20__A13__9S21114C19[3]),  3,4},
  {&(_tg__ZTV9S21114C139S21114C239S21114C229S21114C20__A5__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C139S21114C239S21114C229S21114C20__A14__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C239S21114C229S21114C20__9S21114C19[4]),  4,5},
  {&(_tg__ZTV8S21114C4__A__9S21114C239S21114C229S21114C20__9S21114C19[3]),  3,4},
  {&(_tg__ZTV9S21114C24__9S21114C239S21114C229S21114C20__9S21114C19[7]),  7,11},
  {&(_tg__ZTV9S21114C13__A1__9S21114C239S21114C229S21114C20__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C229S21114C20__9S21114C19[4]),  4,5},
  {&(_tg__ZTV8S21114C49S21114C23__A2__9S21114C229S21114C20__9S21114C19[3]),  3,4},
  {&(_tg__ZTV9S21114C24__9S21114C229S21114C20__9S21114C19[7]),  7,11},
  {&(_tg__ZTV9S21114C139S21114C23__A1__9S21114C229S21114C20__9S21114C19[3]),  3,4},
  {&(_tg__ZTV9S21114C18__9S21114C229S21114C20__9S21114C19[5]),  5,6},
  {&(_tg__ZTV9S21114C18__9S21114C229S21114C20__9S21114C19[5]),  5,6},
  {&(_tg__ZTV9S21114C10__9S21114C20__9S21114C19[6]),  6,9},
  {&(_tg__ZTV8S21114C2__9S21114C20__9S21114C19[16]),  16,20},
  {&(_tg__ZTV8S21114C3__9S21114C20__9S21114C19[9]),  9,14},
  {&(_tg__ZTV8S21114C9__9S21114C20__9S21114C19[17]),  17,22},
  {&(_tg__ZTV9S21114C10__9S21114C20__9S21114C19[6]),  6,9},
  {&(_tg__ZTV9S21114C12__9S21114C20__9S21114C19[12]),  12,15},
  {&(_tg__ZTV9S21114C13__A1__9S21114C20__9S21114C19[4]),  4,5},
  {&(_tg__ZTV8S21114C7__A1__9S21114C20__9S21114C19[7]),  7,11},
  {&(_tg__ZTV9S21114C149S21114C12__9S21114C20__9S21114C19[7]),  7,11},
  {&(_tg__ZTV9S21114C16__A1__9S21114C20__9S21114C19[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A2__9S21114C20__9S21114C19[6]),  6,9},
  {&(_tg__ZTV9S21114C18__9S21114C20__9S21114C19[5]),  5,6},
  {&(_tg__ZTV9S21114C18__9S21114C20__9S21114C19[5]),  5,6},
  {&(_tg__ZTV9S21114C138S21114C2__A3__9S21114C20__9S21114C19[3]),  3,4},
  {&(_tg__ZTV9S21114C21__9S21114C20__9S21114C19[13]),  13,16},
  {&(_tg__ZTV9S21114C149S21114C129S21114C21__A1__9S21114C20__9S21114C19[7]),  7,11},
  {&(_tg__ZTV8S21114C39S21114C21__A2__9S21114C20__9S21114C19[5]),  5,10},
  {&(_tg__ZTV9S21114C22__9S21114C20__9S21114C19[8]),  8,12},
  {&(_tg__ZTV8S21114C49S21114C239S21114C22__A13__9S21114C20__9S21114C19[3]),  3,4},
  {&(_tg__ZTV9S21114C24__9S21114C20__9S21114C19[7]),  7,11},
  {&(_tg__ZTV9S21114C139S21114C239S21114C22__A5__9S21114C20__9S21114C19[3]),  3,4},
  {&(_tg__ZTV9S21114C18__A__9S21114C19[5]),  5,6},
  {&(_tg__ZTV8S21114C8__9S21114C18__A__9S21114C19[4]),  4,5},
  {&(_ZTV9S21114C19[114]),  114,256},
  {&(_ZTV9S21114C19[38]),  38,256},
  {&(_ZTV9S21114C19[81]),  81,256},
  {&(_ZTV9S21114C19[103]),  103,256},
  {&(_ZTV9S21114C19[114]),  114,256},
  {&(_ZTV9S21114C19[129]),  129,256},
  {&(_ZTV9S21114C19[147]),  147,256},
  {&(_ZTV9S21114C19[155]),  155,256},
  {&(_ZTV9S21114C19[139]),  139,256},
  {&(_ZTV9S21114C19[165]),  165,256},
  {&(_ZTV9S21114C19[173]),  173,256},
  {&(_ZTV9S21114C19[181]),  181,256},
  {&(_ZTV9S21114C19[181]),  181,256},
  {&(_ZTV9S21114C19[45]),  45,256},
  {&(_ZTV9S21114C19[195]),  195,256},
  {&(_ZTV9S21114C19[205]),  205,256},
  {&(_ZTV9S21114C19[214]),  214,256},
  {&(_ZTV9S21114C19[54]),  54,256},
  {&(_ZTV9S21114C19[61]),  61,256},
  {&(_ZTV9S21114C19[226]),  226,256},
  {&(_ZTV9S21114C19[65]),  65,256},
  {&(_ZTV9S21114C19[71]),  71,256},
  {&(_ZTV9S21114C19[248]),  248,256},
  {&(_ZTV9S21114C19[255]),  255,256},
  {&(_tg__ZTV8S21114C4__A1__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C3__9S21114C19[5]),  5,10},
  {&(_tg__ZTV8S21114C78S21114C3__9S21114C19[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C78S21114C3__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C78S21114C3__A2__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C4__8S21114C3__9S21114C19[4]),  4,5},
  {&(_tg__ZTV8S21114C9__9S21114C19[13]),  13,18},
  {&(_tg__ZTV9S21114C178S21114C9__9S21114C19[12]),  12,17},
  {&(_tg__ZTV8S21114C39S21114C178S21114C9__A1__9S21114C19[5]),  5,10},
  {&(_tg__ZTV8S21114C78S21114C39S21114C178S21114C9__A3__9S21114C19[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C78S21114C39S21114C178S21114C9__A4__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C78S21114C39S21114C178S21114C9__A8__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C4__8S21114C39S21114C178S21114C9__A1__9S21114C19[4]),  4,5},
  {&(_tg__ZTV9S21114C18__9S21114C178S21114C9__9S21114C19[5]),  5,6},
  {&(_tg__ZTV9S21114C18__9S21114C178S21114C9__9S21114C19[5]),  5,6},
  {&(_tg__ZTV8S21114C4__A1__9S21114C178S21114C9__9S21114C19[4]),  4,5},
  {&(_tg__ZTV9S21114C11__9S21114C178S21114C9__9S21114C19[6]),  6,9},
  {&(_tg__ZTV9S21114C12__9S21114C178S21114C9__9S21114C19[12]),  12,15},
  {&(_tg__ZTV9S21114C13__9S21114C178S21114C9__9S21114C19[4]),  4,5},
  {&(_tg__ZTV8S21114C7__A1__9S21114C178S21114C9__9S21114C19[7]),  7,11},
  {&(_tg__ZTV9S21114C149S21114C12__9S21114C178S21114C9__9S21114C19[7]),  7,11},
  {&(_tg__ZTV9S21114C16__9S21114C178S21114C9__9S21114C19[6]),  6,8},
  {&(_tg__ZTV9S21114C10__8S21114C9__9S21114C19[6]),  6,9},
  {&(_tg__ZTV9S21114C10__8S21114C9__9S21114C19[6]),  6,9},
  {&(_tg__ZTV9S21114C12__8S21114C9__9S21114C19[12]),  12,15},
  {&(_tg__ZTV9S21114C13__8S21114C9__9S21114C19[4]),  4,5},
  {&(_tg__ZTV8S21114C7__8S21114C9__9S21114C19[7]),  7,11},
  {&(_tg__ZTV9S21114C149S21114C12__8S21114C9__9S21114C19[7]),  7,11},
  {&(_tg__ZTV9S21114C16__8S21114C9__9S21114C19[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A2__8S21114C9__9S21114C19[6]),  6,9},
  {&(_tg__ZTV9S21114C18__8S21114C9__9S21114C19[5]),  5,6},
  {&(_tg__ZTV9S21114C18__8S21114C9__9S21114C19[5]),  5,6},
  {&(_tg__ZTV9S21114C10__9S21114C19[5]),  5,8},
  {&(_tg__ZTV9S21114C119S21114C10__9S21114C19[5]),  5,8},
  {&(_tg__ZTV9S21114C119S21114C10__9S21114C19[5]),  5,8},
  {&(_tg__ZTV9S21114C10__9S21114C19[5]),  5,8},
  {&(_tg__ZTV9S21114C12__9S21114C19[10]),  10,13},
  {&(_tg__ZTV9S21114C119S21114C12__A1__9S21114C19[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C119S21114C12__A1__9S21114C19[4]),  4,5},
  {&(_tg__ZTV9S21114C149S21114C12__9S21114C19[7]),  7,11},
  {&(_tg__ZTV8S21114C79S21114C149S21114C12__A2__9S21114C19[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C79S21114C149S21114C12__A2__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C79S21114C149S21114C12__A5__9S21114C19[3]),  3,4},
  {&(_tg__ZTV9S21114C16__9S21114C149S21114C12__9S21114C19[6]),  6,8},
  {&(_tg__ZTV8S21114C4__A2__9S21114C149S21114C12__9S21114C19[4]),  4,5},
  {&(_tg__ZTV9S21114C11__9S21114C149S21114C12__9S21114C19[6]),  6,9},
  {&(_tg__ZTV9S21114C13__9S21114C12__9S21114C19[4]),  4,5},
  {&(_tg__ZTV8S21114C4__A1__9S21114C12__9S21114C19[4]),  4,5},
  {&(_tg__ZTV8S21114C7__9S21114C12__9S21114C19[7]),  7,11},
  {&(_tg__ZTV9S21114C14__9S21114C12__9S21114C19[7]),  7,11},
  {&(_tg__ZTV9S21114C16__9S21114C12__9S21114C19[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A1__9S21114C12__9S21114C19[6]),  6,9},
  {&(_tg__ZTV9S21114C13__A1__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C13__A3__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C7__A1__9S21114C19[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C7__A1__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C7__A4__9S21114C19[3]),  3,4},
  {&(_tg__ZTV9S21114C16__A1__9S21114C19[4]),  4,6},
  {&(_tg__ZTV9S21114C139S21114C16__A2__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C139S21114C16__A6__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C16__A1__9S21114C19[4]),  4,5},
  {&(_tg__ZTV9S21114C11__A2__9S21114C19[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C11__A2__9S21114C19[4]),  4,5},
  {&(_tg__ZTV9S21114C18__9S21114C19[5]),  5,6},
  {&(_tg__ZTV9S21114C18__9S21114C19[5]),  5,6},
  {&(_tg__ZTV8S21114C8__A3__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C8__A7__9S21114C19[3]),  3,4},
  {&(_tg__ZTV9S21114C21__9S21114C19[10]),  10,13},
  {&(_tg__ZTV9S21114C129S21114C21__A1__9S21114C19[10]),  10,13},
  {&(_tg__ZTV9S21114C119S21114C129S21114C21__A4__9S21114C19[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C119S21114C129S21114C21__A4__9S21114C19[4]),  4,5},
  {&(_tg__ZTV9S21114C149S21114C129S21114C21__A1__9S21114C19[7]),  7,11},
  {&(_tg__ZTV8S21114C79S21114C149S21114C129S21114C21__A4__9S21114C19[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C79S21114C149S21114C129S21114C21__A5__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C79S21114C149S21114C129S21114C21__A10__9S21114C19[3]),  3,4},
  {&(_tg__ZTV9S21114C16__9S21114C149S21114C129S21114C21__A1__9S21114C19[6]),  6,8},
  {&(_tg__ZTV8S21114C4__A2__9S21114C149S21114C129S21114C21__A1__9S21114C19[4]),  4,5},
  {&(_tg__ZTV9S21114C11__9S21114C149S21114C129S21114C21__A1__9S21114C19[6]),  6,9},
  {&(_tg__ZTV9S21114C13__9S21114C129S21114C21__A1__9S21114C19[4]),  4,5},
  {&(_tg__ZTV8S21114C4__A1__9S21114C129S21114C21__A1__9S21114C19[4]),  4,5},
  {&(_tg__ZTV8S21114C7__9S21114C129S21114C21__A1__9S21114C19[7]),  7,11},
  {&(_tg__ZTV9S21114C14__9S21114C129S21114C21__A1__9S21114C19[7]),  7,11},
  {&(_tg__ZTV9S21114C16__9S21114C129S21114C21__A1__9S21114C19[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A1__9S21114C129S21114C21__A1__9S21114C19[6]),  6,9},
  {&(_tg__ZTV8S21114C39S21114C21__A2__9S21114C19[5]),  5,10},
  {&(_tg__ZTV8S21114C78S21114C39S21114C21__A5__9S21114C19[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C78S21114C39S21114C21__A6__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C78S21114C39S21114C21__A11__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C4__8S21114C39S21114C21__A2__9S21114C19[4]),  4,5},
  {&(_tg__ZTV8S21114C7__9S21114C21__9S21114C19[7]),  7,11},
  {&(_tg__ZTV9S21114C13__9S21114C21__9S21114C19[4]),  4,5},
  {&(_tg__ZTV8S21114C4__A2__9S21114C21__9S21114C19[4]),  4,5},
  {&(_tg__ZTV9S21114C149S21114C12__9S21114C21__9S21114C19[7]),  7,11},
  {&(_tg__ZTV9S21114C16__9S21114C21__9S21114C19[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A1__9S21114C21__9S21114C19[6]),  6,9},
  {&(_tg__ZTV8S21114C3__9S21114C21__9S21114C19[5]),  5,10},
  {&(_tg__ZTV9S21114C24__9S21114C19[5]),  5,9},
  {&(_tg__ZTV9S21114C119S21114C24__A5__9S21114C19[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C119S21114C24__A5__9S21114C19[4]),  4,5},
  {&(_tg__ZTV8S21114C4__9S21114C24__9S21114C19[4]),  4,5},
  {&(_tg__ZTV8S21114C2__A1__9S21114C19[16]),  16,20},
  {&(_tg__ZTV9S21114C118S21114C2__A6__9S21114C19[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C118S21114C2__A6__9S21114C19[4]),  4,5},
  {&(_tg__ZTV9S21114C138S21114C2__A6__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C138S21114C2__A15__9S21114C19[3]),  3,4},
  {&(_tg__ZTV8S21114C3__8S21114C2__A1__9S21114C19[9]),  9,14},
  {&(_tg__ZTV9S21114C10__8S21114C2__A1__9S21114C19[6]),  6,9},
  {&(_tg__ZTV8S21114C9__8S21114C2__A1__9S21114C19[17]),  17,22},
  {&(_tg__ZTV9S21114C10__8S21114C2__A1__9S21114C19[6]),  6,9},
  {&(_tg__ZTV9S21114C12__8S21114C2__A1__9S21114C19[12]),  12,15},
  {&(_tg__ZTV9S21114C13__8S21114C2__A1__9S21114C19[4]),  4,5},
  {&(_tg__ZTV8S21114C7__A1__8S21114C2__A1__9S21114C19[7]),  7,11},
  {&(_tg__ZTV9S21114C149S21114C12__8S21114C2__A1__9S21114C19[7]),  7,11},
  {&(_tg__ZTV9S21114C16__8S21114C2__A1__9S21114C19[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A2__8S21114C2__A1__9S21114C19[6]),  6,9},
  {&(_tg__ZTV9S21114C18__8S21114C2__A1__9S21114C19[5]),  5,6},
  {&(_tg__ZTV9S21114C18__8S21114C2__A1__9S21114C19[5]),  5,6},
  {&(_tg__ZTV9S21114C13__A__8S21114C2__A1__9S21114C19[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S21114C19[];
extern  VTBL_ENTRY _ZTV9S21114C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C19[];
static VTBL_ENTRY alt_thunk_names32[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21114C12D0Ev,_ZThn64_N9S21114C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21114C12D0Ev,_ZThn44_N9S21114C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21114C12D1Ev,_ZThn64_N9S21114C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21114C12D1Ev,_ZThn44_N9S21114C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21114C14D0Ev,_ZThn48_N9S21114C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21114C14D1Ev,_ZThn48_N9S21114C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21114C9D0Ev,_ZTv0_n44_N8S21114C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21114C9D0Ev,_ZThn80_N8S21114C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21114C9D1Ev,_ZTv0_n44_N8S21114C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21114C9D1Ev,_ZThn80_N8S21114C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21114C9D0Ev,_ZThn144_N8S21114C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21114C9D0Ev,_ZThn124_N8S21114C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21114C9D0Ev,_ZThn48_N8S21114C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21114C9D1Ev,_ZThn144_N8S21114C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21114C9D1Ev,_ZThn124_N8S21114C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21114C9D1Ev,_ZThn48_N8S21114C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21114C17D0Ev,_ZTv0_n44_N9S21114C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21114C17D0Ev,_ZThn80_N9S21114C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21114C17D1Ev,_ZTv0_n44_N9S21114C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21114C17D1Ev,_ZThn80_N9S21114C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21114C17D0Ev,_ZThn124_N9S21114C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21114C17D0Ev,_ZThn144_N9S21114C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21114C17D1Ev,_ZThn124_N9S21114C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21114C17D1Ev,_ZThn144_N9S21114C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21114C20D0Ev,_ZTv0_n44_N9S21114C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S21114C20D0Ev,_ZThn264_N9S21114C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S21114C20D0Ev,_ZThn176_N9S21114C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21114C20D1Ev,_ZTv0_n44_N9S21114C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S21114C20D1Ev,_ZThn264_N9S21114C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S21114C20D1Ev,_ZThn176_N9S21114C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S21114C20D0Ev,_ZTv0_n60_N9S21114C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21114C20D0Ev,_ZThn96_N9S21114C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S21114C20D1Ev,_ZTv0_n60_N9S21114C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21114C20D1Ev,_ZThn96_N9S21114C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21114C20D0Ev,_ZTv0_n28_N9S21114C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21114C20D0Ev,_ZThn80_N9S21114C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21114C20D1Ev,_ZTv0_n28_N9S21114C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21114C20D1Ev,_ZThn80_N9S21114C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N9S21114C20D0Ev,_ZThn316_N9S21114C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn376_N9S21114C20D0Ev,_ZThn240_N9S21114C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S21114C20D0Ev,_ZThn220_N9S21114C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S21114C20D0Ev,_ZThn144_N9S21114C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N9S21114C20D1Ev,_ZThn316_N9S21114C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn376_N9S21114C20D1Ev,_ZThn240_N9S21114C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S21114C20D1Ev,_ZThn220_N9S21114C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S21114C20D1Ev,_ZThn144_N9S21114C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C22D0Ev,_ZTv0_n24_N9S21114C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N9S21114C22D0Ev,_ZThn276_N9S21114C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C22D1Ev,_ZTv0_n24_N9S21114C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N9S21114C22D1Ev,_ZThn276_N9S21114C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C23D0Ev,_ZTv0_n24_N9S21114C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N9S21114C23D0Ev,_ZThn276_N9S21114C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C23D1Ev,_ZTv0_n24_N9S21114C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N9S21114C23D1Ev,_ZThn276_N9S21114C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21114C2D0Ev,_ZTv0_n44_N8S21114C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S21114C2D0Ev,_ZThn168_N8S21114C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21114C2D1Ev,_ZTv0_n44_N8S21114C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S21114C2D1Ev,_ZThn168_N8S21114C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S21114C2D0Ev,_ZTv0_n60_N8S21114C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21114C2D0Ev,_ZThn88_N8S21114C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S21114C2D1Ev,_ZTv0_n60_N8S21114C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21114C2D1Ev,_ZThn88_N8S21114C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N8S21114C2D0Ev,_ZThn232_N8S21114C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S21114C2D0Ev,_ZThn212_N8S21114C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21114C2D0Ev,_ZThn136_N8S21114C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N8S21114C2D1Ev,_ZThn232_N8S21114C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S21114C2D1Ev,_ZThn212_N8S21114C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21114C2D1Ev,_ZThn136_N8S21114C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21114C2D0Ev,_ZTv0_n28_N8S21114C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21114C2D0Ev,_ZThn72_N8S21114C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21114C2D1Ev,_ZTv0_n28_N8S21114C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21114C2D1Ev,_ZThn72_N8S21114C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N9S21114C19D0Ev,_ZTv0_n68_N9S21114C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S21114C19D0Ev,_ZThn332_N9S21114C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N9S21114C19D1Ev,_ZTv0_n68_N9S21114C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S21114C19D1Ev,_ZThn332_N9S21114C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21114C19D0Ev,_ZTv0_n44_N9S21114C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S21114C19D0Ev,_ZThn264_N9S21114C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S21114C19D0Ev,_ZThn176_N9S21114C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21114C19D1Ev,_ZTv0_n44_N9S21114C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S21114C19D1Ev,_ZThn264_N9S21114C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S21114C19D1Ev,_ZThn176_N9S21114C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C19D0Ev,_ZTv0_n24_N9S21114C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N9S21114C19D0Ev,_ZThn316_N9S21114C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn376_N9S21114C19D0Ev,_ZThn240_N9S21114C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S21114C19D0Ev,_ZThn220_N9S21114C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S21114C19D0Ev,_ZThn144_N9S21114C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C19D1Ev,_ZTv0_n24_N9S21114C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N9S21114C19D1Ev,_ZThn316_N9S21114C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn376_N9S21114C19D1Ev,_ZThn240_N9S21114C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S21114C19D1Ev,_ZThn220_N9S21114C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S21114C19D1Ev,_ZThn144_N9S21114C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S21114C19D0Ev,_ZTv0_n60_N9S21114C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21114C19D0Ev,_ZThn96_N9S21114C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S21114C19D1Ev,_ZTv0_n60_N9S21114C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21114C19D1Ev,_ZThn96_N9S21114C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21114C19D0Ev,_ZTv0_n28_N9S21114C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21114C19D0Ev,_ZThn80_N9S21114C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21114C19D1Ev,_ZTv0_n28_N9S21114C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21114C19D1Ev,_ZThn80_N9S21114C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21114C19 = {  "S21114C19", // class name
  bases_S21114C19, 118,
  &(vtc_S21114C19[0]), // expected_vtbl_contents
  &(vtt_S21114C19[0]), // expected_vtt_contents
  ABISELECT(560,364), // object size
  NSPAIRA(_ZTI9S21114C19),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21114C19),256, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21114C19),208, //virtual table table var
  65, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names32,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21114C1  : virtual S21114C2 , S21114C19 , S21114C3 , virtual S28C52_nt {
  virtual  ~S21114C1(); // _ZN8S21114C1D2Ev
  S21114C1(); // tgen
};
//SIG(1 S21114C1) C1{ VBC2{ VBC3{ VBC4{ VBC5{ m FL} BC6{ m} v1} BC7{ BC5 VBC6 BC8{ BC4} vd v2} vd v3} BC5 VBC9{ VBC4 VBC10{ BC6 VBC4 BC11{ BC5 VBC4 BC6 vd} BC5 vd FL} VBC12{ VBC5 VBC13{ VBC5 BC4 BC6} BC11 VBC7 BC14{ BC5 BC7 BC15{ m} VBC16{ VBC5 BC13 VBC4 v4} VBC11 vd}} BC17{ VBC18{ VBC8 Fi} BC3 VBC11 VBC12 vd Fp[9]} vd} BC11 BC13 vd v5 Fc} BC19{ BC20{ BC16 BC2 VBC21{ VBC7 BC12 BC3 Fi} BC22{ BC23{ BC16 BC4 VBC24{ BC11 v6} BC13} VBC6 VBC18 Fi} vd} BC18 VBC2} BC3 VBC15 vd}


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

static void Test_S21114C1()
{
  extern Class_Descriptor cd_S21114C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(73,95)];
    init_test(&cd_S21114C1, buf);
    S21114C1 *dp, &lv = *(dp=new (buf) S21114C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(576,376), "sizeof(S21114C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21114C1)");
    /*is_ambiguous_... S21114C1::S21114C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*), ABISELECT(200,128), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(200,128), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C12*), ABISELECT(200,128), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*), ABISELECT(200,128), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*), ABISELECT(200,128), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(200,128), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(200,128), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C16 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C16*), ABISELECT(200,128), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C16 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C16*), ABISELECT(200,128), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C16 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(200,128), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*), ABISELECT(200,128), "S21114C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(200,128), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C2 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C2*), ABISELECT(200,128), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C2 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C2*), ABISELECT(200,128), "S21114C1");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C16*)(S21114C20*)(S21114C19*), ABISELECT(200,128), "S21114C1");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C16*)(S21114C20*)(S21114C19*), ABISELECT(200,128), "S21114C1");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C16*)(S21114C20*)(S21114C19*), ABISELECT(200,128), "S21114C1");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C2*)(S21114C20*)(S21114C19*), ABISELECT(200,128), "S21114C1");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C2*)(S21114C20*)(S21114C19*), ABISELECT(200,128), "S21114C1");
    /*is_ambiguous_... S21114C12::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C12*)(S21114C21*), ABISELECT(200,128), "S21114C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(200,128), "S21114C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*)(S21114C21*), ABISELECT(200,128), "S21114C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C16*)(S21114C23*)(S21114C22*)(S21114C20*)(S21114C19*), ABISELECT(200,128), "S21114C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C16*)(S21114C23*)(S21114C22*)(S21114C20*)(S21114C19*), ABISELECT(200,128), "S21114C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C16*)(S21114C23*)(S21114C22*)(S21114C20*)(S21114C19*), ABISELECT(200,128), "S21114C1");
    /*is_ambiguous_... S21114C23::S21114C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C23*)(S21114C22*)(S21114C20*)(S21114C19*), ABISELECT(200,128), "S21114C1");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C13*)(S21114C23*)(S21114C22*)(S21114C20*)(S21114C19*), ABISELECT(200,128), "S21114C1");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C13*)(S21114C23*)(S21114C22*)(S21114C20*)(S21114C19*), ABISELECT(200,128), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(200,128), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*), ABISELECT(304,188), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C3*), ABISELECT(304,188), "S21114C1");
    /*is_ambiguous_... S21114C9::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C9*), ABISELECT(304,188), "S21114C1");
    check_base_class_offset(lv, (S21114C4*)(S21114C10*), ABISELECT(304,188), "S21114C1");
    check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C10*), ABISELECT(304,188), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C12*), ABISELECT(304,188), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C16 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C16*), ABISELECT(304,188), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*), ABISELECT(304,188), "S21114C1");
    /*is_ambiguous_... S21114C3::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(304,188), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C2 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C2*), ABISELECT(304,188), "S21114C1");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C16*)(S21114C20*)(S21114C19*), ABISELECT(304,188), "S21114C1");
    /*is_ambiguous_... S21114C2::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C2*)(S21114C20*)(S21114C19*), ABISELECT(304,188), "S21114C1");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C12*)(S21114C21*), ABISELECT(304,188), "S21114C1");
    /*is_ambiguous_... S21114C3::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C3*)(S21114C21*), ABISELECT(304,188), "S21114C1");
    /*is_ambiguous_... S21114C16::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C16*)(S21114C23*)(S21114C22*)(S21114C20*)(S21114C19*), ABISELECT(304,188), "S21114C1");
    check_base_class_offset(lv, (S21114C4*)(S21114C11*)(S21114C24*), ABISELECT(304,188), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C3*), ABISELECT(304,188), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C3*), ABISELECT(192,120), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C3*), ABISELECT(208,136), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*), ABISELECT(208,136), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(208,136), "S21114C1");
    /*is_ambiguous_... S21114C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(208,136), "S21114C1");
    /*is_ambiguous_... S21114C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(208,136), "S21114C1");
    /*is_ambiguous_... S21114C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C3*)(S21114C21*), ABISELECT(208,136), "S21114C1");
    /*is_ambiguous_... S21114C22::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C22*)(S21114C20*)(S21114C19*), ABISELECT(208,136), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C7*)(S21114C3*), ABISELECT(208,136), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(184,116), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(184,116), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(184,116), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C7*)(S21114C3*), ABISELECT(184,116), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C2 */ AMB_check_base_class_offset(lv, (S21114C3*)(S21114C2*), ABISELECT(184,116), "S21114C1");
    /*is_ambiguous_... S21114C2::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C3*)(S21114C2*)(S21114C20*)(S21114C19*), ABISELECT(184,116), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C2 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C2*), ABISELECT(160,100), "S21114C1");
    /*is_ambiguous_... S21114C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C10*), ABISELECT(321,201), "S21114C1");
    /*is_ambiguous_... S21114C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C10*), ABISELECT(312,192), "S21114C1");
    /*is_ambiguous_... S21114C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C10*), ABISELECT(320,200), "S21114C1");
    check_base_class_offset(lv, (S21114C11*)(S21114C10*), ABISELECT(304,188), "S21114C1");
    /*is_ambiguous_... S21114C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C10*), ABISELECT(328,204), "S21114C1");
    check_base_class_offset(lv, (S21114C10*)(S21114C9*), ABISELECT(304,188), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*), ABISELECT(392,256), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*), ABISELECT(392,256), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*), ABISELECT(400,260), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C12*), ABISELECT(392,256), "S21114C1");
    /*is_ambiguous_... S21114C12::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C12*)(S21114C21*), ABISELECT(392,256), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C12*), ABISELECT(352,224), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C12*), ABISELECT(360,232), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C11*)(S21114C12*), ABISELECT(344,220), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*), ABISELECT(416,268), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(408,264), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*), ABISELECT(408,264), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C8*)(S21114C7*), ABISELECT(408,264), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C7*)(S21114C12*), ABISELECT(408,264), "S21114C1");
    /*is_ambiguous_... S21114C21::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C7*)(S21114C21*), ABISELECT(408,264), "S21114C1");
    /*is_ambiguous_... S21114C12::S21114C7 */ AMB_check_base_class_offset(lv, (S21114C7*)(S21114C12*)(S21114C21*), ABISELECT(408,264), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C14*)(S21114C12*), ABISELECT(384,248), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(376,240), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(368,236), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(368,236), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(368,236), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C7*)(S21114C14*)(S21114C12*), ABISELECT(368,236), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C12 */ AMB_check_base_class_offset(lv, (S28C52_nt*)(S21114C14*)(S21114C12*), ABISELECT(368,236), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C16 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(424,276), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C16 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C16*), ABISELECT(424,276), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C16 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C16*), ABISELECT(432,280), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C16 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C16*), ABISELECT(424,276), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C16*)(S21114C14*)(S21114C12*), ABISELECT(424,276), "S21114C1");
    check_base_class_offset(lv, (S21114C16*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(424,276), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*), ABISELECT(448,288), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*), ABISELECT(456,296), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C11*)(S21114C14*)(S21114C12*), ABISELECT(440,284), "S21114C1");
    /*is_ambiguous_... S21114C17::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C11*)(S21114C17*)(S21114C9*), ABISELECT(440,284), "S21114C1");
    check_base_class_offset(lv, (S21114C11*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(440,284), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C12 */ AMB_check_base_class_offset(lv, (S21114C14*)(S21114C12*), ABISELECT(368,236), "S21114C1");
    check_base_class_offset(lv, (S21114C12*)(S21114C9*), ABISELECT(344,220), "S21114C1");
    check_base_class_offset(lv, (S21114C12*)(S21114C17*)(S21114C9*), ABISELECT(344,220), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*), ABISELECT(464,300), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C8 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C8*), ABISELECT(464,300), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C18 */ AMB_check_base_class_offset(lv, (S21114C8*)(S21114C18*), ABISELECT(464,300), "S21114C1");
    /*is_ambiguous_... S21114C19::S21114C18 */ AMB_check_base_class_offset(lv, (S21114C8*)(S21114C18*)(S21114C19*), ABISELECT(464,300), "S21114C1");
    check_base_class_offset(lv, (S21114C18*)(S21114C17*)(S21114C9*), ABISELECT(464,300), "S21114C1");
    check_base_class_offset(lv, (S21114C18*)(S21114C22*)(S21114C20*)(S21114C19*), ABISELECT(464,300), "S21114C1");
    /*is_ambiguous_... S21114C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(224,144), "S21114C1");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(216,140), "S21114C1");
    check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(216,140), "S21114C1");
    check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(216,140), "S21114C1");
    check_base_class_offset(lv, (S21114C7*)(S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(216,140), "S21114C1");
    check_base_class_offset(lv, (S21114C3*)(S21114C17*)(S21114C9*), ABISELECT(216,140), "S21114C1");
    check_base_class_offset(lv, (S21114C17*)(S21114C9*), ABISELECT(216,140), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C2 */ AMB_check_base_class_offset(lv, (S21114C9*)(S21114C2*), ABISELECT(216,140), "S21114C1");
    check_base_class_offset(lv, (S21114C9*)(S21114C2*)(S21114C20*)(S21114C19*), ABISELECT(216,140), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C2 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C2*), ABISELECT(144,88), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C2 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C2*), ABISELECT(152,96), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C2 */ AMB_check_base_class_offset(lv, (S21114C11*)(S21114C2*), ABISELECT(136,84), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C2 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C2*), ABISELECT(168,108), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C2 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C2*), ABISELECT(168,108), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C2 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C2*), ABISELECT(176,112), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C2 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C2*), ABISELECT(168,108), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C2 */ AMB_check_base_class_offset(lv, (S21114C2*), ABISELECT(136,84), "S21114C1");
    /*is_ambiguous_... S21114C19::S21114C2 */ AMB_check_base_class_offset(lv, (S21114C2*)(S21114C19*), ABISELECT(136,84), "S21114C1");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C16*)(S21114C20*)(S21114C19*), 0, "S21114C1");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C16*)(S21114C20*)(S21114C19*), 0, "S21114C1");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C16*)(S21114C20*)(S21114C19*), ABISELECT(8,4), "S21114C1");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C16*)(S21114C20*)(S21114C19*), 0, "S21114C1");
    /*is_ambiguous_... S21114C20::S21114C16 */ AMB_check_base_class_offset(lv, (S21114C16*)(S21114C20*)(S21114C19*), 0, "S21114C1");
    /*is_ambiguous_... S21114C2::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C2*)(S21114C20*)(S21114C19*), ABISELECT(40,24), "S21114C1");
    /*is_ambiguous_... S21114C2::S21114C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C2*)(S21114C20*)(S21114C19*), ABISELECT(24,12), "S21114C1");
    /*is_ambiguous_... S21114C2::S21114C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C2*)(S21114C20*)(S21114C19*), ABISELECT(32,20), "S21114C1");
    /*is_ambiguous_... S21114C2::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C11*)(S21114C2*)(S21114C20*)(S21114C19*), ABISELECT(16,8), "S21114C1");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C2*)(S21114C20*)(S21114C19*), ABISELECT(48,32), "S21114C1");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C2*)(S21114C20*)(S21114C19*), ABISELECT(48,32), "S21114C1");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C2*)(S21114C20*)(S21114C19*), ABISELECT(56,36), "S21114C1");
    /*is_ambiguous_... S21114C2::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C2*)(S21114C20*)(S21114C19*), ABISELECT(48,32), "S21114C1");
    check_base_class_offset(lv, (S21114C2*)(S21114C20*)(S21114C19*), ABISELECT(16,8), "S21114C1");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C12*)(S21114C21*), ABISELECT(488,312), "S21114C1");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C12*)(S21114C21*), ABISELECT(496,320), "S21114C1");
    /*is_ambiguous_... S21114C12::S21114C11 */ AMB_check_base_class_offset(lv, (S21114C11*)(S21114C12*)(S21114C21*), ABISELECT(480,308), "S21114C1");
    /*is_ambiguous_... S21114C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(520,336), "S21114C1");
    /*is_ambiguous_... S21114C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(512,328), "S21114C1");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(504,324), "S21114C1");
    check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(504,324), "S21114C1");
    check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(504,324), "S21114C1");
    check_base_class_offset(lv, (S21114C7*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(504,324), "S21114C1");
    check_base_class_offset(lv, (S28C52_nt*)(S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(504,324), "S21114C1");
    check_base_class_offset(lv, (S21114C14*)(S21114C12*)(S21114C21*), ABISELECT(504,324), "S21114C1");
    check_base_class_offset(lv, (S21114C12*)(S21114C21*), ABISELECT(480,308), "S21114C1");
    /*is_ambiguous_... S21114C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C3*)(S21114C21*), ABISELECT(536,348), "S21114C1");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*)(S21114C21*), ABISELECT(528,344), "S21114C1");
    check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*)(S21114C21*), ABISELECT(528,344), "S21114C1");
    check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C3*)(S21114C21*), ABISELECT(528,344), "S21114C1");
    check_base_class_offset(lv, (S21114C7*)(S21114C3*)(S21114C21*), ABISELECT(528,344), "S21114C1");
    check_base_class_offset(lv, (S21114C3*)(S21114C21*), ABISELECT(528,344), "S21114C1");
    check_base_class_offset(lv, (S21114C21*)(S21114C20*)(S21114C19*), ABISELECT(480,308), "S21114C1");
    check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C16*)(S21114C23*)(S21114C22*)(S21114C20*)(S21114C19*), ABISELECT(64,40), "S21114C1");
    check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C16*)(S21114C23*)(S21114C22*)(S21114C20*)(S21114C19*), ABISELECT(64,40), "S21114C1");
    /*is_ambiguous_... S21114C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C16*)(S21114C23*)(S21114C22*)(S21114C20*)(S21114C19*), ABISELECT(72,44), "S21114C1");
    check_base_class_offset(lv, (S21114C13*)(S21114C16*)(S21114C23*)(S21114C22*)(S21114C20*)(S21114C19*), ABISELECT(64,40), "S21114C1");
    check_base_class_offset(lv, (S21114C16*)(S21114C23*)(S21114C22*)(S21114C20*)(S21114C19*), ABISELECT(64,40), "S21114C1");
    /*is_ambiguous_... S21114C23::S21114C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C23*)(S21114C22*)(S21114C20*)(S21114C19*), ABISELECT(80,48), "S21114C1");
    /*is_ambiguous_... S21114C23::S21114C4 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C23*)(S21114C22*)(S21114C20*)(S21114C19*), ABISELECT(80,48), "S21114C1");
    /*is_ambiguous_... S21114C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C11*)(S21114C24*), ABISELECT(560,364), "S21114C1");
    /*is_ambiguous_... S21114C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C11*)(S21114C24*), ABISELECT(568,372), "S21114C1");
    check_base_class_offset(lv, (S21114C11*)(S21114C24*), ABISELECT(552,360), "S21114C1");
    check_base_class_offset(lv, (S21114C24*)(S21114C23*)(S21114C22*)(S21114C20*)(S21114C19*), ABISELECT(552,360), "S21114C1");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C13*)(S21114C23*)(S21114C22*)(S21114C20*)(S21114C19*), ABISELECT(88,52), "S21114C1");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C13*)(S21114C23*)(S21114C22*)(S21114C20*)(S21114C19*), ABISELECT(88,52), "S21114C1");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C13*)(S21114C23*)(S21114C22*)(S21114C20*)(S21114C19*), ABISELECT(96,56), "S21114C1");
    /*is_ambiguous_... S21114C23::S21114C13 */ AMB_check_base_class_offset(lv, (S21114C13*)(S21114C23*)(S21114C22*)(S21114C20*)(S21114C19*), ABISELECT(88,52), "S21114C1");
    check_base_class_offset(lv, (S21114C23*)(S21114C22*)(S21114C20*)(S21114C19*), ABISELECT(64,40), "S21114C1");
    check_base_class_offset(lv, (S21114C22*)(S21114C20*)(S21114C19*), ABISELECT(64,40), "S21114C1");
    check_base_class_offset(lv, (S21114C20*)(S21114C19*), 0, "S21114C1");
    /*is_ambiguous_... S21114C19::S21114C18 */ AMB_check_base_class_offset(lv, (S21114C18*)(S21114C19*), ABISELECT(104,64), "S21114C1");
    check_base_class_offset(lv, (S21114C19*), 0, "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S21114C7*)(S21114C3*), ABISELECT(128,76), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(120,72), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C4*)(S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(120,72), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C8*)(S21114C7*)(S21114C3*), ABISELECT(120,72), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C7*)(S21114C3*), ABISELECT(120,72), "S21114C1");
    /*is_ambiguous_... S21114C1::S21114C3 */ AMB_check_base_class_offset(lv, (S21114C3*), ABISELECT(120,72), "S21114C1");
    /*is_ambiguous_... S21114C1::S28C52_nt */ AMB_check_base_class_offset(lv, (S28C52_nt*), 0, "S21114C1");
    test_class_info(&lv, &cd_S21114C1);
    dp->~S21114C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21114C1(Test_S21114C1, "S21114C1", ABISELECT(576,376));

#else // __cplusplus

extern void _ZN8S21114C1C1Ev();
extern void _ZN8S21114C1D2Ev();
Name_Map name_map_S21114C1[] = {
  NSPAIR(_ZN8S21114C1C1Ev),
  NSPAIR(_ZN8S21114C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S21114C3;
extern VTBL_ENTRY _ZTI8S21114C3[];
extern  VTBL_ENTRY _ZTV8S21114C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S21114C10;
extern VTBL_ENTRY _ZTI9S21114C10[];
extern  VTBL_ENTRY _ZTV9S21114C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C10[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S21114C16;
extern VTBL_ENTRY _ZTI9S21114C16[];
extern  VTBL_ENTRY _ZTV9S21114C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C16[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S21114C14;
extern VTBL_ENTRY _ZTI9S21114C14[];
extern  VTBL_ENTRY _ZTV9S21114C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C14[];
extern Class_Descriptor cd_S21114C12;
extern VTBL_ENTRY _ZTI9S21114C12[];
extern  VTBL_ENTRY _ZTV9S21114C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C18;
extern VTBL_ENTRY _ZTI9S21114C18[];
extern  VTBL_ENTRY _ZTV9S21114C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C18[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S21114C3;
extern VTBL_ENTRY _ZTI8S21114C3[];
extern  VTBL_ENTRY _ZTV8S21114C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C3[];
extern Class_Descriptor cd_S21114C17;
extern VTBL_ENTRY _ZTI9S21114C17[];
extern  VTBL_ENTRY _ZTV9S21114C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C17[];
extern Class_Descriptor cd_S21114C9;
extern VTBL_ENTRY _ZTI8S21114C9[];
extern  VTBL_ENTRY _ZTV8S21114C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S21114C2;
extern VTBL_ENTRY _ZTI8S21114C2[];
extern  VTBL_ENTRY _ZTV8S21114C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S21114C16;
extern VTBL_ENTRY _ZTI9S21114C16[];
extern  VTBL_ENTRY _ZTV9S21114C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C16[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S21114C2;
extern VTBL_ENTRY _ZTI8S21114C2[];
extern  VTBL_ENTRY _ZTV8S21114C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C2[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S21114C14;
extern VTBL_ENTRY _ZTI9S21114C14[];
extern  VTBL_ENTRY _ZTV9S21114C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C14[];
extern Class_Descriptor cd_S21114C12;
extern VTBL_ENTRY _ZTI9S21114C12[];
extern  VTBL_ENTRY _ZTV9S21114C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C12[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S21114C3;
extern VTBL_ENTRY _ZTI8S21114C3[];
extern  VTBL_ENTRY _ZTV8S21114C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C3[];
extern Class_Descriptor cd_S21114C21;
extern VTBL_ENTRY _ZTI9S21114C21[];
extern  VTBL_ENTRY _ZTV9S21114C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C21[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S21114C16;
extern VTBL_ENTRY _ZTI9S21114C16[];
extern  VTBL_ENTRY _ZTV9S21114C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C16[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C11;
extern VTBL_ENTRY _ZTI9S21114C11[];
extern  VTBL_ENTRY _ZTV9S21114C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C11[];
extern Class_Descriptor cd_S21114C24;
extern VTBL_ENTRY _ZTI9S21114C24[];
extern  VTBL_ENTRY _ZTV9S21114C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C24[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C13;
extern VTBL_ENTRY _ZTI9S21114C13[];
extern  VTBL_ENTRY _ZTV9S21114C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C13[];
extern Class_Descriptor cd_S21114C23;
extern VTBL_ENTRY _ZTI9S21114C23[];
extern  VTBL_ENTRY _ZTV9S21114C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C23[];
extern Class_Descriptor cd_S21114C22;
extern VTBL_ENTRY _ZTI9S21114C22[];
extern  VTBL_ENTRY _ZTV9S21114C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C22[];
extern Class_Descriptor cd_S21114C20;
extern VTBL_ENTRY _ZTI9S21114C20[];
extern  VTBL_ENTRY _ZTV9S21114C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C20[];
extern Class_Descriptor cd_S21114C18;
extern VTBL_ENTRY _ZTI9S21114C18[];
extern  VTBL_ENTRY _ZTV9S21114C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C18[];
extern Class_Descriptor cd_S21114C19;
extern VTBL_ENTRY _ZTI9S21114C19[];
extern  VTBL_ENTRY _ZTV9S21114C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21114C19[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S21114C4;
extern VTBL_ENTRY _ZTI8S21114C4[];
extern  VTBL_ENTRY _ZTV8S21114C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C4[];
extern Class_Descriptor cd_S21114C8;
extern VTBL_ENTRY _ZTI8S21114C8[];
extern  VTBL_ENTRY _ZTV8S21114C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C8[];
extern Class_Descriptor cd_S21114C7;
extern VTBL_ENTRY _ZTI8S21114C7[];
extern  VTBL_ENTRY _ZTV8S21114C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C7[];
extern Class_Descriptor cd_S21114C3;
extern VTBL_ENTRY _ZTI8S21114C3[];
extern  VTBL_ENTRY _ZTV8S21114C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C3[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
static Base_Class bases_S21114C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(304,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(304,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    99, //bcp->index_in_construction_vtbl_array
    145, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(208,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(184,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    143, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21114C8,    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
    142, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(184,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21114C3,    ABISELECT(184,116), //bcp->offset
    109, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    98, //bcp->index_in_construction_vtbl_array
    140, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    65, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(160,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
    65, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(321,201), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(312,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(320,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
    14, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(304,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    173, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    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
    16, //immediately_derived
  0, 0},
  {&cd_S21114C10,    ABISELECT(304,188), //bcp->offset
    145, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    101, //bcp->index_in_construction_vtbl_array
    172, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    57, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(392,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(392,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    193, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(400,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(392,256), //bcp->offset
    180, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    103, //bcp->index_in_construction_vtbl_array
    192, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(352,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
    23, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(360,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(344,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    177, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(416,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(408,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
    26, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(408,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    196, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(408,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    195, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(408,264), //bcp->offset
    185, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    104, //bcp->index_in_construction_vtbl_array
    194, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(384,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
    44, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(376,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
    34, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(368,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
    32, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(368,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    182, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(368,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    181, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(368,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    180, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(368,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
    44, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(424,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
    37, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(424,276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    199, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(432,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(424,276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    198, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S21114C16,    ABISELECT(424,276), //bcp->offset
    196, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    106, //bcp->index_in_construction_vtbl_array
    197, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(448,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(456,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(440,284), //bcp->offset
    204, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    107, //bcp->index_in_construction_vtbl_array
    201, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S21114C14,    ABISELECT(368,236), //bcp->offset
    169, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    105, //bcp->index_in_construction_vtbl_array
    179, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S21114C12,    ABISELECT(344,220), //bcp->offset
    154, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    102, //bcp->index_in_construction_vtbl_array
    176, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    56, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(464,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(464,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    206, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(464,300), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    109, //bcp->index_in_construction_vtbl_array
    205, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S21114C18,    ABISELECT(464,300), //bcp->offset
    213, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    108, //bcp->index_in_construction_vtbl_array
    203, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    56, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(224,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(216,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(216,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    151, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(216,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    150, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(216,140), //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
    28, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S21114C3,    ABISELECT(216,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    148, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S21114C17,    ABISELECT(216,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S21114C9,    ABISELECT(216,140), //bcp->offset
    123, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    100, //bcp->index_in_construction_vtbl_array
    146, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    65, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    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
    60, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    60, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(136,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(168,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(168,108), //bcp->offset
    105, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    110, //bcp->index_in_construction_vtbl_array
    125, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S21114C2,    ABISELECT(136,84), //bcp->offset
    83, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    97, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21114C4,    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
    49, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21114C13,    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
    50, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S21114C16,    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
    51, //init_seq
    116, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    79, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    74, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    74, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    76, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    78, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(48,32), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    112, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    54, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S21114C2,    ABISELECT(16,8), //bcp->offset
    23, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    111, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    116, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(488,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
    82, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(496,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
    82, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(480,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    209, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    91, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(520,336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    90, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(512,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
    88, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(504,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
    86, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(504,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    214, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    87, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(504,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    213, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    88, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(504,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    212, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    90, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(504,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
    90, //immediately_derived
  0, 0},
  {&cd_S21114C14,    ABISELECT(504,324), //bcp->offset
    235, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    114, //bcp->index_in_construction_vtbl_array
    211, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    91, //immediately_derived
  0, 0},
  {&cd_S21114C12,    ABISELECT(480,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    208, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    98, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(536,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    96, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(528,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    94, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(528,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    227, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    95, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(528,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    226, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    96, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(528,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    225, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    97, //immediately_derived
  0, 0},
  {&cd_S21114C3,    ABISELECT(528,344), //bcp->offset
    246, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    115, //bcp->index_in_construction_vtbl_array
    224, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    98, //immediately_derived
  0, 0},
  {&cd_S21114C21,    ABISELECT(480,308), //bcp->offset
    219, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    113, //bcp->index_in_construction_vtbl_array
    207, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    116, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    100, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    102, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    102, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    57, //init_seq
    103, //immediately_derived
  0, 0},
  {&cd_S21114C16,    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
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    58, //init_seq
    114, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(80,48), //bcp->offset
    59, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    117, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    59, //init_seq
    114, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(560,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
    108, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(568,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
    108, //immediately_derived
  0, 0},
  {&cd_S21114C11,    ABISELECT(552,360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    237, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    109, //immediately_derived
  0, 0},
  {&cd_S21114C24,    ABISELECT(552,360), //bcp->offset
    256, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    118, //bcp->index_in_construction_vtbl_array
    236, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    114, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    111, //immediately_derived
  0, 0},
  {&cd_S21114C4,    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
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    60, //init_seq
    113, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    113, //immediately_derived
  0, 0},
  {&cd_S21114C13,    ABISELECT(88,52), //bcp->offset
    63, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    119, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    61, //init_seq
    114, //immediately_derived
  0, 0},
  {&cd_S21114C23,    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
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    62, //init_seq
    115, //immediately_derived
  0, 0},
  {&cd_S21114C22,    ABISELECT(64,40), //bcp->offset
    47, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    116, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    63, //init_seq
    116, //immediately_derived
  0, 0},
  {&cd_S21114C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    64, //init_seq
    118, //immediately_derived
  0, 0},
  {&cd_S21114C18,    ABISELECT(104,64), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    120, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    65, //init_seq
    118, //immediately_derived
  0, 0},
  {&cd_S21114C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    66, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    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
    123, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    121, //immediately_derived
  0, 0},
  {&cd_S21114C4,    ABISELECT(120,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    67, //init_seq
    122, //immediately_derived
  0, 0},
  {&cd_S21114C8,    ABISELECT(120,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    68, //init_seq
    123, //immediately_derived
  0, 0},
  {&cd_S21114C7,    ABISELECT(120,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    69, //init_seq
    124, //immediately_derived
  0, 0},
  {&cd_S21114C3,    ABISELECT(120,72), //bcp->offset
    73, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    121, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    70, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S28C52_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S21114C1[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void _ZN8S21114C1D1Ev();
extern void _ZN8S21114C1D0Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn16_N8S21114C1D1Ev,_ZThn8_N8S21114C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S21114C1D0Ev,_ZThn8_N8S21114C1D0Ev)();
extern void _ZN8S21114C22v5Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void ABISELECT(_ZThn64_N8S21114C1D1Ev,_ZThn40_N8S21114C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S21114C1D0Ev,_ZThn40_N8S21114C1D0Ev)();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn120_N8S21114C1D1Ev,_ZThn72_N8S21114C1D1Ev)();
extern void ABISELECT(_ZThn120_N8S21114C1D0Ev,_ZThn72_N8S21114C1D0Ev)();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n136_N8S21114C1D1Ev,_ZTv0_n68_N8S21114C1D1Ev)();
extern void ABISELECT(_ZThn136_N8S21114C1D1Ev,_ZThn84_N8S21114C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N8S21114C1D0Ev,_ZTv0_n68_N8S21114C1D0Ev)();
extern void ABISELECT(_ZThn136_N8S21114C1D0Ev,_ZThn84_N8S21114C1D0Ev)() __attribute__((weak));
extern void _ZN8S21114C22v5Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21114C1D1Ev,_ZTv0_n28_N8S21114C1D1Ev)();
extern void ABISELECT(_ZThn184_N8S21114C1D1Ev,_ZThn116_N8S21114C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21114C1D0Ev,_ZTv0_n28_N8S21114C1D0Ev)();
extern void ABISELECT(_ZThn184_N8S21114C1D0Ev,_ZThn116_N8S21114C1D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S21114C1D1Ev,_ZTv0_n60_N8S21114C1D1Ev)();
extern void ABISELECT(_ZThn216_N8S21114C1D1Ev,_ZThn140_N8S21114C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S21114C1D0Ev,_ZTv0_n60_N8S21114C1D0Ev)();
extern void ABISELECT(_ZThn216_N8S21114C1D0Ev,_ZThn140_N8S21114C1D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C1D1Ev,_ZTv0_n24_N8S21114C1D1Ev)();
extern void ABISELECT(_ZThn304_N8S21114C1D1Ev,_ZThn188_N8S21114C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C1D0Ev,_ZTv0_n24_N8S21114C1D0Ev)();
extern void ABISELECT(_ZThn304_N8S21114C1D0Ev,_ZThn188_N8S21114C1D0Ev)() __attribute__((weak));
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S21114C1D1Ev,_ZTv0_n44_N8S21114C1D1Ev)();
extern void ABISELECT(_ZThn344_N8S21114C1D1Ev,_ZThn220_N8S21114C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21114C1D0Ev,_ZTv0_n44_N8S21114C1D0Ev)();
extern void ABISELECT(_ZThn344_N8S21114C1D0Ev,_ZThn220_N8S21114C1D0Ev)() __attribute__((weak));
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S21114C1D1Ev,_ZTvn16_n44_N8S21114C1D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S21114C1D0Ev,_ZTvn16_n44_N8S21114C1D0Ev)();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C1D1Ev,_ZTv0_n24_N8S21114C1D1Ev)();
extern void ABISELECT(_ZThn408_N8S21114C1D1Ev,_ZThn264_N8S21114C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C1D0Ev,_ZTv0_n24_N8S21114C1D0Ev)();
extern void ABISELECT(_ZThn408_N8S21114C1D0Ev,_ZThn264_N8S21114C1D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C1D1Ev,_ZTv0_n24_N8S21114C1D1Ev)();
extern void ABISELECT(_ZThn440_N8S21114C1D1Ev,_ZThn284_N8S21114C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C1D0Ev,_ZTv0_n24_N8S21114C1D0Ev)();
extern void ABISELECT(_ZThn440_N8S21114C1D0Ev,_ZThn284_N8S21114C1D0Ev)() __attribute__((weak));
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S21114C1D1Ev,_ZTv0_n44_N8S21114C1D1Ev)();
extern void ABISELECT(_ZThn480_N8S21114C1D1Ev,_ZThn308_N8S21114C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21114C1D0Ev,_ZTv0_n44_N8S21114C1D0Ev)();
extern void ABISELECT(_ZThn480_N8S21114C1D0Ev,_ZThn308_N8S21114C1D0Ev)() __attribute__((weak));
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S21114C1D1Ev,_ZTvn16_n44_N8S21114C1D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S21114C1D0Ev,_ZTvn16_n44_N8S21114C1D0Ev)();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn48_n88_N8S21114C1D1Ev,_ZTvn36_n44_N8S21114C1D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N8S21114C1D0Ev,_ZTvn36_n44_N8S21114C1D0Ev)();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C1D1Ev,_ZTv0_n24_N8S21114C1D1Ev)();
extern void ABISELECT(_ZThn552_N8S21114C1D1Ev,_ZThn360_N8S21114C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C1D0Ev,_ZTv0_n24_N8S21114C1D0Ev)();
extern void ABISELECT(_ZThn552_N8S21114C1D0Ev,_ZThn360_N8S21114C1D0Ev)() __attribute__((weak));
extern void _ZN9S21114C242v6Ev();
static  VTBL_ENTRY vtc_S21114C1[] = {
  0,
  ABISELECT(136,84),
  ABISELECT(552,360),
  ABISELECT(480,308),
  ABISELECT(464,300),
  ABISELECT(464,300),
  ABISELECT(440,284),
  ABISELECT(424,276),
  ABISELECT(408,264),
  ABISELECT(392,256),
  ABISELECT(344,220),
  ABISELECT(304,188),
  ABISELECT(216,140),
  ABISELECT(208,136),
  ABISELECT(184,116),
  ABISELECT(304,188),
  ABISELECT(200,128),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C1[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  (VTBL_ENTRY)&_ZN8S21114C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C1D0Ev,
  ABISELECT(448,292),
  ABISELECT(448,292),
  ABISELECT(424,276),
  ABISELECT(408,268),
  ABISELECT(392,256),
  ABISELECT(376,248),
  ABISELECT(328,212),
  ABISELECT(288,180),
  ABISELECT(200,132),
  ABISELECT(192,128),
  ABISELECT(168,108),
  ABISELECT(288,180),
  ABISELECT(288,180),
  ABISELECT(184,120),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21114C1[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21114C1D1Ev,_ZThn8_N8S21114C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21114C1D0Ev,_ZThn8_N8S21114C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C22v5Ev,
  ABISELECT(152,96),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S21114C1[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  ABISELECT(400,260),
  ABISELECT(400,260),
  ABISELECT(144,96),
  ABISELECT(488,320),
  ABISELECT(240,148),
  ABISELECT(136,88),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S21114C1[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21114C1D1Ev,_ZThn40_N8S21114C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S21114C1D0Ev,_ZThn40_N8S21114C1D0Ev),
  ABISELECT(120,80),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S21114C1[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  ABISELECT(112,76),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S21114C1[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  ABISELECT(360,236),
  ABISELECT(360,236),
  ABISELECT(96,64),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI8S21114C1[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  ABISELECT(184,116),
  ABISELECT(88,64),
  ABISELECT(80,56),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI8S21114C1[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S21114C1D1Ev,_ZThn72_N8S21114C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N8S21114C1D0Ev,_ZThn72_N8S21114C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
  0,
  ABISELECT(-136,-84),
  ABISELECT(328,216),
  ABISELECT(328,216),
  ABISELECT(304,200),
  ABISELECT(288,192),
  ABISELECT(272,180),
  ABISELECT(256,172),
  ABISELECT(208,136),
  ABISELECT(168,104),
  ABISELECT(80,56),
  ABISELECT(72,52),
  ABISELECT(48,32),
  ABISELECT(168,104),
  ABISELECT(168,104),
  ABISELECT(64,44),
  ABISELECT(-136,-84),
  (VTBL_ENTRY)&(_ZTI8S21114C1[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S21114C1D1Ev,_ZTv0_n68_N8S21114C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N8S21114C1D0Ev,_ZTv0_n68_N8S21114C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C22v5Ev,
  ABISELECT(32,20),
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S21114C1[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  0,
  0,
  ABISELECT(-184,-116),
  0,
  ABISELECT(120,72),
  ABISELECT(24,20),
  ABISELECT(16,12),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI8S21114C1[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21114C1D1Ev,_ZTv0_n28_N8S21114C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21114C1D0Ev,_ZTv0_n28_N8S21114C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
  0,
  0,
  ABISELECT(-216,-140),
  0,
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-16,-12),
  ABISELECT(-216,-140),
  (VTBL_ENTRY)&(_ZTI8S21114C1[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21114C1D1Ev,_ZTv0_n60_N8S21114C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21114C1D0Ev,_ZTv0_n60_N8S21114C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
  ABISELECT(-304,-188),
  0,
  0,
  ABISELECT(-104,-60),
  ABISELECT(-304,-188),
  (VTBL_ENTRY)&(_ZTI8S21114C1[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C1D1Ev,_ZTv0_n24_N8S21114C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C1D0Ev,_ZTv0_n24_N8S21114C1D0Ev),
  ABISELECT(24,16),
  ABISELECT(-344,-220),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-144,-92),
  ABISELECT(-344,-220),
  (VTBL_ENTRY)&(_ZTI8S21114C1[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C1D1Ev,_ZTv0_n44_N8S21114C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C1D0Ev,_ZTv0_n44_N8S21114C1D0Ev),
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-168,-108),
  ABISELECT(-368,-236),
  (VTBL_ENTRY)&(_ZTI8S21114C1[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C1D1Ev,_ZTvn16_n44_N8S21114C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C1D0Ev,_ZTvn16_n44_N8S21114C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  0,
  ABISELECT(-192,-128),
  ABISELECT(-392,-256),
  (VTBL_ENTRY)&(_ZTI8S21114C1[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  0,
  ABISELECT(-408,-264),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-208,-136),
  ABISELECT(-408,-264),
  (VTBL_ENTRY)&(_ZTI8S21114C1[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C1D1Ev,_ZTv0_n24_N8S21114C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C1D0Ev,_ZTv0_n24_N8S21114C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-224,-148),
  ABISELECT(-424,-276),
  (VTBL_ENTRY)&(_ZTI8S21114C1[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  ABISELECT(-440,-284),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-240,-156),
  ABISELECT(-440,-284),
  (VTBL_ENTRY)&(_ZTI8S21114C1[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C1D1Ev,_ZTv0_n24_N8S21114C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C1D0Ev,_ZTv0_n24_N8S21114C1D0Ev),
  0,
  0,
  ABISELECT(-264,-172),
  ABISELECT(-464,-300),
  (VTBL_ENTRY)&(_ZTI8S21114C1[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  ABISELECT(48,36),
  ABISELECT(24,16),
  ABISELECT(-480,-308),
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(-272,-172),
  ABISELECT(-72,-44),
  ABISELECT(-88,-52),
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  ABISELECT(-280,-180),
  ABISELECT(-480,-308),
  (VTBL_ENTRY)&(_ZTI8S21114C1[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C1D1Ev,_ZTv0_n44_N8S21114C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C1D0Ev,_ZTv0_n44_N8S21114C1D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-200,-136),
  ABISELECT(-80,-48),
  ABISELECT(-296,-188),
  ABISELECT(-304,-196),
  ABISELECT(-504,-324),
  (VTBL_ENTRY)&(_ZTI8S21114C1[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C1D1Ev,_ZTvn16_n44_N8S21114C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C1D0Ev,_ZTvn16_n44_N8S21114C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  ABISELECT(-224,-156),
  ABISELECT(-320,-208),
  ABISELECT(-328,-216),
  ABISELECT(-528,-344),
  (VTBL_ENTRY)&(_ZTI8S21114C1[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S21114C1D1Ev,_ZTvn36_n44_N8S21114C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S21114C1D0Ev,_ZTvn36_n44_N8S21114C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
  0,
  ABISELECT(-552,-360),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-352,-232),
  ABISELECT(-552,-360),
  (VTBL_ENTRY)&(_ZTI8S21114C1[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C1D1Ev,_ZTv0_n24_N8S21114C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C1D0Ev,_ZTv0_n24_N8S21114C1D0Ev),
  (VTBL_ENTRY)&_ZN9S21114C242v6Ev,
};
extern VTBL_ENTRY _ZTV8S21114C1[];
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void _ZN9S21114C19D1Ev();
extern void _ZN9S21114C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C19__8S21114C1[] = {
  ABISELECT(136,84),
  ABISELECT(552,360),
  ABISELECT(480,308),
  ABISELECT(464,300),
  ABISELECT(464,300),
  ABISELECT(440,284),
  ABISELECT(424,276),
  ABISELECT(408,264),
  ABISELECT(392,256),
  ABISELECT(344,220),
  ABISELECT(304,188),
  ABISELECT(216,140),
  ABISELECT(208,136),
  ABISELECT(184,116),
  ABISELECT(304,188),
  ABISELECT(200,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  (VTBL_ENTRY)&_ZN9S21114C19D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C19D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void _ZN9S21114C20D1Ev();
extern void _ZN9S21114C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C209S21114C19__8S21114C1[] = {
  ABISELECT(552,360),
  ABISELECT(480,308),
  ABISELECT(464,300),
  ABISELECT(464,300),
  ABISELECT(440,284),
  ABISELECT(424,276),
  ABISELECT(408,264),
  ABISELECT(392,256),
  ABISELECT(344,220),
  ABISELECT(304,188),
  ABISELECT(216,140),
  ABISELECT(208,136),
  ABISELECT(184,116),
  ABISELECT(304,188),
  ABISELECT(200,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  (VTBL_ENTRY)&_ZN9S21114C20D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C20D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C169S21114C209S21114C19__A1__8S21114C1[] = {
  ABISELECT(304,188),
  ABISELECT(200,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C169S21114C209S21114C19__A3__8S21114C1[] = {
  ABISELECT(200,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C139S21114C169S21114C209S21114C19__A9__8S21114C1[] = {
  ABISELECT(200,128),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C169S21114C209S21114C19__A1__8S21114C1[] = {
  0,
  ABISELECT(-104,-60),
  ABISELECT(-304,-188),
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C2D1Ev();
extern void _ZN8S21114C2D0Ev();
extern void _ZN8S21114C22v5Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C29S21114C209S21114C19__A1__8S21114C1[] = {
  ABISELECT(448,292),
  ABISELECT(448,292),
  ABISELECT(424,276),
  ABISELECT(408,268),
  ABISELECT(392,256),
  ABISELECT(376,248),
  ABISELECT(328,212),
  ABISELECT(288,180),
  ABISELECT(200,132),
  ABISELECT(192,128),
  ABISELECT(168,108),
  ABISELECT(288,180),
  ABISELECT(288,180),
  ABISELECT(184,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C22v5Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C118S21114C29S21114C209S21114C19__A4__8S21114C1[] = {
  ABISELECT(288,180),
  ABISELECT(288,180),
  ABISELECT(184,120),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C118S21114C29S21114C209S21114C19__A4__8S21114C1[] = {
  0,
  ABISELECT(-104,-60),
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C138S21114C29S21114C209S21114C19__A4__8S21114C1[] = {
  ABISELECT(152,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C138S21114C29S21114C209S21114C19__A10__8S21114C1[] = {
  ABISELECT(152,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21114C2D1Ev,_ZTv0_n28_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn168_N8S21114C2D1Ev,_ZThn108_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21114C2D0Ev,_ZTv0_n28_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn168_N8S21114C2D0Ev,_ZThn108_N8S21114C2D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C3__8S21114C29S21114C209S21114C19__A1__8S21114C1[] = {
  0,
  0,
  ABISELECT(-168,-108),
  0,
  ABISELECT(120,72),
  ABISELECT(24,20),
  ABISELECT(16,12),
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21114C2D1Ev,_ZTv0_n28_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21114C2D0Ev,_ZTv0_n28_N8S21114C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn288_N8S21114C2D1Ev,_ZThn180_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn288_N8S21114C2D0Ev,_ZThn180_N8S21114C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C10__8S21114C29S21114C209S21114C19__A1__8S21114C1[] = {
  ABISELECT(-288,-180),
  0,
  0,
  ABISELECT(-104,-60),
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S21114C2D1Ev,_ZTv0_n60_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn200_N8S21114C2D1Ev,_ZThn132_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S21114C2D0Ev,_ZTv0_n60_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn200_N8S21114C2D0Ev,_ZThn132_N8S21114C2D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C9__8S21114C29S21114C209S21114C19__A1__8S21114C1[] = {
  0,
  0,
  ABISELECT(-200,-132),
  0,
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-16,-12),
  ABISELECT(-200,-132),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21114C2D1Ev,_ZTv0_n60_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21114C2D0Ev,_ZTv0_n60_N8S21114C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S21114C2D1Ev,_ZTv0_n44_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn328_N8S21114C2D1Ev,_ZThn212_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21114C2D0Ev,_ZTv0_n44_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn328_N8S21114C2D0Ev,_ZThn212_N8S21114C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C12__8S21114C29S21114C209S21114C19__A1__8S21114C1[] = {
  ABISELECT(24,16),
  ABISELECT(-328,-212),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-144,-92),
  ABISELECT(-328,-212),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C2D1Ev,_ZTv0_n44_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C2D0Ev,_ZTv0_n44_N8S21114C2D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__8S21114C29S21114C209S21114C19__A1__8S21114C1[] = {
  0,
  ABISELECT(-192,-128),
  ABISELECT(-376,-248),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn392_N8S21114C2D1Ev,_ZThn256_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn392_N8S21114C2D0Ev,_ZThn256_N8S21114C2D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__A1__8S21114C29S21114C209S21114C19__A1__8S21114C1[] = {
  0,
  ABISELECT(-392,-256),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-208,-136),
  ABISELECT(-392,-256),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S21114C2D1Ev,_ZTvn16_n44_N8S21114C2D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S21114C2D0Ev,_ZTvn16_n44_N8S21114C2D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__8S21114C29S21114C209S21114C19__A1__8S21114C1[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-168,-108),
  ABISELECT(-352,-228),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C2D1Ev,_ZTvn16_n44_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C2D0Ev,_ZTvn16_n44_N8S21114C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__8S21114C29S21114C209S21114C19__A1__8S21114C1[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-224,-148),
  ABISELECT(-408,-268),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn424_N8S21114C2D1Ev,_ZThn276_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn424_N8S21114C2D0Ev,_ZThn276_N8S21114C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__A2__8S21114C29S21114C209S21114C19__A1__8S21114C1[] = {
  ABISELECT(-424,-276),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-240,-156),
  ABISELECT(-424,-276),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__8S21114C29S21114C209S21114C19__A1__8S21114C1[] = {
  0,
  0,
  ABISELECT(-264,-172),
  ABISELECT(-448,-292),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__A__8S21114C29S21114C209S21114C19__A1__8S21114C1[] = {
  ABISELECT(152,96),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void _ZN9S21114C22D1Ev();
extern void _ZN9S21114C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C229S21114C209S21114C19__8S21114C1[] = {
  ABISELECT(400,260),
  ABISELECT(400,260),
  ABISELECT(144,96),
  ABISELECT(488,320),
  ABISELECT(240,148),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C22[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  (VTBL_ENTRY)&_ZN9S21114C22D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C22D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void _ZN9S21114C23D1Ev();
extern void _ZN9S21114C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C239S21114C229S21114C209S21114C19__8S21114C1[] = {
  ABISELECT(488,320),
  ABISELECT(240,148),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C23[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  (VTBL_ENTRY)&_ZN9S21114C23D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C23D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C169S21114C239S21114C229S21114C209S21114C19__A2__8S21114C1[] = {
  ABISELECT(240,148),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C169S21114C239S21114C229S21114C209S21114C19__A5__8S21114C1[] = {
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C139S21114C169S21114C239S21114C229S21114C209S21114C19__A13__8S21114C1[] = {
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C169S21114C239S21114C229S21114C209S21114C19__A2__8S21114C1[] = {
  0,
  ABISELECT(-104,-60),
  ABISELECT(-240,-148),
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C239S21114C229S21114C209S21114C19__A14__8S21114C1[] = {
  ABISELECT(120,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C239S21114C229S21114C209S21114C19__A6__8S21114C1[] = {
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C139S21114C239S21114C229S21114C209S21114C19__A15__8S21114C1[] = {
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C239S21114C229S21114C209S21114C19__8S21114C1[] = {
  0,
  ABISELECT(-104,-60),
  ABISELECT(-240,-148),
  (VTBL_ENTRY)&(_ZTI9S21114C23[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A__9S21114C239S21114C229S21114C209S21114C19__8S21114C1[] = {
  ABISELECT(120,80),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21114C23[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C23D1Ev,_ZTv0_n24_N9S21114C23D1Ev)();
extern void ABISELECT(_ZThn488_N9S21114C23D1Ev,_ZThn320_N9S21114C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C23D0Ev,_ZTv0_n24_N9S21114C23D0Ev)();
extern void ABISELECT(_ZThn488_N9S21114C23D0Ev,_ZThn320_N9S21114C23D0Ev)() __attribute__((weak));
extern void _ZN9S21114C242v6Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C24__9S21114C239S21114C229S21114C209S21114C19__8S21114C1[] = {
  0,
  ABISELECT(-488,-320),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-352,-232),
  ABISELECT(-488,-320),
  (VTBL_ENTRY)&(_ZTI9S21114C23[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C23D1Ev,_ZTv0_n24_N9S21114C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C23D0Ev,_ZTv0_n24_N9S21114C23D0Ev),
  (VTBL_ENTRY)&_ZN9S21114C242v6Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__A1__9S21114C239S21114C229S21114C209S21114C19__8S21114C1[] = {
  ABISELECT(112,76),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21114C23[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C229S21114C209S21114C19__8S21114C1[] = {
  0,
  ABISELECT(-104,-60),
  ABISELECT(-240,-148),
  (VTBL_ENTRY)&(_ZTI9S21114C22[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C23__A2__9S21114C229S21114C209S21114C19__8S21114C1[] = {
  ABISELECT(120,80),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21114C22[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C22D1Ev,_ZTv0_n24_N9S21114C22D1Ev)();
extern void ABISELECT(_ZThn488_N9S21114C22D1Ev,_ZThn320_N9S21114C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C22D0Ev,_ZTv0_n24_N9S21114C22D0Ev)();
extern void ABISELECT(_ZThn488_N9S21114C22D0Ev,_ZThn320_N9S21114C22D0Ev)() __attribute__((weak));
extern void _ZN9S21114C242v6Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C24__9S21114C229S21114C209S21114C19__8S21114C1[] = {
  0,
  ABISELECT(-488,-320),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-352,-232),
  ABISELECT(-488,-320),
  (VTBL_ENTRY)&(_ZTI9S21114C22[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C22D1Ev,_ZTv0_n24_N9S21114C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C22D0Ev,_ZTv0_n24_N9S21114C22D0Ev),
  (VTBL_ENTRY)&_ZN9S21114C242v6Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C23__A1__9S21114C229S21114C209S21114C19__8S21114C1[] = {
  ABISELECT(112,76),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21114C22[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__9S21114C229S21114C209S21114C19__8S21114C1[] = {
  0,
  0,
  ABISELECT(-264,-172),
  ABISELECT(-400,-260),
  (VTBL_ENTRY)&(_ZTI9S21114C22[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn304_N9S21114C20D1Ev,_ZThn188_N9S21114C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev)();
extern void ABISELECT(_ZThn304_N9S21114C20D0Ev,_ZThn188_N9S21114C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C10__9S21114C209S21114C19__8S21114C1[] = {
  ABISELECT(-304,-188),
  0,
  0,
  ABISELECT(-104,-60),
  ABISELECT(-304,-188),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn16_N9S21114C20D1Ev,_ZThn8_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn16_N9S21114C20D0Ev,_ZThn8_N9S21114C20D0Ev)();
extern void _ZN8S21114C22v5Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C2__9S21114C209S21114C19__8S21114C1[] = {
  ABISELECT(448,292),
  ABISELECT(448,292),
  ABISELECT(424,276),
  ABISELECT(408,268),
  ABISELECT(392,256),
  ABISELECT(376,248),
  ABISELECT(328,212),
  ABISELECT(288,180),
  ABISELECT(200,132),
  ABISELECT(192,128),
  ABISELECT(168,108),
  ABISELECT(288,180),
  ABISELECT(288,180),
  ABISELECT(184,120),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21114C20D1Ev,_ZThn8_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21114C20D0Ev,_ZThn8_N9S21114C20D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C22v5Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21114C20D1Ev,_ZTv0_n28_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn184_N9S21114C20D1Ev,_ZThn116_N9S21114C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21114C20D0Ev,_ZTv0_n28_N9S21114C20D0Ev)();
extern void ABISELECT(_ZThn184_N9S21114C20D0Ev,_ZThn116_N9S21114C20D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C3__9S21114C209S21114C19__8S21114C1[] = {
  0,
  0,
  ABISELECT(-184,-116),
  0,
  ABISELECT(120,72),
  ABISELECT(24,20),
  ABISELECT(16,12),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21114C20D1Ev,_ZTv0_n28_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21114C20D0Ev,_ZTv0_n28_N9S21114C20D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n120_N9S21114C20D1Ev,_ZTv0_n60_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn216_N9S21114C20D1Ev,_ZThn140_N9S21114C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S21114C20D0Ev,_ZTv0_n60_N9S21114C20D0Ev)();
extern void ABISELECT(_ZThn216_N9S21114C20D0Ev,_ZThn140_N9S21114C20D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C9__9S21114C209S21114C19__8S21114C1[] = {
  0,
  0,
  ABISELECT(-216,-140),
  0,
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-16,-12),
  ABISELECT(-216,-140),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S21114C20D1Ev,_ZTv0_n60_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S21114C20D0Ev,_ZTv0_n60_N9S21114C20D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21114C20D1Ev,_ZTv0_n44_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn344_N9S21114C20D1Ev,_ZThn220_N9S21114C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21114C20D0Ev,_ZTv0_n44_N9S21114C20D0Ev)();
extern void ABISELECT(_ZThn344_N9S21114C20D0Ev,_ZThn220_N9S21114C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C12__9S21114C209S21114C19__8S21114C1[] = {
  ABISELECT(24,16),
  ABISELECT(-344,-220),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-144,-92),
  ABISELECT(-344,-220),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C20D1Ev,_ZTv0_n44_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C20D0Ev,_ZTv0_n44_N9S21114C20D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__A1__9S21114C209S21114C19__8S21114C1[] = {
  0,
  ABISELECT(-192,-128),
  ABISELECT(-392,-256),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn408_N9S21114C20D1Ev,_ZThn264_N9S21114C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev)();
extern void ABISELECT(_ZThn408_N9S21114C20D0Ev,_ZThn264_N9S21114C20D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__A1__9S21114C209S21114C19__8S21114C1[] = {
  0,
  ABISELECT(-408,-264),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-208,-136),
  ABISELECT(-408,-264),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N9S21114C20D1Ev,_ZTvn16_n44_N9S21114C20D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N9S21114C20D0Ev,_ZTvn16_n44_N9S21114C20D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__9S21114C209S21114C19__8S21114C1[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-168,-108),
  ABISELECT(-368,-236),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C20D1Ev,_ZTvn16_n44_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C20D0Ev,_ZTvn16_n44_N9S21114C20D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__A1__9S21114C209S21114C19__8S21114C1[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-224,-148),
  ABISELECT(-424,-276),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn440_N9S21114C20D1Ev,_ZThn284_N9S21114C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev)();
extern void ABISELECT(_ZThn440_N9S21114C20D0Ev,_ZThn284_N9S21114C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__A2__9S21114C209S21114C19__8S21114C1[] = {
  ABISELECT(-440,-284),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-240,-156),
  ABISELECT(-440,-284),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__9S21114C209S21114C19__8S21114C1[] = {
  0,
  0,
  ABISELECT(-264,-172),
  ABISELECT(-464,-300),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C138S21114C2__A3__9S21114C209S21114C19__8S21114C1[] = {
  ABISELECT(152,96),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21114C20D1Ev,_ZTv0_n44_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn480_N9S21114C20D1Ev,_ZThn308_N9S21114C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21114C20D0Ev,_ZTv0_n44_N9S21114C20D0Ev)();
extern void ABISELECT(_ZThn480_N9S21114C20D0Ev,_ZThn308_N9S21114C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C21__9S21114C209S21114C19__8S21114C1[] = {
  ABISELECT(48,36),
  ABISELECT(24,16),
  ABISELECT(-480,-308),
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(-272,-172),
  ABISELECT(-72,-44),
  ABISELECT(-88,-52),
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  ABISELECT(-280,-180),
  ABISELECT(-480,-308),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C20D1Ev,_ZTv0_n44_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C20D0Ev,_ZTv0_n44_N9S21114C20D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N9S21114C20D1Ev,_ZTvn16_n44_N9S21114C20D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N9S21114C20D0Ev,_ZTvn16_n44_N9S21114C20D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C129S21114C21__A1__9S21114C209S21114C19__8S21114C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-200,-136),
  ABISELECT(-80,-48),
  ABISELECT(-296,-188),
  ABISELECT(-304,-196),
  ABISELECT(-504,-324),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C20D1Ev,_ZTvn16_n44_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C20D0Ev,_ZTvn16_n44_N9S21114C20D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn48_n88_N9S21114C20D1Ev,_ZTvn36_n44_N9S21114C20D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N9S21114C20D0Ev,_ZTvn36_n44_N9S21114C20D0Ev)();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C39S21114C21__A2__9S21114C209S21114C19__8S21114C1[] = {
  ABISELECT(-224,-156),
  ABISELECT(-320,-208),
  ABISELECT(-328,-216),
  ABISELECT(-528,-344),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N9S21114C20D1Ev,_ZTvn36_n44_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N9S21114C20D0Ev,_ZTvn36_n44_N9S21114C20D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void ABISELECT(_ZThn64_N9S21114C20D1Ev,_ZThn40_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S21114C20D0Ev,_ZThn40_N9S21114C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21114C22__9S21114C209S21114C19__8S21114C1[] = {
  ABISELECT(400,260),
  ABISELECT(400,260),
  ABISELECT(144,96),
  ABISELECT(488,320),
  ABISELECT(240,148),
  ABISELECT(136,88),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S21114C20D1Ev,_ZThn40_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S21114C20D0Ev,_ZThn40_N9S21114C20D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C239S21114C22__A13__9S21114C209S21114C19__8S21114C1[] = {
  ABISELECT(120,80),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev)();
extern void ABISELECT(_ZThn552_N9S21114C20D1Ev,_ZThn360_N9S21114C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev)();
extern void ABISELECT(_ZThn552_N9S21114C20D0Ev,_ZThn360_N9S21114C20D0Ev)() __attribute__((weak));
extern void _ZN9S21114C242v6Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C24__9S21114C209S21114C19__8S21114C1[] = {
  0,
  ABISELECT(-552,-360),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-352,-232),
  ABISELECT(-552,-360),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev),
  (VTBL_ENTRY)&_ZN9S21114C242v6Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C239S21114C22__A5__9S21114C209S21114C19__8S21114C1[] = {
  ABISELECT(112,76),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S21114C20[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C189S21114C19__A1__8S21114C1[] = {
  ABISELECT(360,236),
  ABISELECT(360,236),
  ABISELECT(96,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C18[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C8__9S21114C189S21114C19__A1__8S21114C1[] = {
  0,
  ABISELECT(-264,-172),
  ABISELECT(-360,-236),
  (VTBL_ENTRY)&(_ZTI9S21114C18[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C19D1Ev,_ZTv0_n24_N9S21114C19D1Ev)();
extern void ABISELECT(_ZThn304_N9S21114C19D1Ev,_ZThn188_N9S21114C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C19D0Ev,_ZTv0_n24_N9S21114C19D0Ev)();
extern void ABISELECT(_ZThn304_N9S21114C19D0Ev,_ZThn188_N9S21114C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C10__9S21114C19__8S21114C1[] = {
  ABISELECT(-304,-188),
  0,
  0,
  ABISELECT(-104,-60),
  ABISELECT(-304,-188),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C19D1Ev,_ZTv0_n24_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C19D0Ev,_ZTv0_n24_N9S21114C19D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn16_N9S21114C19D1Ev,_ZThn8_N9S21114C19D1Ev)();
extern void ABISELECT(_ZThn16_N9S21114C19D0Ev,_ZThn8_N9S21114C19D0Ev)();
extern void _ZN8S21114C22v5Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C29S21114C20__9S21114C19__8S21114C1[] = {
  ABISELECT(448,292),
  ABISELECT(448,292),
  ABISELECT(424,276),
  ABISELECT(408,268),
  ABISELECT(392,256),
  ABISELECT(376,248),
  ABISELECT(328,212),
  ABISELECT(288,180),
  ABISELECT(200,132),
  ABISELECT(192,128),
  ABISELECT(168,108),
  ABISELECT(288,180),
  ABISELECT(288,180),
  ABISELECT(184,120),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21114C19D1Ev,_ZThn8_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21114C19D0Ev,_ZThn8_N9S21114C19D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C22v5Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21114C19D1Ev,_ZTv0_n28_N9S21114C19D1Ev)();
extern void ABISELECT(_ZThn184_N9S21114C19D1Ev,_ZThn116_N9S21114C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21114C19D0Ev,_ZTv0_n28_N9S21114C19D0Ev)();
extern void ABISELECT(_ZThn184_N9S21114C19D0Ev,_ZThn116_N9S21114C19D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C3__9S21114C19__8S21114C1[] = {
  0,
  0,
  ABISELECT(-184,-116),
  0,
  ABISELECT(120,72),
  ABISELECT(24,20),
  ABISELECT(16,12),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21114C19D1Ev,_ZTv0_n28_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21114C19D0Ev,_ZTv0_n28_N9S21114C19D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n120_N9S21114C19D1Ev,_ZTv0_n60_N9S21114C19D1Ev)();
extern void ABISELECT(_ZThn216_N9S21114C19D1Ev,_ZThn140_N9S21114C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S21114C19D0Ev,_ZTv0_n60_N9S21114C19D0Ev)();
extern void ABISELECT(_ZThn216_N9S21114C19D0Ev,_ZThn140_N9S21114C19D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C9__9S21114C19__8S21114C1[] = {
  0,
  0,
  ABISELECT(-216,-140),
  0,
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-16,-12),
  ABISELECT(-216,-140),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S21114C19D1Ev,_ZTv0_n60_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S21114C19D0Ev,_ZTv0_n60_N9S21114C19D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21114C19D1Ev,_ZTv0_n44_N9S21114C19D1Ev)();
extern void ABISELECT(_ZThn344_N9S21114C19D1Ev,_ZThn220_N9S21114C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21114C19D0Ev,_ZTv0_n44_N9S21114C19D0Ev)();
extern void ABISELECT(_ZThn344_N9S21114C19D0Ev,_ZThn220_N9S21114C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C12__9S21114C19__8S21114C1[] = {
  ABISELECT(24,16),
  ABISELECT(-344,-220),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-144,-92),
  ABISELECT(-344,-220),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C19D1Ev,_ZTv0_n44_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C19D0Ev,_ZTv0_n44_N9S21114C19D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__A1__9S21114C19__8S21114C1[] = {
  0,
  ABISELECT(-192,-128),
  ABISELECT(-392,-256),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C19D1Ev,_ZTv0_n24_N9S21114C19D1Ev)();
extern void ABISELECT(_ZThn408_N9S21114C19D1Ev,_ZThn264_N9S21114C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C19D0Ev,_ZTv0_n24_N9S21114C19D0Ev)();
extern void ABISELECT(_ZThn408_N9S21114C19D0Ev,_ZThn264_N9S21114C19D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__A1__9S21114C19__8S21114C1[] = {
  0,
  ABISELECT(-408,-264),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-208,-136),
  ABISELECT(-408,-264),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C19D1Ev,_ZTv0_n24_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C19D0Ev,_ZTv0_n24_N9S21114C19D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N9S21114C19D1Ev,_ZTvn16_n44_N9S21114C19D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N9S21114C19D0Ev,_ZTvn16_n44_N9S21114C19D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__9S21114C19__8S21114C1[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-168,-108),
  ABISELECT(-368,-236),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C19D1Ev,_ZTvn16_n44_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C19D0Ev,_ZTvn16_n44_N9S21114C19D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__A1__9S21114C19__8S21114C1[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-224,-148),
  ABISELECT(-424,-276),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C19D1Ev,_ZTv0_n24_N9S21114C19D1Ev)();
extern void ABISELECT(_ZThn440_N9S21114C19D1Ev,_ZThn284_N9S21114C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C19D0Ev,_ZTv0_n24_N9S21114C19D0Ev)();
extern void ABISELECT(_ZThn440_N9S21114C19D0Ev,_ZThn284_N9S21114C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__A2__9S21114C19__8S21114C1[] = {
  ABISELECT(-440,-284),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-240,-156),
  ABISELECT(-440,-284),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C19D1Ev,_ZTv0_n24_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C19D0Ev,_ZTv0_n24_N9S21114C19D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__9S21114C19__8S21114C1[] = {
  0,
  0,
  ABISELECT(-264,-172),
  ABISELECT(-464,-300),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C138S21114C29S21114C20__A3__9S21114C19__8S21114C1[] = {
  ABISELECT(152,96),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21114C19D1Ev,_ZTv0_n44_N9S21114C19D1Ev)();
extern void ABISELECT(_ZThn480_N9S21114C19D1Ev,_ZThn308_N9S21114C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21114C19D0Ev,_ZTv0_n44_N9S21114C19D0Ev)();
extern void ABISELECT(_ZThn480_N9S21114C19D0Ev,_ZThn308_N9S21114C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C21__9S21114C19__8S21114C1[] = {
  ABISELECT(48,36),
  ABISELECT(24,16),
  ABISELECT(-480,-308),
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(-272,-172),
  ABISELECT(-72,-44),
  ABISELECT(-88,-52),
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  ABISELECT(-280,-180),
  ABISELECT(-480,-308),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C19D1Ev,_ZTv0_n44_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C19D0Ev,_ZTv0_n44_N9S21114C19D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N9S21114C19D1Ev,_ZTvn16_n44_N9S21114C19D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N9S21114C19D0Ev,_ZTvn16_n44_N9S21114C19D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C129S21114C21__A1__9S21114C19__8S21114C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-200,-136),
  ABISELECT(-80,-48),
  ABISELECT(-296,-188),
  ABISELECT(-304,-196),
  ABISELECT(-504,-324),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C19D1Ev,_ZTvn16_n44_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C19D0Ev,_ZTvn16_n44_N9S21114C19D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn48_n88_N9S21114C19D1Ev,_ZTvn36_n44_N9S21114C19D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N9S21114C19D0Ev,_ZTvn36_n44_N9S21114C19D0Ev)();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C39S21114C21__A2__9S21114C19__8S21114C1[] = {
  ABISELECT(-224,-156),
  ABISELECT(-320,-208),
  ABISELECT(-328,-216),
  ABISELECT(-528,-344),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N9S21114C19D1Ev,_ZTvn36_n44_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N9S21114C19D0Ev,_ZTvn36_n44_N9S21114C19D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
extern void ABISELECT(_ZThn64_N9S21114C19D1Ev,_ZThn40_N9S21114C19D1Ev)();
extern void ABISELECT(_ZThn64_N9S21114C19D0Ev,_ZThn40_N9S21114C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21114C229S21114C20__9S21114C19__8S21114C1[] = {
  ABISELECT(400,260),
  ABISELECT(400,260),
  ABISELECT(144,96),
  ABISELECT(488,320),
  ABISELECT(240,148),
  ABISELECT(136,88),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S21114C19D1Ev,_ZThn40_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S21114C19D0Ev,_ZThn40_N9S21114C19D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C239S21114C229S21114C20__A13__9S21114C19__8S21114C1[] = {
  ABISELECT(120,80),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C19D1Ev,_ZTv0_n24_N9S21114C19D1Ev)();
extern void ABISELECT(_ZThn552_N9S21114C19D1Ev,_ZThn360_N9S21114C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C19D0Ev,_ZTv0_n24_N9S21114C19D0Ev)();
extern void ABISELECT(_ZThn552_N9S21114C19D0Ev,_ZThn360_N9S21114C19D0Ev)() __attribute__((weak));
extern void _ZN9S21114C242v6Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C24__9S21114C19__8S21114C1[] = {
  0,
  ABISELECT(-552,-360),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-352,-232),
  ABISELECT(-552,-360),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C19D1Ev,_ZTv0_n24_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C19D0Ev,_ZTv0_n24_N9S21114C19D0Ev),
  (VTBL_ENTRY)&_ZN9S21114C242v6Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C239S21114C229S21114C20__A5__9S21114C19__8S21114C1[] = {
  ABISELECT(112,76),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__A__9S21114C19__8S21114C1[] = {
  ABISELECT(360,236),
  ABISELECT(360,236),
  ABISELECT(96,64),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n136_N9S21114C19D1Ev,_ZTv0_n68_N9S21114C19D1Ev)();
extern void ABISELECT(_ZThn136_N9S21114C19D1Ev,_ZThn84_N9S21114C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n136_N9S21114C19D0Ev,_ZTv0_n68_N9S21114C19D0Ev)();
extern void ABISELECT(_ZThn136_N9S21114C19D0Ev,_ZThn84_N9S21114C19D0Ev)() __attribute__((weak));
extern void _ZN8S21114C22v5Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C2__A1__9S21114C19__8S21114C1[] = {
  0,
  ABISELECT(-136,-84),
  ABISELECT(328,216),
  ABISELECT(328,216),
  ABISELECT(304,200),
  ABISELECT(288,192),
  ABISELECT(272,180),
  ABISELECT(256,172),
  ABISELECT(208,136),
  ABISELECT(168,104),
  ABISELECT(80,56),
  ABISELECT(72,52),
  ABISELECT(48,32),
  ABISELECT(168,104),
  ABISELECT(168,104),
  ABISELECT(64,44),
  ABISELECT(-136,-84),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N9S21114C19D1Ev,_ZTv0_n68_N9S21114C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n136_N9S21114C19D0Ev,_ZTv0_n68_N9S21114C19D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C22v5Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C138S21114C2__A6__9S21114C19__8S21114C1[] = {
  ABISELECT(32,20),
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI9S21114C19[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C3D1Ev();
extern void _ZN8S21114C3D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C3__A__8S21114C1[] = {
  ABISELECT(184,116),
  ABISELECT(88,64),
  ABISELECT(80,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C78S21114C3__A6__8S21114C1[] = {
  ABISELECT(88,64),
  ABISELECT(80,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C78S21114C3__A7__8S21114C1[] = {
  ABISELECT(80,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C78S21114C3__A16__8S21114C1[] = {
  ABISELECT(80,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__8S21114C3__A__8S21114C1[] = {
  0,
  ABISELECT(-104,-60),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C2D1Ev();
extern void _ZN8S21114C2D0Ev();
extern void _ZN8S21114C22v5Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C2__8S21114C1[] = {
  ABISELECT(328,216),
  ABISELECT(328,216),
  ABISELECT(304,200),
  ABISELECT(288,192),
  ABISELECT(272,180),
  ABISELECT(256,172),
  ABISELECT(208,136),
  ABISELECT(168,104),
  ABISELECT(80,56),
  ABISELECT(72,52),
  ABISELECT(48,32),
  ABISELECT(168,104),
  ABISELECT(168,104),
  ABISELECT(64,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C22v5Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C118S21114C2__A3__8S21114C1[] = {
  ABISELECT(168,104),
  ABISELECT(168,104),
  ABISELECT(64,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C118S21114C2__A3__8S21114C1[] = {
  0,
  ABISELECT(-104,-60),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C138S21114C2__A2__8S21114C1[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C138S21114C2__A8__8S21114C1[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21114C2D1Ev,_ZTv0_n28_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S21114C2D1Ev,_ZThn32_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21114C2D0Ev,_ZTv0_n28_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S21114C2D0Ev,_ZThn32_N8S21114C2D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C3__8S21114C2__8S21114C1[] = {
  0,
  0,
  ABISELECT(-48,-32),
  0,
  ABISELECT(120,72),
  ABISELECT(24,20),
  ABISELECT(16,12),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21114C2D1Ev,_ZTv0_n28_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21114C2D0Ev,_ZTv0_n28_N8S21114C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn168_N8S21114C2D1Ev,_ZThn104_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn168_N8S21114C2D0Ev,_ZThn104_N8S21114C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C10__8S21114C2__8S21114C1[] = {
  ABISELECT(-168,-104),
  0,
  0,
  ABISELECT(-104,-60),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S21114C2D1Ev,_ZTv0_n60_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21114C2D1Ev,_ZThn56_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S21114C2D0Ev,_ZTv0_n60_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21114C2D0Ev,_ZThn56_N8S21114C2D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C9__8S21114C2__8S21114C1[] = {
  0,
  0,
  ABISELECT(-80,-56),
  0,
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-16,-12),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21114C2D1Ev,_ZTv0_n60_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21114C2D0Ev,_ZTv0_n60_N8S21114C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S21114C2D1Ev,_ZTv0_n44_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn208_N8S21114C2D1Ev,_ZThn136_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21114C2D0Ev,_ZTv0_n44_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn208_N8S21114C2D0Ev,_ZThn136_N8S21114C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C12__8S21114C2__8S21114C1[] = {
  ABISELECT(24,16),
  ABISELECT(-208,-136),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-144,-92),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C2D1Ev,_ZTv0_n44_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C2D0Ev,_ZTv0_n44_N8S21114C2D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__8S21114C2__8S21114C1[] = {
  0,
  ABISELECT(-192,-128),
  ABISELECT(-256,-172),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn272_N8S21114C2D1Ev,_ZThn180_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn272_N8S21114C2D0Ev,_ZThn180_N8S21114C2D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__A1__8S21114C2__8S21114C1[] = {
  0,
  ABISELECT(-272,-180),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-208,-136),
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S21114C2D1Ev,_ZTvn16_n44_N8S21114C2D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S21114C2D0Ev,_ZTvn16_n44_N8S21114C2D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__8S21114C2__8S21114C1[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-168,-108),
  ABISELECT(-232,-152),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C2D1Ev,_ZTvn16_n44_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C2D0Ev,_ZTvn16_n44_N8S21114C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__8S21114C2__8S21114C1[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-224,-148),
  ABISELECT(-288,-192),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev)();
extern void ABISELECT(_ZThn304_N8S21114C2D1Ev,_ZThn200_N8S21114C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev)();
extern void ABISELECT(_ZThn304_N8S21114C2D0Ev,_ZThn200_N8S21114C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__A2__8S21114C2__8S21114C1[] = {
  ABISELECT(-304,-200),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-240,-156),
  ABISELECT(-304,-200),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__8S21114C2__8S21114C1[] = {
  0,
  0,
  ABISELECT(-264,-172),
  ABISELECT(-328,-216),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__A__8S21114C2__8S21114C1[] = {
  ABISELECT(32,20),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S21114C2[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C3D1Ev();
extern void _ZN8S21114C3D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C3__8S21114C1[] = {
  ABISELECT(120,72),
  ABISELECT(24,20),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C78S21114C3__8S21114C1[] = {
  ABISELECT(24,20),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C78S21114C3__8S21114C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C78S21114C3__A1__8S21114C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__8S21114C3__8S21114C1[] = {
  0,
  ABISELECT(-104,-60),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__8S21114C1[] = {
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C9D1Ev();
extern void _ZN8S21114C9D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C9__8S21114C1[] = {
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C9D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C17D1Ev();
extern void _ZN9S21114C17D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C178S21114C9__8S21114C1[] = {
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C17D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C3D1Ev();
extern void _ZN8S21114C3D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C39S21114C178S21114C9__A1__8S21114C1[] = {
  ABISELECT(88,48),
  ABISELECT(-8,-4),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C78S21114C39S21114C178S21114C9__A3__8S21114C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C78S21114C39S21114C178S21114C9__A4__8S21114C1[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C78S21114C39S21114C178S21114C9__A7__8S21114C1[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__8S21114C39S21114C178S21114C9__A1__8S21114C1[] = {
  0,
  ABISELECT(-104,-60),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__9S21114C178S21114C9__8S21114C1[] = {
  0,
  0,
  ABISELECT(-264,-172),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C178S21114C9__8S21114C1[] = {
  0,
  ABISELECT(-104,-60),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev)();
extern void ABISELECT(_ZThn224_N9S21114C17D1Ev,_ZThn144_N9S21114C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev)();
extern void ABISELECT(_ZThn224_N9S21114C17D0Ev,_ZThn144_N9S21114C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__9S21114C178S21114C9__8S21114C1[] = {
  ABISELECT(-224,-144),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-240,-156),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S21114C17D1Ev,_ZTv0_n44_N9S21114C17D1Ev)();
extern void ABISELECT(_ZThn128_N9S21114C17D1Ev,_ZThn80_N9S21114C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S21114C17D0Ev,_ZTv0_n44_N9S21114C17D0Ev)();
extern void ABISELECT(_ZThn128_N9S21114C17D0Ev,_ZThn80_N9S21114C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C12__9S21114C178S21114C9__8S21114C1[] = {
  ABISELECT(24,16),
  ABISELECT(-128,-80),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-144,-92),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C17D1Ev,_ZTv0_n44_N9S21114C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S21114C17D0Ev,_ZTv0_n44_N9S21114C17D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__9S21114C178S21114C9__8S21114C1[] = {
  0,
  ABISELECT(-192,-128),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev)();
extern void ABISELECT(_ZThn192_N9S21114C17D1Ev,_ZThn124_N9S21114C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev)();
extern void ABISELECT(_ZThn192_N9S21114C17D0Ev,_ZThn124_N9S21114C17D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__A1__9S21114C178S21114C9__8S21114C1[] = {
  0,
  ABISELECT(-192,-124),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-208,-136),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N9S21114C17D1Ev,_ZTvn16_n44_N9S21114C17D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N9S21114C17D0Ev,_ZTvn16_n44_N9S21114C17D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__9S21114C178S21114C9__8S21114C1[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-168,-108),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C17D1Ev,_ZTvn16_n44_N9S21114C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S21114C17D0Ev,_ZTvn16_n44_N9S21114C17D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C178S21114C9__8S21114C1[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-224,-148),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI9S21114C17[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev)();
extern void ABISELECT(_ZThn88_N8S21114C9D1Ev,_ZThn48_N8S21114C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev)();
extern void ABISELECT(_ZThn88_N8S21114C9D0Ev,_ZThn48_N8S21114C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C10__8S21114C9__8S21114C1[] = {
  ABISELECT(-88,-48),
  0,
  0,
  ABISELECT(-104,-60),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S21114C9D1Ev,_ZTv0_n44_N8S21114C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S21114C9D1Ev,_ZThn80_N8S21114C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S21114C9D0Ev,_ZTv0_n44_N8S21114C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S21114C9D0Ev,_ZThn80_N8S21114C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C12__8S21114C9__8S21114C1[] = {
  ABISELECT(24,16),
  ABISELECT(-128,-80),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-144,-92),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C9D1Ev,_ZTv0_n44_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S21114C9D0Ev,_ZTv0_n44_N8S21114C9D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__8S21114C9__8S21114C1[] = {
  0,
  ABISELECT(-192,-128),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev)();
extern void ABISELECT(_ZThn192_N8S21114C9D1Ev,_ZThn124_N8S21114C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev)();
extern void ABISELECT(_ZThn192_N8S21114C9D0Ev,_ZThn124_N8S21114C9D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__8S21114C9__8S21114C1[] = {
  0,
  ABISELECT(-192,-124),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-208,-136),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S21114C9D1Ev,_ZTvn16_n44_N8S21114C9D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S21114C9D0Ev,_ZTvn16_n44_N8S21114C9D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__8S21114C9__8S21114C1[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-168,-108),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C9D1Ev,_ZTvn16_n44_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S21114C9D0Ev,_ZTvn16_n44_N8S21114C9D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__8S21114C9__8S21114C1[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-224,-148),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev)();
extern void ABISELECT(_ZThn224_N8S21114C9D1Ev,_ZThn144_N8S21114C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev)();
extern void ABISELECT(_ZThn224_N8S21114C9D0Ev,_ZThn144_N8S21114C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__A2__8S21114C9__8S21114C1[] = {
  ABISELECT(-224,-144),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-240,-156),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__8S21114C9__8S21114C1[] = {
  0,
  0,
  ABISELECT(-264,-172),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI8S21114C9[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C10D1Ev();
extern void _ZN9S21114C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C10__8S21114C1[] = {
  0,
  0,
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C10[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C10D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C119S21114C10__8S21114C1[] = {
  0,
  0,
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C12D1Ev();
extern void _ZN9S21114C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C12__8S21114C1[] = {
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-136,-84),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C12D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C119S21114C12__A1__8S21114C1[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C119S21114C12__A1__8S21114C1[] = {
  0,
  ABISELECT(-104,-60),
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C14D1Ev();
extern void _ZN9S21114C14D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__8S21114C1[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-168,-108),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C14D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C79S21114C149S21114C12__A2__8S21114C1[] = {
  ABISELECT(-160,-100),
  ABISELECT(-168,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C79S21114C149S21114C12__A2__8S21114C1[] = {
  ABISELECT(-168,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C79S21114C149S21114C12__A4__8S21114C1[] = {
  ABISELECT(-168,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C149S21114C12__8S21114C1[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-224,-148),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A2__9S21114C149S21114C12__8S21114C1[] = {
  0,
  ABISELECT(-104,-60),
  ABISELECT(64,48),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev)();
extern void ABISELECT(_ZThn72_N9S21114C14D1Ev,_ZThn48_N9S21114C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev)();
extern void ABISELECT(_ZThn72_N9S21114C14D0Ev,_ZThn48_N9S21114C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__9S21114C149S21114C12__8S21114C1[] = {
  ABISELECT(-72,-48),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-240,-156),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__9S21114C12__8S21114C1[] = {
  0,
  ABISELECT(-192,-128),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C12__8S21114C1[] = {
  0,
  ABISELECT(-104,-60),
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S21114C12D1Ev,_ZThn44_N9S21114C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S21114C12D0Ev,_ZThn44_N9S21114C12D0Ev)() __attribute__((weak));
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__9S21114C12__8S21114C1[] = {
  0,
  ABISELECT(-64,-44),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-208,-136),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn24_N9S21114C12D1Ev,_ZThn16_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn24_N9S21114C12D0Ev,_ZThn16_N9S21114C12D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C14__9S21114C12__8S21114C1[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-160,-100),
  ABISELECT(-168,-108),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C12D1Ev,_ZThn16_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C12D0Ev,_ZThn16_N9S21114C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C12__8S21114C1[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-224,-148),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn96_N9S21114C12D1Ev,_ZThn64_N9S21114C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev)();
extern void ABISELECT(_ZThn96_N9S21114C12D0Ev,_ZThn64_N9S21114C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21114C11__A1__9S21114C12__8S21114C1[] = {
  ABISELECT(-96,-64),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-240,-156),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__8S21114C1[] = {
  ABISELECT(-192,-128),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C13__A2__8S21114C1[] = {
  ABISELECT(-192,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__A1__8S21114C1[] = {
  ABISELECT(-200,-128),
  ABISELECT(-208,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C7__A1__8S21114C1[] = {
  ABISELECT(-208,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C7__A3__8S21114C1[] = {
  ABISELECT(-208,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__8S21114C1[] = {
  ABISELECT(-120,-88),
  ABISELECT(-224,-148),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C139S21114C16__A1__8S21114C1[] = {
  ABISELECT(-224,-148),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C13[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C49S21114C139S21114C16__A5__8S21114C1[] = {
  ABISELECT(-224,-148),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C16__8S21114C1[] = {
  0,
  ABISELECT(-104,-60),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI9S21114C16[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C11__A2__8S21114C1[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-240,-156),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C11__A2__8S21114C1[] = {
  0,
  ABISELECT(-104,-60),
  ABISELECT(136,96),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C18__8S21114C1[] = {
  0,
  0,
  ABISELECT(-264,-172),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C18[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C8__A3__8S21114C1[] = {
  ABISELECT(-264,-172),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C8__A6__8S21114C1[] = {
  ABISELECT(-264,-172),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C21D1Ev();
extern void _ZN9S21114C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C21__8S21114C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(-272,-172),
  ABISELECT(-72,-44),
  ABISELECT(-88,-52),
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  ABISELECT(-280,-180),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C21D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C21D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C12D1Ev();
extern void _ZN9S21114C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C129S21114C21__A1__8S21114C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(-272,-172),
  ABISELECT(-72,-44),
  ABISELECT(-88,-52),
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  ABISELECT(-280,-180),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C12D0Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C119S21114C129S21114C21__A5__8S21114C1[] = {
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  ABISELECT(-280,-180),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C119S21114C129S21114C21__A5__8S21114C1[] = {
  0,
  ABISELECT(-104,-60),
  ABISELECT(176,120),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C14D1Ev();
extern void _ZN9S21114C14D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C129S21114C21__A1__8S21114C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-200,-136),
  ABISELECT(-80,-48),
  ABISELECT(-296,-188),
  ABISELECT(-304,-196),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C14D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C79S21114C149S21114C129S21114C21__A4__8S21114C1[] = {
  ABISELECT(-296,-188),
  ABISELECT(-304,-196),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C79S21114C149S21114C129S21114C21__A5__8S21114C1[] = {
  ABISELECT(-304,-196),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C79S21114C149S21114C129S21114C21__A11__8S21114C1[] = {
  ABISELECT(-304,-196),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C149S21114C129S21114C21__A1__8S21114C1[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-224,-148),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A2__9S21114C149S21114C129S21114C21__A1__8S21114C1[] = {
  0,
  ABISELECT(-104,-60),
  ABISELECT(200,136),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21114C11__9S21114C149S21114C129S21114C21__A1__8S21114C1[] = {
  ABISELECT(64,40),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-240,-156),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI9S21114C14[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev),
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__9S21114C129S21114C21__A1__8S21114C1[] = {
  0,
  ABISELECT(-192,-128),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A1__9S21114C129S21114C21__A1__8S21114C1[] = {
  0,
  ABISELECT(-104,-60),
  ABISELECT(176,120),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__9S21114C129S21114C21__A1__8S21114C1[] = {
  0,
  ABISELECT(72,44),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-208,-136),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn24_N9S21114C12D1Ev,_ZThn16_N9S21114C12D1Ev)();
extern void ABISELECT(_ZThn24_N9S21114C12D0Ev,_ZThn16_N9S21114C12D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C14__9S21114C129S21114C21__A1__8S21114C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-200,-136),
  ABISELECT(-80,-48),
  ABISELECT(-296,-188),
  ABISELECT(-304,-196),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C12D1Ev,_ZThn16_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C12D0Ev,_ZThn16_N9S21114C12D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C129S21114C21__A1__8S21114C1[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-224,-148),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21114C11__A1__9S21114C129S21114C21__A1__8S21114C1[] = {
  ABISELECT(40,24),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-240,-156),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S21114C12[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C3D1Ev();
extern void _ZN8S21114C3D0Ev();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C39S21114C21__A2__8S21114C1[] = {
  ABISELECT(-224,-156),
  ABISELECT(-320,-208),
  ABISELECT(-328,-216),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN8S21114C7D1Ev();
extern void _ZN8S21114C7D0Ev();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C78S21114C39S21114C21__A5__8S21114C1[] = {
  ABISELECT(-320,-208),
  ABISELECT(-328,-216),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C7[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21114C7D0Ev,
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C88S21114C78S21114C39S21114C21__A6__8S21114C1[] = {
  ABISELECT(-328,-216),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C8[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C48S21114C88S21114C78S21114C39S21114C21__A12__8S21114C1[] = {
  ABISELECT(-328,-216),
  0,
  (VTBL_ENTRY)&(_ZTI8S21114C4[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__8S21114C39S21114C21__A2__8S21114C1[] = {
  0,
  ABISELECT(-104,-60),
  ABISELECT(224,156),
  (VTBL_ENTRY)&(_ZTI8S21114C3[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C21D1Ev,_ZTv0_n24_N9S21114C21D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21114C21D0Ev,_ZTv0_n24_N9S21114C21D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C7__9S21114C21__8S21114C1[] = {
  0,
  ABISELECT(72,44),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-208,-136),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C21D1Ev,_ZTv0_n24_N9S21114C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C21D0Ev,_ZTv0_n24_N9S21114C21D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C13__9S21114C21__8S21114C1[] = {
  0,
  ABISELECT(-192,-128),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__A2__9S21114C21__8S21114C1[] = {
  0,
  ABISELECT(-104,-60),
  ABISELECT(176,120),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn24_N9S21114C21D1Ev,_ZThn16_N9S21114C21D1Ev)();
extern void ABISELECT(_ZThn24_N9S21114C21D0Ev,_ZThn16_N9S21114C21D0Ev)();
extern void _ZN8S21114C72v3Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C149S21114C12__9S21114C21__8S21114C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-200,-136),
  ABISELECT(-80,-48),
  ABISELECT(-296,-188),
  ABISELECT(-304,-196),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C21D1Ev,_ZThn16_N9S21114C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S21114C21D0Ev,_ZThn16_N9S21114C21D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C162v2Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C16__9S21114C21__8S21114C1[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-224,-148),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C162v2Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21114C21D1Ev,_ZTv0_n24_N9S21114C21D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21114C21D0Ev,_ZTv0_n24_N9S21114C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21114C11__A1__9S21114C21__8S21114C1[] = {
  ABISELECT(40,24),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-240,-156),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C21D1Ev,_ZTv0_n24_N9S21114C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21114C21D0Ev,_ZTv0_n24_N9S21114C21D0Ev),
};
extern void _ZN8S21114C42v1Ev();
extern void ABISELECT(_ZThn48_N9S21114C21D1Ev,_ZThn36_N9S21114C21D1Ev)();
extern void ABISELECT(_ZThn48_N9S21114C21D0Ev,_ZThn36_N9S21114C21D0Ev)();
extern void _ZN8S21114C72v3Ev();
extern void _ZN8S21114C32v4Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C3__9S21114C21__8S21114C1[] = {
  ABISELECT(-224,-156),
  ABISELECT(-320,-208),
  ABISELECT(-328,-216),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S21114C21[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S21114C21D1Ev,_ZThn36_N9S21114C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S21114C21D0Ev,_ZThn36_N9S21114C21D0Ev),
  (VTBL_ENTRY)&_ZN8S21114C72v3Ev,
  (VTBL_ENTRY)&_ZN8S21114C32v4Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C24D1Ev();
extern void _ZN9S21114C24D0Ev();
extern void _ZN9S21114C242v6Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C24__8S21114C1[] = {
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-352,-232),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C24[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C24D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C24D0Ev,
  (VTBL_ENTRY)&_ZN9S21114C242v6Ev,
};
extern void _ZN8S21114C42v1Ev();
extern void _ZN9S21114C11D1Ev();
extern void _ZN9S21114C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21114C119S21114C24__A6__8S21114C1[] = {
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-352,-232),
  0,
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21114C11D0Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C119S21114C24__A6__8S21114C1[] = {
  0,
  ABISELECT(-104,-60),
  ABISELECT(248,172),
  (VTBL_ENTRY)&(_ZTI9S21114C11[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
extern void _ZN8S21114C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21114C4__9S21114C24__8S21114C1[] = {
  0,
  ABISELECT(-104,-60),
  ABISELECT(248,172),
  (VTBL_ENTRY)&(_ZTI9S21114C24[0]),
  (VTBL_ENTRY)&_ZN8S21114C42v1Ev,
};
static  VTT_ENTRY vtt_S21114C1[] = {
  {&(_ZTV8S21114C1[19]),  19,267},
  {&(_tg__ZTV9S21114C19__8S21114C1[18]),  18,22},
  {&(_tg__ZTV9S21114C209S21114C19__8S21114C1[17]),  17,21},
  {&(_tg__ZTV9S21114C169S21114C209S21114C19__A1__8S21114C1[4]),  4,6},
  {&(_tg__ZTV9S21114C139S21114C169S21114C209S21114C19__A3__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C139S21114C169S21114C209S21114C19__A9__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C169S21114C209S21114C19__A1__8S21114C1[4]),  4,5},
  {&(_tg__ZTV8S21114C29S21114C209S21114C19__A1__8S21114C1[16]),  16,20},
  {&(_tg__ZTV9S21114C118S21114C29S21114C209S21114C19__A4__8S21114C1[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C118S21114C29S21114C209S21114C19__A4__8S21114C1[4]),  4,5},
  {&(_tg__ZTV9S21114C138S21114C29S21114C209S21114C19__A4__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C138S21114C29S21114C209S21114C19__A10__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C3__8S21114C29S21114C209S21114C19__A1__8S21114C1[9]),  9,14},
  {&(_tg__ZTV9S21114C10__8S21114C29S21114C209S21114C19__A1__8S21114C1[6]),  6,9},
  {&(_tg__ZTV8S21114C9__8S21114C29S21114C209S21114C19__A1__8S21114C1[17]),  17,22},
  {&(_tg__ZTV9S21114C10__8S21114C29S21114C209S21114C19__A1__8S21114C1[6]),  6,9},
  {&(_tg__ZTV9S21114C12__8S21114C29S21114C209S21114C19__A1__8S21114C1[12]),  12,15},
  {&(_tg__ZTV9S21114C13__8S21114C29S21114C209S21114C19__A1__8S21114C1[4]),  4,5},
  {&(_tg__ZTV8S21114C7__A1__8S21114C29S21114C209S21114C19__A1__8S21114C1[7]),  7,11},
  {&(_tg__ZTV9S21114C149S21114C12__8S21114C29S21114C209S21114C19__A1__8S21114C1[7]),  7,11},
  {&(_tg__ZTV9S21114C16__8S21114C29S21114C209S21114C19__A1__8S21114C1[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A2__8S21114C29S21114C209S21114C19__A1__8S21114C1[6]),  6,9},
  {&(_tg__ZTV9S21114C18__8S21114C29S21114C209S21114C19__A1__8S21114C1[5]),  5,6},
  {&(_tg__ZTV9S21114C18__8S21114C29S21114C209S21114C19__A1__8S21114C1[5]),  5,6},
  {&(_tg__ZTV9S21114C13__A__8S21114C29S21114C209S21114C19__A1__8S21114C1[3]),  3,4},
  {&(_tg__ZTV9S21114C229S21114C209S21114C19__8S21114C1[8]),  8,12},
  {&(_tg__ZTV9S21114C239S21114C229S21114C209S21114C19__8S21114C1[5]),  5,9},
  {&(_tg__ZTV9S21114C169S21114C239S21114C229S21114C209S21114C19__A2__8S21114C1[4]),  4,6},
  {&(_tg__ZTV9S21114C139S21114C169S21114C239S21114C229S21114C209S21114C19__A5__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C139S21114C169S21114C239S21114C229S21114C209S21114C19__A13__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C169S21114C239S21114C229S21114C209S21114C19__A2__8S21114C1[4]),  4,5},
  {&(_tg__ZTV8S21114C49S21114C239S21114C229S21114C209S21114C19__A14__8S21114C1[3]),  3,4},
  {&(_tg__ZTV9S21114C139S21114C239S21114C229S21114C209S21114C19__A6__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C139S21114C239S21114C229S21114C209S21114C19__A15__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C239S21114C229S21114C209S21114C19__8S21114C1[4]),  4,5},
  {&(_tg__ZTV8S21114C4__A__9S21114C239S21114C229S21114C209S21114C19__8S21114C1[3]),  3,4},
  {&(_tg__ZTV9S21114C24__9S21114C239S21114C229S21114C209S21114C19__8S21114C1[7]),  7,11},
  {&(_tg__ZTV9S21114C13__A1__9S21114C239S21114C229S21114C209S21114C19__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C229S21114C209S21114C19__8S21114C1[4]),  4,5},
  {&(_tg__ZTV8S21114C49S21114C23__A2__9S21114C229S21114C209S21114C19__8S21114C1[3]),  3,4},
  {&(_tg__ZTV9S21114C24__9S21114C229S21114C209S21114C19__8S21114C1[7]),  7,11},
  {&(_tg__ZTV9S21114C139S21114C23__A1__9S21114C229S21114C209S21114C19__8S21114C1[3]),  3,4},
  {&(_tg__ZTV9S21114C18__9S21114C229S21114C209S21114C19__8S21114C1[5]),  5,6},
  {&(_tg__ZTV9S21114C18__9S21114C229S21114C209S21114C19__8S21114C1[5]),  5,6},
  {&(_tg__ZTV9S21114C10__9S21114C209S21114C19__8S21114C1[6]),  6,9},
  {&(_tg__ZTV8S21114C2__9S21114C209S21114C19__8S21114C1[16]),  16,20},
  {&(_tg__ZTV8S21114C3__9S21114C209S21114C19__8S21114C1[9]),  9,14},
  {&(_tg__ZTV8S21114C9__9S21114C209S21114C19__8S21114C1[17]),  17,22},
  {&(_tg__ZTV9S21114C10__9S21114C209S21114C19__8S21114C1[6]),  6,9},
  {&(_tg__ZTV9S21114C12__9S21114C209S21114C19__8S21114C1[12]),  12,15},
  {&(_tg__ZTV9S21114C13__A1__9S21114C209S21114C19__8S21114C1[4]),  4,5},
  {&(_tg__ZTV8S21114C7__A1__9S21114C209S21114C19__8S21114C1[7]),  7,11},
  {&(_tg__ZTV9S21114C149S21114C12__9S21114C209S21114C19__8S21114C1[7]),  7,11},
  {&(_tg__ZTV9S21114C16__A1__9S21114C209S21114C19__8S21114C1[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A2__9S21114C209S21114C19__8S21114C1[6]),  6,9},
  {&(_tg__ZTV9S21114C18__9S21114C209S21114C19__8S21114C1[5]),  5,6},
  {&(_tg__ZTV9S21114C18__9S21114C209S21114C19__8S21114C1[5]),  5,6},
  {&(_tg__ZTV9S21114C138S21114C2__A3__9S21114C209S21114C19__8S21114C1[3]),  3,4},
  {&(_tg__ZTV9S21114C21__9S21114C209S21114C19__8S21114C1[13]),  13,16},
  {&(_tg__ZTV9S21114C149S21114C129S21114C21__A1__9S21114C209S21114C19__8S21114C1[7]),  7,11},
  {&(_tg__ZTV8S21114C39S21114C21__A2__9S21114C209S21114C19__8S21114C1[5]),  5,10},
  {&(_tg__ZTV9S21114C22__9S21114C209S21114C19__8S21114C1[8]),  8,12},
  {&(_tg__ZTV8S21114C49S21114C239S21114C22__A13__9S21114C209S21114C19__8S21114C1[3]),  3,4},
  {&(_tg__ZTV9S21114C24__9S21114C209S21114C19__8S21114C1[7]),  7,11},
  {&(_tg__ZTV9S21114C139S21114C239S21114C22__A5__9S21114C209S21114C19__8S21114C1[3]),  3,4},
  {&(_tg__ZTV9S21114C189S21114C19__A1__8S21114C1[5]),  5,6},
  {&(_tg__ZTV8S21114C8__9S21114C189S21114C19__A1__8S21114C1[4]),  4,5},
  {&(_tg__ZTV9S21114C10__9S21114C19__8S21114C1[6]),  6,9},
  {&(_tg__ZTV8S21114C29S21114C20__9S21114C19__8S21114C1[16]),  16,20},
  {&(_tg__ZTV8S21114C3__9S21114C19__8S21114C1[9]),  9,14},
  {&(_tg__ZTV8S21114C9__9S21114C19__8S21114C1[17]),  17,22},
  {&(_tg__ZTV9S21114C10__9S21114C19__8S21114C1[6]),  6,9},
  {&(_tg__ZTV9S21114C12__9S21114C19__8S21114C1[12]),  12,15},
  {&(_tg__ZTV9S21114C13__A1__9S21114C19__8S21114C1[4]),  4,5},
  {&(_tg__ZTV8S21114C7__A1__9S21114C19__8S21114C1[7]),  7,11},
  {&(_tg__ZTV9S21114C149S21114C12__9S21114C19__8S21114C1[7]),  7,11},
  {&(_tg__ZTV9S21114C16__A1__9S21114C19__8S21114C1[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A2__9S21114C19__8S21114C1[6]),  6,9},
  {&(_tg__ZTV9S21114C18__9S21114C19__8S21114C1[5]),  5,6},
  {&(_tg__ZTV9S21114C18__9S21114C19__8S21114C1[5]),  5,6},
  {&(_tg__ZTV9S21114C138S21114C29S21114C20__A3__9S21114C19__8S21114C1[3]),  3,4},
  {&(_tg__ZTV9S21114C21__9S21114C19__8S21114C1[13]),  13,16},
  {&(_tg__ZTV9S21114C149S21114C129S21114C21__A1__9S21114C19__8S21114C1[7]),  7,11},
  {&(_tg__ZTV8S21114C39S21114C21__A2__9S21114C19__8S21114C1[5]),  5,10},
  {&(_tg__ZTV9S21114C229S21114C20__9S21114C19__8S21114C1[8]),  8,12},
  {&(_tg__ZTV8S21114C49S21114C239S21114C229S21114C20__A13__9S21114C19__8S21114C1[3]),  3,4},
  {&(_tg__ZTV9S21114C24__9S21114C19__8S21114C1[7]),  7,11},
  {&(_tg__ZTV9S21114C139S21114C239S21114C229S21114C20__A5__9S21114C19__8S21114C1[3]),  3,4},
  {&(_tg__ZTV9S21114C18__A__9S21114C19__8S21114C1[5]),  5,6},
  {&(_tg__ZTV8S21114C2__A1__9S21114C19__8S21114C1[18]),  18,22},
  {&(_tg__ZTV9S21114C138S21114C2__A6__9S21114C19__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C3__A__8S21114C1[5]),  5,10},
  {&(_tg__ZTV8S21114C78S21114C3__A6__8S21114C1[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C78S21114C3__A7__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C78S21114C3__A16__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C4__8S21114C3__A__8S21114C1[4]),  4,5},
  {&(_ZTV8S21114C1[101]),  101,267},
  {&(_ZTV8S21114C1[118]),  118,267},
  {&(_ZTV8S21114C1[151]),  151,267},
  {&(_ZTV8S21114C1[140]),  140,267},
  {&(_ZTV8S21114C1[151]),  151,267},
  {&(_ZTV8S21114C1[166]),  166,267},
  {&(_ZTV8S21114C1[184]),  184,267},
  {&(_ZTV8S21114C1[192]),  192,267},
  {&(_ZTV8S21114C1[176]),  176,267},
  {&(_ZTV8S21114C1[202]),  202,267},
  {&(_ZTV8S21114C1[210]),  210,267},
  {&(_ZTV8S21114C1[218]),  218,267},
  {&(_ZTV8S21114C1[218]),  218,267},
  {&(_ZTV8S21114C1[108]),  108,267},
  {&(_ZTV8S21114C1[39]),  39,267},
  {&(_ZTV8S21114C1[46]),  46,267},
  {&(_ZTV8S21114C1[232]),  232,267},
  {&(_ZTV8S21114C1[242]),  242,267},
  {&(_ZTV8S21114C1[251]),  251,267},
  {&(_ZTV8S21114C1[55]),  55,267},
  {&(_ZTV8S21114C1[62]),  62,267},
  {&(_ZTV8S21114C1[263]),  263,267},
  {&(_ZTV8S21114C1[66]),  66,267},
  {&(_ZTV8S21114C1[72]),  72,267},
  {&(_ZTV8S21114C1[78]),  78,267},
  {&(_tg__ZTV8S21114C2__8S21114C1[16]),  16,20},
  {&(_tg__ZTV9S21114C118S21114C2__A3__8S21114C1[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C118S21114C2__A3__8S21114C1[4]),  4,5},
  {&(_tg__ZTV9S21114C138S21114C2__A2__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C138S21114C2__A8__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C3__8S21114C2__8S21114C1[9]),  9,14},
  {&(_tg__ZTV9S21114C10__8S21114C2__8S21114C1[6]),  6,9},
  {&(_tg__ZTV8S21114C9__8S21114C2__8S21114C1[17]),  17,22},
  {&(_tg__ZTV9S21114C10__8S21114C2__8S21114C1[6]),  6,9},
  {&(_tg__ZTV9S21114C12__8S21114C2__8S21114C1[12]),  12,15},
  {&(_tg__ZTV9S21114C13__8S21114C2__8S21114C1[4]),  4,5},
  {&(_tg__ZTV8S21114C7__A1__8S21114C2__8S21114C1[7]),  7,11},
  {&(_tg__ZTV9S21114C149S21114C12__8S21114C2__8S21114C1[7]),  7,11},
  {&(_tg__ZTV9S21114C16__8S21114C2__8S21114C1[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A2__8S21114C2__8S21114C1[6]),  6,9},
  {&(_tg__ZTV9S21114C18__8S21114C2__8S21114C1[5]),  5,6},
  {&(_tg__ZTV9S21114C18__8S21114C2__8S21114C1[5]),  5,6},
  {&(_tg__ZTV9S21114C13__A__8S21114C2__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C3__8S21114C1[5]),  5,10},
  {&(_tg__ZTV8S21114C78S21114C3__8S21114C1[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C78S21114C3__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C78S21114C3__A1__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C4__8S21114C3__8S21114C1[4]),  4,5},
  {&(_tg__ZTV8S21114C4__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C9__8S21114C1[13]),  13,18},
  {&(_tg__ZTV9S21114C178S21114C9__8S21114C1[12]),  12,17},
  {&(_tg__ZTV8S21114C39S21114C178S21114C9__A1__8S21114C1[5]),  5,10},
  {&(_tg__ZTV8S21114C78S21114C39S21114C178S21114C9__A3__8S21114C1[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C78S21114C39S21114C178S21114C9__A4__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C78S21114C39S21114C178S21114C9__A7__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C4__8S21114C39S21114C178S21114C9__A1__8S21114C1[4]),  4,5},
  {&(_tg__ZTV9S21114C18__9S21114C178S21114C9__8S21114C1[5]),  5,6},
  {&(_tg__ZTV9S21114C18__9S21114C178S21114C9__8S21114C1[5]),  5,6},
  {&(_tg__ZTV8S21114C4__A1__9S21114C178S21114C9__8S21114C1[4]),  4,5},
  {&(_tg__ZTV9S21114C11__9S21114C178S21114C9__8S21114C1[6]),  6,9},
  {&(_tg__ZTV9S21114C12__9S21114C178S21114C9__8S21114C1[12]),  12,15},
  {&(_tg__ZTV9S21114C13__9S21114C178S21114C9__8S21114C1[4]),  4,5},
  {&(_tg__ZTV8S21114C7__A1__9S21114C178S21114C9__8S21114C1[7]),  7,11},
  {&(_tg__ZTV9S21114C149S21114C12__9S21114C178S21114C9__8S21114C1[7]),  7,11},
  {&(_tg__ZTV9S21114C16__9S21114C178S21114C9__8S21114C1[6]),  6,8},
  {&(_tg__ZTV9S21114C10__8S21114C9__8S21114C1[6]),  6,9},
  {&(_tg__ZTV9S21114C10__8S21114C9__8S21114C1[6]),  6,9},
  {&(_tg__ZTV9S21114C12__8S21114C9__8S21114C1[12]),  12,15},
  {&(_tg__ZTV9S21114C13__8S21114C9__8S21114C1[4]),  4,5},
  {&(_tg__ZTV8S21114C7__8S21114C9__8S21114C1[7]),  7,11},
  {&(_tg__ZTV9S21114C149S21114C12__8S21114C9__8S21114C1[7]),  7,11},
  {&(_tg__ZTV9S21114C16__8S21114C9__8S21114C1[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A2__8S21114C9__8S21114C1[6]),  6,9},
  {&(_tg__ZTV9S21114C18__8S21114C9__8S21114C1[5]),  5,6},
  {&(_tg__ZTV9S21114C18__8S21114C9__8S21114C1[5]),  5,6},
  {&(_tg__ZTV9S21114C10__8S21114C1[5]),  5,8},
  {&(_tg__ZTV9S21114C119S21114C10__8S21114C1[5]),  5,8},
  {&(_tg__ZTV9S21114C119S21114C10__8S21114C1[5]),  5,8},
  {&(_tg__ZTV9S21114C10__8S21114C1[5]),  5,8},
  {&(_tg__ZTV9S21114C12__8S21114C1[10]),  10,13},
  {&(_tg__ZTV9S21114C119S21114C12__A1__8S21114C1[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C119S21114C12__A1__8S21114C1[4]),  4,5},
  {&(_tg__ZTV9S21114C149S21114C12__8S21114C1[7]),  7,11},
  {&(_tg__ZTV8S21114C79S21114C149S21114C12__A2__8S21114C1[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C79S21114C149S21114C12__A2__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C79S21114C149S21114C12__A4__8S21114C1[3]),  3,4},
  {&(_tg__ZTV9S21114C16__9S21114C149S21114C12__8S21114C1[6]),  6,8},
  {&(_tg__ZTV8S21114C4__A2__9S21114C149S21114C12__8S21114C1[4]),  4,5},
  {&(_tg__ZTV9S21114C11__9S21114C149S21114C12__8S21114C1[6]),  6,9},
  {&(_tg__ZTV9S21114C13__9S21114C12__8S21114C1[4]),  4,5},
  {&(_tg__ZTV8S21114C4__A1__9S21114C12__8S21114C1[4]),  4,5},
  {&(_tg__ZTV8S21114C7__9S21114C12__8S21114C1[7]),  7,11},
  {&(_tg__ZTV9S21114C14__9S21114C12__8S21114C1[7]),  7,11},
  {&(_tg__ZTV9S21114C16__9S21114C12__8S21114C1[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A1__9S21114C12__8S21114C1[6]),  6,9},
  {&(_tg__ZTV9S21114C13__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C13__A2__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C7__A1__8S21114C1[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C7__A1__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C7__A3__8S21114C1[3]),  3,4},
  {&(_tg__ZTV9S21114C16__8S21114C1[4]),  4,6},
  {&(_tg__ZTV9S21114C139S21114C16__A1__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C49S21114C139S21114C16__A5__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C4__A1__9S21114C16__8S21114C1[4]),  4,5},
  {&(_tg__ZTV9S21114C11__A2__8S21114C1[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C11__A2__8S21114C1[4]),  4,5},
  {&(_tg__ZTV9S21114C18__8S21114C1[5]),  5,6},
  {&(_tg__ZTV9S21114C18__8S21114C1[5]),  5,6},
  {&(_tg__ZTV8S21114C8__A3__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C8__A6__8S21114C1[3]),  3,4},
  {&(_tg__ZTV9S21114C21__8S21114C1[10]),  10,13},
  {&(_tg__ZTV9S21114C129S21114C21__A1__8S21114C1[10]),  10,13},
  {&(_tg__ZTV9S21114C119S21114C129S21114C21__A5__8S21114C1[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C119S21114C129S21114C21__A5__8S21114C1[4]),  4,5},
  {&(_tg__ZTV9S21114C149S21114C129S21114C21__A1__8S21114C1[7]),  7,11},
  {&(_tg__ZTV8S21114C79S21114C149S21114C129S21114C21__A4__8S21114C1[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C79S21114C149S21114C129S21114C21__A5__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C79S21114C149S21114C129S21114C21__A11__8S21114C1[3]),  3,4},
  {&(_tg__ZTV9S21114C16__9S21114C149S21114C129S21114C21__A1__8S21114C1[6]),  6,8},
  {&(_tg__ZTV8S21114C4__A2__9S21114C149S21114C129S21114C21__A1__8S21114C1[4]),  4,5},
  {&(_tg__ZTV9S21114C11__9S21114C149S21114C129S21114C21__A1__8S21114C1[6]),  6,9},
  {&(_tg__ZTV9S21114C13__9S21114C129S21114C21__A1__8S21114C1[4]),  4,5},
  {&(_tg__ZTV8S21114C4__A1__9S21114C129S21114C21__A1__8S21114C1[4]),  4,5},
  {&(_tg__ZTV8S21114C7__9S21114C129S21114C21__A1__8S21114C1[7]),  7,11},
  {&(_tg__ZTV9S21114C14__9S21114C129S21114C21__A1__8S21114C1[7]),  7,11},
  {&(_tg__ZTV9S21114C16__9S21114C129S21114C21__A1__8S21114C1[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A1__9S21114C129S21114C21__A1__8S21114C1[6]),  6,9},
  {&(_tg__ZTV8S21114C39S21114C21__A2__8S21114C1[5]),  5,10},
  {&(_tg__ZTV8S21114C78S21114C39S21114C21__A5__8S21114C1[4]),  4,8},
  {&(_tg__ZTV8S21114C88S21114C78S21114C39S21114C21__A6__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C48S21114C88S21114C78S21114C39S21114C21__A12__8S21114C1[3]),  3,4},
  {&(_tg__ZTV8S21114C4__8S21114C39S21114C21__A2__8S21114C1[4]),  4,5},
  {&(_tg__ZTV8S21114C7__9S21114C21__8S21114C1[7]),  7,11},
  {&(_tg__ZTV9S21114C13__9S21114C21__8S21114C1[4]),  4,5},
  {&(_tg__ZTV8S21114C4__A2__9S21114C21__8S21114C1[4]),  4,5},
  {&(_tg__ZTV9S21114C149S21114C12__9S21114C21__8S21114C1[7]),  7,11},
  {&(_tg__ZTV9S21114C16__9S21114C21__8S21114C1[6]),  6,8},
  {&(_tg__ZTV9S21114C11__A1__9S21114C21__8S21114C1[6]),  6,9},
  {&(_tg__ZTV8S21114C3__9S21114C21__8S21114C1[5]),  5,10},
  {&(_tg__ZTV9S21114C24__8S21114C1[5]),  5,9},
  {&(_tg__ZTV9S21114C119S21114C24__A6__8S21114C1[5]),  5,8},
  {&(_tg__ZTV8S21114C4__9S21114C119S21114C24__A6__8S21114C1[4]),  4,5},
  {&(_tg__ZTV8S21114C4__9S21114C24__8S21114C1[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S21114C1[];
extern  VTBL_ENTRY _ZTV8S21114C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21114C1[];
static VTBL_ENTRY alt_thunk_names33[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C12D0Ev,_ZTv0_n24_N9S21114C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21114C12D0Ev,_ZThn64_N9S21114C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21114C12D0Ev,_ZThn44_N9S21114C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C12D1Ev,_ZTv0_n24_N9S21114C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21114C12D1Ev,_ZThn64_N9S21114C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21114C12D1Ev,_ZThn44_N9S21114C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C14D0Ev,_ZTv0_n24_N9S21114C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21114C14D0Ev,_ZThn48_N9S21114C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C14D1Ev,_ZTv0_n24_N9S21114C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21114C14D1Ev,_ZThn48_N9S21114C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21114C9D0Ev,_ZTv0_n44_N8S21114C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21114C9D0Ev,_ZThn80_N8S21114C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21114C9D1Ev,_ZTv0_n44_N8S21114C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21114C9D1Ev,_ZThn80_N8S21114C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21114C9D0Ev,_ZTv0_n24_N8S21114C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21114C9D0Ev,_ZThn144_N8S21114C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21114C9D0Ev,_ZThn124_N8S21114C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21114C9D0Ev,_ZThn48_N8S21114C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21114C9D1Ev,_ZTv0_n24_N8S21114C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21114C9D1Ev,_ZThn144_N8S21114C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21114C9D1Ev,_ZThn124_N8S21114C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21114C9D1Ev,_ZThn48_N8S21114C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21114C17D0Ev,_ZTv0_n44_N9S21114C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21114C17D0Ev,_ZThn80_N9S21114C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21114C17D1Ev,_ZTv0_n44_N9S21114C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21114C17D1Ev,_ZThn80_N9S21114C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C17D0Ev,_ZTv0_n24_N9S21114C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21114C17D0Ev,_ZThn124_N9S21114C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21114C17D0Ev,_ZThn144_N9S21114C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C17D1Ev,_ZTv0_n24_N9S21114C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21114C17D1Ev,_ZThn124_N9S21114C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21114C17D1Ev,_ZThn144_N9S21114C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N9S21114C19D0Ev,_ZTv0_n68_N9S21114C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21114C19D0Ev,_ZThn84_N9S21114C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N9S21114C19D1Ev,_ZTv0_n68_N9S21114C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21114C19D1Ev,_ZThn84_N9S21114C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21114C19D0Ev,_ZTv0_n44_N9S21114C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N9S21114C19D0Ev,_ZThn308_N9S21114C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S21114C19D0Ev,_ZThn220_N9S21114C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21114C19D1Ev,_ZTv0_n44_N9S21114C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N9S21114C19D1Ev,_ZThn308_N9S21114C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S21114C19D1Ev,_ZThn220_N9S21114C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S21114C19D0Ev,_ZTv0_n60_N9S21114C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S21114C19D0Ev,_ZThn140_N9S21114C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S21114C19D1Ev,_ZTv0_n60_N9S21114C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S21114C19D1Ev,_ZThn140_N9S21114C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21114C19D0Ev,_ZTv0_n28_N9S21114C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21114C19D0Ev,_ZThn116_N9S21114C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21114C19D1Ev,_ZTv0_n28_N9S21114C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21114C19D1Ev,_ZThn116_N9S21114C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C19D0Ev,_ZTv0_n24_N9S21114C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn552_N9S21114C19D0Ev,_ZThn360_N9S21114C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S21114C19D0Ev,_ZThn284_N9S21114C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S21114C19D0Ev,_ZThn264_N9S21114C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S21114C19D0Ev,_ZThn188_N9S21114C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C19D1Ev,_ZTv0_n24_N9S21114C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn552_N9S21114C19D1Ev,_ZThn360_N9S21114C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S21114C19D1Ev,_ZThn284_N9S21114C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S21114C19D1Ev,_ZThn264_N9S21114C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S21114C19D1Ev,_ZThn188_N9S21114C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21114C20D0Ev,_ZTv0_n44_N9S21114C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N9S21114C20D0Ev,_ZThn308_N9S21114C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S21114C20D0Ev,_ZThn220_N9S21114C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S21114C20D1Ev,_ZTv0_n44_N9S21114C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N9S21114C20D1Ev,_ZThn308_N9S21114C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S21114C20D1Ev,_ZThn220_N9S21114C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S21114C20D0Ev,_ZTv0_n60_N9S21114C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S21114C20D0Ev,_ZThn140_N9S21114C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S21114C20D1Ev,_ZTv0_n60_N9S21114C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S21114C20D1Ev,_ZThn140_N9S21114C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21114C20D0Ev,_ZTv0_n28_N9S21114C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21114C20D0Ev,_ZThn116_N9S21114C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21114C20D1Ev,_ZTv0_n28_N9S21114C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21114C20D1Ev,_ZThn116_N9S21114C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C20D0Ev,_ZTv0_n24_N9S21114C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn552_N9S21114C20D0Ev,_ZThn360_N9S21114C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S21114C20D0Ev,_ZThn284_N9S21114C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S21114C20D0Ev,_ZThn264_N9S21114C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S21114C20D0Ev,_ZThn188_N9S21114C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C20D1Ev,_ZTv0_n24_N9S21114C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn552_N9S21114C20D1Ev,_ZThn360_N9S21114C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S21114C20D1Ev,_ZThn284_N9S21114C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S21114C20D1Ev,_ZThn264_N9S21114C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S21114C20D1Ev,_ZThn188_N9S21114C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C22D0Ev,_ZTv0_n24_N9S21114C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N9S21114C22D0Ev,_ZThn320_N9S21114C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C22D1Ev,_ZTv0_n24_N9S21114C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N9S21114C22D1Ev,_ZThn320_N9S21114C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C23D0Ev,_ZTv0_n24_N9S21114C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N9S21114C23D0Ev,_ZThn320_N9S21114C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21114C23D1Ev,_ZTv0_n24_N9S21114C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N9S21114C23D1Ev,_ZThn320_N9S21114C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21114C2D0Ev,_ZTv0_n44_N8S21114C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21114C2D0Ev,_ZThn136_N8S21114C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S21114C2D0Ev,_ZThn212_N8S21114C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21114C2D1Ev,_ZTv0_n44_N8S21114C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21114C2D1Ev,_ZThn136_N8S21114C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S21114C2D1Ev,_ZThn212_N8S21114C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S21114C2D0Ev,_ZTv0_n60_N8S21114C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21114C2D0Ev,_ZThn56_N8S21114C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21114C2D0Ev,_ZThn132_N8S21114C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S21114C2D1Ev,_ZTv0_n60_N8S21114C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21114C2D1Ev,_ZThn56_N8S21114C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21114C2D1Ev,_ZThn132_N8S21114C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21114C2D0Ev,_ZTv0_n24_N8S21114C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S21114C2D0Ev,_ZThn200_N8S21114C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21114C2D0Ev,_ZThn180_N8S21114C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21114C2D0Ev,_ZThn104_N8S21114C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn424_N8S21114C2D0Ev,_ZThn276_N8S21114C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S21114C2D0Ev,_ZThn256_N8S21114C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21114C2D0Ev,_ZThn180_N8S21114C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21114C2D1Ev,_ZTv0_n24_N8S21114C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S21114C2D1Ev,_ZThn200_N8S21114C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21114C2D1Ev,_ZThn180_N8S21114C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21114C2D1Ev,_ZThn104_N8S21114C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn424_N8S21114C2D1Ev,_ZThn276_N8S21114C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S21114C2D1Ev,_ZThn256_N8S21114C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21114C2D1Ev,_ZThn180_N8S21114C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21114C2D0Ev,_ZTv0_n28_N8S21114C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21114C2D0Ev,_ZThn32_N8S21114C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21114C2D0Ev,_ZThn108_N8S21114C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21114C2D1Ev,_ZTv0_n28_N8S21114C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21114C2D1Ev,_ZThn32_N8S21114C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21114C2D1Ev,_ZThn108_N8S21114C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21114C1D0Ev,_ZTv0_n44_N8S21114C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S21114C1D0Ev,_ZThn308_N8S21114C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S21114C1D0Ev,_ZThn220_N8S21114C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S21114C1D1Ev,_ZTv0_n44_N8S21114C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S21114C1D1Ev,_ZThn308_N8S21114C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S21114C1D1Ev,_ZThn220_N8S21114C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21114C1D0Ev,_ZTv0_n24_N8S21114C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn552_N8S21114C1D0Ev,_ZThn360_N8S21114C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S21114C1D0Ev,_ZThn284_N8S21114C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21114C1D0Ev,_ZThn264_N8S21114C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S21114C1D0Ev,_ZThn188_N8S21114C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21114C1D1Ev,_ZTv0_n24_N8S21114C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn552_N8S21114C1D1Ev,_ZThn360_N8S21114C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S21114C1D1Ev,_ZThn284_N8S21114C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S21114C1D1Ev,_ZThn264_N8S21114C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S21114C1D1Ev,_ZThn188_N8S21114C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S21114C1D0Ev,_ZTv0_n60_N8S21114C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S21114C1D0Ev,_ZThn140_N8S21114C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S21114C1D1Ev,_ZTv0_n60_N8S21114C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S21114C1D1Ev,_ZThn140_N8S21114C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21114C1D0Ev,_ZTv0_n28_N8S21114C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21114C1D0Ev,_ZThn116_N8S21114C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21114C1D1Ev,_ZTv0_n28_N8S21114C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21114C1D1Ev,_ZThn116_N8S21114C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S21114C1D0Ev,_ZTv0_n68_N8S21114C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21114C1D0Ev,_ZThn84_N8S21114C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n136_N8S21114C1D1Ev,_ZTv0_n68_N8S21114C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21114C1D1Ev,_ZThn84_N8S21114C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21114C1 = {  "S21114C1", // class name
  bases_S21114C1, 126,
  &(vtc_S21114C1[0]), // expected_vtbl_contents
  &(vtt_S21114C1[0]), // expected_vtt_contents
  ABISELECT(576,376), // object size
  NSPAIRA(_ZTI8S21114C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21114C1),267, //virtual function table var
  19, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21114C1),239, //virtual table table var
  70, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names33,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3238C3  {
  int s3238c3f0;
  __tsi64 s3238c3f1;
  void *s3238c3f2[4];
  int s3238c3f3[2];
  void *s3238c3f4;
  ::S28C9_nt s3238c3f5;
  void *s3238c3f6[2];
  virtual  ~S3238C3(); // _ZN7S3238C3D1Ev
  virtual void  v4(); // _ZN7S3238C32v4Ev
  virtual void  v5(); // _ZN7S3238C32v5Ev
  virtual void  v6(); // _ZN7S3238C32v6Ev
  virtual void  v7(); // _ZN7S3238C32v7Ev
  virtual void  v8(); // _ZN7S3238C32v8Ev
  virtual void  v9(); // _ZN7S3238C32v9Ev
  virtual void  v10(); // _ZN7S3238C33v10Ev
  virtual void  v11(); // _ZN7S3238C33v11Ev
  virtual void  v12(); // _ZN7S3238C33v12Ev
  virtual void  v13(); // _ZN7S3238C33v13Ev
  virtual void  v14(); // _ZN7S3238C33v14Ev
  virtual void  v15(); // _ZN7S3238C33v15Ev
  virtual void  v16(); // _ZN7S3238C33v16Ev
  virtual void  v17(); // _ZN7S3238C33v17Ev
  virtual void  v18(); // _ZN7S3238C33v18Ev
  virtual void  v19(); // _ZN7S3238C33v19Ev
  virtual void  v20(); // _ZN7S3238C33v20Ev
  virtual void  v21(); // _ZN7S3238C33v21Ev
  virtual void  v22(); // _ZN7S3238C33v22Ev
  virtual void  v23(); // _ZN7S3238C33v23Ev
  virtual void  v24(); // _ZN7S3238C33v24Ev
  virtual void  v25(); // _ZN7S3238C33v25Ev
  virtual void  v26(); // _ZN7S3238C33v26Ev
  virtual void  v27(); // _ZN7S3238C33v27Ev
  virtual void  v28(); // _ZN7S3238C33v28Ev
  virtual void  v29(); // _ZN7S3238C33v29Ev
  virtual void  v30(); // _ZN7S3238C33v30Ev
  virtual void  v31(); // _ZN7S3238C33v31Ev
  virtual void  v32(); // _ZN7S3238C33v32Ev
  virtual void  v33(); // _ZN7S3238C33v33Ev
  virtual void  v34(); // _ZN7S3238C33v34Ev
  virtual void  v35(); // _ZN7S3238C33v35Ev
  virtual void  v36(); // _ZN7S3238C33v36Ev
  virtual void  v37(); // _ZN7S3238C33v37Ev
  virtual void  v38(); // _ZN7S3238C33v38Ev
  virtual void  v39(); // _ZN7S3238C33v39Ev
  virtual void  v40(); // _ZN7S3238C33v40Ev
  virtual void  v41(); // _ZN7S3238C33v41Ev
  virtual void  v42(); // _ZN7S3238C33v42Ev
  virtual void  v43(); // _ZN7S3238C33v43Ev
  virtual void  v44(); // _ZN7S3238C33v44Ev
  virtual void  v45(); // _ZN7S3238C33v45Ev
  virtual void  v46(); // _ZN7S3238C33v46Ev
  virtual void  v47(); // _ZN7S3238C33v47Ev
  virtual void  v48(); // _ZN7S3238C33v48Ev
  virtual void  v49(); // _ZN7S3238C33v49Ev
  virtual void  v50(); // _ZN7S3238C33v50Ev
  virtual void  v51(); // _ZN7S3238C33v51Ev
  virtual void  v52(); // _ZN7S3238C33v52Ev
  virtual void  v53(); // _ZN7S3238C33v53Ev
  virtual void  v54(); // _ZN7S3238C33v54Ev
  virtual void  v55(); // _ZN7S3238C33v55Ev
  virtual void  v56(); // _ZN7S3238C33v56Ev
  virtual void  v57(); // _ZN7S3238C33v57Ev
  virtual void  v58(); // _ZN7S3238C33v58Ev
  virtual void  v59(); // _ZN7S3238C33v59Ev
  virtual void  v60(); // _ZN7S3238C33v60Ev
  virtual void  v61(); // _ZN7S3238C33v61Ev
  virtual void  v62(); // _ZN7S3238C33v62Ev
  virtual void  v63(); // _ZN7S3238C33v63Ev
  virtual void  v64(); // _ZN7S3238C33v64Ev
  virtual void  v65(); // _ZN7S3238C33v65Ev
  virtual void  v66(); // _ZN7S3238C33v66Ev
  virtual void  v67(); // _ZN7S3238C33v67Ev
  S3238C3(); // tgen
};
//SIG(-1 S3238C3) 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]}


 S3238C3 ::~S3238C3(){ note_dtor("S3238C3", this);}
void  S3238C3 ::v4(){vfunc_called(this, "_ZN7S3238C32v4Ev");}
void  S3238C3 ::v5(){vfunc_called(this, "_ZN7S3238C32v5Ev");}
void  S3238C3 ::v6(){vfunc_called(this, "_ZN7S3238C32v6Ev");}
void  S3238C3 ::v7(){vfunc_called(this, "_ZN7S3238C32v7Ev");}
void  S3238C3 ::v8(){vfunc_called(this, "_ZN7S3238C32v8Ev");}
void  S3238C3 ::v9(){vfunc_called(this, "_ZN7S3238C32v9Ev");}
void  S3238C3 ::v10(){vfunc_called(this, "_ZN7S3238C33v10Ev");}
void  S3238C3 ::v11(){vfunc_called(this, "_ZN7S3238C33v11Ev");}
void  S3238C3 ::v12(){vfunc_called(this, "_ZN7S3238C33v12Ev");}
void  S3238C3 ::v13(){vfunc_called(this, "_ZN7S3238C33v13Ev");}
void  S3238C3 ::v14(){vfunc_called(this, "_ZN7S3238C33v14Ev");}
void  S3238C3 ::v15(){vfunc_called(this, "_ZN7S3238C33v15Ev");}
void  S3238C3 ::v16(){vfunc_called(this, "_ZN7S3238C33v16Ev");}
void  S3238C3 ::v17(){vfunc_called(this, "_ZN7S3238C33v17Ev");}
void  S3238C3 ::v18(){vfunc_called(this, "_ZN7S3238C33v18Ev");}
void  S3238C3 ::v19(){vfunc_called(this, "_ZN7S3238C33v19Ev");}
void  S3238C3 ::v20(){vfunc_called(this, "_ZN7S3238C33v20Ev");}
void  S3238C3 ::v21(){vfunc_called(this, "_ZN7S3238C33v21Ev");}
void  S3238C3 ::v22(){vfunc_called(this, "_ZN7S3238C33v22Ev");}
void  S3238C3 ::v23(){vfunc_called(this, "_ZN7S3238C33v23Ev");}
void  S3238C3 ::v24(){vfunc_called(this, "_ZN7S3238C33v24Ev");}
void  S3238C3 ::v25(){vfunc_called(this, "_ZN7S3238C33v25Ev");}
void  S3238C3 ::v26(){vfunc_called(this, "_ZN7S3238C33v26Ev");}
void  S3238C3 ::v27(){vfunc_called(this, "_ZN7S3238C33v27Ev");}
void  S3238C3 ::v28(){vfunc_called(this, "_ZN7S3238C33v28Ev");}
void  S3238C3 ::v29(){vfunc_called(this, "_ZN7S3238C33v29Ev");}
void  S3238C3 ::v30(){vfunc_called(this, "_ZN7S3238C33v30Ev");}
void  S3238C3 ::v31(){vfunc_called(this, "_ZN7S3238C33v31Ev");}
void  S3238C3 ::v32(){vfunc_called(this, "_ZN7S3238C33v32Ev");}
void  S3238C3 ::v33(){vfunc_called(this, "_ZN7S3238C33v33Ev");}
void  S3238C3 ::v34(){vfunc_called(this, "_ZN7S3238C33v34Ev");}
void  S3238C3 ::v35(){vfunc_called(this, "_ZN7S3238C33v35Ev");}
void  S3238C3 ::v36(){vfunc_called(this, "_ZN7S3238C33v36Ev");}
void  S3238C3 ::v37(){vfunc_called(this, "_ZN7S3238C33v37Ev");}
void  S3238C3 ::v38(){vfunc_called(this, "_ZN7S3238C33v38Ev");}
void  S3238C3 ::v39(){vfunc_called(this, "_ZN7S3238C33v39Ev");}
void  S3238C3 ::v40(){vfunc_called(this, "_ZN7S3238C33v40Ev");}
void  S3238C3 ::v41(){vfunc_called(this, "_ZN7S3238C33v41Ev");}
void  S3238C3 ::v42(){vfunc_called(this, "_ZN7S3238C33v42Ev");}
void  S3238C3 ::v43(){vfunc_called(this, "_ZN7S3238C33v43Ev");}
void  S3238C3 ::v44(){vfunc_called(this, "_ZN7S3238C33v44Ev");}
void  S3238C3 ::v45(){vfunc_called(this, "_ZN7S3238C33v45Ev");}
void  S3238C3 ::v46(){vfunc_called(this, "_ZN7S3238C33v46Ev");}
void  S3238C3 ::v47(){vfunc_called(this, "_ZN7S3238C33v47Ev");}
void  S3238C3 ::v48(){vfunc_called(this, "_ZN7S3238C33v48Ev");}
void  S3238C3 ::v49(){vfunc_called(this, "_ZN7S3238C33v49Ev");}
void  S3238C3 ::v50(){vfunc_called(this, "_ZN7S3238C33v50Ev");}
void  S3238C3 ::v51(){vfunc_called(this, "_ZN7S3238C33v51Ev");}
void  S3238C3 ::v52(){vfunc_called(this, "_ZN7S3238C33v52Ev");}
void  S3238C3 ::v53(){vfunc_called(this, "_ZN7S3238C33v53Ev");}
void  S3238C3 ::v54(){vfunc_called(this, "_ZN7S3238C33v54Ev");}
void  S3238C3 ::v55(){vfunc_called(this, "_ZN7S3238C33v55Ev");}
void  S3238C3 ::v56(){vfunc_called(this, "_ZN7S3238C33v56Ev");}
void  S3238C3 ::v57(){vfunc_called(this, "_ZN7S3238C33v57Ev");}
void  S3238C3 ::v58(){vfunc_called(this, "_ZN7S3238C33v58Ev");}
void  S3238C3 ::v59(){vfunc_called(this, "_ZN7S3238C33v59Ev");}
void  S3238C3 ::v60(){vfunc_called(this, "_ZN7S3238C33v60Ev");}
void  S3238C3 ::v61(){vfunc_called(this, "_ZN7S3238C33v61Ev");}
void  S3238C3 ::v62(){vfunc_called(this, "_ZN7S3238C33v62Ev");}
void  S3238C3 ::v63(){vfunc_called(this, "_ZN7S3238C33v63Ev");}
void  S3238C3 ::v64(){vfunc_called(this, "_ZN7S3238C33v64Ev");}
void  S3238C3 ::v65(){vfunc_called(this, "_ZN7S3238C33v65Ev");}
void  S3238C3 ::v66(){vfunc_called(this, "_ZN7S3238C33v66Ev");}
void  S3238C3 ::v67(){vfunc_called(this, "_ZN7S3238C33v67Ev");}
S3238C3 ::S3238C3(){ note_ctor("S3238C3", this);} // tgen

static void Test_S3238C3()
{
  extern Class_Descriptor cd_S3238C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3238C3, buf);
    S3238C3 *dp, &lv = *(dp=new (buf) S3238C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3238C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3238C3)");
    check_field_offset(lv, s3238c3f0, ABISELECT(8,4), "S3238C3.s3238c3f0");
    check_field_offset(lv, s3238c3f1, ABISELECT(16,8), "S3238C3.s3238c3f1");
    check_field_offset(lv, s3238c3f2, ABISELECT(24,16), "S3238C3.s3238c3f2");
    check_field_offset(lv, s3238c3f3, ABISELECT(56,32), "S3238C3.s3238c3f3");
    check_field_offset(lv, s3238c3f4, ABISELECT(64,40), "S3238C3.s3238c3f4");
    check_field_offset(lv, s3238c3f5, ABISELECT(72,44), "S3238C3.s3238c3f5");
    check_field_offset(lv, s3238c3f6, ABISELECT(80,52), "S3238C3.s3238c3f6");
    test_class_info(&lv, &cd_S3238C3);
    dp->~S3238C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3238C3(Test_S3238C3, "S3238C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3238C3C1Ev();
extern void _ZN7S3238C3D1Ev();
Name_Map name_map_S3238C3[] = {
  NSPAIR(_ZN7S3238C3C1Ev),
  NSPAIR(_ZN7S3238C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3238C3[];
extern void _ZN7S3238C3D1Ev();
extern void _ZN7S3238C3D0Ev();
extern void _ZN7S3238C32v4Ev();
extern void _ZN7S3238C32v5Ev();
extern void _ZN7S3238C32v6Ev();
extern void _ZN7S3238C32v7Ev();
extern void _ZN7S3238C32v8Ev();
extern void _ZN7S3238C32v9Ev();
extern void _ZN7S3238C33v10Ev();
extern void _ZN7S3238C33v11Ev();
extern void _ZN7S3238C33v12Ev();
extern void _ZN7S3238C33v13Ev();
extern void _ZN7S3238C33v14Ev();
extern void _ZN7S3238C33v15Ev();
extern void _ZN7S3238C33v16Ev();
extern void _ZN7S3238C33v17Ev();
extern void _ZN7S3238C33v18Ev();
extern void _ZN7S3238C33v19Ev();
extern void _ZN7S3238C33v20Ev();
extern void _ZN7S3238C33v21Ev();
extern void _ZN7S3238C33v22Ev();
extern void _ZN7S3238C33v23Ev();
extern void _ZN7S3238C33v24Ev();
extern void _ZN7S3238C33v25Ev();
extern void _ZN7S3238C33v26Ev();
extern void _ZN7S3238C33v27Ev();
extern void _ZN7S3238C33v28Ev();
extern void _ZN7S3238C33v29Ev();
extern void _ZN7S3238C33v30Ev();
extern void _ZN7S3238C33v31Ev();
extern void _ZN7S3238C33v32Ev();
extern void _ZN7S3238C33v33Ev();
extern void _ZN7S3238C33v34Ev();
extern void _ZN7S3238C33v35Ev();
extern void _ZN7S3238C33v36Ev();
extern void _ZN7S3238C33v37Ev();
extern void _ZN7S3238C33v38Ev();
extern void _ZN7S3238C33v39Ev();
extern void _ZN7S3238C33v40Ev();
extern void _ZN7S3238C33v41Ev();
extern void _ZN7S3238C33v42Ev();
extern void _ZN7S3238C33v43Ev();
extern void _ZN7S3238C33v44Ev();
extern void _ZN7S3238C33v45Ev();
extern void _ZN7S3238C33v46Ev();
extern void _ZN7S3238C33v47Ev();
extern void _ZN7S3238C33v48Ev();
extern void _ZN7S3238C33v49Ev();
extern void _ZN7S3238C33v50Ev();
extern void _ZN7S3238C33v51Ev();
extern void _ZN7S3238C33v52Ev();
extern void _ZN7S3238C33v53Ev();
extern void _ZN7S3238C33v54Ev();
extern void _ZN7S3238C33v55Ev();
extern void _ZN7S3238C33v56Ev();
extern void _ZN7S3238C33v57Ev();
extern void _ZN7S3238C33v58Ev();
extern void _ZN7S3238C33v59Ev();
extern void _ZN7S3238C33v60Ev();
extern void _ZN7S3238C33v61Ev();
extern void _ZN7S3238C33v62Ev();
extern void _ZN7S3238C33v63Ev();
extern void _ZN7S3238C33v64Ev();
extern void _ZN7S3238C33v65Ev();
extern void _ZN7S3238C33v66Ev();
extern void _ZN7S3238C33v67Ev();
static  VTBL_ENTRY vtc_S3238C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3238C3[0]),
  (VTBL_ENTRY)&_ZN7S3238C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3238C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3238C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3238C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3238C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3238C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3238C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3238C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v67Ev,
};
extern VTBL_ENTRY _ZTI7S3238C3[];
extern  VTBL_ENTRY _ZTV7S3238C3[];
Class_Descriptor cd_S3238C3 = {  "S3238C3", // class name
  0,0,//no base classes
  &(vtc_S3238C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3238C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3238C3),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  S3238C2  : S3238C3 {
  void *s3238c2f0;
  ::S28C31_nt s3238c2f1;
  int s3238c2f2;
  void *s3238c2f3;
  unsigned int s3238c2f4:1;
  ::S28C31_nt s3238c2f5;
  virtual  ~S3238C2(); // _ZN7S3238C2D1Ev
  virtual void  v68(); // _ZN7S3238C23v68Ev
  virtual void  v69(); // _ZN7S3238C23v69Ev
  virtual void  v70(); // _ZN7S3238C23v70Ev
  virtual void  v71(); // _ZN7S3238C23v71Ev
  virtual void  v72(); // _ZN7S3238C23v72Ev
  virtual void  v73(); // _ZN7S3238C23v73Ev
  virtual void  v74(); // _ZN7S3238C23v74Ev
  virtual void  v75(); // _ZN7S3238C23v75Ev
  S3238C2(); // tgen
};
//SIG(-1 S3238C2) C1{ BC2{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 Fp FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC4}


 S3238C2 ::~S3238C2(){ note_dtor("S3238C2", this);}
void  S3238C2 ::v68(){vfunc_called(this, "_ZN7S3238C23v68Ev");}
void  S3238C2 ::v69(){vfunc_called(this, "_ZN7S3238C23v69Ev");}
void  S3238C2 ::v70(){vfunc_called(this, "_ZN7S3238C23v70Ev");}
void  S3238C2 ::v71(){vfunc_called(this, "_ZN7S3238C23v71Ev");}
void  S3238C2 ::v72(){vfunc_called(this, "_ZN7S3238C23v72Ev");}
void  S3238C2 ::v73(){vfunc_called(this, "_ZN7S3238C23v73Ev");}
void  S3238C2 ::v74(){vfunc_called(this, "_ZN7S3238C23v74Ev");}
void  S3238C2 ::v75(){vfunc_called(this, "_ZN7S3238C23v75Ev");}
S3238C2 ::S3238C2(){ note_ctor("S3238C2", this);} // tgen

static void Test_S3238C2()
{
  extern Class_Descriptor cd_S3238C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,26)];
    init_test(&cd_S3238C2, buf);
    S3238C2 *dp, &lv = *(dp=new (buf) S3238C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,100), "sizeof(S3238C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3238C2)");
    check_base_class_offset(lv, (S3238C3*), 0, "S3238C2");
    check_field_offset(lv, s3238c2f0, ABISELECT(96,60), "S3238C2.s3238c2f0");
    check_field_offset(lv, s3238c2f1, ABISELECT(104,64), "S3238C2.s3238c2f1");
    check_field_offset(lv, s3238c2f2, ABISELECT(120,76), "S3238C2.s3238c2f2");
    check_field_offset(lv, s3238c2f3, ABISELECT(128,80), "S3238C2.s3238c2f3");
    set_bf_and_test(lv, s3238c2f4, ABISELECT(136,84), 0, 1, 1, "S3238C2");
    check_field_offset(lv, s3238c2f5, ABISELECT(144,88), "S3238C2.s3238c2f5");
    test_class_info(&lv, &cd_S3238C2);
    dp->~S3238C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3238C2(Test_S3238C2, "S3238C2", ABISELECT(160,100));

#else // __cplusplus

extern void _ZN7S3238C2C1Ev();
extern void _ZN7S3238C2D1Ev();
Name_Map name_map_S3238C2[] = {
  NSPAIR(_ZN7S3238C2C1Ev),
  NSPAIR(_ZN7S3238C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3238C3;
extern VTBL_ENTRY _ZTI7S3238C3[];
extern  VTBL_ENTRY _ZTV7S3238C3[];
static Base_Class bases_S3238C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3238C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3238C2[];
extern void _ZN7S3238C2D1Ev();
extern void _ZN7S3238C2D0Ev();
extern void _ZN7S3238C32v4Ev();
extern void _ZN7S3238C32v5Ev();
extern void _ZN7S3238C32v6Ev();
extern void _ZN7S3238C32v7Ev();
extern void _ZN7S3238C32v8Ev();
extern void _ZN7S3238C32v9Ev();
extern void _ZN7S3238C33v10Ev();
extern void _ZN7S3238C33v11Ev();
extern void _ZN7S3238C33v12Ev();
extern void _ZN7S3238C33v13Ev();
extern void _ZN7S3238C33v14Ev();
extern void _ZN7S3238C33v15Ev();
extern void _ZN7S3238C33v16Ev();
extern void _ZN7S3238C33v17Ev();
extern void _ZN7S3238C33v18Ev();
extern void _ZN7S3238C33v19Ev();
extern void _ZN7S3238C33v20Ev();
extern void _ZN7S3238C33v21Ev();
extern void _ZN7S3238C33v22Ev();
extern void _ZN7S3238C33v23Ev();
extern void _ZN7S3238C33v24Ev();
extern void _ZN7S3238C33v25Ev();
extern void _ZN7S3238C33v26Ev();
extern void _ZN7S3238C33v27Ev();
extern void _ZN7S3238C33v28Ev();
extern void _ZN7S3238C33v29Ev();
extern void _ZN7S3238C33v30Ev();
extern void _ZN7S3238C33v31Ev();
extern void _ZN7S3238C33v32Ev();
extern void _ZN7S3238C33v33Ev();
extern void _ZN7S3238C33v34Ev();
extern void _ZN7S3238C33v35Ev();
extern void _ZN7S3238C33v36Ev();
extern void _ZN7S3238C33v37Ev();
extern void _ZN7S3238C33v38Ev();
extern void _ZN7S3238C33v39Ev();
extern void _ZN7S3238C33v40Ev();
extern void _ZN7S3238C33v41Ev();
extern void _ZN7S3238C33v42Ev();
extern void _ZN7S3238C33v43Ev();
extern void _ZN7S3238C33v44Ev();
extern void _ZN7S3238C33v45Ev();
extern void _ZN7S3238C33v46Ev();
extern void _ZN7S3238C33v47Ev();
extern void _ZN7S3238C33v48Ev();
extern void _ZN7S3238C33v49Ev();
extern void _ZN7S3238C33v50Ev();
extern void _ZN7S3238C33v51Ev();
extern void _ZN7S3238C33v52Ev();
extern void _ZN7S3238C33v53Ev();
extern void _ZN7S3238C33v54Ev();
extern void _ZN7S3238C33v55Ev();
extern void _ZN7S3238C33v56Ev();
extern void _ZN7S3238C33v57Ev();
extern void _ZN7S3238C33v58Ev();
extern void _ZN7S3238C33v59Ev();
extern void _ZN7S3238C33v60Ev();
extern void _ZN7S3238C33v61Ev();
extern void _ZN7S3238C33v62Ev();
extern void _ZN7S3238C33v63Ev();
extern void _ZN7S3238C33v64Ev();
extern void _ZN7S3238C33v65Ev();
extern void _ZN7S3238C33v66Ev();
extern void _ZN7S3238C33v67Ev();
extern void _ZN7S3238C23v68Ev();
extern void _ZN7S3238C23v69Ev();
extern void _ZN7S3238C23v70Ev();
extern void _ZN7S3238C23v71Ev();
extern void _ZN7S3238C23v72Ev();
extern void _ZN7S3238C23v73Ev();
extern void _ZN7S3238C23v74Ev();
extern void _ZN7S3238C23v75Ev();
static  VTBL_ENTRY vtc_S3238C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3238C2[0]),
  (VTBL_ENTRY)&_ZN7S3238C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3238C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3238C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3238C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3238C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3238C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3238C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3238C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3238C23v68Ev,
  (VTBL_ENTRY)&_ZN7S3238C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3238C23v70Ev,
  (VTBL_ENTRY)&_ZN7S3238C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3238C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3238C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3238C23v74Ev,
  (VTBL_ENTRY)&_ZN7S3238C23v75Ev,
};
extern VTBL_ENTRY _ZTI7S3238C2[];
extern  VTBL_ENTRY _ZTV7S3238C2[];
Class_Descriptor cd_S3238C2 = {  "S3238C2", // class name
  bases_S3238C2, 1,
  &(vtc_S3238C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,100), // object size
  NSPAIRA(_ZTI7S3238C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3238C2),76, //virtual function table var
  2, // 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  S3238C1  : S3238C2 {
  void *s3238c1f0;
  virtual  ~S3238C1(); // _ZN7S3238C1D1Ev
  virtual void  v1(); // _ZN7S3238C12v1Ev
  virtual void  v2(); // _ZN7S3238C12v2Ev
  virtual void  v3(); // _ZN7S3238C12v3Ev
  S3238C1(); // tgen
};
//SIG(1 S3238C1) C1{ BC2{ BC3{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v68 v69 v70 v71 v72 v73 v74 v75 Fp FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC5} vd v1 v2 v3 Fp}


 S3238C1 ::~S3238C1(){ note_dtor("S3238C1", this);}
void  S3238C1 ::v1(){vfunc_called(this, "_ZN7S3238C12v1Ev");}
void  S3238C1 ::v2(){vfunc_called(this, "_ZN7S3238C12v2Ev");}
void  S3238C1 ::v3(){vfunc_called(this, "_ZN7S3238C12v3Ev");}
S3238C1 ::S3238C1(){ note_ctor("S3238C1", this);} // tgen

static void Test_S3238C1()
{
  extern Class_Descriptor cd_S3238C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,27)];
    init_test(&cd_S3238C1, buf);
    S3238C1 *dp, &lv = *(dp=new (buf) S3238C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,104), "sizeof(S3238C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3238C1)");
    check_base_class_offset(lv, (S3238C3*)(S3238C2*), 0, "S3238C1");
    check_base_class_offset(lv, (S3238C2*), 0, "S3238C1");
    check_field_offset(lv, s3238c1f0, ABISELECT(160,100), "S3238C1.s3238c1f0");
    test_class_info(&lv, &cd_S3238C1);
    dp->~S3238C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3238C1(Test_S3238C1, "S3238C1", ABISELECT(168,104));

#else // __cplusplus

extern void _ZN7S3238C1C1Ev();
extern void _ZN7S3238C1D1Ev();
Name_Map name_map_S3238C1[] = {
  NSPAIR(_ZN7S3238C1C1Ev),
  NSPAIR(_ZN7S3238C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3238C3;
extern VTBL_ENTRY _ZTI7S3238C3[];
extern  VTBL_ENTRY _ZTV7S3238C3[];
extern Class_Descriptor cd_S3238C2;
extern VTBL_ENTRY _ZTI7S3238C2[];
extern  VTBL_ENTRY _ZTV7S3238C2[];
static Base_Class bases_S3238C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3238C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3238C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3238C1[];
extern void _ZN7S3238C1D1Ev();
extern void _ZN7S3238C1D0Ev();
extern void _ZN7S3238C32v4Ev();
extern void _ZN7S3238C32v5Ev();
extern void _ZN7S3238C32v6Ev();
extern void _ZN7S3238C32v7Ev();
extern void _ZN7S3238C32v8Ev();
extern void _ZN7S3238C32v9Ev();
extern void _ZN7S3238C33v10Ev();
extern void _ZN7S3238C33v11Ev();
extern void _ZN7S3238C33v12Ev();
extern void _ZN7S3238C33v13Ev();
extern void _ZN7S3238C33v14Ev();
extern void _ZN7S3238C33v15Ev();
extern void _ZN7S3238C33v16Ev();
extern void _ZN7S3238C33v17Ev();
extern void _ZN7S3238C33v18Ev();
extern void _ZN7S3238C33v19Ev();
extern void _ZN7S3238C33v20Ev();
extern void _ZN7S3238C33v21Ev();
extern void _ZN7S3238C33v22Ev();
extern void _ZN7S3238C33v23Ev();
extern void _ZN7S3238C33v24Ev();
extern void _ZN7S3238C33v25Ev();
extern void _ZN7S3238C33v26Ev();
extern void _ZN7S3238C33v27Ev();
extern void _ZN7S3238C33v28Ev();
extern void _ZN7S3238C33v29Ev();
extern void _ZN7S3238C33v30Ev();
extern void _ZN7S3238C33v31Ev();
extern void _ZN7S3238C33v32Ev();
extern void _ZN7S3238C33v33Ev();
extern void _ZN7S3238C33v34Ev();
extern void _ZN7S3238C33v35Ev();
extern void _ZN7S3238C33v36Ev();
extern void _ZN7S3238C33v37Ev();
extern void _ZN7S3238C33v38Ev();
extern void _ZN7S3238C33v39Ev();
extern void _ZN7S3238C33v40Ev();
extern void _ZN7S3238C33v41Ev();
extern void _ZN7S3238C33v42Ev();
extern void _ZN7S3238C33v43Ev();
extern void _ZN7S3238C33v44Ev();
extern void _ZN7S3238C33v45Ev();
extern void _ZN7S3238C33v46Ev();
extern void _ZN7S3238C33v47Ev();
extern void _ZN7S3238C33v48Ev();
extern void _ZN7S3238C33v49Ev();
extern void _ZN7S3238C33v50Ev();
extern void _ZN7S3238C33v51Ev();
extern void _ZN7S3238C33v52Ev();
extern void _ZN7S3238C33v53Ev();
extern void _ZN7S3238C33v54Ev();
extern void _ZN7S3238C33v55Ev();
extern void _ZN7S3238C33v56Ev();
extern void _ZN7S3238C33v57Ev();
extern void _ZN7S3238C33v58Ev();
extern void _ZN7S3238C33v59Ev();
extern void _ZN7S3238C33v60Ev();
extern void _ZN7S3238C33v61Ev();
extern void _ZN7S3238C33v62Ev();
extern void _ZN7S3238C33v63Ev();
extern void _ZN7S3238C33v64Ev();
extern void _ZN7S3238C33v65Ev();
extern void _ZN7S3238C33v66Ev();
extern void _ZN7S3238C33v67Ev();
extern void _ZN7S3238C23v68Ev();
extern void _ZN7S3238C23v69Ev();
extern void _ZN7S3238C23v70Ev();
extern void _ZN7S3238C23v71Ev();
extern void _ZN7S3238C23v72Ev();
extern void _ZN7S3238C23v73Ev();
extern void _ZN7S3238C23v74Ev();
extern void _ZN7S3238C23v75Ev();
extern void _ZN7S3238C12v1Ev();
extern void _ZN7S3238C12v2Ev();
extern void _ZN7S3238C12v3Ev();
static  VTBL_ENTRY vtc_S3238C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3238C1[0]),
  (VTBL_ENTRY)&_ZN7S3238C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3238C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3238C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3238C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3238C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3238C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3238C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3238C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3238C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3238C23v68Ev,
  (VTBL_ENTRY)&_ZN7S3238C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3238C23v70Ev,
  (VTBL_ENTRY)&_ZN7S3238C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3238C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3238C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3238C23v74Ev,
  (VTBL_ENTRY)&_ZN7S3238C23v75Ev,
  (VTBL_ENTRY)&_ZN7S3238C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3238C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3238C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S3238C1[];
extern  VTBL_ENTRY _ZTV7S3238C1[];
Class_Descriptor cd_S3238C1 = {  "S3238C1", // class name
  bases_S3238C1, 2,
  &(vtc_S3238C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,104), // object size
  NSPAIRA(_ZTI7S3238C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3238C1),79, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3174C3  {
  int s3174c3f0;
  __tsi64 s3174c3f1;
  void *s3174c3f2[4];
  int s3174c3f3[2];
  void *s3174c3f4;
  ::S28C9_nt s3174c3f5;
  void *s3174c3f6[2];
  virtual  ~S3174C3(); // _ZN7S3174C3D1Ev
  virtual void  v3(); // _ZN7S3174C32v3Ev
  virtual void  v4(); // _ZN7S3174C32v4Ev
  virtual void  v5(); // _ZN7S3174C32v5Ev
  virtual void  v6(); // _ZN7S3174C32v6Ev
  virtual void  v7(); // _ZN7S3174C32v7Ev
  virtual void  v8(); // _ZN7S3174C32v8Ev
  virtual void  v9(); // _ZN7S3174C32v9Ev
  virtual void  v10(); // _ZN7S3174C33v10Ev
  virtual void  v11(); // _ZN7S3174C33v11Ev
  virtual void  v12(); // _ZN7S3174C33v12Ev
  virtual void  v13(); // _ZN7S3174C33v13Ev
  virtual void  v14(); // _ZN7S3174C33v14Ev
  virtual void  v15(); // _ZN7S3174C33v15Ev
  virtual void  v16(); // _ZN7S3174C33v16Ev
  virtual void  v17(); // _ZN7S3174C33v17Ev
  virtual void  v18(); // _ZN7S3174C33v18Ev
  virtual void  v19(); // _ZN7S3174C33v19Ev
  virtual void  v20(); // _ZN7S3174C33v20Ev
  virtual void  v21(); // _ZN7S3174C33v21Ev
  virtual void  v22(); // _ZN7S3174C33v22Ev
  virtual void  v23(); // _ZN7S3174C33v23Ev
  virtual void  v24(); // _ZN7S3174C33v24Ev
  virtual void  v25(); // _ZN7S3174C33v25Ev
  virtual void  v26(); // _ZN7S3174C33v26Ev
  virtual void  v27(); // _ZN7S3174C33v27Ev
  virtual void  v28(); // _ZN7S3174C33v28Ev
  virtual void  v29(); // _ZN7S3174C33v29Ev
  virtual void  v30(); // _ZN7S3174C33v30Ev
  virtual void  v31(); // _ZN7S3174C33v31Ev
  virtual void  v32(); // _ZN7S3174C33v32Ev
  virtual void  v33(); // _ZN7S3174C33v33Ev
  virtual void  v34(); // _ZN7S3174C33v34Ev
  virtual void  v35(); // _ZN7S3174C33v35Ev
  virtual void  v36(); // _ZN7S3174C33v36Ev
  virtual void  v37(); // _ZN7S3174C33v37Ev
  virtual void  v38(); // _ZN7S3174C33v38Ev
  virtual void  v39(); // _ZN7S3174C33v39Ev
  virtual void  v40(); // _ZN7S3174C33v40Ev
  virtual void  v41(); // _ZN7S3174C33v41Ev
  virtual void  v42(); // _ZN7S3174C33v42Ev
  virtual void  v43(); // _ZN7S3174C33v43Ev
  virtual void  v44(); // _ZN7S3174C33v44Ev
  virtual void  v45(); // _ZN7S3174C33v45Ev
  virtual void  v46(); // _ZN7S3174C33v46Ev
  virtual void  v47(); // _ZN7S3174C33v47Ev
  virtual void  v48(); // _ZN7S3174C33v48Ev
  virtual void  v49(); // _ZN7S3174C33v49Ev
  virtual void  v50(); // _ZN7S3174C33v50Ev
  virtual void  v51(); // _ZN7S3174C33v51Ev
  virtual void  v52(); // _ZN7S3174C33v52Ev
  virtual void  v53(); // _ZN7S3174C33v53Ev
  virtual void  v54(); // _ZN7S3174C33v54Ev
  virtual void  v55(); // _ZN7S3174C33v55Ev
  virtual void  v56(); // _ZN7S3174C33v56Ev
  virtual void  v57(); // _ZN7S3174C33v57Ev
  virtual void  v58(); // _ZN7S3174C33v58Ev
  virtual void  v59(); // _ZN7S3174C33v59Ev
  virtual void  v60(); // _ZN7S3174C33v60Ev
  virtual void  v61(); // _ZN7S3174C33v61Ev
  virtual void  v62(); // _ZN7S3174C33v62Ev
  virtual void  v63(); // _ZN7S3174C33v63Ev
  virtual void  v64(); // _ZN7S3174C33v64Ev
  virtual void  v65(); // _ZN7S3174C33v65Ev
  virtual void  v66(); // _ZN7S3174C33v66Ev
  S3174C3(); // tgen
};
//SIG(-1 S3174C3) 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]}


 S3174C3 ::~S3174C3(){ note_dtor("S3174C3", this);}
void  S3174C3 ::v3(){vfunc_called(this, "_ZN7S3174C32v3Ev");}
void  S3174C3 ::v4(){vfunc_called(this, "_ZN7S3174C32v4Ev");}
void  S3174C3 ::v5(){vfunc_called(this, "_ZN7S3174C32v5Ev");}
void  S3174C3 ::v6(){vfunc_called(this, "_ZN7S3174C32v6Ev");}
void  S3174C3 ::v7(){vfunc_called(this, "_ZN7S3174C32v7Ev");}
void  S3174C3 ::v8(){vfunc_called(this, "_ZN7S3174C32v8Ev");}
void  S3174C3 ::v9(){vfunc_called(this, "_ZN7S3174C32v9Ev");}
void  S3174C3 ::v10(){vfunc_called(this, "_ZN7S3174C33v10Ev");}
void  S3174C3 ::v11(){vfunc_called(this, "_ZN7S3174C33v11Ev");}
void  S3174C3 ::v12(){vfunc_called(this, "_ZN7S3174C33v12Ev");}
void  S3174C3 ::v13(){vfunc_called(this, "_ZN7S3174C33v13Ev");}
void  S3174C3 ::v14(){vfunc_called(this, "_ZN7S3174C33v14Ev");}
void  S3174C3 ::v15(){vfunc_called(this, "_ZN7S3174C33v15Ev");}
void  S3174C3 ::v16(){vfunc_called(this, "_ZN7S3174C33v16Ev");}
void  S3174C3 ::v17(){vfunc_called(this, "_ZN7S3174C33v17Ev");}
void  S3174C3 ::v18(){vfunc_called(this, "_ZN7S3174C33v18Ev");}
void  S3174C3 ::v19(){vfunc_called(this, "_ZN7S3174C33v19Ev");}
void  S3174C3 ::v20(){vfunc_called(this, "_ZN7S3174C33v20Ev");}
void  S3174C3 ::v21(){vfunc_called(this, "_ZN7S3174C33v21Ev");}
void  S3174C3 ::v22(){vfunc_called(this, "_ZN7S3174C33v22Ev");}
void  S3174C3 ::v23(){vfunc_called(this, "_ZN7S3174C33v23Ev");}
void  S3174C3 ::v24(){vfunc_called(this, "_ZN7S3174C33v24Ev");}
void  S3174C3 ::v25(){vfunc_called(this, "_ZN7S3174C33v25Ev");}
void  S3174C3 ::v26(){vfunc_called(this, "_ZN7S3174C33v26Ev");}
void  S3174C3 ::v27(){vfunc_called(this, "_ZN7S3174C33v27Ev");}
void  S3174C3 ::v28(){vfunc_called(this, "_ZN7S3174C33v28Ev");}
void  S3174C3 ::v29(){vfunc_called(this, "_ZN7S3174C33v29Ev");}
void  S3174C3 ::v30(){vfunc_called(this, "_ZN7S3174C33v30Ev");}
void  S3174C3 ::v31(){vfunc_called(this, "_ZN7S3174C33v31Ev");}
void  S3174C3 ::v32(){vfunc_called(this, "_ZN7S3174C33v32Ev");}
void  S3174C3 ::v33(){vfunc_called(this, "_ZN7S3174C33v33Ev");}
void  S3174C3 ::v34(){vfunc_called(this, "_ZN7S3174C33v34Ev");}
void  S3174C3 ::v35(){vfunc_called(this, "_ZN7S3174C33v35Ev");}
void  S3174C3 ::v36(){vfunc_called(this, "_ZN7S3174C33v36Ev");}
void  S3174C3 ::v37(){vfunc_called(this, "_ZN7S3174C33v37Ev");}
void  S3174C3 ::v38(){vfunc_called(this, "_ZN7S3174C33v38Ev");}
void  S3174C3 ::v39(){vfunc_called(this, "_ZN7S3174C33v39Ev");}
void  S3174C3 ::v40(){vfunc_called(this, "_ZN7S3174C33v40Ev");}
void  S3174C3 ::v41(){vfunc_called(this, "_ZN7S3174C33v41Ev");}
void  S3174C3 ::v42(){vfunc_called(this, "_ZN7S3174C33v42Ev");}
void  S3174C3 ::v43(){vfunc_called(this, "_ZN7S3174C33v43Ev");}
void  S3174C3 ::v44(){vfunc_called(this, "_ZN7S3174C33v44Ev");}
void  S3174C3 ::v45(){vfunc_called(this, "_ZN7S3174C33v45Ev");}
void  S3174C3 ::v46(){vfunc_called(this, "_ZN7S3174C33v46Ev");}
void  S3174C3 ::v47(){vfunc_called(this, "_ZN7S3174C33v47Ev");}
void  S3174C3 ::v48(){vfunc_called(this, "_ZN7S3174C33v48Ev");}
void  S3174C3 ::v49(){vfunc_called(this, "_ZN7S3174C33v49Ev");}
void  S3174C3 ::v50(){vfunc_called(this, "_ZN7S3174C33v50Ev");}
void  S3174C3 ::v51(){vfunc_called(this, "_ZN7S3174C33v51Ev");}
void  S3174C3 ::v52(){vfunc_called(this, "_ZN7S3174C33v52Ev");}
void  S3174C3 ::v53(){vfunc_called(this, "_ZN7S3174C33v53Ev");}
void  S3174C3 ::v54(){vfunc_called(this, "_ZN7S3174C33v54Ev");}
void  S3174C3 ::v55(){vfunc_called(this, "_ZN7S3174C33v55Ev");}
void  S3174C3 ::v56(){vfunc_called(this, "_ZN7S3174C33v56Ev");}
void  S3174C3 ::v57(){vfunc_called(this, "_ZN7S3174C33v57Ev");}
void  S3174C3 ::v58(){vfunc_called(this, "_ZN7S3174C33v58Ev");}
void  S3174C3 ::v59(){vfunc_called(this, "_ZN7S3174C33v59Ev");}
void  S3174C3 ::v60(){vfunc_called(this, "_ZN7S3174C33v60Ev");}
void  S3174C3 ::v61(){vfunc_called(this, "_ZN7S3174C33v61Ev");}
void  S3174C3 ::v62(){vfunc_called(this, "_ZN7S3174C33v62Ev");}
void  S3174C3 ::v63(){vfunc_called(this, "_ZN7S3174C33v63Ev");}
void  S3174C3 ::v64(){vfunc_called(this, "_ZN7S3174C33v64Ev");}
void  S3174C3 ::v65(){vfunc_called(this, "_ZN7S3174C33v65Ev");}
void  S3174C3 ::v66(){vfunc_called(this, "_ZN7S3174C33v66Ev");}
S3174C3 ::S3174C3(){ note_ctor("S3174C3", this);} // tgen

static void Test_S3174C3()
{
  extern Class_Descriptor cd_S3174C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3174C3, buf);
    S3174C3 *dp, &lv = *(dp=new (buf) S3174C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3174C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3174C3)");
    check_field_offset(lv, s3174c3f0, ABISELECT(8,4), "S3174C3.s3174c3f0");
    check_field_offset(lv, s3174c3f1, ABISELECT(16,8), "S3174C3.s3174c3f1");
    check_field_offset(lv, s3174c3f2, ABISELECT(24,16), "S3174C3.s3174c3f2");
    check_field_offset(lv, s3174c3f3, ABISELECT(56,32), "S3174C3.s3174c3f3");
    check_field_offset(lv, s3174c3f4, ABISELECT(64,40), "S3174C3.s3174c3f4");
    check_field_offset(lv, s3174c3f5, ABISELECT(72,44), "S3174C3.s3174c3f5");
    check_field_offset(lv, s3174c3f6, ABISELECT(80,52), "S3174C3.s3174c3f6");
    test_class_info(&lv, &cd_S3174C3);
    dp->~S3174C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3174C3(Test_S3174C3, "S3174C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3174C3C1Ev();
extern void _ZN7S3174C3D1Ev();
Name_Map name_map_S3174C3[] = {
  NSPAIR(_ZN7S3174C3C1Ev),
  NSPAIR(_ZN7S3174C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3174C3[];
extern void _ZN7S3174C3D1Ev();
extern void _ZN7S3174C3D0Ev();
extern void _ZN7S3174C32v3Ev();
extern void _ZN7S3174C32v4Ev();
extern void _ZN7S3174C32v5Ev();
extern void _ZN7S3174C32v6Ev();
extern void _ZN7S3174C32v7Ev();
extern void _ZN7S3174C32v8Ev();
extern void _ZN7S3174C32v9Ev();
extern void _ZN7S3174C33v10Ev();
extern void _ZN7S3174C33v11Ev();
extern void _ZN7S3174C33v12Ev();
extern void _ZN7S3174C33v13Ev();
extern void _ZN7S3174C33v14Ev();
extern void _ZN7S3174C33v15Ev();
extern void _ZN7S3174C33v16Ev();
extern void _ZN7S3174C33v17Ev();
extern void _ZN7S3174C33v18Ev();
extern void _ZN7S3174C33v19Ev();
extern void _ZN7S3174C33v20Ev();
extern void _ZN7S3174C33v21Ev();
extern void _ZN7S3174C33v22Ev();
extern void _ZN7S3174C33v23Ev();
extern void _ZN7S3174C33v24Ev();
extern void _ZN7S3174C33v25Ev();
extern void _ZN7S3174C33v26Ev();
extern void _ZN7S3174C33v27Ev();
extern void _ZN7S3174C33v28Ev();
extern void _ZN7S3174C33v29Ev();
extern void _ZN7S3174C33v30Ev();
extern void _ZN7S3174C33v31Ev();
extern void _ZN7S3174C33v32Ev();
extern void _ZN7S3174C33v33Ev();
extern void _ZN7S3174C33v34Ev();
extern void _ZN7S3174C33v35Ev();
extern void _ZN7S3174C33v36Ev();
extern void _ZN7S3174C33v37Ev();
extern void _ZN7S3174C33v38Ev();
extern void _ZN7S3174C33v39Ev();
extern void _ZN7S3174C33v40Ev();
extern void _ZN7S3174C33v41Ev();
extern void _ZN7S3174C33v42Ev();
extern void _ZN7S3174C33v43Ev();
extern void _ZN7S3174C33v44Ev();
extern void _ZN7S3174C33v45Ev();
extern void _ZN7S3174C33v46Ev();
extern void _ZN7S3174C33v47Ev();
extern void _ZN7S3174C33v48Ev();
extern void _ZN7S3174C33v49Ev();
extern void _ZN7S3174C33v50Ev();
extern void _ZN7S3174C33v51Ev();
extern void _ZN7S3174C33v52Ev();
extern void _ZN7S3174C33v53Ev();
extern void _ZN7S3174C33v54Ev();
extern void _ZN7S3174C33v55Ev();
extern void _ZN7S3174C33v56Ev();
extern void _ZN7S3174C33v57Ev();
extern void _ZN7S3174C33v58Ev();
extern void _ZN7S3174C33v59Ev();
extern void _ZN7S3174C33v60Ev();
extern void _ZN7S3174C33v61Ev();
extern void _ZN7S3174C33v62Ev();
extern void _ZN7S3174C33v63Ev();
extern void _ZN7S3174C33v64Ev();
extern void _ZN7S3174C33v65Ev();
extern void _ZN7S3174C33v66Ev();
static  VTBL_ENTRY vtc_S3174C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3174C3[0]),
  (VTBL_ENTRY)&_ZN7S3174C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3174C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3174C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3174C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3174C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3174C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3174C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3174C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3174C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v66Ev,
};
extern VTBL_ENTRY _ZTI7S3174C3[];
extern  VTBL_ENTRY _ZTV7S3174C3[];
Class_Descriptor cd_S3174C3 = {  "S3174C3", // class name
  0,0,//no base classes
  &(vtc_S3174C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3174C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3174C3),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  S3174C2  : S3174C3 {
  void *s3174c2f0;
  ::S28C31_nt s3174c2f1;
  int s3174c2f2;
  void *s3174c2f3;
  unsigned int s3174c2f4:1;
  ::S28C31_nt s3174c2f5;
  virtual  ~S3174C2(); // _ZN7S3174C2D1Ev
  virtual void  v67(); // _ZN7S3174C23v67Ev
  virtual void  v68(); // _ZN7S3174C23v68Ev
  virtual void  v69(); // _ZN7S3174C23v69Ev
  virtual void  v70(); // _ZN7S3174C23v70Ev
  virtual void  v71(); // _ZN7S3174C23v71Ev
  virtual void  v72(); // _ZN7S3174C23v72Ev
  virtual void  v73(); // _ZN7S3174C23v73Ev
  virtual void  v74(); // _ZN7S3174C23v74Ev
  S3174C2(); // tgen
};
//SIG(-1 S3174C2) C1{ BC2{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 Fp FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC4}


 S3174C2 ::~S3174C2(){ note_dtor("S3174C2", this);}
void  S3174C2 ::v67(){vfunc_called(this, "_ZN7S3174C23v67Ev");}
void  S3174C2 ::v68(){vfunc_called(this, "_ZN7S3174C23v68Ev");}
void  S3174C2 ::v69(){vfunc_called(this, "_ZN7S3174C23v69Ev");}
void  S3174C2 ::v70(){vfunc_called(this, "_ZN7S3174C23v70Ev");}
void  S3174C2 ::v71(){vfunc_called(this, "_ZN7S3174C23v71Ev");}
void  S3174C2 ::v72(){vfunc_called(this, "_ZN7S3174C23v72Ev");}
void  S3174C2 ::v73(){vfunc_called(this, "_ZN7S3174C23v73Ev");}
void  S3174C2 ::v74(){vfunc_called(this, "_ZN7S3174C23v74Ev");}
S3174C2 ::S3174C2(){ note_ctor("S3174C2", this);} // tgen

static void Test_S3174C2()
{
  extern Class_Descriptor cd_S3174C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,26)];
    init_test(&cd_S3174C2, buf);
    S3174C2 *dp, &lv = *(dp=new (buf) S3174C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,100), "sizeof(S3174C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3174C2)");
    check_base_class_offset(lv, (S3174C3*), 0, "S3174C2");
    check_field_offset(lv, s3174c2f0, ABISELECT(96,60), "S3174C2.s3174c2f0");
    check_field_offset(lv, s3174c2f1, ABISELECT(104,64), "S3174C2.s3174c2f1");
    check_field_offset(lv, s3174c2f2, ABISELECT(120,76), "S3174C2.s3174c2f2");
    check_field_offset(lv, s3174c2f3, ABISELECT(128,80), "S3174C2.s3174c2f3");
    set_bf_and_test(lv, s3174c2f4, ABISELECT(136,84), 0, 1, 1, "S3174C2");
    check_field_offset(lv, s3174c2f5, ABISELECT(144,88), "S3174C2.s3174c2f5");
    test_class_info(&lv, &cd_S3174C2);
    dp->~S3174C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3174C2(Test_S3174C2, "S3174C2", ABISELECT(160,100));

#else // __cplusplus

extern void _ZN7S3174C2C1Ev();
extern void _ZN7S3174C2D1Ev();
Name_Map name_map_S3174C2[] = {
  NSPAIR(_ZN7S3174C2C1Ev),
  NSPAIR(_ZN7S3174C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3174C3;
extern VTBL_ENTRY _ZTI7S3174C3[];
extern  VTBL_ENTRY _ZTV7S3174C3[];
static Base_Class bases_S3174C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3174C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3174C2[];
extern void _ZN7S3174C2D1Ev();
extern void _ZN7S3174C2D0Ev();
extern void _ZN7S3174C32v3Ev();
extern void _ZN7S3174C32v4Ev();
extern void _ZN7S3174C32v5Ev();
extern void _ZN7S3174C32v6Ev();
extern void _ZN7S3174C32v7Ev();
extern void _ZN7S3174C32v8Ev();
extern void _ZN7S3174C32v9Ev();
extern void _ZN7S3174C33v10Ev();
extern void _ZN7S3174C33v11Ev();
extern void _ZN7S3174C33v12Ev();
extern void _ZN7S3174C33v13Ev();
extern void _ZN7S3174C33v14Ev();
extern void _ZN7S3174C33v15Ev();
extern void _ZN7S3174C33v16Ev();
extern void _ZN7S3174C33v17Ev();
extern void _ZN7S3174C33v18Ev();
extern void _ZN7S3174C33v19Ev();
extern void _ZN7S3174C33v20Ev();
extern void _ZN7S3174C33v21Ev();
extern void _ZN7S3174C33v22Ev();
extern void _ZN7S3174C33v23Ev();
extern void _ZN7S3174C33v24Ev();
extern void _ZN7S3174C33v25Ev();
extern void _ZN7S3174C33v26Ev();
extern void _ZN7S3174C33v27Ev();
extern void _ZN7S3174C33v28Ev();
extern void _ZN7S3174C33v29Ev();
extern void _ZN7S3174C33v30Ev();
extern void _ZN7S3174C33v31Ev();
extern void _ZN7S3174C33v32Ev();
extern void _ZN7S3174C33v33Ev();
extern void _ZN7S3174C33v34Ev();
extern void _ZN7S3174C33v35Ev();
extern void _ZN7S3174C33v36Ev();
extern void _ZN7S3174C33v37Ev();
extern void _ZN7S3174C33v38Ev();
extern void _ZN7S3174C33v39Ev();
extern void _ZN7S3174C33v40Ev();
extern void _ZN7S3174C33v41Ev();
extern void _ZN7S3174C33v42Ev();
extern void _ZN7S3174C33v43Ev();
extern void _ZN7S3174C33v44Ev();
extern void _ZN7S3174C33v45Ev();
extern void _ZN7S3174C33v46Ev();
extern void _ZN7S3174C33v47Ev();
extern void _ZN7S3174C33v48Ev();
extern void _ZN7S3174C33v49Ev();
extern void _ZN7S3174C33v50Ev();
extern void _ZN7S3174C33v51Ev();
extern void _ZN7S3174C33v52Ev();
extern void _ZN7S3174C33v53Ev();
extern void _ZN7S3174C33v54Ev();
extern void _ZN7S3174C33v55Ev();
extern void _ZN7S3174C33v56Ev();
extern void _ZN7S3174C33v57Ev();
extern void _ZN7S3174C33v58Ev();
extern void _ZN7S3174C33v59Ev();
extern void _ZN7S3174C33v60Ev();
extern void _ZN7S3174C33v61Ev();
extern void _ZN7S3174C33v62Ev();
extern void _ZN7S3174C33v63Ev();
extern void _ZN7S3174C33v64Ev();
extern void _ZN7S3174C33v65Ev();
extern void _ZN7S3174C33v66Ev();
extern void _ZN7S3174C23v67Ev();
extern void _ZN7S3174C23v68Ev();
extern void _ZN7S3174C23v69Ev();
extern void _ZN7S3174C23v70Ev();
extern void _ZN7S3174C23v71Ev();
extern void _ZN7S3174C23v72Ev();
extern void _ZN7S3174C23v73Ev();
extern void _ZN7S3174C23v74Ev();
static  VTBL_ENTRY vtc_S3174C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3174C2[0]),
  (VTBL_ENTRY)&_ZN7S3174C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3174C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3174C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3174C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3174C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3174C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3174C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3174C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3174C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3174C23v67Ev,
  (VTBL_ENTRY)&_ZN7S3174C23v68Ev,
  (VTBL_ENTRY)&_ZN7S3174C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3174C23v70Ev,
  (VTBL_ENTRY)&_ZN7S3174C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3174C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3174C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3174C23v74Ev,
};
extern VTBL_ENTRY _ZTI7S3174C2[];
extern  VTBL_ENTRY _ZTV7S3174C2[];
Class_Descriptor cd_S3174C2 = {  "S3174C2", // class name
  bases_S3174C2, 1,
  &(vtc_S3174C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,100), // object size
  NSPAIRA(_ZTI7S3174C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3174C2),76, //virtual function table var
  2, // 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  S3174C1  : S3174C2 {
  virtual  ~S3174C1(); // _ZN7S3174C1D1Ev
  virtual void  v1(); // _ZN7S3174C12v1Ev
  virtual void  v2(); // _ZN7S3174C12v2Ev
  S3174C1(); // tgen
};
//SIG(1 S3174C1) C1{ BC2{ BC3{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v67 v68 v69 v70 v71 v72 v73 v74 Fp FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} Fi Fp Fi:1 FC5} vd v1 v2}


 S3174C1 ::~S3174C1(){ note_dtor("S3174C1", this);}
void  S3174C1 ::v1(){vfunc_called(this, "_ZN7S3174C12v1Ev");}
void  S3174C1 ::v2(){vfunc_called(this, "_ZN7S3174C12v2Ev");}
S3174C1 ::S3174C1(){ note_ctor("S3174C1", this);} // tgen

static void Test_S3174C1()
{
  extern Class_Descriptor cd_S3174C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,26)];
    init_test(&cd_S3174C1, buf);
    S3174C1 *dp, &lv = *(dp=new (buf) S3174C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,100), "sizeof(S3174C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3174C1)");
    check_base_class_offset(lv, (S3174C3*)(S3174C2*), 0, "S3174C1");
    check_base_class_offset(lv, (S3174C2*), 0, "S3174C1");
    test_class_info(&lv, &cd_S3174C1);
    dp->~S3174C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3174C1(Test_S3174C1, "S3174C1", ABISELECT(160,100));

#else // __cplusplus

extern void _ZN7S3174C1C1Ev();
extern void _ZN7S3174C1D1Ev();
Name_Map name_map_S3174C1[] = {
  NSPAIR(_ZN7S3174C1C1Ev),
  NSPAIR(_ZN7S3174C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3174C3;
extern VTBL_ENTRY _ZTI7S3174C3[];
extern  VTBL_ENTRY _ZTV7S3174C3[];
extern Class_Descriptor cd_S3174C2;
extern VTBL_ENTRY _ZTI7S3174C2[];
extern  VTBL_ENTRY _ZTV7S3174C2[];
static Base_Class bases_S3174C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3174C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3174C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3174C1[];
extern void _ZN7S3174C1D1Ev();
extern void _ZN7S3174C1D0Ev();
extern void _ZN7S3174C32v3Ev();
extern void _ZN7S3174C32v4Ev();
extern void _ZN7S3174C32v5Ev();
extern void _ZN7S3174C32v6Ev();
extern void _ZN7S3174C32v7Ev();
extern void _ZN7S3174C32v8Ev();
extern void _ZN7S3174C32v9Ev();
extern void _ZN7S3174C33v10Ev();
extern void _ZN7S3174C33v11Ev();
extern void _ZN7S3174C33v12Ev();
extern void _ZN7S3174C33v13Ev();
extern void _ZN7S3174C33v14Ev();
extern void _ZN7S3174C33v15Ev();
extern void _ZN7S3174C33v16Ev();
extern void _ZN7S3174C33v17Ev();
extern void _ZN7S3174C33v18Ev();
extern void _ZN7S3174C33v19Ev();
extern void _ZN7S3174C33v20Ev();
extern void _ZN7S3174C33v21Ev();
extern void _ZN7S3174C33v22Ev();
extern void _ZN7S3174C33v23Ev();
extern void _ZN7S3174C33v24Ev();
extern void _ZN7S3174C33v25Ev();
extern void _ZN7S3174C33v26Ev();
extern void _ZN7S3174C33v27Ev();
extern void _ZN7S3174C33v28Ev();
extern void _ZN7S3174C33v29Ev();
extern void _ZN7S3174C33v30Ev();
extern void _ZN7S3174C33v31Ev();
extern void _ZN7S3174C33v32Ev();
extern void _ZN7S3174C33v33Ev();
extern void _ZN7S3174C33v34Ev();
extern void _ZN7S3174C33v35Ev();
extern void _ZN7S3174C33v36Ev();
extern void _ZN7S3174C33v37Ev();
extern void _ZN7S3174C33v38Ev();
extern void _ZN7S3174C33v39Ev();
extern void _ZN7S3174C33v40Ev();
extern void _ZN7S3174C33v41Ev();
extern void _ZN7S3174C33v42Ev();
extern void _ZN7S3174C33v43Ev();
extern void _ZN7S3174C33v44Ev();
extern void _ZN7S3174C33v45Ev();
extern void _ZN7S3174C33v46Ev();
extern void _ZN7S3174C33v47Ev();
extern void _ZN7S3174C33v48Ev();
extern void _ZN7S3174C33v49Ev();
extern void _ZN7S3174C33v50Ev();
extern void _ZN7S3174C33v51Ev();
extern void _ZN7S3174C33v52Ev();
extern void _ZN7S3174C33v53Ev();
extern void _ZN7S3174C33v54Ev();
extern void _ZN7S3174C33v55Ev();
extern void _ZN7S3174C33v56Ev();
extern void _ZN7S3174C33v57Ev();
extern void _ZN7S3174C33v58Ev();
extern void _ZN7S3174C33v59Ev();
extern void _ZN7S3174C33v60Ev();
extern void _ZN7S3174C33v61Ev();
extern void _ZN7S3174C33v62Ev();
extern void _ZN7S3174C33v63Ev();
extern void _ZN7S3174C33v64Ev();
extern void _ZN7S3174C33v65Ev();
extern void _ZN7S3174C33v66Ev();
extern void _ZN7S3174C23v67Ev();
extern void _ZN7S3174C23v68Ev();
extern void _ZN7S3174C23v69Ev();
extern void _ZN7S3174C23v70Ev();
extern void _ZN7S3174C23v71Ev();
extern void _ZN7S3174C23v72Ev();
extern void _ZN7S3174C23v73Ev();
extern void _ZN7S3174C23v74Ev();
extern void _ZN7S3174C12v1Ev();
extern void _ZN7S3174C12v2Ev();
static  VTBL_ENTRY vtc_S3174C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3174C1[0]),
  (VTBL_ENTRY)&_ZN7S3174C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3174C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3174C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3174C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3174C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3174C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3174C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3174C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3174C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3174C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3174C23v67Ev,
  (VTBL_ENTRY)&_ZN7S3174C23v68Ev,
  (VTBL_ENTRY)&_ZN7S3174C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3174C23v70Ev,
  (VTBL_ENTRY)&_ZN7S3174C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3174C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3174C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3174C23v74Ev,
  (VTBL_ENTRY)&_ZN7S3174C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3174C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S3174C1[];
extern  VTBL_ENTRY _ZTV7S3174C1[];
Class_Descriptor cd_S3174C1 = {  "S3174C1", // class name
  bases_S3174C1, 2,
  &(vtc_S3174C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,100), // object size
  NSPAIRA(_ZTI7S3174C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3174C1),78, //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  S6722C2  {
  int s6722c2f0;
  __tsi64 s6722c2f1;
  void *s6722c2f2[4];
  int s6722c2f3[2];
  void *s6722c2f4;
  ::S28C9_nt s6722c2f5;
  void *s6722c2f6[2];
  virtual  ~S6722C2(); // _ZN7S6722C2D1Ev
  virtual void  v3(); // _ZN7S6722C22v3Ev
  virtual void  v4(); // _ZN7S6722C22v4Ev
  virtual void  v5(); // _ZN7S6722C22v5Ev
  virtual void  v6(); // _ZN7S6722C22v6Ev
  virtual void  v7(); // _ZN7S6722C22v7Ev
  virtual void  v8(); // _ZN7S6722C22v8Ev
  virtual void  v9(); // _ZN7S6722C22v9Ev
  virtual void  v10(); // _ZN7S6722C23v10Ev
  virtual void  v11(); // _ZN7S6722C23v11Ev
  virtual void  v12(); // _ZN7S6722C23v12Ev
  virtual void  v13(); // _ZN7S6722C23v13Ev
  virtual void  v14(); // _ZN7S6722C23v14Ev
  virtual void  v15(); // _ZN7S6722C23v15Ev
  virtual void  v16(); // _ZN7S6722C23v16Ev
  virtual void  v17(); // _ZN7S6722C23v17Ev
  virtual void  v18(); // _ZN7S6722C23v18Ev
  virtual void  v19(); // _ZN7S6722C23v19Ev
  virtual void  v20(); // _ZN7S6722C23v20Ev
  virtual void  v21(); // _ZN7S6722C23v21Ev
  virtual void  v22(); // _ZN7S6722C23v22Ev
  virtual void  v23(); // _ZN7S6722C23v23Ev
  virtual void  v24(); // _ZN7S6722C23v24Ev
  virtual void  v25(); // _ZN7S6722C23v25Ev
  virtual void  v26(); // _ZN7S6722C23v26Ev
  virtual void  v27(); // _ZN7S6722C23v27Ev
  virtual void  v28(); // _ZN7S6722C23v28Ev
  virtual void  v29(); // _ZN7S6722C23v29Ev
  virtual void  v30(); // _ZN7S6722C23v30Ev
  virtual void  v31(); // _ZN7S6722C23v31Ev
  virtual void  v32(); // _ZN7S6722C23v32Ev
  virtual void  v33(); // _ZN7S6722C23v33Ev
  virtual void  v34(); // _ZN7S6722C23v34Ev
  virtual void  v35(); // _ZN7S6722C23v35Ev
  virtual void  v36(); // _ZN7S6722C23v36Ev
  virtual void  v37(); // _ZN7S6722C23v37Ev
  virtual void  v38(); // _ZN7S6722C23v38Ev
  virtual void  v39(); // _ZN7S6722C23v39Ev
  virtual void  v40(); // _ZN7S6722C23v40Ev
  virtual void  v41(); // _ZN7S6722C23v41Ev
  virtual void  v42(); // _ZN7S6722C23v42Ev
  virtual void  v43(); // _ZN7S6722C23v43Ev
  virtual void  v44(); // _ZN7S6722C23v44Ev
  virtual void  v45(); // _ZN7S6722C23v45Ev
  virtual void  v46(); // _ZN7S6722C23v46Ev
  virtual void  v47(); // _ZN7S6722C23v47Ev
  virtual void  v48(); // _ZN7S6722C23v48Ev
  virtual void  v49(); // _ZN7S6722C23v49Ev
  virtual void  v50(); // _ZN7S6722C23v50Ev
  virtual void  v51(); // _ZN7S6722C23v51Ev
  virtual void  v52(); // _ZN7S6722C23v52Ev
  virtual void  v53(); // _ZN7S6722C23v53Ev
  virtual void  v54(); // _ZN7S6722C23v54Ev
  virtual void  v55(); // _ZN7S6722C23v55Ev
  virtual void  v56(); // _ZN7S6722C23v56Ev
  virtual void  v57(); // _ZN7S6722C23v57Ev
  virtual void  v58(); // _ZN7S6722C23v58Ev
  virtual void  v59(); // _ZN7S6722C23v59Ev
  virtual void  v60(); // _ZN7S6722C23v60Ev
  virtual void  v61(); // _ZN7S6722C23v61Ev
  virtual void  v62(); // _ZN7S6722C23v62Ev
  virtual void  v63(); // _ZN7S6722C23v63Ev
  virtual void  v64(); // _ZN7S6722C23v64Ev
  virtual void  v65(); // _ZN7S6722C23v65Ev
  virtual void  v66(); // _ZN7S6722C23v66Ev
  S6722C2(); // tgen
};
//SIG(-1 S6722C2) 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]}


 S6722C2 ::~S6722C2(){ note_dtor("S6722C2", this);}
void  S6722C2 ::v3(){vfunc_called(this, "_ZN7S6722C22v3Ev");}
void  S6722C2 ::v4(){vfunc_called(this, "_ZN7S6722C22v4Ev");}
void  S6722C2 ::v5(){vfunc_called(this, "_ZN7S6722C22v5Ev");}
void  S6722C2 ::v6(){vfunc_called(this, "_ZN7S6722C22v6Ev");}
void  S6722C2 ::v7(){vfunc_called(this, "_ZN7S6722C22v7Ev");}
void  S6722C2 ::v8(){vfunc_called(this, "_ZN7S6722C22v8Ev");}
void  S6722C2 ::v9(){vfunc_called(this, "_ZN7S6722C22v9Ev");}
void  S6722C2 ::v10(){vfunc_called(this, "_ZN7S6722C23v10Ev");}
void  S6722C2 ::v11(){vfunc_called(this, "_ZN7S6722C23v11Ev");}
void  S6722C2 ::v12(){vfunc_called(this, "_ZN7S6722C23v12Ev");}
void  S6722C2 ::v13(){vfunc_called(this, "_ZN7S6722C23v13Ev");}
void  S6722C2 ::v14(){vfunc_called(this, "_ZN7S6722C23v14Ev");}
void  S6722C2 ::v15(){vfunc_called(this, "_ZN7S6722C23v15Ev");}
void  S6722C2 ::v16(){vfunc_called(this, "_ZN7S6722C23v16Ev");}
void  S6722C2 ::v17(){vfunc_called(this, "_ZN7S6722C23v17Ev");}
void  S6722C2 ::v18(){vfunc_called(this, "_ZN7S6722C23v18Ev");}
void  S6722C2 ::v19(){vfunc_called(this, "_ZN7S6722C23v19Ev");}
void  S6722C2 ::v20(){vfunc_called(this, "_ZN7S6722C23v20Ev");}
void  S6722C2 ::v21(){vfunc_called(this, "_ZN7S6722C23v21Ev");}
void  S6722C2 ::v22(){vfunc_called(this, "_ZN7S6722C23v22Ev");}
void  S6722C2 ::v23(){vfunc_called(this, "_ZN7S6722C23v23Ev");}
void  S6722C2 ::v24(){vfunc_called(this, "_ZN7S6722C23v24Ev");}
void  S6722C2 ::v25(){vfunc_called(this, "_ZN7S6722C23v25Ev");}
void  S6722C2 ::v26(){vfunc_called(this, "_ZN7S6722C23v26Ev");}
void  S6722C2 ::v27(){vfunc_called(this, "_ZN7S6722C23v27Ev");}
void  S6722C2 ::v28(){vfunc_called(this, "_ZN7S6722C23v28Ev");}
void  S6722C2 ::v29(){vfunc_called(this, "_ZN7S6722C23v29Ev");}
void  S6722C2 ::v30(){vfunc_called(this, "_ZN7S6722C23v30Ev");}
void  S6722C2 ::v31(){vfunc_called(this, "_ZN7S6722C23v31Ev");}
void  S6722C2 ::v32(){vfunc_called(this, "_ZN7S6722C23v32Ev");}
void  S6722C2 ::v33(){vfunc_called(this, "_ZN7S6722C23v33Ev");}
void  S6722C2 ::v34(){vfunc_called(this, "_ZN7S6722C23v34Ev");}
void  S6722C2 ::v35(){vfunc_called(this, "_ZN7S6722C23v35Ev");}
void  S6722C2 ::v36(){vfunc_called(this, "_ZN7S6722C23v36Ev");}
void  S6722C2 ::v37(){vfunc_called(this, "_ZN7S6722C23v37Ev");}
void  S6722C2 ::v38(){vfunc_called(this, "_ZN7S6722C23v38Ev");}
void  S6722C2 ::v39(){vfunc_called(this, "_ZN7S6722C23v39Ev");}
void  S6722C2 ::v40(){vfunc_called(this, "_ZN7S6722C23v40Ev");}
void  S6722C2 ::v41(){vfunc_called(this, "_ZN7S6722C23v41Ev");}
void  S6722C2 ::v42(){vfunc_called(this, "_ZN7S6722C23v42Ev");}
void  S6722C2 ::v43(){vfunc_called(this, "_ZN7S6722C23v43Ev");}
void  S6722C2 ::v44(){vfunc_called(this, "_ZN7S6722C23v44Ev");}
void  S6722C2 ::v45(){vfunc_called(this, "_ZN7S6722C23v45Ev");}
void  S6722C2 ::v46(){vfunc_called(this, "_ZN7S6722C23v46Ev");}
void  S6722C2 ::v47(){vfunc_called(this, "_ZN7S6722C23v47Ev");}
void  S6722C2 ::v48(){vfunc_called(this, "_ZN7S6722C23v48Ev");}
void  S6722C2 ::v49(){vfunc_called(this, "_ZN7S6722C23v49Ev");}
void  S6722C2 ::v50(){vfunc_called(this, "_ZN7S6722C23v50Ev");}
void  S6722C2 ::v51(){vfunc_called(this, "_ZN7S6722C23v51Ev");}
void  S6722C2 ::v52(){vfunc_called(this, "_ZN7S6722C23v52Ev");}
void  S6722C2 ::v53(){vfunc_called(this, "_ZN7S6722C23v53Ev");}
void  S6722C2 ::v54(){vfunc_called(this, "_ZN7S6722C23v54Ev");}
void  S6722C2 ::v55(){vfunc_called(this, "_ZN7S6722C23v55Ev");}
void  S6722C2 ::v56(){vfunc_called(this, "_ZN7S6722C23v56Ev");}
void  S6722C2 ::v57(){vfunc_called(this, "_ZN7S6722C23v57Ev");}
void  S6722C2 ::v58(){vfunc_called(this, "_ZN7S6722C23v58Ev");}
void  S6722C2 ::v59(){vfunc_called(this, "_ZN7S6722C23v59Ev");}
void  S6722C2 ::v60(){vfunc_called(this, "_ZN7S6722C23v60Ev");}
void  S6722C2 ::v61(){vfunc_called(this, "_ZN7S6722C23v61Ev");}
void  S6722C2 ::v62(){vfunc_called(this, "_ZN7S6722C23v62Ev");}
void  S6722C2 ::v63(){vfunc_called(this, "_ZN7S6722C23v63Ev");}
void  S6722C2 ::v64(){vfunc_called(this, "_ZN7S6722C23v64Ev");}
void  S6722C2 ::v65(){vfunc_called(this, "_ZN7S6722C23v65Ev");}
void  S6722C2 ::v66(){vfunc_called(this, "_ZN7S6722C23v66Ev");}
S6722C2 ::S6722C2(){ note_ctor("S6722C2", this);} // tgen

static void Test_S6722C2()
{
  extern Class_Descriptor cd_S6722C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S6722C2, buf);
    S6722C2 *dp, &lv = *(dp=new (buf) S6722C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S6722C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6722C2)");
    check_field_offset(lv, s6722c2f0, ABISELECT(8,4), "S6722C2.s6722c2f0");
    check_field_offset(lv, s6722c2f1, ABISELECT(16,8), "S6722C2.s6722c2f1");
    check_field_offset(lv, s6722c2f2, ABISELECT(24,16), "S6722C2.s6722c2f2");
    check_field_offset(lv, s6722c2f3, ABISELECT(56,32), "S6722C2.s6722c2f3");
    check_field_offset(lv, s6722c2f4, ABISELECT(64,40), "S6722C2.s6722c2f4");
    check_field_offset(lv, s6722c2f5, ABISELECT(72,44), "S6722C2.s6722c2f5");
    check_field_offset(lv, s6722c2f6, ABISELECT(80,52), "S6722C2.s6722c2f6");
    test_class_info(&lv, &cd_S6722C2);
    dp->~S6722C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6722C2(Test_S6722C2, "S6722C2", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S6722C2C1Ev();
extern void _ZN7S6722C2D1Ev();
Name_Map name_map_S6722C2[] = {
  NSPAIR(_ZN7S6722C2C1Ev),
  NSPAIR(_ZN7S6722C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6722C2[];
extern void _ZN7S6722C2D1Ev();
extern void _ZN7S6722C2D0Ev();
extern void _ZN7S6722C22v3Ev();
extern void _ZN7S6722C22v4Ev();
extern void _ZN7S6722C22v5Ev();
extern void _ZN7S6722C22v6Ev();
extern void _ZN7S6722C22v7Ev();
extern void _ZN7S6722C22v8Ev();
extern void _ZN7S6722C22v9Ev();
extern void _ZN7S6722C23v10Ev();
extern void _ZN7S6722C23v11Ev();
extern void _ZN7S6722C23v12Ev();
extern void _ZN7S6722C23v13Ev();
extern void _ZN7S6722C23v14Ev();
extern void _ZN7S6722C23v15Ev();
extern void _ZN7S6722C23v16Ev();
extern void _ZN7S6722C23v17Ev();
extern void _ZN7S6722C23v18Ev();
extern void _ZN7S6722C23v19Ev();
extern void _ZN7S6722C23v20Ev();
extern void _ZN7S6722C23v21Ev();
extern void _ZN7S6722C23v22Ev();
extern void _ZN7S6722C23v23Ev();
extern void _ZN7S6722C23v24Ev();
extern void _ZN7S6722C23v25Ev();
extern void _ZN7S6722C23v26Ev();
extern void _ZN7S6722C23v27Ev();
extern void _ZN7S6722C23v28Ev();
extern void _ZN7S6722C23v29Ev();
extern void _ZN7S6722C23v30Ev();
extern void _ZN7S6722C23v31Ev();
extern void _ZN7S6722C23v32Ev();
extern void _ZN7S6722C23v33Ev();
extern void _ZN7S6722C23v34Ev();
extern void _ZN7S6722C23v35Ev();
extern void _ZN7S6722C23v36Ev();
extern void _ZN7S6722C23v37Ev();
extern void _ZN7S6722C23v38Ev();
extern void _ZN7S6722C23v39Ev();
extern void _ZN7S6722C23v40Ev();
extern void _ZN7S6722C23v41Ev();
extern void _ZN7S6722C23v42Ev();
extern void _ZN7S6722C23v43Ev();
extern void _ZN7S6722C23v44Ev();
extern void _ZN7S6722C23v45Ev();
extern void _ZN7S6722C23v46Ev();
extern void _ZN7S6722C23v47Ev();
extern void _ZN7S6722C23v48Ev();
extern void _ZN7S6722C23v49Ev();
extern void _ZN7S6722C23v50Ev();
extern void _ZN7S6722C23v51Ev();
extern void _ZN7S6722C23v52Ev();
extern void _ZN7S6722C23v53Ev();
extern void _ZN7S6722C23v54Ev();
extern void _ZN7S6722C23v55Ev();
extern void _ZN7S6722C23v56Ev();
extern void _ZN7S6722C23v57Ev();
extern void _ZN7S6722C23v58Ev();
extern void _ZN7S6722C23v59Ev();
extern void _ZN7S6722C23v60Ev();
extern void _ZN7S6722C23v61Ev();
extern void _ZN7S6722C23v62Ev();
extern void _ZN7S6722C23v63Ev();
extern void _ZN7S6722C23v64Ev();
extern void _ZN7S6722C23v65Ev();
extern void _ZN7S6722C23v66Ev();
static  VTBL_ENTRY vtc_S6722C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6722C2[0]),
  (VTBL_ENTRY)&_ZN7S6722C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6722C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6722C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6722C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6722C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6722C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6722C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6722C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6722C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v66Ev,
};
extern VTBL_ENTRY _ZTI7S6722C2[];
extern  VTBL_ENTRY _ZTV7S6722C2[];
Class_Descriptor cd_S6722C2 = {  "S6722C2", // class name
  0,0,//no base classes
  &(vtc_S6722C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S6722C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6722C2),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  S6722C1  : S6722C2 {
  ::S48C18 s6722c1f0;
  ::S28C18_nt s6722c1f1;
  virtual  ~S6722C1(); // _ZN7S6722C1D1Ev
  virtual void  v1(); // _ZN7S6722C12v1Ev
  virtual void  v2(); // _ZN7S6722C12v2Ev
  S6722C1(); // tgen
};
//SIG(1 S6722C1) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 FC4{ m Fi[3]} FC5{ m Fi[3]}}


 S6722C1 ::~S6722C1(){ note_dtor("S6722C1", this);}
void  S6722C1 ::v1(){vfunc_called(this, "_ZN7S6722C12v1Ev");}
void  S6722C1 ::v2(){vfunc_called(this, "_ZN7S6722C12v2Ev");}
S6722C1 ::S6722C1(){ note_ctor("S6722C1", this);} // tgen

static void Test_S6722C1()
{
  extern Class_Descriptor cd_S6722C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,22)];
    init_test(&cd_S6722C1, buf);
    S6722C1 *dp, &lv = *(dp=new (buf) S6722C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,84), "sizeof(S6722C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6722C1)");
    check_base_class_offset(lv, (S6722C2*), 0, "S6722C1");
    check_field_offset(lv, s6722c1f0, ABISELECT(96,60), "S6722C1.s6722c1f0");
    check_field_offset(lv, s6722c1f1, ABISELECT(108,72), "S6722C1.s6722c1f1");
    test_class_info(&lv, &cd_S6722C1);
    dp->~S6722C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6722C1(Test_S6722C1, "S6722C1", ABISELECT(120,84));

#else // __cplusplus

extern void _ZN7S6722C1C1Ev();
extern void _ZN7S6722C1D1Ev();
Name_Map name_map_S6722C1[] = {
  NSPAIR(_ZN7S6722C1C1Ev),
  NSPAIR(_ZN7S6722C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6722C2;
extern VTBL_ENTRY _ZTI7S6722C2[];
extern  VTBL_ENTRY _ZTV7S6722C2[];
static Base_Class bases_S6722C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6722C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6722C1[];
extern void _ZN7S6722C1D1Ev();
extern void _ZN7S6722C1D0Ev();
extern void _ZN7S6722C22v3Ev();
extern void _ZN7S6722C22v4Ev();
extern void _ZN7S6722C22v5Ev();
extern void _ZN7S6722C22v6Ev();
extern void _ZN7S6722C22v7Ev();
extern void _ZN7S6722C22v8Ev();
extern void _ZN7S6722C22v9Ev();
extern void _ZN7S6722C23v10Ev();
extern void _ZN7S6722C23v11Ev();
extern void _ZN7S6722C23v12Ev();
extern void _ZN7S6722C23v13Ev();
extern void _ZN7S6722C23v14Ev();
extern void _ZN7S6722C23v15Ev();
extern void _ZN7S6722C23v16Ev();
extern void _ZN7S6722C23v17Ev();
extern void _ZN7S6722C23v18Ev();
extern void _ZN7S6722C23v19Ev();
extern void _ZN7S6722C23v20Ev();
extern void _ZN7S6722C23v21Ev();
extern void _ZN7S6722C23v22Ev();
extern void _ZN7S6722C23v23Ev();
extern void _ZN7S6722C23v24Ev();
extern void _ZN7S6722C23v25Ev();
extern void _ZN7S6722C23v26Ev();
extern void _ZN7S6722C23v27Ev();
extern void _ZN7S6722C23v28Ev();
extern void _ZN7S6722C23v29Ev();
extern void _ZN7S6722C23v30Ev();
extern void _ZN7S6722C23v31Ev();
extern void _ZN7S6722C23v32Ev();
extern void _ZN7S6722C23v33Ev();
extern void _ZN7S6722C23v34Ev();
extern void _ZN7S6722C23v35Ev();
extern void _ZN7S6722C23v36Ev();
extern void _ZN7S6722C23v37Ev();
extern void _ZN7S6722C23v38Ev();
extern void _ZN7S6722C23v39Ev();
extern void _ZN7S6722C23v40Ev();
extern void _ZN7S6722C23v41Ev();
extern void _ZN7S6722C23v42Ev();
extern void _ZN7S6722C23v43Ev();
extern void _ZN7S6722C23v44Ev();
extern void _ZN7S6722C23v45Ev();
extern void _ZN7S6722C23v46Ev();
extern void _ZN7S6722C23v47Ev();
extern void _ZN7S6722C23v48Ev();
extern void _ZN7S6722C23v49Ev();
extern void _ZN7S6722C23v50Ev();
extern void _ZN7S6722C23v51Ev();
extern void _ZN7S6722C23v52Ev();
extern void _ZN7S6722C23v53Ev();
extern void _ZN7S6722C23v54Ev();
extern void _ZN7S6722C23v55Ev();
extern void _ZN7S6722C23v56Ev();
extern void _ZN7S6722C23v57Ev();
extern void _ZN7S6722C23v58Ev();
extern void _ZN7S6722C23v59Ev();
extern void _ZN7S6722C23v60Ev();
extern void _ZN7S6722C23v61Ev();
extern void _ZN7S6722C23v62Ev();
extern void _ZN7S6722C23v63Ev();
extern void _ZN7S6722C23v64Ev();
extern void _ZN7S6722C23v65Ev();
extern void _ZN7S6722C23v66Ev();
extern void _ZN7S6722C12v1Ev();
extern void _ZN7S6722C12v2Ev();
static  VTBL_ENTRY vtc_S6722C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6722C1[0]),
  (VTBL_ENTRY)&_ZN7S6722C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6722C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6722C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6722C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6722C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6722C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6722C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6722C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6722C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6722C23v66Ev,
  (VTBL_ENTRY)&_ZN7S6722C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6722C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S6722C1[];
extern  VTBL_ENTRY _ZTV7S6722C1[];
Class_Descriptor cd_S6722C1 = {  "S6722C1", // class name
  bases_S6722C1, 1,
  &(vtc_S6722C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,84), // object size
  NSPAIRA(_ZTI7S6722C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6722C1),70, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3027C5_nt  {
  void *s3027c5f0;
  int s3027c5f1;
  ::S731C17_nt s3027c5f2;
  ::S28C52_nt s3027c5f3;
  void  mf3027c5(); // _ZN10S3027C5_nt8mf3027c5Ev
};
//SIG(-1 S3027C5_nt) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S3027C5_nt ::mf3027c5(){}

//skip512 S3027C5_nt

#else // __cplusplus

Class_Descriptor cd_S3027C5_nt = {  "S3027C5_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  S3027C4_nt  : S3027C5_nt {
};
//SIG(-1 S3027C4_nt) C1{ BC2{ m Fp Fi FC3{ m} FC4{ m}}}



//skip512 S3027C4_nt

#else // __cplusplus

extern Class_Descriptor cd_S3027C5_nt;
static Base_Class bases_S3027C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3027C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S3027C3_nt  {
  void *s3027c3f0;
  ::S3027C4_nt s3027c3f1;
  virtual  ~S3027C3_nt(); // _ZN10S3027C3_ntD1Ev
  virtual void  v14(); // _ZN10S3027C3_nt3v14Ev
  virtual void  v15(); // _ZN10S3027C3_nt3v15Ev
  virtual void  v16(); // _ZN10S3027C3_nt3v16Ev
  virtual void  v17(); // _ZN10S3027C3_nt3v17Ev
  virtual void  v18(); // _ZN10S3027C3_nt3v18Ev
  virtual void  v19(); // _ZN10S3027C3_nt3v19Ev
  virtual void  v20(); // _ZN10S3027C3_nt3v20Ev
  virtual void  v21(); // _ZN10S3027C3_nt3v21Ev
  virtual void  v22(); // _ZN10S3027C3_nt3v22Ev
  virtual void  v23(); // _ZN10S3027C3_nt3v23Ev
  virtual void  v24(); // _ZN10S3027C3_nt3v24Ev
  virtual void  v25(); // _ZN10S3027C3_nt3v25Ev
  virtual void  v26(); // _ZN10S3027C3_nt3v26Ev
  virtual void  v27(); // _ZN10S3027C3_nt3v27Ev
  virtual void  v28(); // _ZN10S3027C3_nt3v28Ev
  S3027C3_nt(); // tgen
};
//SIG(-1 S3027C3_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp FC2{ BC3{ m Fp Fi FC4{ m} FC5{ m}}}}


 S3027C3_nt ::~S3027C3_nt(){ note_dtor("S3027C3_nt", this);}
void  S3027C3_nt ::v14(){vfunc_called(this, "_ZN10S3027C3_nt3v14Ev");}
void  S3027C3_nt ::v15(){vfunc_called(this, "_ZN10S3027C3_nt3v15Ev");}
void  S3027C3_nt ::v16(){vfunc_called(this, "_ZN10S3027C3_nt3v16Ev");}
void  S3027C3_nt ::v17(){vfunc_called(this, "_ZN10S3027C3_nt3v17Ev");}
void  S3027C3_nt ::v18(){vfunc_called(this, "_ZN10S3027C3_nt3v18Ev");}
void  S3027C3_nt ::v19(){vfunc_called(this, "_ZN10S3027C3_nt3v19Ev");}
void  S3027C3_nt ::v20(){vfunc_called(this, "_ZN10S3027C3_nt3v20Ev");}
void  S3027C3_nt ::v21(){vfunc_called(this, "_ZN10S3027C3_nt3v21Ev");}
void  S3027C3_nt ::v22(){vfunc_called(this, "_ZN10S3027C3_nt3v22Ev");}
void  S3027C3_nt ::v23(){vfunc_called(this, "_ZN10S3027C3_nt3v23Ev");}
void  S3027C3_nt ::v24(){vfunc_called(this, "_ZN10S3027C3_nt3v24Ev");}
void  S3027C3_nt ::v25(){vfunc_called(this, "_ZN10S3027C3_nt3v25Ev");}
void  S3027C3_nt ::v26(){vfunc_called(this, "_ZN10S3027C3_nt3v26Ev");}
void  S3027C3_nt ::v27(){vfunc_called(this, "_ZN10S3027C3_nt3v27Ev");}
void  S3027C3_nt ::v28(){vfunc_called(this, "_ZN10S3027C3_nt3v28Ev");}
S3027C3_nt ::S3027C3_nt(){ note_ctor("S3027C3_nt", this);} // tgen

//skip512 S3027C3_nt

#else // __cplusplus

extern void _ZN10S3027C3_ntC1Ev();
extern void _ZN10S3027C3_ntD1Ev();
Name_Map name_map_S3027C3_nt[] = {
  NSPAIR(_ZN10S3027C3_ntC1Ev),
  NSPAIR(_ZN10S3027C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3027C3_nt[];
extern void _ZN10S3027C3_ntD1Ev();
extern void _ZN10S3027C3_ntD0Ev();
extern void _ZN10S3027C3_nt3v14Ev();
extern void _ZN10S3027C3_nt3v15Ev();
extern void _ZN10S3027C3_nt3v16Ev();
extern void _ZN10S3027C3_nt3v17Ev();
extern void _ZN10S3027C3_nt3v18Ev();
extern void _ZN10S3027C3_nt3v19Ev();
extern void _ZN10S3027C3_nt3v20Ev();
extern void _ZN10S3027C3_nt3v21Ev();
extern void _ZN10S3027C3_nt3v22Ev();
extern void _ZN10S3027C3_nt3v23Ev();
extern void _ZN10S3027C3_nt3v24Ev();
extern void _ZN10S3027C3_nt3v25Ev();
extern void _ZN10S3027C3_nt3v26Ev();
extern void _ZN10S3027C3_nt3v27Ev();
extern void _ZN10S3027C3_nt3v28Ev();
static  VTBL_ENTRY vtc_S3027C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3027C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S3027C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v28Ev,
};
extern VTBL_ENTRY _ZTI10S3027C3_nt[];
VTBL_ENTRY *P__ZTI10S3027C3_nt = _ZTI10S3027C3_nt; 
extern  VTBL_ENTRY _ZTV10S3027C3_nt[];
Class_Descriptor cd_S3027C3_nt = {  "S3027C3_nt", // class name
  0,0,//no base classes
  &(vtc_S3027C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI10S3027C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3027C3_nt),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3027C2_nt  : S3027C3_nt {
  ::S731C20 s3027c2f0;
  virtual  ~S3027C2_nt(); // _ZN10S3027C2_ntD1Ev
  virtual void  v29(); // _ZN10S3027C2_nt3v29Ev
  virtual void  v30(); // _ZN10S3027C2_nt3v30Ev
  virtual void  v31(); // _ZN10S3027C2_nt3v31Ev
  virtual void  v32(); // _ZN10S3027C2_nt3v32Ev
  virtual void  v33(); // _ZN10S3027C2_nt3v33Ev
  S3027C2_nt(); // tgen
};
//SIG(-1 S3027C2_nt) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 Fp FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}} vd v1 v2 v3 v4 v5 FC7{ m Fp Fi[2] FC5}}


 S3027C2_nt ::~S3027C2_nt(){ note_dtor("S3027C2_nt", this);}
void  S3027C2_nt ::v29(){vfunc_called(this, "_ZN10S3027C2_nt3v29Ev");}
void  S3027C2_nt ::v30(){vfunc_called(this, "_ZN10S3027C2_nt3v30Ev");}
void  S3027C2_nt ::v31(){vfunc_called(this, "_ZN10S3027C2_nt3v31Ev");}
void  S3027C2_nt ::v32(){vfunc_called(this, "_ZN10S3027C2_nt3v32Ev");}
void  S3027C2_nt ::v33(){vfunc_called(this, "_ZN10S3027C2_nt3v33Ev");}
S3027C2_nt ::S3027C2_nt(){ note_ctor("S3027C2_nt", this);} // tgen

//skip512 S3027C2_nt

#else // __cplusplus

extern void _ZN10S3027C2_ntC1Ev();
extern void _ZN10S3027C2_ntD1Ev();
Name_Map name_map_S3027C2_nt[] = {
  NSPAIR(_ZN10S3027C2_ntC1Ev),
  NSPAIR(_ZN10S3027C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3027C3_nt;
extern VTBL_ENTRY _ZTI10S3027C3_nt[];
extern  VTBL_ENTRY _ZTV10S3027C3_nt[];
static Base_Class bases_S3027C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3027C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S3027C2_nt[];
extern void _ZN10S3027C2_ntD1Ev();
extern void _ZN10S3027C2_ntD0Ev();
extern void _ZN10S3027C3_nt3v14Ev();
extern void _ZN10S3027C3_nt3v15Ev();
extern void _ZN10S3027C3_nt3v16Ev();
extern void _ZN10S3027C3_nt3v17Ev();
extern void _ZN10S3027C3_nt3v18Ev();
extern void _ZN10S3027C3_nt3v19Ev();
extern void _ZN10S3027C3_nt3v20Ev();
extern void _ZN10S3027C3_nt3v21Ev();
extern void _ZN10S3027C3_nt3v22Ev();
extern void _ZN10S3027C3_nt3v23Ev();
extern void _ZN10S3027C3_nt3v24Ev();
extern void _ZN10S3027C3_nt3v25Ev();
extern void _ZN10S3027C3_nt3v26Ev();
extern void _ZN10S3027C3_nt3v27Ev();
extern void _ZN10S3027C3_nt3v28Ev();
extern void _ZN10S3027C2_nt3v29Ev();
extern void _ZN10S3027C2_nt3v30Ev();
extern void _ZN10S3027C2_nt3v31Ev();
extern void _ZN10S3027C2_nt3v32Ev();
extern void _ZN10S3027C2_nt3v33Ev();
static  VTBL_ENTRY vtc_S3027C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3027C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S3027C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3027C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3027C2_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3027C2_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3027C2_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3027C2_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3027C2_nt3v33Ev,
};
extern VTBL_ENTRY _ZTI10S3027C2_nt[];
VTBL_ENTRY *P__ZTI10S3027C2_nt = _ZTI10S3027C2_nt; 
extern  VTBL_ENTRY _ZTV10S3027C2_nt[];
Class_Descriptor cd_S3027C2_nt = {  "S3027C2_nt", // class name
  bases_S3027C2_nt, 1,
  &(vtc_S3027C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI10S3027C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S3027C2_nt),24, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3027C12_nt  {
  virtual  ~S3027C12_nt(); // _ZN11S3027C12_ntD1Ev
  virtual void  v34(); // _ZN11S3027C12_nt3v34Ev
  virtual void  v35(); // _ZN11S3027C12_nt3v35Ev
  virtual void  v36(); // _ZN11S3027C12_nt3v36Ev
  S3027C12_nt(); // tgen
};
//SIG(-1 S3027C12_nt) C1{ vd v1 v2 v3}


 S3027C12_nt ::~S3027C12_nt(){ note_dtor("S3027C12_nt", this);}
void  S3027C12_nt ::v34(){vfunc_called(this, "_ZN11S3027C12_nt3v34Ev");}
void  S3027C12_nt ::v35(){vfunc_called(this, "_ZN11S3027C12_nt3v35Ev");}
void  S3027C12_nt ::v36(){vfunc_called(this, "_ZN11S3027C12_nt3v36Ev");}
S3027C12_nt ::S3027C12_nt(){ note_ctor("S3027C12_nt", this);} // tgen

//skip512 S3027C12_nt

#else // __cplusplus

extern void _ZN11S3027C12_ntC1Ev();
extern void _ZN11S3027C12_ntD1Ev();
Name_Map name_map_S3027C12_nt[] = {
  NSPAIR(_ZN11S3027C12_ntC1Ev),
  NSPAIR(_ZN11S3027C12_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S3027C12_nt[];
extern void _ZN11S3027C12_ntD1Ev();
extern void _ZN11S3027C12_ntD0Ev();
extern void _ZN11S3027C12_nt3v34Ev();
extern void _ZN11S3027C12_nt3v35Ev();
extern void _ZN11S3027C12_nt3v36Ev();
static  VTBL_ENTRY vtc_S3027C12_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S3027C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S3027C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S3027C12_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S3027C12_nt3v34Ev,
  (VTBL_ENTRY)&_ZN11S3027C12_nt3v35Ev,
  (VTBL_ENTRY)&_ZN11S3027C12_nt3v36Ev,
};
extern VTBL_ENTRY _ZTI11S3027C12_nt[];
VTBL_ENTRY *P__ZTI11S3027C12_nt = _ZTI11S3027C12_nt; 
extern  VTBL_ENTRY _ZTV11S3027C12_nt[];
Class_Descriptor cd_S3027C12_nt = {  "S3027C12_nt", // class name
  0,0,//no base classes
  &(vtc_S3027C12_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S3027C12_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S3027C12_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  S3027C11_nt  : S3027C12_nt {
  virtual  ~S3027C11_nt(); // _ZN11S3027C11_ntD1Ev
  virtual void  v37(); // _ZN11S3027C11_nt3v37Ev
  virtual void  v38(); // _ZN11S3027C11_nt3v38Ev
  virtual void  v39(); // _ZN11S3027C11_nt3v39Ev
  virtual void  v40(); // _ZN11S3027C11_nt3v40Ev
  virtual void  v41(); // _ZN11S3027C11_nt3v41Ev
  virtual void  v42(); // _ZN11S3027C11_nt3v42Ev
  S3027C11_nt(); // tgen
};
//SIG(-1 S3027C11_nt) C1{ BC2{ vd v7 v8 v9} vd v1 v2 v3 v4 v5 v6}


 S3027C11_nt ::~S3027C11_nt(){ note_dtor("S3027C11_nt", this);}
void  S3027C11_nt ::v37(){vfunc_called(this, "_ZN11S3027C11_nt3v37Ev");}
void  S3027C11_nt ::v38(){vfunc_called(this, "_ZN11S3027C11_nt3v38Ev");}
void  S3027C11_nt ::v39(){vfunc_called(this, "_ZN11S3027C11_nt3v39Ev");}
void  S3027C11_nt ::v40(){vfunc_called(this, "_ZN11S3027C11_nt3v40Ev");}
void  S3027C11_nt ::v41(){vfunc_called(this, "_ZN11S3027C11_nt3v41Ev");}
void  S3027C11_nt ::v42(){vfunc_called(this, "_ZN11S3027C11_nt3v42Ev");}
S3027C11_nt ::S3027C11_nt(){ note_ctor("S3027C11_nt", this);} // tgen

//skip512 S3027C11_nt

#else // __cplusplus

extern void _ZN11S3027C11_ntC1Ev();
extern void _ZN11S3027C11_ntD1Ev();
Name_Map name_map_S3027C11_nt[] = {
  NSPAIR(_ZN11S3027C11_ntC1Ev),
  NSPAIR(_ZN11S3027C11_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3027C12_nt;
extern VTBL_ENTRY _ZTI11S3027C12_nt[];
extern  VTBL_ENTRY _ZTV11S3027C12_nt[];
static Base_Class bases_S3027C11_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3027C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S3027C11_nt[];
extern void _ZN11S3027C11_ntD1Ev();
extern void _ZN11S3027C11_ntD0Ev();
extern void _ZN11S3027C12_nt3v34Ev();
extern void _ZN11S3027C12_nt3v35Ev();
extern void _ZN11S3027C12_nt3v36Ev();
extern void _ZN11S3027C11_nt3v37Ev();
extern void _ZN11S3027C11_nt3v38Ev();
extern void _ZN11S3027C11_nt3v39Ev();
extern void _ZN11S3027C11_nt3v40Ev();
extern void _ZN11S3027C11_nt3v41Ev();
extern void _ZN11S3027C11_nt3v42Ev();
static  VTBL_ENTRY vtc_S3027C11_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S3027C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S3027C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S3027C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S3027C12_nt3v34Ev,
  (VTBL_ENTRY)&_ZN11S3027C12_nt3v35Ev,
  (VTBL_ENTRY)&_ZN11S3027C12_nt3v36Ev,
  (VTBL_ENTRY)&_ZN11S3027C11_nt3v37Ev,
  (VTBL_ENTRY)&_ZN11S3027C11_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S3027C11_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S3027C11_nt3v40Ev,
  (VTBL_ENTRY)&_ZN11S3027C11_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S3027C11_nt3v42Ev,
};
extern VTBL_ENTRY _ZTI11S3027C11_nt[];
VTBL_ENTRY *P__ZTI11S3027C11_nt = _ZTI11S3027C11_nt; 
extern  VTBL_ENTRY _ZTV11S3027C11_nt[];
Class_Descriptor cd_S3027C11_nt = {  "S3027C11_nt", // class name
  bases_S3027C11_nt, 1,
  &(vtc_S3027C11_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S3027C11_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV11S3027C11_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  S3027C16_nt  {
  long s3027c16f0[4];
};
//SIG(-1 S3027C16_nt) C1{ Fl[4]}



//skip512 S3027C16_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3027C15_nt  {
  ::S3027C16_nt s3027c15f0;
  void  mf3027c15(); // _ZN11S3027C15_nt9mf3027c15Ev
};
//SIG(-1 S3027C15_nt) C1{ m FC2{ Fl[4]}}


void  S3027C15_nt ::mf3027c15(){}

//skip512 S3027C15_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3027C10_nt  : S3027C11_nt {
  ::S731C6_nt s3027c10f0;
  ::S3027C15_nt s3027c10f1;
  char s3027c10f2;
  virtual  ~S3027C10_nt(); // _ZN11S3027C10_ntD1Ev
  virtual void  v43(); // _ZN11S3027C10_nt3v43Ev
  virtual void  v44(); // _ZN11S3027C10_nt3v44Ev
  virtual void  v45(); // _ZN11S3027C10_nt3v45Ev
  S3027C10_nt(); // tgen
};
//SIG(-1 S3027C10_nt) C1{ BC2{ BC3{ vd v4 v5 v6} vd v7 v8 v9 v10 v11 v12} vd v1 v2 v3 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FC7{ Fl[4]}} Fc}


 S3027C10_nt ::~S3027C10_nt(){ note_dtor("S3027C10_nt", this);}
void  S3027C10_nt ::v43(){vfunc_called(this, "_ZN11S3027C10_nt3v43Ev");}
void  S3027C10_nt ::v44(){vfunc_called(this, "_ZN11S3027C10_nt3v44Ev");}
void  S3027C10_nt ::v45(){vfunc_called(this, "_ZN11S3027C10_nt3v45Ev");}
S3027C10_nt ::S3027C10_nt(){ note_ctor("S3027C10_nt", this);} // tgen

//skip512 S3027C10_nt

#else // __cplusplus

extern void _ZN11S3027C10_ntC1Ev();
extern void _ZN11S3027C10_ntD1Ev();
Name_Map name_map_S3027C10_nt[] = {
  NSPAIR(_ZN11S3027C10_ntC1Ev),
  NSPAIR(_ZN11S3027C10_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3027C12_nt;
extern VTBL_ENTRY _ZTI11S3027C12_nt[];
extern  VTBL_ENTRY _ZTV11S3027C12_nt[];
extern Class_Descriptor cd_S3027C11_nt;
extern VTBL_ENTRY _ZTI11S3027C11_nt[];
extern  VTBL_ENTRY _ZTV11S3027C11_nt[];
static Base_Class bases_S3027C10_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3027C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3027C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI11S3027C10_nt[];
extern void _ZN11S3027C10_ntD1Ev();
extern void _ZN11S3027C10_ntD0Ev();
extern void _ZN11S3027C12_nt3v34Ev();
extern void _ZN11S3027C12_nt3v35Ev();
extern void _ZN11S3027C12_nt3v36Ev();
extern void _ZN11S3027C11_nt3v37Ev();
extern void _ZN11S3027C11_nt3v38Ev();
extern void _ZN11S3027C11_nt3v39Ev();
extern void _ZN11S3027C11_nt3v40Ev();
extern void _ZN11S3027C11_nt3v41Ev();
extern void _ZN11S3027C11_nt3v42Ev();
extern void _ZN11S3027C10_nt3v43Ev();
extern void _ZN11S3027C10_nt3v44Ev();
extern void _ZN11S3027C10_nt3v45Ev();
static  VTBL_ENTRY vtc_S3027C10_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S3027C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S3027C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S3027C10_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S3027C12_nt3v34Ev,
  (VTBL_ENTRY)&_ZN11S3027C12_nt3v35Ev,
  (VTBL_ENTRY)&_ZN11S3027C12_nt3v36Ev,
  (VTBL_ENTRY)&_ZN11S3027C11_nt3v37Ev,
  (VTBL_ENTRY)&_ZN11S3027C11_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S3027C11_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S3027C11_nt3v40Ev,
  (VTBL_ENTRY)&_ZN11S3027C11_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S3027C11_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S3027C10_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S3027C10_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S3027C10_nt3v45Ev,
};
extern VTBL_ENTRY _ZTI11S3027C10_nt[];
VTBL_ENTRY *P__ZTI11S3027C10_nt = _ZTI11S3027C10_nt; 
extern  VTBL_ENTRY _ZTV11S3027C10_nt[];
Class_Descriptor cd_S3027C10_nt = {  "S3027C10_nt", // class name
  bases_S3027C10_nt, 2,
  &(vtc_S3027C10_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI11S3027C10_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV11S3027C10_nt),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3027C1  : S3027C2_nt , S3027C10_nt {
  void *s3027c1f0;
  virtual  ~S3027C1(); // _ZN7S3027C1D1Ev
  virtual void  v1(); // _ZN7S3027C12v1Ev
  virtual void  v2(); // _ZN7S3027C12v2Ev
  virtual void  v3(); // _ZN7S3027C12v3Ev
  virtual void  v4(); // _ZN7S3027C12v4Ev
  virtual void  v5(); // _ZN7S3027C12v5Ev
  virtual void  v6(); // _ZN7S3027C12v6Ev
  virtual void  v7(); // _ZN7S3027C12v7Ev
  virtual void  v8(); // _ZN7S3027C12v8Ev
  virtual void  v9(); // _ZN7S3027C12v9Ev
  virtual void  v10(); // _ZN7S3027C13v10Ev
  virtual void  v11(); // _ZN7S3027C13v11Ev
  virtual void  v12(); // _ZN7S3027C13v12Ev
  virtual void  v13(); // _ZN7S3027C13v13Ev
  S3027C1(); // tgen
};
//SIG(1 S3027C1) C1{ BC2{ BC3{ vd v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 Fp FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}} vd v29 v30 v31 v32 v33 FC8{ m Fp Fi[2] FC6}} BC9{ BC10{ BC11{ vd v34 v35 v36} vd v37 v38 v39 v40 v41 v42} vd v43 v44 v45 FC12{ m Fp Fi[2] FC7} FC13{ m FC14{ Fl[4]}} Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 Fp}


 S3027C1 ::~S3027C1(){ note_dtor("S3027C1", this);}
void  S3027C1 ::v1(){vfunc_called(this, "_ZN7S3027C12v1Ev");}
void  S3027C1 ::v2(){vfunc_called(this, "_ZN7S3027C12v2Ev");}
void  S3027C1 ::v3(){vfunc_called(this, "_ZN7S3027C12v3Ev");}
void  S3027C1 ::v4(){vfunc_called(this, "_ZN7S3027C12v4Ev");}
void  S3027C1 ::v5(){vfunc_called(this, "_ZN7S3027C12v5Ev");}
void  S3027C1 ::v6(){vfunc_called(this, "_ZN7S3027C12v6Ev");}
void  S3027C1 ::v7(){vfunc_called(this, "_ZN7S3027C12v7Ev");}
void  S3027C1 ::v8(){vfunc_called(this, "_ZN7S3027C12v8Ev");}
void  S3027C1 ::v9(){vfunc_called(this, "_ZN7S3027C12v9Ev");}
void  S3027C1 ::v10(){vfunc_called(this, "_ZN7S3027C13v10Ev");}
void  S3027C1 ::v11(){vfunc_called(this, "_ZN7S3027C13v11Ev");}
void  S3027C1 ::v12(){vfunc_called(this, "_ZN7S3027C13v12Ev");}
void  S3027C1 ::v13(){vfunc_called(this, "_ZN7S3027C13v13Ev");}
S3027C1 ::S3027C1(){ note_ctor("S3027C1", this);} // tgen

static void Test_S3027C1()
{
  extern Class_Descriptor cd_S3027C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,21)];
    init_test(&cd_S3027C1, buf);
    S3027C1 *dp, &lv = *(dp=new (buf) S3027C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,80), "sizeof(S3027C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3027C1)");
    check_base_class_offset(lv, (S3027C3_nt*)(S3027C2_nt*), 0, "S3027C1");
    check_base_class_offset(lv, (S3027C2_nt*), 0, "S3027C1");
    check_base_class_offset(lv, (S3027C12_nt*)(S3027C11_nt*)(S3027C10_nt*), ABISELECT(56,36), "S3027C1");
    check_base_class_offset(lv, (S3027C11_nt*)(S3027C10_nt*), ABISELECT(56,36), "S3027C1");
    check_base_class_offset(lv, (S3027C10_nt*), ABISELECT(56,36), "S3027C1");
    check_field_offset(lv, s3027c1f0, ABISELECT(128,76), "S3027C1.s3027c1f0");
    test_class_info(&lv, &cd_S3027C1);
    dp->~S3027C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3027C1(Test_S3027C1, "S3027C1", ABISELECT(136,80));

#else // __cplusplus

extern void _ZN7S3027C1C1Ev();
extern void _ZN7S3027C1D1Ev();
Name_Map name_map_S3027C1[] = {
  NSPAIR(_ZN7S3027C1C1Ev),
  NSPAIR(_ZN7S3027C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3027C3_nt;
extern VTBL_ENTRY _ZTI10S3027C3_nt[];
extern  VTBL_ENTRY _ZTV10S3027C3_nt[];
extern Class_Descriptor cd_S3027C2_nt;
extern VTBL_ENTRY _ZTI10S3027C2_nt[];
extern  VTBL_ENTRY _ZTV10S3027C2_nt[];
extern Class_Descriptor cd_S3027C12_nt;
extern VTBL_ENTRY _ZTI11S3027C12_nt[];
extern  VTBL_ENTRY _ZTV11S3027C12_nt[];
extern Class_Descriptor cd_S3027C11_nt;
extern VTBL_ENTRY _ZTI11S3027C11_nt[];
extern  VTBL_ENTRY _ZTV11S3027C11_nt[];
extern Class_Descriptor cd_S3027C10_nt;
extern VTBL_ENTRY _ZTI11S3027C10_nt[];
extern  VTBL_ENTRY _ZTV11S3027C10_nt[];
static Base_Class bases_S3027C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3027C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3027C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3027C12_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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3027C11_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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3027C10_nt,    ABISELECT(56,36), //bcp->offset
    37, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3027C1[];
extern void _ZN7S3027C1D1Ev();
extern void _ZN7S3027C1D0Ev();
extern void _ZN10S3027C3_nt3v14Ev();
extern void _ZN10S3027C3_nt3v15Ev();
extern void _ZN10S3027C3_nt3v16Ev();
extern void _ZN10S3027C3_nt3v17Ev();
extern void _ZN10S3027C3_nt3v18Ev();
extern void _ZN10S3027C3_nt3v19Ev();
extern void _ZN10S3027C3_nt3v20Ev();
extern void _ZN10S3027C3_nt3v21Ev();
extern void _ZN10S3027C3_nt3v22Ev();
extern void _ZN10S3027C3_nt3v23Ev();
extern void _ZN10S3027C3_nt3v24Ev();
extern void _ZN10S3027C3_nt3v25Ev();
extern void _ZN10S3027C3_nt3v26Ev();
extern void _ZN10S3027C3_nt3v27Ev();
extern void _ZN10S3027C3_nt3v28Ev();
extern void _ZN10S3027C2_nt3v29Ev();
extern void _ZN10S3027C2_nt3v30Ev();
extern void _ZN10S3027C2_nt3v31Ev();
extern void _ZN10S3027C2_nt3v32Ev();
extern void _ZN10S3027C2_nt3v33Ev();
extern void _ZN7S3027C12v1Ev();
extern void _ZN7S3027C12v2Ev();
extern void _ZN7S3027C12v3Ev();
extern void _ZN7S3027C12v4Ev();
extern void _ZN7S3027C12v5Ev();
extern void _ZN7S3027C12v6Ev();
extern void _ZN7S3027C12v7Ev();
extern void _ZN7S3027C12v8Ev();
extern void _ZN7S3027C12v9Ev();
extern void _ZN7S3027C13v10Ev();
extern void _ZN7S3027C13v11Ev();
extern void _ZN7S3027C13v12Ev();
extern void _ZN7S3027C13v13Ev();
extern void ABISELECT(_ZThn56_N7S3027C1D1Ev,_ZThn36_N7S3027C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S3027C1D0Ev,_ZThn36_N7S3027C1D0Ev)();
extern void _ZN11S3027C12_nt3v34Ev();
extern void _ZN11S3027C12_nt3v35Ev();
extern void _ZN11S3027C12_nt3v36Ev();
extern void _ZN11S3027C11_nt3v37Ev();
extern void _ZN11S3027C11_nt3v38Ev();
extern void _ZN11S3027C11_nt3v39Ev();
extern void _ZN11S3027C11_nt3v40Ev();
extern void _ZN11S3027C11_nt3v41Ev();
extern void _ZN11S3027C11_nt3v42Ev();
extern void _ZN11S3027C10_nt3v43Ev();
extern void _ZN11S3027C10_nt3v44Ev();
extern void _ZN11S3027C10_nt3v45Ev();
static  VTBL_ENTRY vtc_S3027C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3027C1[0]),
  (VTBL_ENTRY)&_ZN7S3027C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3027C1D0Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3027C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3027C2_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3027C2_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3027C2_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3027C2_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3027C2_nt3v33Ev,
  (VTBL_ENTRY)&_ZN7S3027C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3027C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3027C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3027C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3027C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3027C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3027C12v7Ev,
  (VTBL_ENTRY)&_ZN7S3027C12v8Ev,
  (VTBL_ENTRY)&_ZN7S3027C12v9Ev,
  (VTBL_ENTRY)&_ZN7S3027C13v10Ev,
  (VTBL_ENTRY)&_ZN7S3027C13v11Ev,
  (VTBL_ENTRY)&_ZN7S3027C13v12Ev,
  (VTBL_ENTRY)&_ZN7S3027C13v13Ev,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S3027C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3027C1D1Ev,_ZThn36_N7S3027C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3027C1D0Ev,_ZThn36_N7S3027C1D0Ev),
  (VTBL_ENTRY)&_ZN11S3027C12_nt3v34Ev,
  (VTBL_ENTRY)&_ZN11S3027C12_nt3v35Ev,
  (VTBL_ENTRY)&_ZN11S3027C12_nt3v36Ev,
  (VTBL_ENTRY)&_ZN11S3027C11_nt3v37Ev,
  (VTBL_ENTRY)&_ZN11S3027C11_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S3027C11_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S3027C11_nt3v40Ev,
  (VTBL_ENTRY)&_ZN11S3027C11_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S3027C11_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S3027C10_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S3027C10_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S3027C10_nt3v45Ev,
};
extern VTBL_ENTRY _ZTI7S3027C1[];
extern  VTBL_ENTRY _ZTV7S3027C1[];
Class_Descriptor cd_S3027C1 = {  "S3027C1", // class name
  bases_S3027C1, 5,
  &(vtc_S3027C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,80), // object size
  NSPAIRA(_ZTI7S3027C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3027C1),53, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3029C3  {
  void *s3029c3f0;
  ::S3027C4_nt s3029c3f1;
  virtual  ~S3029C3(); // _ZN7S3029C3D1Ev
  virtual void  v14(); // _ZN7S3029C33v14Ev
  virtual void  v15(); // _ZN7S3029C33v15Ev
  virtual void  v16(); // _ZN7S3029C33v16Ev
  virtual void  v17(); // _ZN7S3029C33v17Ev
  virtual void  v18(); // _ZN7S3029C33v18Ev
  virtual void  v19(); // _ZN7S3029C33v19Ev
  virtual void  v20(); // _ZN7S3029C33v20Ev
  virtual void  v21(); // _ZN7S3029C33v21Ev
  virtual void  v22(); // _ZN7S3029C33v22Ev
  virtual void  v23(); // _ZN7S3029C33v23Ev
  virtual void  v24(); // _ZN7S3029C33v24Ev
  virtual void  v25(); // _ZN7S3029C33v25Ev
  virtual void  v26(); // _ZN7S3029C33v26Ev
  virtual void  v27(); // _ZN7S3029C33v27Ev
  virtual void  v28(); // _ZN7S3029C33v28Ev
  S3029C3(); // tgen
};
//SIG(-1 S3029C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp FC2{ BC3{ m Fp Fi FC4{ m} FC5{ m}}}}


 S3029C3 ::~S3029C3(){ note_dtor("S3029C3", this);}
void  S3029C3 ::v14(){vfunc_called(this, "_ZN7S3029C33v14Ev");}
void  S3029C3 ::v15(){vfunc_called(this, "_ZN7S3029C33v15Ev");}
void  S3029C3 ::v16(){vfunc_called(this, "_ZN7S3029C33v16Ev");}
void  S3029C3 ::v17(){vfunc_called(this, "_ZN7S3029C33v17Ev");}
void  S3029C3 ::v18(){vfunc_called(this, "_ZN7S3029C33v18Ev");}
void  S3029C3 ::v19(){vfunc_called(this, "_ZN7S3029C33v19Ev");}
void  S3029C3 ::v20(){vfunc_called(this, "_ZN7S3029C33v20Ev");}
void  S3029C3 ::v21(){vfunc_called(this, "_ZN7S3029C33v21Ev");}
void  S3029C3 ::v22(){vfunc_called(this, "_ZN7S3029C33v22Ev");}
void  S3029C3 ::v23(){vfunc_called(this, "_ZN7S3029C33v23Ev");}
void  S3029C3 ::v24(){vfunc_called(this, "_ZN7S3029C33v24Ev");}
void  S3029C3 ::v25(){vfunc_called(this, "_ZN7S3029C33v25Ev");}
void  S3029C3 ::v26(){vfunc_called(this, "_ZN7S3029C33v26Ev");}
void  S3029C3 ::v27(){vfunc_called(this, "_ZN7S3029C33v27Ev");}
void  S3029C3 ::v28(){vfunc_called(this, "_ZN7S3029C33v28Ev");}
S3029C3 ::S3029C3(){ note_ctor("S3029C3", this);} // tgen

static void Test_S3029C3()
{
  extern Class_Descriptor cd_S3029C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S3029C3, buf);
    S3029C3 *dp, &lv = *(dp=new (buf) S3029C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3029C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3029C3)");
    check_field_offset(lv, s3029c3f0, ABISELECT(8,4), "S3029C3.s3029c3f0");
    check_field_offset(lv, s3029c3f1, ABISELECT(16,8), "S3029C3.s3029c3f1");
    test_class_info(&lv, &cd_S3029C3);
    dp->~S3029C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3029C3(Test_S3029C3, "S3029C3", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3029C3C1Ev();
extern void _ZN7S3029C3D1Ev();
Name_Map name_map_S3029C3[] = {
  NSPAIR(_ZN7S3029C3C1Ev),
  NSPAIR(_ZN7S3029C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3029C3[];
extern void _ZN7S3029C3D1Ev();
extern void _ZN7S3029C3D0Ev();
extern void _ZN7S3029C33v14Ev();
extern void _ZN7S3029C33v15Ev();
extern void _ZN7S3029C33v16Ev();
extern void _ZN7S3029C33v17Ev();
extern void _ZN7S3029C33v18Ev();
extern void _ZN7S3029C33v19Ev();
extern void _ZN7S3029C33v20Ev();
extern void _ZN7S3029C33v21Ev();
extern void _ZN7S3029C33v22Ev();
extern void _ZN7S3029C33v23Ev();
extern void _ZN7S3029C33v24Ev();
extern void _ZN7S3029C33v25Ev();
extern void _ZN7S3029C33v26Ev();
extern void _ZN7S3029C33v27Ev();
extern void _ZN7S3029C33v28Ev();
static  VTBL_ENTRY vtc_S3029C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3029C3[0]),
  (VTBL_ENTRY)&_ZN7S3029C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3029C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v28Ev,
};
extern VTBL_ENTRY _ZTI7S3029C3[];
extern  VTBL_ENTRY _ZTV7S3029C3[];
Class_Descriptor cd_S3029C3 = {  "S3029C3", // class name
  0,0,//no base classes
  &(vtc_S3029C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3029C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3029C3),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3029C2  : S3029C3 {
  ::S731C20 s3029c2f0;
  virtual  ~S3029C2(); // _ZN7S3029C2D1Ev
  virtual void  v29(); // _ZN7S3029C23v29Ev
  virtual void  v30(); // _ZN7S3029C23v30Ev
  virtual void  v31(); // _ZN7S3029C23v31Ev
  virtual void  v32(); // _ZN7S3029C23v32Ev
  virtual void  v33(); // _ZN7S3029C23v33Ev
  S3029C2(); // tgen
};
//SIG(-1 S3029C2) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 Fp FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}} vd v1 v2 v3 v4 v5 FC7{ m Fp Fi[2] FC5}}


 S3029C2 ::~S3029C2(){ note_dtor("S3029C2", this);}
void  S3029C2 ::v29(){vfunc_called(this, "_ZN7S3029C23v29Ev");}
void  S3029C2 ::v30(){vfunc_called(this, "_ZN7S3029C23v30Ev");}
void  S3029C2 ::v31(){vfunc_called(this, "_ZN7S3029C23v31Ev");}
void  S3029C2 ::v32(){vfunc_called(this, "_ZN7S3029C23v32Ev");}
void  S3029C2 ::v33(){vfunc_called(this, "_ZN7S3029C23v33Ev");}
S3029C2 ::S3029C2(){ note_ctor("S3029C2", this);} // tgen

static void Test_S3029C2()
{
  extern Class_Descriptor cd_S3029C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S3029C2, buf);
    S3029C2 *dp, &lv = *(dp=new (buf) S3029C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S3029C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3029C2)");
    check_base_class_offset(lv, (S3029C3*), 0, "S3029C2");
    check_field_offset(lv, s3029c2f0, ABISELECT(32,20), "S3029C2.s3029c2f0");
    test_class_info(&lv, &cd_S3029C2);
    dp->~S3029C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3029C2(Test_S3029C2, "S3029C2", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S3029C2C1Ev();
extern void _ZN7S3029C2D1Ev();
Name_Map name_map_S3029C2[] = {
  NSPAIR(_ZN7S3029C2C1Ev),
  NSPAIR(_ZN7S3029C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3029C3;
extern VTBL_ENTRY _ZTI7S3029C3[];
extern  VTBL_ENTRY _ZTV7S3029C3[];
static Base_Class bases_S3029C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3029C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3029C2[];
extern void _ZN7S3029C2D1Ev();
extern void _ZN7S3029C2D0Ev();
extern void _ZN7S3029C33v14Ev();
extern void _ZN7S3029C33v15Ev();
extern void _ZN7S3029C33v16Ev();
extern void _ZN7S3029C33v17Ev();
extern void _ZN7S3029C33v18Ev();
extern void _ZN7S3029C33v19Ev();
extern void _ZN7S3029C33v20Ev();
extern void _ZN7S3029C33v21Ev();
extern void _ZN7S3029C33v22Ev();
extern void _ZN7S3029C33v23Ev();
extern void _ZN7S3029C33v24Ev();
extern void _ZN7S3029C33v25Ev();
extern void _ZN7S3029C33v26Ev();
extern void _ZN7S3029C33v27Ev();
extern void _ZN7S3029C33v28Ev();
extern void _ZN7S3029C23v29Ev();
extern void _ZN7S3029C23v30Ev();
extern void _ZN7S3029C23v31Ev();
extern void _ZN7S3029C23v32Ev();
extern void _ZN7S3029C23v33Ev();
static  VTBL_ENTRY vtc_S3029C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3029C2[0]),
  (VTBL_ENTRY)&_ZN7S3029C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3029C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3029C23v29Ev,
  (VTBL_ENTRY)&_ZN7S3029C23v30Ev,
  (VTBL_ENTRY)&_ZN7S3029C23v31Ev,
  (VTBL_ENTRY)&_ZN7S3029C23v32Ev,
  (VTBL_ENTRY)&_ZN7S3029C23v33Ev,
};
extern VTBL_ENTRY _ZTI7S3029C2[];
extern  VTBL_ENTRY _ZTV7S3029C2[];
Class_Descriptor cd_S3029C2 = {  "S3029C2", // class name
  bases_S3029C2, 1,
  &(vtc_S3029C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S3029C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3029C2),24, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3029C12  {
  virtual  ~S3029C12(); // _ZN8S3029C12D1Ev
  virtual void  v34(); // _ZN8S3029C123v34Ev
  virtual void  v35(); // _ZN8S3029C123v35Ev
  virtual void  v36(); // _ZN8S3029C123v36Ev
  S3029C12(); // tgen
};
//SIG(-1 S3029C12) C1{ vd v1 v2 v3}


 S3029C12 ::~S3029C12(){ note_dtor("S3029C12", this);}
void  S3029C12 ::v34(){vfunc_called(this, "_ZN8S3029C123v34Ev");}
void  S3029C12 ::v35(){vfunc_called(this, "_ZN8S3029C123v35Ev");}
void  S3029C12 ::v36(){vfunc_called(this, "_ZN8S3029C123v36Ev");}
S3029C12 ::S3029C12(){ note_ctor("S3029C12", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S3029C12C1Ev();
extern void _ZN8S3029C12D1Ev();
Name_Map name_map_S3029C12[] = {
  NSPAIR(_ZN8S3029C12C1Ev),
  NSPAIR(_ZN8S3029C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S3029C12[];
extern void _ZN8S3029C12D1Ev();
extern void _ZN8S3029C12D0Ev();
extern void _ZN8S3029C123v34Ev();
extern void _ZN8S3029C123v35Ev();
extern void _ZN8S3029C123v36Ev();
static  VTBL_ENTRY vtc_S3029C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S3029C12[0]),
  (VTBL_ENTRY)&_ZN8S3029C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3029C12D0Ev,
  (VTBL_ENTRY)&_ZN8S3029C123v34Ev,
  (VTBL_ENTRY)&_ZN8S3029C123v35Ev,
  (VTBL_ENTRY)&_ZN8S3029C123v36Ev,
};
extern VTBL_ENTRY _ZTI8S3029C12[];
extern  VTBL_ENTRY _ZTV8S3029C12[];
Class_Descriptor cd_S3029C12 = {  "S3029C12", // class name
  0,0,//no base classes
  &(vtc_S3029C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S3029C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S3029C12),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  S3029C11  : S3029C12 {
  virtual  ~S3029C11(); // _ZN8S3029C11D1Ev
  virtual void  v37(); // _ZN8S3029C113v37Ev
  virtual void  v38(); // _ZN8S3029C113v38Ev
  virtual void  v39(); // _ZN8S3029C113v39Ev
  virtual void  v40(); // _ZN8S3029C113v40Ev
  virtual void  v41(); // _ZN8S3029C113v41Ev
  virtual void  v42(); // _ZN8S3029C113v42Ev
  S3029C11(); // tgen
};
//SIG(-1 S3029C11) C1{ BC2{ vd v7 v8 v9} vd v1 v2 v3 v4 v5 v6}


 S3029C11 ::~S3029C11(){ note_dtor("S3029C11", this);}
void  S3029C11 ::v37(){vfunc_called(this, "_ZN8S3029C113v37Ev");}
void  S3029C11 ::v38(){vfunc_called(this, "_ZN8S3029C113v38Ev");}
void  S3029C11 ::v39(){vfunc_called(this, "_ZN8S3029C113v39Ev");}
void  S3029C11 ::v40(){vfunc_called(this, "_ZN8S3029C113v40Ev");}
void  S3029C11 ::v41(){vfunc_called(this, "_ZN8S3029C113v41Ev");}
void  S3029C11 ::v42(){vfunc_called(this, "_ZN8S3029C113v42Ev");}
S3029C11 ::S3029C11(){ note_ctor("S3029C11", this);} // tgen

static void Test_S3029C11()
{
  extern Class_Descriptor cd_S3029C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3029C11, buf);
    S3029C11 *dp, &lv = *(dp=new (buf) S3029C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3029C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3029C11)");
    check_base_class_offset(lv, (S3029C12*), 0, "S3029C11");
    test_class_info(&lv, &cd_S3029C11);
    dp->~S3029C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3029C11(Test_S3029C11, "S3029C11", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S3029C11C1Ev();
extern void _ZN8S3029C11D1Ev();
Name_Map name_map_S3029C11[] = {
  NSPAIR(_ZN8S3029C11C1Ev),
  NSPAIR(_ZN8S3029C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3029C12;
extern VTBL_ENTRY _ZTI8S3029C12[];
extern  VTBL_ENTRY _ZTV8S3029C12[];
static Base_Class bases_S3029C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3029C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3029C11[];
extern void _ZN8S3029C11D1Ev();
extern void _ZN8S3029C11D0Ev();
extern void _ZN8S3029C123v34Ev();
extern void _ZN8S3029C123v35Ev();
extern void _ZN8S3029C123v36Ev();
extern void _ZN8S3029C113v37Ev();
extern void _ZN8S3029C113v38Ev();
extern void _ZN8S3029C113v39Ev();
extern void _ZN8S3029C113v40Ev();
extern void _ZN8S3029C113v41Ev();
extern void _ZN8S3029C113v42Ev();
static  VTBL_ENTRY vtc_S3029C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S3029C11[0]),
  (VTBL_ENTRY)&_ZN8S3029C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3029C11D0Ev,
  (VTBL_ENTRY)&_ZN8S3029C123v34Ev,
  (VTBL_ENTRY)&_ZN8S3029C123v35Ev,
  (VTBL_ENTRY)&_ZN8S3029C123v36Ev,
  (VTBL_ENTRY)&_ZN8S3029C113v37Ev,
  (VTBL_ENTRY)&_ZN8S3029C113v38Ev,
  (VTBL_ENTRY)&_ZN8S3029C113v39Ev,
  (VTBL_ENTRY)&_ZN8S3029C113v40Ev,
  (VTBL_ENTRY)&_ZN8S3029C113v41Ev,
  (VTBL_ENTRY)&_ZN8S3029C113v42Ev,
};
extern VTBL_ENTRY _ZTI8S3029C11[];
extern  VTBL_ENTRY _ZTV8S3029C11[];
Class_Descriptor cd_S3029C11 = {  "S3029C11", // class name
  bases_S3029C11, 1,
  &(vtc_S3029C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S3029C11),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S3029C11),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  S3029C15_nt  {
  __tsi64 s3029c15f0[4];
  void  mf3029c15(); // _ZN11S3029C15_nt9mf3029c15Ev
};
//SIG(-1 S3029C15_nt) C1{ m FL[4]}


void  S3029C15_nt ::mf3029c15(){}

//skip512 S3029C15_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3029C10_nt  : S3029C11 {
  ::S731C6_nt s3029c10f0;
  ::S3029C15_nt s3029c10f1;
  char s3029c10f2;
  virtual  ~S3029C10_nt(); // _ZN11S3029C10_ntD1Ev
  virtual void  v43(); // _ZN11S3029C10_nt3v43Ev
  virtual void  v44(); // _ZN11S3029C10_nt3v44Ev
  virtual void  v45(); // _ZN11S3029C10_nt3v45Ev
  S3029C10_nt(); // tgen
};
//SIG(-1 S3029C10_nt) C1{ BC2{ BC3{ vd v4 v5 v6} vd v7 v8 v9 v10 v11 v12} vd v1 v2 v3 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FL[4]} Fc}


 S3029C10_nt ::~S3029C10_nt(){ note_dtor("S3029C10_nt", this);}
void  S3029C10_nt ::v43(){vfunc_called(this, "_ZN11S3029C10_nt3v43Ev");}
void  S3029C10_nt ::v44(){vfunc_called(this, "_ZN11S3029C10_nt3v44Ev");}
void  S3029C10_nt ::v45(){vfunc_called(this, "_ZN11S3029C10_nt3v45Ev");}
S3029C10_nt ::S3029C10_nt(){ note_ctor("S3029C10_nt", this);} // tgen

//skip512 S3029C10_nt

#else // __cplusplus

extern void _ZN11S3029C10_ntC1Ev();
extern void _ZN11S3029C10_ntD1Ev();
Name_Map name_map_S3029C10_nt[] = {
  NSPAIR(_ZN11S3029C10_ntC1Ev),
  NSPAIR(_ZN11S3029C10_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3029C12;
extern VTBL_ENTRY _ZTI8S3029C12[];
extern  VTBL_ENTRY _ZTV8S3029C12[];
extern Class_Descriptor cd_S3029C11;
extern VTBL_ENTRY _ZTI8S3029C11[];
extern  VTBL_ENTRY _ZTV8S3029C11[];
static Base_Class bases_S3029C10_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3029C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3029C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI11S3029C10_nt[];
extern void _ZN11S3029C10_ntD1Ev();
extern void _ZN11S3029C10_ntD0Ev();
extern void _ZN8S3029C123v34Ev();
extern void _ZN8S3029C123v35Ev();
extern void _ZN8S3029C123v36Ev();
extern void _ZN8S3029C113v37Ev();
extern void _ZN8S3029C113v38Ev();
extern void _ZN8S3029C113v39Ev();
extern void _ZN8S3029C113v40Ev();
extern void _ZN8S3029C113v41Ev();
extern void _ZN8S3029C113v42Ev();
extern void _ZN11S3029C10_nt3v43Ev();
extern void _ZN11S3029C10_nt3v44Ev();
extern void _ZN11S3029C10_nt3v45Ev();
static  VTBL_ENTRY vtc_S3029C10_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S3029C10_nt[0]),
  (VTBL_ENTRY)&_ZN11S3029C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S3029C10_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S3029C123v34Ev,
  (VTBL_ENTRY)&_ZN8S3029C123v35Ev,
  (VTBL_ENTRY)&_ZN8S3029C123v36Ev,
  (VTBL_ENTRY)&_ZN8S3029C113v37Ev,
  (VTBL_ENTRY)&_ZN8S3029C113v38Ev,
  (VTBL_ENTRY)&_ZN8S3029C113v39Ev,
  (VTBL_ENTRY)&_ZN8S3029C113v40Ev,
  (VTBL_ENTRY)&_ZN8S3029C113v41Ev,
  (VTBL_ENTRY)&_ZN8S3029C113v42Ev,
  (VTBL_ENTRY)&_ZN11S3029C10_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S3029C10_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S3029C10_nt3v45Ev,
};
extern VTBL_ENTRY _ZTI11S3029C10_nt[];
VTBL_ENTRY *P__ZTI11S3029C10_nt = _ZTI11S3029C10_nt; 
extern  VTBL_ENTRY _ZTV11S3029C10_nt[];
Class_Descriptor cd_S3029C10_nt = {  "S3029C10_nt", // class name
  bases_S3029C10_nt, 2,
  &(vtc_S3029C10_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI11S3029C10_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV11S3029C10_nt),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3029C1  : S3029C2 , S3029C10_nt {
  void *s3029c1f0;
  virtual  ~S3029C1(); // _ZN7S3029C1D1Ev
  virtual void  v1(); // _ZN7S3029C12v1Ev
  virtual void  v2(); // _ZN7S3029C12v2Ev
  virtual void  v3(); // _ZN7S3029C12v3Ev
  virtual void  v4(); // _ZN7S3029C12v4Ev
  virtual void  v5(); // _ZN7S3029C12v5Ev
  virtual void  v6(); // _ZN7S3029C12v6Ev
  virtual void  v7(); // _ZN7S3029C12v7Ev
  virtual void  v8(); // _ZN7S3029C12v8Ev
  virtual void  v9(); // _ZN7S3029C12v9Ev
  virtual void  v10(); // _ZN7S3029C13v10Ev
  virtual void  v11(); // _ZN7S3029C13v11Ev
  virtual void  v12(); // _ZN7S3029C13v12Ev
  virtual void  v13(); // _ZN7S3029C13v13Ev
  S3029C1(); // tgen
};
//SIG(1 S3029C1) C1{ BC2{ BC3{ vd v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 Fp FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}} vd v29 v30 v31 v32 v33 FC8{ m Fp Fi[2] FC6}} BC9{ BC10{ BC11{ vd v34 v35 v36} vd v37 v38 v39 v40 v41 v42} vd v43 v44 v45 FC12{ m Fp Fi[2] FC7} FC13{ m FL[4]} Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 Fp}


 S3029C1 ::~S3029C1(){ note_dtor("S3029C1", this);}
void  S3029C1 ::v1(){vfunc_called(this, "_ZN7S3029C12v1Ev");}
void  S3029C1 ::v2(){vfunc_called(this, "_ZN7S3029C12v2Ev");}
void  S3029C1 ::v3(){vfunc_called(this, "_ZN7S3029C12v3Ev");}
void  S3029C1 ::v4(){vfunc_called(this, "_ZN7S3029C12v4Ev");}
void  S3029C1 ::v5(){vfunc_called(this, "_ZN7S3029C12v5Ev");}
void  S3029C1 ::v6(){vfunc_called(this, "_ZN7S3029C12v6Ev");}
void  S3029C1 ::v7(){vfunc_called(this, "_ZN7S3029C12v7Ev");}
void  S3029C1 ::v8(){vfunc_called(this, "_ZN7S3029C12v8Ev");}
void  S3029C1 ::v9(){vfunc_called(this, "_ZN7S3029C12v9Ev");}
void  S3029C1 ::v10(){vfunc_called(this, "_ZN7S3029C13v10Ev");}
void  S3029C1 ::v11(){vfunc_called(this, "_ZN7S3029C13v11Ev");}
void  S3029C1 ::v12(){vfunc_called(this, "_ZN7S3029C13v12Ev");}
void  S3029C1 ::v13(){vfunc_called(this, "_ZN7S3029C13v13Ev");}
S3029C1 ::S3029C1(){ note_ctor("S3029C1", this);} // tgen

static void Test_S3029C1()
{
  extern Class_Descriptor cd_S3029C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,25)];
    init_test(&cd_S3029C1, buf);
    S3029C1 *dp, &lv = *(dp=new (buf) S3029C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,96), "sizeof(S3029C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3029C1)");
    check_base_class_offset(lv, (S3029C3*)(S3029C2*), 0, "S3029C1");
    check_base_class_offset(lv, (S3029C2*), 0, "S3029C1");
    check_base_class_offset(lv, (S3029C12*)(S3029C11*)(S3029C10_nt*), ABISELECT(56,36), "S3029C1");
    check_base_class_offset(lv, (S3029C11*)(S3029C10_nt*), ABISELECT(56,36), "S3029C1");
    check_base_class_offset(lv, (S3029C10_nt*), ABISELECT(56,36), "S3029C1");
    check_field_offset(lv, s3029c1f0, ABISELECT(128,92), "S3029C1.s3029c1f0");
    test_class_info(&lv, &cd_S3029C1);
    dp->~S3029C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3029C1(Test_S3029C1, "S3029C1", ABISELECT(136,96));

#else // __cplusplus

extern void _ZN7S3029C1C1Ev();
extern void _ZN7S3029C1D1Ev();
Name_Map name_map_S3029C1[] = {
  NSPAIR(_ZN7S3029C1C1Ev),
  NSPAIR(_ZN7S3029C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3029C3;
extern VTBL_ENTRY _ZTI7S3029C3[];
extern  VTBL_ENTRY _ZTV7S3029C3[];
extern Class_Descriptor cd_S3029C2;
extern VTBL_ENTRY _ZTI7S3029C2[];
extern  VTBL_ENTRY _ZTV7S3029C2[];
extern Class_Descriptor cd_S3029C12;
extern VTBL_ENTRY _ZTI8S3029C12[];
extern  VTBL_ENTRY _ZTV8S3029C12[];
extern Class_Descriptor cd_S3029C11;
extern VTBL_ENTRY _ZTI8S3029C11[];
extern  VTBL_ENTRY _ZTV8S3029C11[];
extern Class_Descriptor cd_S3029C10_nt;
extern VTBL_ENTRY _ZTI11S3029C10_nt[];
extern  VTBL_ENTRY _ZTV11S3029C10_nt[];
static Base_Class bases_S3029C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3029C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3029C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3029C12,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3029C11,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3029C10_nt,    ABISELECT(56,36), //bcp->offset
    37, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3029C1[];
extern void _ZN7S3029C1D1Ev();
extern void _ZN7S3029C1D0Ev();
extern void _ZN7S3029C33v14Ev();
extern void _ZN7S3029C33v15Ev();
extern void _ZN7S3029C33v16Ev();
extern void _ZN7S3029C33v17Ev();
extern void _ZN7S3029C33v18Ev();
extern void _ZN7S3029C33v19Ev();
extern void _ZN7S3029C33v20Ev();
extern void _ZN7S3029C33v21Ev();
extern void _ZN7S3029C33v22Ev();
extern void _ZN7S3029C33v23Ev();
extern void _ZN7S3029C33v24Ev();
extern void _ZN7S3029C33v25Ev();
extern void _ZN7S3029C33v26Ev();
extern void _ZN7S3029C33v27Ev();
extern void _ZN7S3029C33v28Ev();
extern void _ZN7S3029C23v29Ev();
extern void _ZN7S3029C23v30Ev();
extern void _ZN7S3029C23v31Ev();
extern void _ZN7S3029C23v32Ev();
extern void _ZN7S3029C23v33Ev();
extern void _ZN7S3029C12v1Ev();
extern void _ZN7S3029C12v2Ev();
extern void _ZN7S3029C12v3Ev();
extern void _ZN7S3029C12v4Ev();
extern void _ZN7S3029C12v5Ev();
extern void _ZN7S3029C12v6Ev();
extern void _ZN7S3029C12v7Ev();
extern void _ZN7S3029C12v8Ev();
extern void _ZN7S3029C12v9Ev();
extern void _ZN7S3029C13v10Ev();
extern void _ZN7S3029C13v11Ev();
extern void _ZN7S3029C13v12Ev();
extern void _ZN7S3029C13v13Ev();
extern void ABISELECT(_ZThn56_N7S3029C1D1Ev,_ZThn36_N7S3029C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S3029C1D0Ev,_ZThn36_N7S3029C1D0Ev)();
extern void _ZN8S3029C123v34Ev();
extern void _ZN8S3029C123v35Ev();
extern void _ZN8S3029C123v36Ev();
extern void _ZN8S3029C113v37Ev();
extern void _ZN8S3029C113v38Ev();
extern void _ZN8S3029C113v39Ev();
extern void _ZN8S3029C113v40Ev();
extern void _ZN8S3029C113v41Ev();
extern void _ZN8S3029C113v42Ev();
extern void _ZN11S3029C10_nt3v43Ev();
extern void _ZN11S3029C10_nt3v44Ev();
extern void _ZN11S3029C10_nt3v45Ev();
static  VTBL_ENTRY vtc_S3029C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3029C1[0]),
  (VTBL_ENTRY)&_ZN7S3029C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3029C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3029C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3029C23v29Ev,
  (VTBL_ENTRY)&_ZN7S3029C23v30Ev,
  (VTBL_ENTRY)&_ZN7S3029C23v31Ev,
  (VTBL_ENTRY)&_ZN7S3029C23v32Ev,
  (VTBL_ENTRY)&_ZN7S3029C23v33Ev,
  (VTBL_ENTRY)&_ZN7S3029C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3029C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3029C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3029C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3029C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3029C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3029C12v7Ev,
  (VTBL_ENTRY)&_ZN7S3029C12v8Ev,
  (VTBL_ENTRY)&_ZN7S3029C12v9Ev,
  (VTBL_ENTRY)&_ZN7S3029C13v10Ev,
  (VTBL_ENTRY)&_ZN7S3029C13v11Ev,
  (VTBL_ENTRY)&_ZN7S3029C13v12Ev,
  (VTBL_ENTRY)&_ZN7S3029C13v13Ev,
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S3029C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3029C1D1Ev,_ZThn36_N7S3029C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S3029C1D0Ev,_ZThn36_N7S3029C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3029C123v34Ev,
  (VTBL_ENTRY)&_ZN8S3029C123v35Ev,
  (VTBL_ENTRY)&_ZN8S3029C123v36Ev,
  (VTBL_ENTRY)&_ZN8S3029C113v37Ev,
  (VTBL_ENTRY)&_ZN8S3029C113v38Ev,
  (VTBL_ENTRY)&_ZN8S3029C113v39Ev,
  (VTBL_ENTRY)&_ZN8S3029C113v40Ev,
  (VTBL_ENTRY)&_ZN8S3029C113v41Ev,
  (VTBL_ENTRY)&_ZN8S3029C113v42Ev,
  (VTBL_ENTRY)&_ZN11S3029C10_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S3029C10_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S3029C10_nt3v45Ev,
};
extern VTBL_ENTRY _ZTI7S3029C1[];
extern  VTBL_ENTRY _ZTV7S3029C1[];
Class_Descriptor cd_S3029C1 = {  "S3029C1", // class name
  bases_S3029C1, 5,
  &(vtc_S3029C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,96), // object size
  NSPAIRA(_ZTI7S3029C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3029C1),53, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7344C4  : virtual S3461C5_nt , S731C17_nt {
  virtual void  v1(); // _ZN7S7344C42v1Ev
  ~S7344C4(); // tgen
  S7344C4(); // tgen
};
//SIG(-1 S7344C4) C1{ VBC2{ m FL} BC3{ m} v1}


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

static void Test_S7344C4()
{
  extern Class_Descriptor cd_S7344C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7344C4, buf);
    S7344C4 *dp, &lv = *(dp=new (buf) S7344C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7344C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7344C4)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S7344C4");
    check_base_class_offset(lv, (S731C17_nt*), 0, "S7344C4");
    test_class_info(&lv, &cd_S7344C4);
    dp->~S7344C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7344C4(Test_S7344C4, "S7344C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7344C4C1Ev();
extern void _ZN7S7344C4D1Ev();
Name_Map name_map_S7344C4[] = {
  NSPAIR(_ZN7S7344C4C1Ev),
  NSPAIR(_ZN7S7344C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S7344C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7344C4[];
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY vtc_S7344C4[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S7344C4[];
static  VTT_ENTRY vtt_S7344C4[] = {
  {&(_ZTV7S7344C4[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
Class_Descriptor cd_S7344C4 = {  "S7344C4", // class name
  bases_S7344C4, 2,
  &(vtc_S7344C4[0]), // expected_vtbl_contents
  &(vtt_S7344C4[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7344C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7344C4),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7344C4),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  S7344C3  : S7344C4 {
  ~S7344C3(); // tgen
  S7344C3(); // tgen
};
//SIG(-1 S7344C3) C1{ BC2{ VBC3{ m FL} BC4{ m} v1}}


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

static void Test_S7344C3()
{
  extern Class_Descriptor cd_S7344C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7344C3, buf);
    S7344C3 *dp, &lv = *(dp=new (buf) S7344C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7344C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7344C3)");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*), ABISELECT(8,4), "S7344C3");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*), 0, "S7344C3");
    check_base_class_offset(lv, (S7344C4*), 0, "S7344C3");
    test_class_info(&lv, &cd_S7344C3);
    dp->~S7344C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7344C3(Test_S7344C3, "S7344C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7344C3C1Ev();
extern void _ZN7S7344C3D1Ev();
Name_Map name_map_S7344C3[] = {
  NSPAIR(_ZN7S7344C3C1Ev),
  NSPAIR(_ZN7S7344C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
static Base_Class bases_S7344C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7344C4,    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 _ZTI7S7344C3[];
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY vtc_S7344C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S7344C3[];
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__7S7344C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
static  VTT_ENTRY vtt_S7344C3[] = {
  {&(_ZTV7S7344C3[3]),  3,4},
  {&(_tg__ZTV7S7344C4__7S7344C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
Class_Descriptor cd_S7344C3 = {  "S7344C3", // class name
  bases_S7344C3, 3,
  &(vtc_S7344C3[0]), // expected_vtbl_contents
  &(vtt_S7344C3[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7344C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7344C3),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7344C3),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  S7344C10  : S3461C5_nt , virtual S731C17_nt , S7344C3 {
  virtual  ~S7344C10(); // _ZN8S7344C10D2Ev
  virtual void  v2(); // _ZN8S7344C102v2Ev
  S7344C10(); // tgen
};
//SIG(-1 S7344C10) C1{ BC2{ m FL} VBC3{ m} BC4{ BC5{ VBC2 BC3 v2}} vd v1}


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

static void Test_S7344C10()
{
  extern Class_Descriptor cd_S7344C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S7344C10, buf);
    S7344C10 *dp, &lv = *(dp=new (buf) S7344C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S7344C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7344C10)");
    /*is_ambiguous_... S7344C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S7344C10");
    /*is_ambiguous_... S7344C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(16,12), "S7344C10");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*), ABISELECT(16,12), "S7344C10");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*), 0, "S7344C10");
    check_base_class_offset(lv, (S7344C4*)(S7344C3*), 0, "S7344C10");
    check_base_class_offset(lv, (S7344C3*), 0, "S7344C10");
    test_class_info(&lv, &cd_S7344C10);
    dp->~S7344C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7344C10(Test_S7344C10, "S7344C10", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN8S7344C10C1Ev();
extern void _ZN8S7344C10D2Ev();
Name_Map name_map_S7344C10[] = {
  NSPAIR(_ZN8S7344C10C1Ev),
  NSPAIR(_ZN8S7344C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
static Base_Class bases_S7344C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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_S3461C5_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
    4, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7344C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7344C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7344C10[];
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C10D1Ev();
extern void _ZN8S7344C10D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY vtc_S7344C10[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C10[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern VTBL_ENTRY _ZTV8S7344C10[];
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C3__8S7344C10[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C3__8S7344C10[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
static  VTT_ENTRY vtt_S7344C10[] = {
  {&(_ZTV8S7344C10[4]),  4,8},
  {&(_tg__ZTV7S7344C3__8S7344C10[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C3__8S7344C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7344C10[];
extern  VTBL_ENTRY _ZTV8S7344C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C10[];
Class_Descriptor cd_S7344C10 = {  "S7344C10", // class name
  bases_S7344C10, 6,
  &(vtc_S7344C10[0]), // expected_vtbl_contents
  &(vtt_S7344C10[0]), // expected_vtt_contents
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI8S7344C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7344C10),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7344C10),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  S7344C13  : virtual S3461C5_nt , S7344C4 , S731C17_nt {
  ~S7344C13(); // tgen
  S7344C13(); // tgen
};
//SIG(-1 S7344C13) C1{ VBC2{ m FL} BC3{ VBC2 BC4{ m} v1} BC4}


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

static void Test_S7344C13()
{
  extern Class_Descriptor cd_S7344C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7344C13, buf);
    S7344C13 *dp, &lv = *(dp=new (buf) S7344C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7344C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7344C13)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S7344C13");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*), ABISELECT(8,4), "S7344C13");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*), 0, "S7344C13");
    check_base_class_offset(lv, (S7344C4*), 0, "S7344C13");
    /*is_ambiguous_... S7344C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(8,4), "S7344C13");
    test_class_info(&lv, &cd_S7344C13);
    dp->~S7344C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7344C13(Test_S7344C13, "S7344C13", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S7344C13C1Ev();
extern void _ZN8S7344C13D1Ev();
Name_Map name_map_S7344C13[] = {
  NSPAIR(_ZN8S7344C13C1Ev),
  NSPAIR(_ZN8S7344C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S7344C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7344C4,    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_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7344C13[];
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY vtc_S7344C13[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern VTBL_ENTRY _ZTV8S7344C13[];
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__8S7344C13[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
static  VTT_ENTRY vtt_S7344C13[] = {
  {&(_ZTV8S7344C13[3]),  3,4},
  {&(_tg__ZTV7S7344C4__8S7344C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
Class_Descriptor cd_S7344C13 = {  "S7344C13", // class name
  bases_S7344C13, 4,
  &(vtc_S7344C13[0]), // expected_vtbl_contents
  &(vtt_S7344C13[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S7344C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7344C13),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7344C13),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  S7344C12  : virtual S3461C5_nt , S7344C13 , virtual S7344C4 {
  virtual void  v3(); // _ZN8S7344C122v3Ev
  ~S7344C12(); // tgen
  S7344C12(); // tgen
};
//SIG(-1 S7344C12) C1{ VBC2{ m FL} BC3{ VBC2 BC4{ VBC2 BC5{ m} v2} BC5} VBC4 v1}


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

static void Test_S7344C12()
{
  extern Class_Descriptor cd_S7344C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7344C12, buf);
    S7344C12 *dp, &lv = *(dp=new (buf) S7344C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7344C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7344C12)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(16,8), "S7344C12");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*), ABISELECT(16,8), "S7344C12");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*), ABISELECT(16,8), "S7344C12");
    /*is_ambiguous_... S7344C12::S7344C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*), ABISELECT(16,8), "S7344C12");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*), 0, "S7344C12");
    check_base_class_offset(lv, (S7344C4*)(S7344C13*), 0, "S7344C12");
    /*is_ambiguous_... S7344C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*), ABISELECT(8,4), "S7344C12");
    check_base_class_offset(lv, (S7344C13*), 0, "S7344C12");
    /*is_ambiguous_... S7344C12::S7344C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*), ABISELECT(24,16), "S7344C12");
    /*is_ambiguous_... S7344C12::S7344C4 */ AMB_check_base_class_offset(lv, (S7344C4*), ABISELECT(24,16), "S7344C12");
    test_class_info(&lv, &cd_S7344C12);
    dp->~S7344C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7344C12(Test_S7344C12, "S7344C12", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S7344C12C1Ev();
extern void _ZN8S7344C12D1Ev();
Name_Map name_map_S7344C12[] = {
  NSPAIR(_ZN8S7344C12C1Ev),
  NSPAIR(_ZN8S7344C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
static Base_Class bases_S7344C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7344C4,    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_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7344C13,    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_S731C17_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_S7344C4,    ABISELECT(24,16), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7344C12[];
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY vtc_S7344C12[] = {
  ABISELECT(24,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  0,
  -8,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern VTBL_ENTRY _ZTV8S7344C12[];
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C13__8S7344C12[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C13__8S7344C12[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C12[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
static  VTT_ENTRY vtt_S7344C12[] = {
  {&(_ZTV8S7344C12[4]),  4,11},
  {&(_tg__ZTV8S7344C13__8S7344C12[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C13__8S7344C12[3]),  3,4},
  {&(_ZTV8S7344C12[10]),  10,11},
  {&(_tg__ZTV7S7344C4__A1__8S7344C12[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7344C12[];
extern  VTBL_ENTRY _ZTV8S7344C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C12[];
Class_Descriptor cd_S7344C12 = {  "S7344C12", // class name
  bases_S7344C12, 7,
  &(vtc_S7344C12[0]), // expected_vtbl_contents
  &(vtt_S7344C12[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S7344C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7344C12),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7344C12),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  S7344C14  : S3461C5_nt , virtual S7344C4 , S731C17_nt {
  virtual  ~S7344C14(); // _ZN8S7344C14D2Ev
  S7344C14(); // tgen
};
//SIG(-1 S7344C14) C1{ BC2{ m FL} VBC3{ VBC2 BC4{ m} v1} BC4 vd}


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

static void Test_S7344C14()
{
  extern Class_Descriptor cd_S7344C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S7344C14, buf);
    S7344C14 *dp, &lv = *(dp=new (buf) S7344C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S7344C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7344C14)");
    /*is_ambiguous_... S7344C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S7344C14");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*), ABISELECT(16,12), "S7344C14");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*), 0, "S7344C14");
    check_base_class_offset(lv, (S7344C4*), 0, "S7344C14");
    /*is_ambiguous_... S7344C14::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(16,12), "S7344C14");
    test_class_info(&lv, &cd_S7344C14);
    dp->~S7344C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7344C14(Test_S7344C14, "S7344C14", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN8S7344C14C1Ev();
extern void _ZN8S7344C14D2Ev();
Name_Map name_map_S7344C14[] = {
  NSPAIR(_ZN8S7344C14C1Ev),
  NSPAIR(_ZN8S7344C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S7344C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7344C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7344C14[];
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C14D1Ev();
extern void _ZN8S7344C14D0Ev();
static  VTBL_ENTRY vtc_S7344C14[] = {
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C14[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D0Ev,
};
extern VTBL_ENTRY _ZTV8S7344C14[];
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__8S7344C14[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
static  VTT_ENTRY vtt_S7344C14[] = {
  {&(_ZTV8S7344C14[5]),  5,8},
  {&(_ZTV8S7344C14[5]),  5,8},
  {&(_tg__ZTV7S7344C4__8S7344C14[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7344C14[];
extern  VTBL_ENTRY _ZTV8S7344C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C14[];
Class_Descriptor cd_S7344C14 = {  "S7344C14", // class name
  bases_S7344C14, 5,
  &(vtc_S7344C14[0]), // expected_vtbl_contents
  &(vtt_S7344C14[0]), // expected_vtt_contents
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI8S7344C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7344C14),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7344C14),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  S7344C9  : S3461C5_nt , S7344C10 , S28C52_nt , virtual S7344C12 , virtual S7344C14 {
  virtual  ~S7344C9(); // _ZN7S7344C9D2Ev
  S7344C9(); // tgen
};
//SIG(-1 S7344C9) C1{ BC2{ m FL} BC3{ BC2 VBC4{ m} BC5{ BC6{ VBC2 BC4 v1}} vd v2} BC7{ m} VBC8{ VBC2 BC9{ VBC2 BC6 BC4} VBC6 v3} VBC10{ BC2 VBC6 BC4 vd} vd}


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

static void Test_S7344C9()
{
  extern Class_Descriptor cd_S7344C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,14)];
    init_test(&cd_S7344C9, buf);
    S7344C9 *dp, &lv = *(dp=new (buf) S7344C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S7344C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7344C9)");
    /*is_ambiguous_... S7344C9::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(16,12), "S7344C9");
    /*is_ambiguous_... S7344C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C10*), ABISELECT(8,4), "S7344C9");
    /*is_ambiguous_... S7344C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C10*), ABISELECT(24,20), "S7344C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*)(S7344C10*), ABISELECT(24,20), "S7344C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C12*), ABISELECT(24,20), "S7344C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*)(S7344C12*), ABISELECT(24,20), "S7344C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*)(S7344C12*), ABISELECT(24,20), "S7344C9");
    /*is_ambiguous_... S7344C9::S7344C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*), ABISELECT(24,20), "S7344C9");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*)(S7344C10*), 0, "S7344C9");
    check_base_class_offset(lv, (S7344C4*)(S7344C3*)(S7344C10*), 0, "S7344C9");
    check_base_class_offset(lv, (S7344C3*)(S7344C10*), 0, "S7344C9");
    check_base_class_offset(lv, (S7344C10*), 0, "S7344C9");
    check_base_class_offset(lv, (S28C52_nt*), 0, "S7344C9");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*)(S7344C12*), ABISELECT(32,28), "S7344C9");
    check_base_class_offset(lv, (S7344C4*)(S7344C13*)(S7344C12*), ABISELECT(32,28), "S7344C9");
    /*is_ambiguous_... S7344C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*)(S7344C12*), ABISELECT(40,32), "S7344C9");
    check_base_class_offset(lv, (S7344C13*)(S7344C12*), ABISELECT(32,28), "S7344C9");
    /*is_ambiguous_... S7344C9::S7344C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*), ABISELECT(48,36), "S7344C9");
    /*is_ambiguous_... S7344C12::S7344C4 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C12*), ABISELECT(48,36), "S7344C9");
    check_base_class_offset(lv, (S7344C4*)(S7344C14*), ABISELECT(48,36), "S7344C9");
    check_base_class_offset(lv, (S7344C12*), ABISELECT(32,28), "S7344C9");
    /*is_ambiguous_... S7344C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C14*), ABISELECT(56,40), "S7344C9");
    /*is_ambiguous_... S7344C14::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C14*), ABISELECT(64,48), "S7344C9");
    check_base_class_offset(lv, (S7344C14*), ABISELECT(48,36), "S7344C9");
    test_class_info(&lv, &cd_S7344C9);
    dp->~S7344C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7344C9(Test_S7344C9, "S7344C9", ABISELECT(72,52));

#else // __cplusplus

extern void _ZN7S7344C9C1Ev();
extern void _ZN7S7344C9D2Ev();
Name_Map name_map_S7344C9[] = {
  NSPAIR(_ZN7S7344C9C1Ev),
  NSPAIR(_ZN7S7344C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S7344C10;
extern VTBL_ENTRY _ZTI8S7344C10[];
extern  VTBL_ENTRY _ZTV8S7344C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C10[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C12;
extern VTBL_ENTRY _ZTI8S7344C12[];
extern  VTBL_ENTRY _ZTV8S7344C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C12[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C14;
extern VTBL_ENTRY _ZTI8S7344C14[];
extern  VTBL_ENTRY _ZTV8S7344C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C14[];
static Base_Class bases_S7344C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7344C4,    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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7344C3,    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_S7344C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S28C52_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(32,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7344C13,    ABISELECT(32,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
    3, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    14, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(48,36), //bcp->offset
    -1, //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
    1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7344C12,    ABISELECT(32,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_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
    18, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7344C14,    ABISELECT(48,36), //bcp->offset
    19, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7344C9[];
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C9D1Ev();
extern void _ZN7S7344C9D0Ev();
extern void _ZN8S7344C102v2Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7344C9D1Ev,_ZTv0_n24_N7S7344C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7344C9D1Ev,_ZThn36_N7S7344C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7344C9D0Ev,_ZTv0_n24_N7S7344C9D0Ev)();
extern void ABISELECT(_ZThn48_N7S7344C9D0Ev,_ZThn36_N7S7344C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7344C9[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C9[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7344C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7344C9D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S7344C9[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  ABISELECT(-48,-36),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI7S7344C9[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C9D1Ev,_ZTv0_n24_N7S7344C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C9D0Ev,_ZTv0_n24_N7S7344C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S7344C9[];
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C10D1Ev();
extern void _ZN8S7344C10D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C10__7S7344C9[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C10[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C38S7344C10__7S7344C9[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C38S7344C10__7S7344C9[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C12__7S7344C9[] = {
  ABISELECT(16,8),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C12__7S7344C9[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C138S7344C12__A1__7S7344C9[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C12__7S7344C9[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A2__7S7344C9[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C14D1Ev();
extern void _ZN8S7344C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C14__7S7344C9[] = {
  0,
  0,
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C14[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D0Ev,
};
static  VTT_ENTRY vtt_S7344C9[] = {
  {&(_ZTV7S7344C9[7]),  7,28},
  {&(_tg__ZTV8S7344C10__7S7344C9[4]),  4,8},
  {&(_tg__ZTV7S7344C38S7344C10__7S7344C9[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C38S7344C10__7S7344C9[3]),  3,4},
  {&(_ZTV7S7344C9[17]),  17,28},
  {&(_ZTV7S7344C9[25]),  25,28},
  {&(_ZTV7S7344C9[25]),  25,28},
  {&(_tg__ZTV8S7344C12__7S7344C9[4]),  4,6},
  {&(_tg__ZTV8S7344C138S7344C12__7S7344C9[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C138S7344C12__A1__7S7344C9[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C12__7S7344C9[4]),  4,5},
  {&(_tg__ZTV7S7344C4__A2__7S7344C9[3]),  3,4},
  {&(_tg__ZTV8S7344C14__7S7344C9[5]),  5,8},
  {&(_tg__ZTV8S7344C14__7S7344C9[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S7344C9[];
extern  VTBL_ENTRY _ZTV7S7344C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C9[];
static VTBL_ENTRY alt_thunk_names34[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C9D0Ev,_ZTv0_n24_N7S7344C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7344C9D0Ev,_ZThn36_N7S7344C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C9D1Ev,_ZTv0_n24_N7S7344C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7344C9D1Ev,_ZThn36_N7S7344C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7344C9 = {  "S7344C9", // class name
  bases_S7344C9, 19,
  &(vtc_S7344C9[0]), // expected_vtbl_contents
  &(vtt_S7344C9[0]), // expected_vtt_contents
  ABISELECT(72,52), // object size
  NSPAIRA(_ZTI7S7344C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7344C9),28, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7344C9),14, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names34,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7344C15  : virtual S7344C3 {
  int s7344c15f0;
  ~S7344C15(); // tgen
  S7344C15(); // tgen
};
//SIG(-1 S7344C15) C1{ VBC2{ BC3{ VBC4{ m FL} BC5{ m} v1}} Fi}


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

static void Test_S7344C15()
{
  extern Class_Descriptor cd_S7344C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7344C15, buf);
    S7344C15 *dp, &lv = *(dp=new (buf) S7344C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7344C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7344C15)");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*), ABISELECT(16,8), "S7344C15");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*), 0, "S7344C15");
    check_base_class_offset(lv, (S7344C4*)(S7344C3*), 0, "S7344C15");
    check_base_class_offset(lv, (S7344C3*), 0, "S7344C15");
    check_field_offset(lv, s7344c15f0, ABISELECT(8,4), "S7344C15.s7344c15f0");
    test_class_info(&lv, &cd_S7344C15);
    dp->~S7344C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7344C15(Test_S7344C15, "S7344C15", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S7344C15C1Ev();
extern void _ZN8S7344C15D1Ev();
Name_Map name_map_S7344C15[] = {
  NSPAIR(_ZN8S7344C15C1Ev),
  NSPAIR(_ZN8S7344C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
static Base_Class bases_S7344C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7344C4,    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
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7344C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7344C15[];
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY vtc_S7344C15[] = {
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C15[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern VTBL_ENTRY _ZTV8S7344C15[];
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C3__8S7344C15[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C3__8S7344C15[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
static  VTT_ENTRY vtt_S7344C15[] = {
  {&(_ZTV8S7344C15[5]),  5,6},
  {&(_ZTV8S7344C15[5]),  5,6},
  {&(_tg__ZTV7S7344C3__8S7344C15[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C3__8S7344C15[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7344C15[];
extern  VTBL_ENTRY _ZTV8S7344C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C15[];
Class_Descriptor cd_S7344C15 = {  "S7344C15", // class name
  bases_S7344C15, 4,
  &(vtc_S7344C15[0]), // expected_vtbl_contents
  &(vtt_S7344C15[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S7344C15),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7344C15),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7344C15),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  S7344C8  : virtual S7344C9 , S7344C10 , S7344C15 {
  long double s7344c8f0;
  virtual  ~S7344C8(); // _ZN7S7344C8D2Ev
  S7344C8(); // tgen
};
//SIG(-1 S7344C8) C1{ VBC2{ BC3{ m FL} BC4{ BC3 VBC5{ m} BC6{ BC7{ VBC3 BC5 v1}} vd v2} BC8{ m} VBC9{ VBC3 BC10{ VBC3 BC7 BC5} VBC7 v3} VBC11{ BC3 VBC7 BC5 vd} vd} BC4 BC12{ VBC6 Fi} vd FD}


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

static void Test_S7344C8()
{
  extern Class_Descriptor cd_S7344C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,22)];
    init_test(&cd_S7344C8, buf);
    S7344C8 *dp, &lv = *(dp=new (buf) S7344C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S7344C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7344C8)");
    /*is_ambiguous_... S7344C9::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C9*), ABISELECT(64,44), "S7344C8");
    /*is_ambiguous_... S7344C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C10*)(S7344C9*), ABISELECT(56,36), "S7344C8");
    /*is_ambiguous_... S7344C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C10*)(S7344C9*), ABISELECT(72,52), "S7344C8");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C10*), ABISELECT(72,52), "S7344C8");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C9*), ABISELECT(72,52), "S7344C8");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C12*), ABISELECT(72,52), "S7344C8");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*)(S7344C12*), ABISELECT(72,52), "S7344C8");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*)(S7344C12*), ABISELECT(72,52), "S7344C8");
    /*is_ambiguous_... S7344C8::S7344C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*), ABISELECT(72,52), "S7344C8");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*)(S7344C10*), ABISELECT(72,52), "S7344C8");
    /*is_ambiguous_... S7344C8::S7344C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*), ABISELECT(72,52), "S7344C8");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C9*), ABISELECT(48,32), "S7344C8");
    check_base_class_offset(lv, (S7344C4*)(S7344C3*)(S7344C10*)(S7344C9*), ABISELECT(48,32), "S7344C8");
    check_base_class_offset(lv, (S7344C3*)(S7344C10*)(S7344C9*), ABISELECT(48,32), "S7344C8");
    check_base_class_offset(lv, (S7344C10*)(S7344C9*), ABISELECT(48,32), "S7344C8");
    check_base_class_offset(lv, (S28C52_nt*)(S7344C9*), ABISELECT(48,32), "S7344C8");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*)(S7344C12*), ABISELECT(80,60), "S7344C8");
    check_base_class_offset(lv, (S7344C4*)(S7344C13*)(S7344C12*), ABISELECT(80,60), "S7344C8");
    /*is_ambiguous_... S7344C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*)(S7344C12*), ABISELECT(88,64), "S7344C8");
    check_base_class_offset(lv, (S7344C13*)(S7344C12*), ABISELECT(80,60), "S7344C8");
    /*is_ambiguous_... S7344C8::S7344C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*), ABISELECT(96,68), "S7344C8");
    /*is_ambiguous_... S7344C12::S7344C4 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C12*), ABISELECT(96,68), "S7344C8");
    check_base_class_offset(lv, (S7344C4*)(S7344C14*), ABISELECT(96,68), "S7344C8");
    check_base_class_offset(lv, (S7344C12*)(S7344C9*), ABISELECT(80,60), "S7344C8");
    /*is_ambiguous_... S7344C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C14*), ABISELECT(104,72), "S7344C8");
    /*is_ambiguous_... S7344C14::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C14*), ABISELECT(112,80), "S7344C8");
    check_base_class_offset(lv, (S7344C14*)(S7344C9*), ABISELECT(96,68), "S7344C8");
    check_base_class_offset(lv, (S7344C9*), ABISELECT(48,32), "S7344C8");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C10*), ABISELECT(8,4), "S7344C8");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*)(S7344C10*), 0, "S7344C8");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C3*)(S7344C10*), 0, "S7344C8");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S7344C3*)(S7344C10*), 0, "S7344C8");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S7344C10*), 0, "S7344C8");
    /*is_ambiguous_... S7344C8::S7344C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*), ABISELECT(16,12), "S7344C8");
    /*is_ambiguous_... S7344C8::S7344C3 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C3*), ABISELECT(16,12), "S7344C8");
    check_base_class_offset(lv, (S7344C3*)(S7344C15*), ABISELECT(16,12), "S7344C8");
    check_base_class_offset(lv, (S7344C15*), ABISELECT(16,12), "S7344C8");
    check_field_offset(lv, s7344c8f0, ABISELECT(32,20), "S7344C8.s7344c8f0");
    test_class_info(&lv, &cd_S7344C8);
    dp->~S7344C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7344C8(Test_S7344C8, "S7344C8", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN7S7344C8C1Ev();
extern void _ZN7S7344C8D2Ev();
Name_Map name_map_S7344C8[] = {
  NSPAIR(_ZN7S7344C8C1Ev),
  NSPAIR(_ZN7S7344C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S7344C10;
extern VTBL_ENTRY _ZTI8S7344C10[];
extern  VTBL_ENTRY _ZTV8S7344C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C10[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C12;
extern VTBL_ENTRY _ZTI8S7344C12[];
extern  VTBL_ENTRY _ZTV8S7344C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C12[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C14;
extern VTBL_ENTRY _ZTI8S7344C14[];
extern  VTBL_ENTRY _ZTV8S7344C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C14[];
extern Class_Descriptor cd_S7344C9;
extern VTBL_ENTRY _ZTI7S7344C9[];
extern  VTBL_ENTRY _ZTV7S7344C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S7344C10;
extern VTBL_ENTRY _ZTI8S7344C10[];
extern  VTBL_ENTRY _ZTV8S7344C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C10[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S7344C15;
extern VTBL_ENTRY _ZTI8S7344C15[];
extern  VTBL_ENTRY _ZTV8S7344C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C15[];
static Base_Class bases_S7344C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    19, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    7, //immediately_derived
  0, 0},
  {&cd_S731C17_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, 1},
  {&cd_S3461C5_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
    5, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7344C4,    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
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7344C3,    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
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7344C10,    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
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(80,60), //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
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(88,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
    12, //immediately_derived
  0, 0},
  {&cd_S7344C13,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7344C12,    ABISELECT(80,60), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(104,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(112,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7344C14,    ABISELECT(96,68), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S7344C9,    ABISELECT(48,32), //bcp->offset
    19, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7344C4,    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
    23, //immediately_derived
  0, 0},
  {&cd_S7344C3,    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
    13, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7344C10,    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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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
    26, //immediately_derived
  0, 0},
  {&cd_S7344C4,    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
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7344C3,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7344C15,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7344C8[];
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C8D1Ev();
extern void _ZN7S7344C8D0Ev();
extern void _ZN8S7344C102v2Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n72_N7S7344C8D1Ev,_ZTv0_n36_N7S7344C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S7344C8D1Ev,_ZThn32_N7S7344C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7344C8D0Ev,_ZTv0_n36_N7S7344C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S7344C8D0Ev,_ZThn32_N7S7344C8D0Ev)() __attribute__((weak));
extern void _ZN8S7344C102v2Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7344C8D1Ev,_ZTv0_n24_N7S7344C8D1Ev)();
extern void ABISELECT(_ZThn96_N7S7344C8D1Ev,_ZThn68_N7S7344C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7344C8D0Ev,_ZTv0_n24_N7S7344C8D0Ev)();
extern void ABISELECT(_ZThn96_N7S7344C8D0Ev,_ZThn68_N7S7344C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7344C8[] = {
  ABISELECT(16,12),
  ABISELECT(96,68),
  ABISELECT(96,68),
  ABISELECT(80,60),
  ABISELECT(48,32),
  ABISELECT(72,52),
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7344C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7344C8D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  0,
  0,
  ABISELECT(56,40),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  0,
  ABISELECT(-48,-32),
  0,
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7344C8D1Ev,_ZTv0_n36_N7S7344C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7344C8D0Ev,_ZTv0_n36_N7S7344C8D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  ABISELECT(-96,-68),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C8D1Ev,_ZTv0_n24_N7S7344C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C8D0Ev,_ZTv0_n24_N7S7344C8D0Ev),
};
extern VTBL_ENTRY _ZTV7S7344C8[];
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C10D1Ev();
extern void _ZN8S7344C10D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C10__A1__7S7344C8[] = {
  ABISELECT(72,52),
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C10[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C38S7344C10__A1__7S7344C8[] = {
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C38S7344C10__A3__7S7344C8[] = {
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C15__7S7344C8[] = {
  0,
  0,
  ABISELECT(56,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C15[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C9D1Ev();
extern void _ZN7S7344C9D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C9__7S7344C8[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C9[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7344C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7344C9D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C10D1Ev();
extern void _ZN8S7344C10D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C107S7344C9__7S7344C8[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C10[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C38S7344C107S7344C9__7S7344C8[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C38S7344C107S7344C9__7S7344C8[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C12__7S7344C9__7S7344C8[] = {
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S7344C9[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7344C9D1Ev,_ZTv0_n24_N7S7344C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7344C9D1Ev,_ZThn36_N7S7344C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7344C9D0Ev,_ZTv0_n24_N7S7344C9D0Ev)();
extern void ABISELECT(_ZThn48_N7S7344C9D0Ev,_ZThn36_N7S7344C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7344C14__7S7344C9__7S7344C8[] = {
  ABISELECT(-48,-36),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI7S7344C9[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C9D1Ev,_ZTv0_n24_N7S7344C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C9D0Ev,_ZTv0_n24_N7S7344C9D0Ev),
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C12__7S7344C8[] = {
  ABISELECT(16,8),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C12__7S7344C8[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C138S7344C12__A1__7S7344C8[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C12__7S7344C8[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A2__7S7344C8[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C14D1Ev();
extern void _ZN8S7344C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C14__7S7344C8[] = {
  0,
  0,
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C14[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D0Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C3__A2__7S7344C8[] = {
  ABISELECT(56,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C3__A4__7S7344C8[] = {
  ABISELECT(56,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
static  VTT_ENTRY vtt_S7344C8[] = {
  {&(_ZTV7S7344C8[9]),  9,50},
  {&(_tg__ZTV8S7344C10__A1__7S7344C8[4]),  4,8},
  {&(_tg__ZTV7S7344C38S7344C10__A1__7S7344C8[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C38S7344C10__A3__7S7344C8[3]),  3,4},
  {&(_tg__ZTV8S7344C15__7S7344C8[5]),  5,6},
  {&(_tg__ZTV8S7344C15__7S7344C8[5]),  5,6},
  {&(_ZTV7S7344C8[29]),  29,50},
  {&(_ZTV7S7344C8[39]),  39,50},
  {&(_ZTV7S7344C8[47]),  47,50},
  {&(_ZTV7S7344C8[47]),  47,50},
  {&(_ZTV7S7344C8[18]),  18,50},
  {&(_ZTV7S7344C8[18]),  18,50},
  {&(_tg__ZTV7S7344C9__7S7344C8[7]),  7,11},
  {&(_tg__ZTV8S7344C107S7344C9__7S7344C8[4]),  4,8},
  {&(_tg__ZTV7S7344C38S7344C107S7344C9__7S7344C8[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C38S7344C107S7344C9__7S7344C8[3]),  3,4},
  {&(_tg__ZTV8S7344C12__7S7344C9__7S7344C8[6]),  6,8},
  {&(_tg__ZTV8S7344C14__7S7344C9__7S7344C8[6]),  6,9},
  {&(_tg__ZTV8S7344C14__7S7344C9__7S7344C8[6]),  6,9},
  {&(_tg__ZTV8S7344C12__7S7344C8[4]),  4,6},
  {&(_tg__ZTV8S7344C138S7344C12__7S7344C8[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C138S7344C12__A1__7S7344C8[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C12__7S7344C8[4]),  4,5},
  {&(_tg__ZTV7S7344C4__A2__7S7344C8[3]),  3,4},
  {&(_tg__ZTV8S7344C14__7S7344C8[5]),  5,8},
  {&(_tg__ZTV8S7344C14__7S7344C8[5]),  5,8},
  {&(_tg__ZTV7S7344C3__A2__7S7344C8[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C3__A4__7S7344C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7344C8[];
extern  VTBL_ENTRY _ZTV7S7344C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C8[];
static VTBL_ENTRY alt_thunk_names35[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C9D0Ev,_ZTv0_n24_N7S7344C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7344C9D0Ev,_ZThn36_N7S7344C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C9D1Ev,_ZTv0_n24_N7S7344C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7344C9D1Ev,_ZThn36_N7S7344C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C8D0Ev,_ZTv0_n24_N7S7344C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7344C8D0Ev,_ZThn68_N7S7344C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C8D1Ev,_ZTv0_n24_N7S7344C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7344C8D1Ev,_ZThn68_N7S7344C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7344C8D0Ev,_ZTv0_n36_N7S7344C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7344C8D0Ev,_ZThn32_N7S7344C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7344C8D1Ev,_ZTv0_n36_N7S7344C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7344C8D1Ev,_ZThn32_N7S7344C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7344C8 = {  "S7344C8", // class name
  bases_S7344C8, 29,
  &(vtc_S7344C8[0]), // expected_vtbl_contents
  &(vtt_S7344C8[0]), // expected_vtt_contents
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI7S7344C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7344C8),50, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7344C8),28, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names35,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7344C18  : S7344C14 {
  virtual void  v4(); // _ZN8S7344C182v4Ev
  ~S7344C18(); // tgen
  S7344C18(); // tgen
};
//SIG(-1 S7344C18) C1{ BC2{ BC3{ m FL} VBC4{ VBC3 BC5{ m} v2} BC5 vd} v1}


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

static void Test_S7344C18()
{
  extern Class_Descriptor cd_S7344C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S7344C18, buf);
    S7344C18 *dp, &lv = *(dp=new (buf) S7344C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S7344C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7344C18)");
    /*is_ambiguous_... S7344C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C14*), ABISELECT(8,4), "S7344C18");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*), ABISELECT(24,16), "S7344C18");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*), 0, "S7344C18");
    check_base_class_offset(lv, (S7344C4*)(S7344C14*), 0, "S7344C18");
    /*is_ambiguous_... S7344C14::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C14*), ABISELECT(16,12), "S7344C18");
    check_base_class_offset(lv, (S7344C14*), 0, "S7344C18");
    test_class_info(&lv, &cd_S7344C18);
    dp->~S7344C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7344C18(Test_S7344C18, "S7344C18", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN8S7344C18C1Ev();
extern void _ZN8S7344C18D1Ev();
Name_Map name_map_S7344C18[] = {
  NSPAIR(_ZN8S7344C18C1Ev),
  NSPAIR(_ZN8S7344C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C14;
extern VTBL_ENTRY _ZTI8S7344C14[];
extern  VTBL_ENTRY _ZTV8S7344C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C14[];
static Base_Class bases_S7344C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3461C5_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7344C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    5, //immediately_derived
  0, 0},
  {&cd_S7344C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7344C18[];
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C18D1Ev();
extern void _ZN8S7344C18D0Ev();
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY vtc_S7344C18[] = {
  0,
  0,
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C18[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C18D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern VTBL_ENTRY _ZTV8S7344C18[];
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C14D1Ev();
extern void _ZN8S7344C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C14__8S7344C18[] = {
  0,
  0,
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C14[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D0Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__8S7344C18[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
static  VTT_ENTRY vtt_S7344C18[] = {
  {&(_ZTV8S7344C18[5]),  5,9},
  {&(_tg__ZTV8S7344C14__8S7344C18[5]),  5,8},
  {&(_tg__ZTV8S7344C14__8S7344C18[5]),  5,8},
  {&(_ZTV8S7344C18[5]),  5,9},
  {&(_tg__ZTV7S7344C4__8S7344C18[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7344C18[];
extern  VTBL_ENTRY _ZTV8S7344C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C18[];
Class_Descriptor cd_S7344C18 = {  "S7344C18", // class name
  bases_S7344C18, 6,
  &(vtc_S7344C18[0]), // expected_vtbl_contents
  &(vtt_S7344C18[0]), // expected_vtt_contents
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI8S7344C18),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7344C18),9, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7344C18),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  S7344C17  : S7344C12 , S7344C4 , virtual S7344C18 , S7344C13 {
  ~S7344C17(); // tgen
  S7344C17(); // tgen
};
//SIG(-1 S7344C17) C1{ BC2{ VBC3{ m FL} BC4{ VBC3 BC5{ VBC3 BC6{ m} v1} BC6} VBC5 v2} BC5 VBC7{ BC8{ BC3 VBC5 BC6 vd} v3} BC4}


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

static void Test_S7344C17()
{
  extern Class_Descriptor cd_S7344C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S7344C17, buf);
    S7344C17 *dp, &lv = *(dp=new (buf) S7344C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S7344C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7344C17)");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C12*), ABISELECT(40,20), "S7344C17");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*)(S7344C12*), ABISELECT(40,20), "S7344C17");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*)(S7344C12*), ABISELECT(40,20), "S7344C17");
    /*is_ambiguous_... S7344C17::S7344C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*), ABISELECT(40,20), "S7344C17");
    /*is_ambiguous_... S7344C17::S7344C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*), ABISELECT(40,20), "S7344C17");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*), ABISELECT(40,20), "S7344C17");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*), ABISELECT(40,20), "S7344C17");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*)(S7344C12*), 0, "S7344C17");
    check_base_class_offset(lv, (S7344C4*)(S7344C13*)(S7344C12*), 0, "S7344C17");
    /*is_ambiguous_... S7344C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*)(S7344C12*), ABISELECT(8,4), "S7344C17");
    check_base_class_offset(lv, (S7344C13*)(S7344C12*), 0, "S7344C17");
    /*is_ambiguous_... S7344C17::S7344C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*), ABISELECT(48,28), "S7344C17");
    /*is_ambiguous_... S7344C12::S7344C4 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C12*), ABISELECT(48,28), "S7344C17");
    check_base_class_offset(lv, (S7344C4*)(S7344C14*)(S7344C18*), ABISELECT(48,28), "S7344C17");
    check_base_class_offset(lv, (S7344C12*), 0, "S7344C17");
    /*is_ambiguous_... S7344C17::S7344C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*), ABISELECT(16,8), "S7344C17");
    /*is_ambiguous_... S7344C17::S7344C4 */ AMB_check_base_class_offset(lv, (S7344C4*), ABISELECT(16,8), "S7344C17");
    /*is_ambiguous_... S7344C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C14*)(S7344C18*), ABISELECT(56,32), "S7344C17");
    /*is_ambiguous_... S7344C14::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C14*)(S7344C18*), ABISELECT(64,40), "S7344C17");
    check_base_class_offset(lv, (S7344C14*)(S7344C18*), ABISELECT(48,28), "S7344C17");
    check_base_class_offset(lv, (S7344C18*), ABISELECT(48,28), "S7344C17");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*), ABISELECT(24,12), "S7344C17");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C13*), ABISELECT(24,12), "S7344C17");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*), ABISELECT(32,16), "S7344C17");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S7344C13*), ABISELECT(24,12), "S7344C17");
    test_class_info(&lv, &cd_S7344C17);
    dp->~S7344C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7344C17(Test_S7344C17, "S7344C17", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN8S7344C17C1Ev();
extern void _ZN8S7344C17D1Ev();
Name_Map name_map_S7344C17[] = {
  NSPAIR(_ZN8S7344C17C1Ev),
  NSPAIR(_ZN8S7344C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C12;
extern VTBL_ENTRY _ZTI8S7344C12[];
extern  VTBL_ENTRY _ZTV8S7344C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C14;
extern VTBL_ENTRY _ZTI8S7344C14[];
extern  VTBL_ENTRY _ZTV8S7344C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C14[];
extern Class_Descriptor cd_S7344C18;
extern VTBL_ENTRY _ZTI8S7344C18[];
extern  VTBL_ENTRY _ZTV8S7344C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C18[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
static Base_Class bases_S7344C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7344C4,    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
    4, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7344C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7344C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7344C14,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7344C18,    ABISELECT(48,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_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
    15, //immediately_derived
  0, 0},
  {&cd_S7344C4,    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
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7344C13,    ABISELECT(24,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //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 _ZTI8S7344C17[];
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void _ZN8S7344C17D1Ev();
extern void _ZN8S7344C17D0Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev)();
extern void ABISELECT(_ZThn48_N8S7344C17D1Ev,_ZThn28_N8S7344C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev)();
extern void ABISELECT(_ZThn48_N8S7344C17D0Ev,_ZThn28_N8S7344C17D0Ev)() __attribute__((weak));
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY vtc_S7344C17[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&_ZN8S7344C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C17D0Ev,
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  0,
  ABISELECT(-48,-28),
  0,
  0,
  -8,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern VTBL_ENTRY _ZTV8S7344C17[];
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C12__8S7344C17[] = {
  ABISELECT(48,28),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C12__8S7344C17[] = {
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C138S7344C12__8S7344C17[] = {
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C12__8S7344C17[] = {
  0,
  -8,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A__8S7344C17[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C13__A1__8S7344C17[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C13__A3__8S7344C17[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C17[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C18D1Ev();
extern void _ZN8S7344C18D0Ev();
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C18__8S7344C17[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C18[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C18D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C14D1Ev();
extern void _ZN8S7344C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C148S7344C18__8S7344C17[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C14[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D0Ev,
};
static  VTT_ENTRY vtt_S7344C17[] = {
  {&(_ZTV8S7344C17[5]),  5,28},
  {&(_tg__ZTV8S7344C12__8S7344C17[4]),  4,6},
  {&(_tg__ZTV8S7344C138S7344C12__8S7344C17[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C138S7344C12__8S7344C17[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C12__8S7344C17[4]),  4,5},
  {&(_tg__ZTV7S7344C4__A__8S7344C17[3]),  3,4},
  {&(_tg__ZTV8S7344C13__A1__8S7344C17[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C13__A3__8S7344C17[3]),  3,4},
  {&(_ZTV8S7344C17[24]),  24,28},
  {&(_ZTV8S7344C17[12]),  12,28},
  {&(_ZTV8S7344C17[24]),  24,28},
  {&(_ZTV8S7344C17[16]),  16,28},
  {&(_tg__ZTV7S7344C4__A1__8S7344C17[3]),  3,4},
  {&(_tg__ZTV8S7344C18__8S7344C17[5]),  5,9},
  {&(_tg__ZTV8S7344C148S7344C18__8S7344C17[5]),  5,8},
  {&(_tg__ZTV8S7344C148S7344C18__8S7344C17[5]),  5,8},
  {&(_tg__ZTV8S7344C18__8S7344C17[5]),  5,9},
};
extern VTBL_ENTRY _ZTI8S7344C17[];
extern  VTBL_ENTRY _ZTV8S7344C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C17[];
static VTBL_ENTRY alt_thunk_names36[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7344C17D0Ev,_ZThn28_N8S7344C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7344C17D1Ev,_ZThn28_N8S7344C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7344C17 = {  "S7344C17", // class name
  bases_S7344C17, 18,
  &(vtc_S7344C17[0]), // expected_vtbl_contents
  &(vtt_S7344C17[0]), // expected_vtt_contents
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI8S7344C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7344C17),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7344C17),17, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names36,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7344C19  : virtual S7344C4 , S7344C10 {
  virtual  ~S7344C19(); // _ZN8S7344C19D2Ev
  virtual void  v5(); // _ZN8S7344C192v5Ev
  S7344C19(); // tgen
};
//SIG(-1 S7344C19) C1{ VBC2{ VBC3{ m FL} BC4{ m} v2} BC5{ BC3 VBC4 BC6{ BC2} vd v3} vd v1}


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

static void Test_S7344C19()
{
  extern Class_Descriptor cd_S7344C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S7344C19, buf);
    S7344C19 *dp, &lv = *(dp=new (buf) S7344C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S7344C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7344C19)");
    /*is_ambiguous_... S7344C19::S7344C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*), ABISELECT(24,16), "S7344C19");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*)(S7344C10*), ABISELECT(24,16), "S7344C19");
    /*is_ambiguous_... S7344C19::S7344C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*), ABISELECT(16,12), "S7344C19");
    /*is_ambiguous_... S7344C19::S7344C4 */ AMB_check_base_class_offset(lv, (S7344C4*), ABISELECT(16,12), "S7344C19");
    /*is_ambiguous_... S7344C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C10*), ABISELECT(8,4), "S7344C19");
    /*is_ambiguous_... S7344C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C10*), ABISELECT(32,24), "S7344C19");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*)(S7344C10*), 0, "S7344C19");
    check_base_class_offset(lv, (S7344C4*)(S7344C3*)(S7344C10*), 0, "S7344C19");
    check_base_class_offset(lv, (S7344C3*)(S7344C10*), 0, "S7344C19");
    check_base_class_offset(lv, (S7344C10*), 0, "S7344C19");
    test_class_info(&lv, &cd_S7344C19);
    dp->~S7344C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7344C19(Test_S7344C19, "S7344C19", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN8S7344C19C1Ev();
extern void _ZN8S7344C19D2Ev();
Name_Map name_map_S7344C19[] = {
  NSPAIR(_ZN8S7344C19C1Ev),
  NSPAIR(_ZN8S7344C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S7344C10;
extern VTBL_ENTRY _ZTI8S7344C10[];
extern  VTBL_ENTRY _ZTV8S7344C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C10[];
static Base_Class bases_S7344C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(16,12), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7344C4,    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
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7344C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7344C10,    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 _ZTI8S7344C19[];
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C19D1Ev();
extern void _ZN8S7344C19D0Ev();
extern void _ZN8S7344C102v2Ev();
extern void _ZN8S7344C192v5Ev();
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY vtc_S7344C19[] = {
  ABISELECT(16,12),
  ABISELECT(32,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C19[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  (VTBL_ENTRY)&_ZN8S7344C192v5Ev,
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7344C19[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern VTBL_ENTRY _ZTV8S7344C19[];
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C10D1Ev();
extern void _ZN8S7344C10D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C10__8S7344C19[] = {
  ABISELECT(32,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C10[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C38S7344C10__8S7344C19[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C38S7344C10__A1__8S7344C19[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__8S7344C19[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
static  VTT_ENTRY vtt_S7344C19[] = {
  {&(_ZTV8S7344C19[5]),  5,15},
  {&(_tg__ZTV8S7344C10__8S7344C19[4]),  4,8},
  {&(_tg__ZTV7S7344C38S7344C10__8S7344C19[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C38S7344C10__A1__8S7344C19[3]),  3,4},
  {&(_ZTV8S7344C19[14]),  14,15},
  {&(_tg__ZTV7S7344C4__8S7344C19[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7344C19[];
extern  VTBL_ENTRY _ZTV8S7344C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C19[];
Class_Descriptor cd_S7344C19 = {  "S7344C19", // class name
  bases_S7344C19, 9,
  &(vtc_S7344C19[0]), // expected_vtbl_contents
  &(vtt_S7344C19[0]), // expected_vtt_contents
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI8S7344C19),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7344C19),15, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7344C19),6, //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  S7344C16  : S7344C17 , S7344C15 , S7344C19 , S7344C10 {
  void *s7344c16f0;
  virtual  ~S7344C16(); // _ZN8S7344C16D2Ev
  S7344C16(); // tgen
};
//SIG(-1 S7344C16) C1{ BC2{ BC3{ VBC4{ m FL} BC5{ VBC4 BC6{ VBC4 BC7{ m} v1} BC7} VBC6 v2} BC6 VBC8{ BC9{ BC4 VBC6 BC7 vd} v3} BC5} BC10{ VBC11{ BC6} Fi} BC12{ VBC6 BC13{ BC4 VBC7 BC11 vd v4} vd v5} BC13 vd Fp}


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

static void Test_S7344C16()
{
  extern Class_Descriptor cd_S7344C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,21)];
    init_test(&cd_S7344C16, buf);
    S7344C16 *dp, &lv = *(dp=new (buf) S7344C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,80), "sizeof(S7344C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7344C16)");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C12*)(S7344C17*), ABISELECT(96,56), "S7344C16");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*)(S7344C12*)(S7344C17*), ABISELECT(96,56), "S7344C16");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*), ABISELECT(96,56), "S7344C16");
    /*is_ambiguous_... S7344C16::S7344C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*), ABISELECT(96,56), "S7344C16");
    /*is_ambiguous_... S7344C17::S7344C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C17*), ABISELECT(96,56), "S7344C16");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*)(S7344C17*), ABISELECT(96,56), "S7344C16");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*)(S7344C17*), ABISELECT(96,56), "S7344C16");
    /*is_ambiguous_... S7344C16::S7344C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*), ABISELECT(96,56), "S7344C16");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C19*), ABISELECT(96,56), "S7344C16");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*)(S7344C10*), ABISELECT(96,56), "S7344C16");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*), 0, "S7344C16");
    check_base_class_offset(lv, (S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*), 0, "S7344C16");
    /*is_ambiguous_... S7344C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*)(S7344C12*)(S7344C17*), ABISELECT(8,4), "S7344C16");
    check_base_class_offset(lv, (S7344C13*)(S7344C12*)(S7344C17*), 0, "S7344C16");
    /*is_ambiguous_... S7344C16::S7344C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*), ABISELECT(104,64), "S7344C16");
    /*is_ambiguous_... S7344C12::S7344C4 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C12*)(S7344C17*), ABISELECT(104,64), "S7344C16");
    check_base_class_offset(lv, (S7344C4*)(S7344C14*)(S7344C18*), ABISELECT(104,64), "S7344C16");
    /*is_ambiguous_... S7344C19::S7344C4 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C19*), ABISELECT(104,64), "S7344C16");
    check_base_class_offset(lv, (S7344C12*)(S7344C17*), 0, "S7344C16");
    /*is_ambiguous_... S7344C17::S7344C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C17*), ABISELECT(16,8), "S7344C16");
    /*is_ambiguous_... S7344C17::S7344C4 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C17*), ABISELECT(16,8), "S7344C16");
    /*is_ambiguous_... S7344C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C14*)(S7344C18*), ABISELECT(112,68), "S7344C16");
    /*is_ambiguous_... S7344C14::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C14*)(S7344C18*), ABISELECT(120,76), "S7344C16");
    check_base_class_offset(lv, (S7344C14*)(S7344C18*), ABISELECT(104,64), "S7344C16");
    check_base_class_offset(lv, (S7344C18*)(S7344C17*), ABISELECT(104,64), "S7344C16");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*)(S7344C17*), ABISELECT(24,12), "S7344C16");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C13*)(S7344C17*), ABISELECT(24,12), "S7344C16");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*)(S7344C17*), ABISELECT(32,16), "S7344C16");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S7344C13*)(S7344C17*), ABISELECT(24,12), "S7344C16");
    check_base_class_offset(lv, (S7344C17*), 0, "S7344C16");
    /*is_ambiguous_... S7344C16::S7344C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*), ABISELECT(40,20), "S7344C16");
    /*is_ambiguous_... S7344C16::S7344C3 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C3*), ABISELECT(40,20), "S7344C16");
    check_base_class_offset(lv, (S7344C3*)(S7344C15*), ABISELECT(40,20), "S7344C16");
    check_base_class_offset(lv, (S7344C15*), ABISELECT(40,20), "S7344C16");
    /*is_ambiguous_... S7344C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C10*)(S7344C19*), ABISELECT(64,32), "S7344C16");
    /*is_ambiguous_... S7344C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C10*)(S7344C19*), ABISELECT(121,77), "S7344C16");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C10*), ABISELECT(121,77), "S7344C16");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C19*), ABISELECT(56,28), "S7344C16");
    check_base_class_offset(lv, (S7344C4*)(S7344C3*)(S7344C10*)(S7344C19*), ABISELECT(56,28), "S7344C16");
    check_base_class_offset(lv, (S7344C3*)(S7344C10*)(S7344C19*), ABISELECT(56,28), "S7344C16");
    check_base_class_offset(lv, (S7344C10*)(S7344C19*), ABISELECT(56,28), "S7344C16");
    check_base_class_offset(lv, (S7344C19*), ABISELECT(56,28), "S7344C16");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C10*), ABISELECT(80,44), "S7344C16");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*)(S7344C10*), ABISELECT(72,40), "S7344C16");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C3*)(S7344C10*), ABISELECT(72,40), "S7344C16");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S7344C3*)(S7344C10*), ABISELECT(72,40), "S7344C16");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S7344C10*), ABISELECT(72,40), "S7344C16");
    check_field_offset(lv, s7344c16f0, ABISELECT(88,52), "S7344C16.s7344c16f0");
    test_class_info(&lv, &cd_S7344C16);
    dp->~S7344C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7344C16(Test_S7344C16, "S7344C16", ABISELECT(128,80));

#else // __cplusplus

extern void _ZN8S7344C16C1Ev();
extern void _ZN8S7344C16D2Ev();
Name_Map name_map_S7344C16[] = {
  NSPAIR(_ZN8S7344C16C1Ev),
  NSPAIR(_ZN8S7344C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C12;
extern VTBL_ENTRY _ZTI8S7344C12[];
extern  VTBL_ENTRY _ZTV8S7344C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C14;
extern VTBL_ENTRY _ZTI8S7344C14[];
extern  VTBL_ENTRY _ZTV8S7344C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C14[];
extern Class_Descriptor cd_S7344C18;
extern VTBL_ENTRY _ZTI8S7344C18[];
extern  VTBL_ENTRY _ZTV8S7344C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C18[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S7344C17;
extern VTBL_ENTRY _ZTI8S7344C17[];
extern  VTBL_ENTRY _ZTV8S7344C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C17[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S7344C15;
extern VTBL_ENTRY _ZTI8S7344C15[];
extern  VTBL_ENTRY _ZTV8S7344C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C15[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S7344C10;
extern VTBL_ENTRY _ZTI8S7344C10[];
extern  VTBL_ENTRY _ZTV8S7344C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C10[];
extern Class_Descriptor cd_S7344C19;
extern VTBL_ENTRY _ZTI8S7344C19[];
extern  VTBL_ENTRY _ZTV8S7344C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C19[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S7344C10;
extern VTBL_ENTRY _ZTI8S7344C10[];
extern  VTBL_ENTRY _ZTV8S7344C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C10[];
static Base_Class bases_S7344C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7344C4,    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
    6, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7344C13,    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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7344C12,    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
    8, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    12, //immediately_derived
  0, 0},
  {&cd_S7344C14,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7344C18,    ABISELECT(104,64), //bcp->offset
    43, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    15, //immediately_derived
  0, 0},
  {&cd_S7344C4,    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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7344C13,    ABISELECT(24,12), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7344C17,    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_S731C17_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7344C3,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7344C15,    ABISELECT(40,20), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(121,77), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7344C3,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7344C10,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7344C19,    ABISELECT(56,28), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    32, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7344C3,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7344C10,    ABISELECT(72,40), //bcp->offset
    35, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7344C16[];
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void _ZN8S7344C16D1Ev();
extern void _ZN8S7344C16D0Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZThn56_N8S7344C16D1Ev,_ZThn28_N8S7344C16D1Ev)();
extern void ABISELECT(_ZThn56_N8S7344C16D0Ev,_ZThn28_N8S7344C16D0Ev)();
extern void _ZN8S7344C102v2Ev();
extern void _ZN8S7344C192v5Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZThn72_N8S7344C16D1Ev,_ZThn40_N8S7344C16D1Ev)();
extern void ABISELECT(_ZThn72_N8S7344C16D0Ev,_ZThn40_N8S7344C16D0Ev)();
extern void _ZN8S7344C102v2Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7344C16D1Ev,_ZTv0_n24_N8S7344C16D1Ev)();
extern void ABISELECT(_ZThn104_N8S7344C16D1Ev,_ZThn64_N8S7344C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7344C16D0Ev,_ZTv0_n24_N8S7344C16D0Ev)();
extern void ABISELECT(_ZThn104_N8S7344C16D0Ev,_ZThn64_N8S7344C16D0Ev)() __attribute__((weak));
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY vtc_S7344C16[] = {
  ABISELECT(121,77),
  ABISELECT(40,20),
  ABISELECT(104,64),
  ABISELECT(104,64),
  ABISELECT(96,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&_ZN8S7344C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C16D0Ev,
  ABISELECT(80,48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(72,44),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  0,
  0,
  ABISELECT(56,36),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(48,36),
  ABISELECT(65,49),
  ABISELECT(40,28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7344C16D1Ev,_ZThn28_N8S7344C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7344C16D0Ev,_ZThn28_N8S7344C16D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  (VTBL_ENTRY)&_ZN8S7344C192v5Ev,
  ABISELECT(49,37),
  ABISELECT(24,16),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S7344C16D1Ev,_ZThn40_N8S7344C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S7344C16D0Ev,_ZThn40_N8S7344C16D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  0,
  ABISELECT(-104,-64),
  0,
  0,
  -8,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C16D1Ev,_ZTv0_n24_N8S7344C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C16D0Ev,_ZTv0_n24_N8S7344C16D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern VTBL_ENTRY _ZTV8S7344C16[];
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void _ZN8S7344C17D1Ev();
extern void _ZN8S7344C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C17__8S7344C16[] = {
  ABISELECT(104,64),
  ABISELECT(104,64),
  ABISELECT(96,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&_ZN8S7344C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C17D0Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C128S7344C17__8S7344C16[] = {
  ABISELECT(104,64),
  ABISELECT(96,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C128S7344C17__8S7344C16[] = {
  ABISELECT(96,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C138S7344C128S7344C17__8S7344C16[] = {
  ABISELECT(96,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C128S7344C17__8S7344C16[] = {
  0,
  -8,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C17__A2__8S7344C16[] = {
  ABISELECT(80,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C17__A1__8S7344C16[] = {
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C138S7344C17__A3__8S7344C16[] = {
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev)();
extern void ABISELECT(_ZThn104_N8S7344C17D1Ev,_ZThn64_N8S7344C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev)();
extern void ABISELECT(_ZThn104_N8S7344C17D0Ev,_ZThn64_N8S7344C17D0Ev)() __attribute__((weak));
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C18__8S7344C17__8S7344C16[] = {
  0,
  ABISELECT(-104,-64),
  0,
  0,
  -8,
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A__8S7344C17__8S7344C16[] = {
  ABISELECT(80,48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C13__A1__8S7344C17__8S7344C16[] = {
  ABISELECT(72,44),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C15__8S7344C16[] = {
  0,
  0,
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C15[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C19D1Ev();
extern void _ZN8S7344C19D0Ev();
extern void _ZN8S7344C102v2Ev();
extern void _ZN8S7344C192v5Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C19__8S7344C16[] = {
  ABISELECT(48,36),
  ABISELECT(65,49),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C19[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  (VTBL_ENTRY)&_ZN8S7344C192v5Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C10D1Ev();
extern void _ZN8S7344C10D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C108S7344C19__8S7344C16[] = {
  ABISELECT(65,49),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C10[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C38S7344C108S7344C19__A1__8S7344C16[] = {
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C38S7344C108S7344C19__A5__8S7344C16[] = {
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__8S7344C19__8S7344C16[] = {
  0,
  -8,
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S7344C19[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C10D1Ev();
extern void _ZN8S7344C10D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C10__A1__8S7344C16[] = {
  ABISELECT(49,37),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C10[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C38S7344C10__A2__8S7344C16[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C38S7344C10__A6__8S7344C16[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C16[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C18D1Ev();
extern void _ZN8S7344C18D0Ev();
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C18__8S7344C16[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C18[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C18D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C14D1Ev();
extern void _ZN8S7344C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C148S7344C18__8S7344C16[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C14[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D0Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C3__8S7344C16[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C3__A4__8S7344C16[] = {
  ABISELECT(56,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
static  VTT_ENTRY vtt_S7344C16[] = {
  {&(_ZTV8S7344C16[7]),  7,54},
  {&(_tg__ZTV8S7344C17__8S7344C16[5]),  5,9},
  {&(_tg__ZTV8S7344C128S7344C17__8S7344C16[4]),  4,6},
  {&(_tg__ZTV8S7344C138S7344C128S7344C17__8S7344C16[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C138S7344C128S7344C17__8S7344C16[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C128S7344C17__8S7344C16[4]),  4,5},
  {&(_tg__ZTV7S7344C48S7344C17__A2__8S7344C16[3]),  3,4},
  {&(_tg__ZTV8S7344C138S7344C17__A1__8S7344C16[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C138S7344C17__A3__8S7344C16[3]),  3,4},
  {&(_tg__ZTV8S7344C18__8S7344C17__8S7344C16[7]),  7,11},
  {&(_tg__ZTV7S7344C4__A__8S7344C17__8S7344C16[3]),  3,4},
  {&(_tg__ZTV8S7344C18__8S7344C17__8S7344C16[7]),  7,11},
  {&(_tg__ZTV8S7344C13__A1__8S7344C17__8S7344C16[3]),  3,4},
  {&(_tg__ZTV8S7344C15__8S7344C16[5]),  5,6},
  {&(_tg__ZTV8S7344C15__8S7344C16[5]),  5,6},
  {&(_tg__ZTV8S7344C19__8S7344C16[5]),  5,10},
  {&(_tg__ZTV8S7344C108S7344C19__8S7344C16[4]),  4,8},
  {&(_tg__ZTV7S7344C38S7344C108S7344C19__A1__8S7344C16[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C38S7344C108S7344C19__A5__8S7344C16[3]),  3,4},
  {&(_tg__ZTV7S7344C4__8S7344C19__8S7344C16[4]),  4,5},
  {&(_tg__ZTV8S7344C10__A1__8S7344C16[4]),  4,8},
  {&(_tg__ZTV7S7344C38S7344C10__A2__8S7344C16[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C38S7344C10__A6__8S7344C16[3]),  3,4},
  {&(_ZTV8S7344C16[50]),  50,54},
  {&(_ZTV8S7344C16[14]),  14,54},
  {&(_ZTV8S7344C16[50]),  50,54},
  {&(_ZTV8S7344C16[18]),  18,54},
  {&(_ZTV8S7344C16[24]),  24,54},
  {&(_ZTV8S7344C16[24]),  24,54},
  {&(_ZTV8S7344C16[30]),  30,54},
  {&(_ZTV8S7344C16[39]),  39,54},
  {&(_tg__ZTV7S7344C4__A1__8S7344C16[3]),  3,4},
  {&(_tg__ZTV8S7344C18__8S7344C16[5]),  5,9},
  {&(_tg__ZTV8S7344C148S7344C18__8S7344C16[5]),  5,8},
  {&(_tg__ZTV8S7344C148S7344C18__8S7344C16[5]),  5,8},
  {&(_tg__ZTV8S7344C18__8S7344C16[5]),  5,9},
  {&(_tg__ZTV7S7344C3__8S7344C16[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C3__A4__8S7344C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7344C16[];
extern  VTBL_ENTRY _ZTV8S7344C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C16[];
static VTBL_ENTRY alt_thunk_names37[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7344C17D0Ev,_ZThn64_N8S7344C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7344C17D1Ev,_ZThn64_N8S7344C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7344C16D0Ev,_ZTv0_n24_N8S7344C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7344C16D0Ev,_ZThn64_N8S7344C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7344C16D1Ev,_ZTv0_n24_N8S7344C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7344C16D1Ev,_ZThn64_N8S7344C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7344C16 = {  "S7344C16", // class name
  bases_S7344C16, 35,
  &(vtc_S7344C16[0]), // expected_vtbl_contents
  &(vtt_S7344C16[0]), // expected_vtt_contents
  ABISELECT(128,80), // object size
  NSPAIRA(_ZTI8S7344C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7344C16),54, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7344C16),38, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names37,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7344C7  : S7344C8 , virtual S7344C13 , S7344C15 , S7344C16 {
  short s7344c7f0:6;
  ~S7344C7(); // tgen
  S7344C7(); // tgen
};
//SIG(-1 S7344C7) C1{ BC2{ VBC3{ BC4{ m FL} BC5{ BC4 VBC6{ m} BC7{ BC8{ VBC4 BC6 v1}} vd v2} BC9{ m} VBC10{ VBC4 BC11{ VBC4 BC8 BC6} VBC8 v3} VBC12{ BC4 VBC8 BC6 vd} vd} BC5 BC13{ VBC7 Fi} vd FD} VBC11 BC13 BC14{ BC15{ BC10 BC8 VBC16{ BC12 v4} BC11} BC13 BC17{ VBC8 BC5 vd v5} BC5 vd Fp} Fs:6}


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

static void Test_S7344C7()
{
  extern Class_Descriptor cd_S7344C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(19,45)];
    init_test(&cd_S7344C7, buf);
    S7344C7 *dp, &lv = *(dp=new (buf) S7344C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,176), "sizeof(S7344C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7344C7)");
    /*is_ambiguous_... S7344C9::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C9*), ABISELECT(184,112), "S7344C7");
    /*is_ambiguous_... S7344C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C10*)(S7344C9*), ABISELECT(176,104), "S7344C7");
    /*is_ambiguous_... S7344C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C10*)(S7344C9*), ABISELECT(192,120), "S7344C7");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C10*)(S7344C8*), ABISELECT(192,120), "S7344C7");
    /*is_ambiguous_... S7344C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C10*)(S7344C19*)(S7344C16*), ABISELECT(192,120), "S7344C7");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C10*)(S7344C16*), ABISELECT(192,120), "S7344C7");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C9*), ABISELECT(192,120), "S7344C7");
    /*is_ambiguous_... S7344C7::S7344C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C12*), ABISELECT(192,120), "S7344C7");
    /*is_ambiguous_... S7344C7::S7344C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*)(S7344C12*), ABISELECT(192,120), "S7344C7");
    /*is_ambiguous_... S7344C7::S7344C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*)(S7344C12*), ABISELECT(192,120), "S7344C7");
    /*is_ambiguous_... S7344C7::S7344C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*), ABISELECT(192,120), "S7344C7");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C8*), ABISELECT(192,120), "S7344C7");
    /*is_ambiguous_... S7344C7::S7344C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*), ABISELECT(192,120), "S7344C7");
    /*is_ambiguous_... S7344C7::S7344C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*), ABISELECT(192,120), "S7344C7");
    /*is_ambiguous_... S7344C7::S7344C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*), ABISELECT(192,120), "S7344C7");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C12*)(S7344C17*)(S7344C16*), ABISELECT(192,120), "S7344C7");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*)(S7344C12*)(S7344C17*)(S7344C16*), ABISELECT(192,120), "S7344C7");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*)(S7344C16*), ABISELECT(192,120), "S7344C7");
    /*is_ambiguous_... S7344C17::S7344C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C17*)(S7344C16*), ABISELECT(192,120), "S7344C7");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*)(S7344C17*)(S7344C16*), ABISELECT(192,120), "S7344C7");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*)(S7344C17*)(S7344C16*), ABISELECT(192,120), "S7344C7");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C19*)(S7344C16*), ABISELECT(192,120), "S7344C7");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C16*), ABISELECT(192,120), "S7344C7");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C9*), ABISELECT(168,100), "S7344C7");
    check_base_class_offset(lv, (S7344C4*)(S7344C3*)(S7344C10*)(S7344C9*), ABISELECT(168,100), "S7344C7");
    check_base_class_offset(lv, (S7344C3*)(S7344C10*)(S7344C9*), ABISELECT(168,100), "S7344C7");
    check_base_class_offset(lv, (S7344C10*)(S7344C9*), ABISELECT(168,100), "S7344C7");
    check_base_class_offset(lv, (S28C52_nt*)(S7344C9*), ABISELECT(168,100), "S7344C7");
    /*is_ambiguous_... S7344C7::S7344C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*)(S7344C12*), ABISELECT(200,128), "S7344C7");
    /*is_ambiguous_... S7344C7::S7344C12 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C13*)(S7344C12*), ABISELECT(200,128), "S7344C7");
    /*is_ambiguous_... S7344C7::S7344C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*)(S7344C12*), ABISELECT(208,132), "S7344C7");
    /*is_ambiguous_... S7344C7::S7344C12 */ AMB_check_base_class_offset(lv, (S7344C13*)(S7344C12*), ABISELECT(200,128), "S7344C7");
    /*is_ambiguous_... S7344C7::S7344C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*), ABISELECT(216,136), "S7344C7");
    /*is_ambiguous_... S7344C7::S7344C12 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C12*), ABISELECT(216,136), "S7344C7");
    /*is_ambiguous_... S7344C7::S7344C14 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C14*), ABISELECT(216,136), "S7344C7");
    /*is_ambiguous_... S7344C12::S7344C4 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C12*)(S7344C17*)(S7344C16*), ABISELECT(216,136), "S7344C7");
    check_base_class_offset(lv, (S7344C4*)(S7344C14*)(S7344C18*), ABISELECT(216,136), "S7344C7");
    /*is_ambiguous_... S7344C19::S7344C4 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C19*)(S7344C16*), ABISELECT(216,136), "S7344C7");
    check_base_class_offset(lv, (S7344C12*)(S7344C9*), ABISELECT(200,128), "S7344C7");
    /*is_ambiguous_... S7344C7::S7344C14 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C14*), ABISELECT(224,140), "S7344C7");
    /*is_ambiguous_... S7344C7::S7344C14 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C14*), ABISELECT(232,148), "S7344C7");
    check_base_class_offset(lv, (S7344C14*)(S7344C9*), ABISELECT(216,136), "S7344C7");
    check_base_class_offset(lv, (S7344C9*)(S7344C8*), ABISELECT(168,100), "S7344C7");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C10*)(S7344C8*), ABISELECT(8,4), "S7344C7");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C8*), 0, "S7344C7");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C3*)(S7344C10*)(S7344C8*), 0, "S7344C7");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S7344C3*)(S7344C10*)(S7344C8*), 0, "S7344C7");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S7344C10*)(S7344C8*), 0, "S7344C7");
    /*is_ambiguous_... S7344C7::S7344C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*), ABISELECT(16,12), "S7344C7");
    /*is_ambiguous_... S7344C7::S7344C3 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C3*), ABISELECT(16,12), "S7344C7");
    check_base_class_offset(lv, (S7344C3*)(S7344C15*)(S7344C8*), ABISELECT(16,12), "S7344C7");
    /*is_ambiguous_... S7344C7::S7344C15 */ AMB_check_base_class_offset(lv, (S7344C3*)(S7344C15*), ABISELECT(16,12), "S7344C7");
    check_base_class_offset(lv, (S7344C3*)(S7344C15*)(S7344C16*), ABISELECT(16,12), "S7344C7");
    check_base_class_offset(lv, (S7344C15*)(S7344C8*), ABISELECT(16,12), "S7344C7");
    check_base_class_offset(lv, (S7344C8*), 0, "S7344C7");
    /*is_ambiguous_... S7344C7::S7344C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*), ABISELECT(240,152), "S7344C7");
    /*is_ambiguous_... S7344C7::S7344C13 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C13*), ABISELECT(240,152), "S7344C7");
    /*is_ambiguous_... S7344C7::S7344C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*), ABISELECT(248,156), "S7344C7");
    /*is_ambiguous_... S7344C7::S7344C13 */ AMB_check_base_class_offset(lv, (S7344C13*), ABISELECT(240,152), "S7344C7");
    /*is_ambiguous_... S7344C7::S7344C15 */ AMB_check_base_class_offset(lv, (S7344C15*), ABISELECT(48,32), "S7344C7");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*)(S7344C16*), ABISELECT(64,40), "S7344C7");
    check_base_class_offset(lv, (S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*)(S7344C16*), ABISELECT(64,40), "S7344C7");
    /*is_ambiguous_... S7344C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*)(S7344C12*)(S7344C17*)(S7344C16*), ABISELECT(72,44), "S7344C7");
    check_base_class_offset(lv, (S7344C13*)(S7344C12*)(S7344C17*)(S7344C16*), ABISELECT(64,40), "S7344C7");
    check_base_class_offset(lv, (S7344C12*)(S7344C17*)(S7344C16*), ABISELECT(64,40), "S7344C7");
    /*is_ambiguous_... S7344C17::S7344C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C17*)(S7344C16*), ABISELECT(80,48), "S7344C7");
    /*is_ambiguous_... S7344C17::S7344C4 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C17*)(S7344C16*), ABISELECT(80,48), "S7344C7");
    /*is_ambiguous_... S7344C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C14*)(S7344C18*), ABISELECT(264,164), "S7344C7");
    /*is_ambiguous_... S7344C14::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C14*)(S7344C18*), ABISELECT(272,172), "S7344C7");
    check_base_class_offset(lv, (S7344C14*)(S7344C18*), ABISELECT(256,160), "S7344C7");
    check_base_class_offset(lv, (S7344C18*)(S7344C17*)(S7344C16*), ABISELECT(256,160), "S7344C7");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*)(S7344C17*)(S7344C16*), ABISELECT(88,52), "S7344C7");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C13*)(S7344C17*)(S7344C16*), ABISELECT(88,52), "S7344C7");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*)(S7344C17*)(S7344C16*), ABISELECT(96,56), "S7344C7");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S7344C13*)(S7344C17*)(S7344C16*), ABISELECT(88,52), "S7344C7");
    check_base_class_offset(lv, (S7344C17*)(S7344C16*), ABISELECT(64,40), "S7344C7");
    check_base_class_offset(lv, (S7344C15*)(S7344C16*), ABISELECT(104,60), "S7344C7");
    /*is_ambiguous_... S7344C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C10*)(S7344C19*)(S7344C16*), ABISELECT(128,72), "S7344C7");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C19*)(S7344C16*), ABISELECT(120,68), "S7344C7");
    check_base_class_offset(lv, (S7344C4*)(S7344C3*)(S7344C10*)(S7344C19*)(S7344C16*), ABISELECT(120,68), "S7344C7");
    check_base_class_offset(lv, (S7344C3*)(S7344C10*)(S7344C19*)(S7344C16*), ABISELECT(120,68), "S7344C7");
    check_base_class_offset(lv, (S7344C10*)(S7344C19*)(S7344C16*), ABISELECT(120,68), "S7344C7");
    check_base_class_offset(lv, (S7344C19*)(S7344C16*), ABISELECT(120,68), "S7344C7");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C10*)(S7344C16*), ABISELECT(144,84), "S7344C7");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C16*), ABISELECT(136,80), "S7344C7");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C3*)(S7344C10*)(S7344C16*), ABISELECT(136,80), "S7344C7");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S7344C3*)(S7344C10*)(S7344C16*), ABISELECT(136,80), "S7344C7");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S7344C10*)(S7344C16*), ABISELECT(136,80), "S7344C7");
    check_base_class_offset(lv, (S7344C16*), ABISELECT(64,40), "S7344C7");
    set_bf_and_test(lv, s7344c7f0, ABISELECT(160,96), 0, 6, 1, "S7344C7");
    set_bf_and_test(lv, s7344c7f0, ABISELECT(160,96), 0, 6, hide_sll(1LL<<5), "S7344C7");
    test_class_info(&lv, &cd_S7344C7);
    dp->~S7344C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7344C7(Test_S7344C7, "S7344C7", ABISELECT(288,176));

#else // __cplusplus

extern void _ZN7S7344C7C1Ev();
extern void _ZN7S7344C7D1Ev();
Name_Map name_map_S7344C7[] = {
  NSPAIR(_ZN7S7344C7C1Ev),
  NSPAIR(_ZN7S7344C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S7344C10;
extern VTBL_ENTRY _ZTI8S7344C10[];
extern  VTBL_ENTRY _ZTV8S7344C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C10[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C12;
extern VTBL_ENTRY _ZTI8S7344C12[];
extern  VTBL_ENTRY _ZTV8S7344C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C12[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C14;
extern VTBL_ENTRY _ZTI8S7344C14[];
extern  VTBL_ENTRY _ZTV8S7344C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C14[];
extern Class_Descriptor cd_S7344C9;
extern VTBL_ENTRY _ZTI7S7344C9[];
extern  VTBL_ENTRY _ZTV7S7344C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S7344C10;
extern VTBL_ENTRY _ZTI8S7344C10[];
extern  VTBL_ENTRY _ZTV8S7344C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C10[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S7344C15;
extern VTBL_ENTRY _ZTI8S7344C15[];
extern  VTBL_ENTRY _ZTV8S7344C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C15[];
extern Class_Descriptor cd_S7344C8;
extern VTBL_ENTRY _ZTI7S7344C8[];
extern  VTBL_ENTRY _ZTV7S7344C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C8[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S7344C15;
extern VTBL_ENTRY _ZTI8S7344C15[];
extern  VTBL_ENTRY _ZTV8S7344C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C15[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S7344C12;
extern VTBL_ENTRY _ZTI8S7344C12[];
extern  VTBL_ENTRY _ZTV8S7344C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C14;
extern VTBL_ENTRY _ZTI8S7344C14[];
extern  VTBL_ENTRY _ZTV8S7344C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C14[];
extern Class_Descriptor cd_S7344C18;
extern VTBL_ENTRY _ZTI8S7344C18[];
extern  VTBL_ENTRY _ZTV8S7344C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C18[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S7344C17;
extern VTBL_ENTRY _ZTI8S7344C17[];
extern  VTBL_ENTRY _ZTV8S7344C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C17[];
extern Class_Descriptor cd_S7344C15;
extern VTBL_ENTRY _ZTI8S7344C15[];
extern  VTBL_ENTRY _ZTV8S7344C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C15[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S7344C10;
extern VTBL_ENTRY _ZTI8S7344C10[];
extern  VTBL_ENTRY _ZTV8S7344C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C10[];
extern Class_Descriptor cd_S7344C19;
extern VTBL_ENTRY _ZTI8S7344C19[];
extern  VTBL_ENTRY _ZTV8S7344C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C19[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S7344C10;
extern VTBL_ENTRY _ZTI8S7344C10[];
extern  VTBL_ENTRY _ZTV8S7344C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C10[];
extern Class_Descriptor cd_S7344C16;
extern VTBL_ENTRY _ZTI8S7344C16[];
extern  VTBL_ENTRY _ZTV8S7344C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C16[];
static Base_Class bases_S7344C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(176,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
    7, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    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
    5, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7344C3,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7344C10,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    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
    19, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(200,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(208,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7344C13,    ABISELECT(200,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(216,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
    14, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(216,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7344C12,    ABISELECT(200,128), //bcp->offset
    84, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(232,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7344C14,    ABISELECT(216,136), //bcp->offset
    92, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S7344C9,    ABISELECT(168,100), //bcp->offset
    70, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7344C4,    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
    16, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7344C3,    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
    17, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7344C10,    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
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    26, //immediately_derived
  0, 0},
  {&cd_S7344C4,    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
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7344C3,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S7344C15,    ABISELECT(16,12), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7344C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    ABISELECT(240,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_S7344C4,    ABISELECT(240,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(248,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
    33, //immediately_derived
  0, 0},
  {&cd_S7344C13,    ABISELECT(240,152), //bcp->offset
    101, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7344C15,    ABISELECT(48,32), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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
    36, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    38, //immediately_derived
  0, 0},
  {&cd_S7344C13,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7344C12,    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
    24, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(80,48), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    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
    44, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(272,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
    44, //immediately_derived
  0, 0},
  {&cd_S7344C14,    ABISELECT(256,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7344C18,    ABISELECT(256,160), //bcp->offset
    106, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    47, //immediately_derived
  0, 0},
  {&cd_S7344C4,    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
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    49, //immediately_derived
  0, 0},
  {&cd_S7344C13,    ABISELECT(88,52), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7344C17,    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
    28, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7344C15,    ABISELECT(104,60), //bcp->offset
    46, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7344C3,    ABISELECT(120,68), //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
    31, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S7344C10,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7344C19,    ABISELECT(120,68), //bcp->offset
    52, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    60, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S7344C3,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7344C10,    ABISELECT(136,80), //bcp->offset
    62, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7344C16,    ABISELECT(64,40), //bcp->offset
    27, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7344C7[];
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C7D1Ev();
extern void _ZN7S7344C7D0Ev();
extern void _ZN8S7344C102v2Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void ABISELECT(_ZThn64_N7S7344C7D1Ev,_ZThn40_N7S7344C7D1Ev)();
extern void ABISELECT(_ZThn64_N7S7344C7D0Ev,_ZThn40_N7S7344C7D0Ev)();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZThn120_N7S7344C7D1Ev,_ZThn68_N7S7344C7D1Ev)();
extern void ABISELECT(_ZThn120_N7S7344C7D0Ev,_ZThn68_N7S7344C7D0Ev)();
extern void _ZN8S7344C102v2Ev();
extern void _ZN8S7344C192v5Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZThn136_N7S7344C7D1Ev,_ZThn80_N7S7344C7D1Ev)();
extern void ABISELECT(_ZThn136_N7S7344C7D0Ev,_ZThn80_N7S7344C7D0Ev)();
extern void _ZN8S7344C102v2Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n72_N7S7344C7D1Ev,_ZTv0_n36_N7S7344C7D1Ev)();
extern void ABISELECT(_ZThn168_N7S7344C7D1Ev,_ZThn100_N7S7344C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7344C7D0Ev,_ZTv0_n36_N7S7344C7D0Ev)();
extern void ABISELECT(_ZThn168_N7S7344C7D0Ev,_ZThn100_N7S7344C7D0Ev)() __attribute__((weak));
extern void _ZN8S7344C102v2Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7344C7D1Ev,_ZTv0_n24_N7S7344C7D1Ev)();
extern void ABISELECT(_ZThn216_N7S7344C7D1Ev,_ZThn136_N7S7344C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7344C7D0Ev,_ZTv0_n24_N7S7344C7D0Ev)();
extern void ABISELECT(_ZThn216_N7S7344C7D0Ev,_ZThn136_N7S7344C7D0Ev)() __attribute__((weak));
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7344C7D1Ev,_ZTv0_n24_N7S7344C7D1Ev)();
extern void ABISELECT(_ZThn256_N7S7344C7D1Ev,_ZThn160_N7S7344C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7344C7D0Ev,_ZTv0_n24_N7S7344C7D0Ev)();
extern void ABISELECT(_ZThn256_N7S7344C7D0Ev,_ZThn160_N7S7344C7D0Ev)() __attribute__((weak));
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY vtc_S7344C7[] = {
  ABISELECT(256,160),
  ABISELECT(240,152),
  ABISELECT(16,12),
  ABISELECT(216,136),
  ABISELECT(216,136),
  ABISELECT(200,128),
  ABISELECT(168,100),
  ABISELECT(192,120),
  ABISELECT(192,120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7344C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7344C7D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  0,
  0,
  ABISELECT(176,108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(144,88),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(128,80),
  ABISELECT(-48,-28),
  ABISELECT(192,120),
  ABISELECT(152,96),
  ABISELECT(128,80),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S7344C7D1Ev,_ZThn40_N7S7344C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S7344C7D0Ev,_ZThn40_N7S7344C7D0Ev),
  ABISELECT(112,72),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(104,68),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(88,60),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(96,68),
  ABISELECT(72,52),
  ABISELECT(72,52),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S7344C7D1Ev,_ZThn68_N7S7344C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S7344C7D0Ev,_ZThn68_N7S7344C7D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  (VTBL_ENTRY)&_ZN8S7344C192v5Ev,
  ABISELECT(56,40),
  ABISELECT(56,40),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N7S7344C7D1Ev,_ZThn80_N7S7344C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N7S7344C7D0Ev,_ZThn80_N7S7344C7D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  0,
  ABISELECT(-168,-100),
  0,
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7344C7D1Ev,_ZTv0_n36_N7S7344C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7344C7D0Ev,_ZTv0_n36_N7S7344C7D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-200,-128),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  ABISELECT(-216,-136),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-216,-136),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C7D1Ev,_ZTv0_n24_N7S7344C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C7D0Ev,_ZTv0_n24_N7S7344C7D0Ev),
  0,
  ABISELECT(-48,-32),
  ABISELECT(-240,-152),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  0,
  ABISELECT(-256,-160),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-256,-160),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C7D1Ev,_ZTv0_n24_N7S7344C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C7D0Ev,_ZTv0_n24_N7S7344C7D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern VTBL_ENTRY _ZTV7S7344C7[];
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C8D1Ev();
extern void _ZN7S7344C8D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C8__7S7344C7[] = {
  ABISELECT(16,12),
  ABISELECT(216,136),
  ABISELECT(216,136),
  ABISELECT(200,128),
  ABISELECT(168,100),
  ABISELECT(192,120),
  ABISELECT(192,120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7344C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7344C8D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C10D1Ev();
extern void _ZN8S7344C10D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C107S7344C8__A1__7S7344C7[] = {
  ABISELECT(192,120),
  ABISELECT(192,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C10[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C38S7344C107S7344C8__A1__7S7344C7[] = {
  ABISELECT(192,120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C38S7344C107S7344C8__A3__7S7344C7[] = {
  ABISELECT(192,120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C157S7344C8__7S7344C7[] = {
  0,
  0,
  ABISELECT(176,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C15[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n72_N7S7344C8D1Ev,_ZTv0_n36_N7S7344C8D1Ev)();
extern void ABISELECT(_ZThn168_N7S7344C8D1Ev,_ZThn100_N7S7344C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7344C8D0Ev,_ZTv0_n36_N7S7344C8D0Ev)();
extern void ABISELECT(_ZThn168_N7S7344C8D0Ev,_ZThn100_N7S7344C8D0Ev)() __attribute__((weak));
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C9__7S7344C8__7S7344C7[] = {
  0,
  ABISELECT(-168,-100),
  0,
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7344C8D1Ev,_ZTv0_n36_N7S7344C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7344C8D0Ev,_ZTv0_n36_N7S7344C8D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C12__7S7344C8__7S7344C7[] = {
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-200,-128),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7344C8D1Ev,_ZTv0_n24_N7S7344C8D1Ev)();
extern void ABISELECT(_ZThn216_N7S7344C8D1Ev,_ZThn136_N7S7344C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7344C8D0Ev,_ZTv0_n24_N7S7344C8D0Ev)();
extern void ABISELECT(_ZThn216_N7S7344C8D0Ev,_ZThn136_N7S7344C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7344C14__7S7344C8__7S7344C7[] = {
  ABISELECT(-216,-136),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-216,-136),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C8D1Ev,_ZTv0_n24_N7S7344C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C8D0Ev,_ZTv0_n24_N7S7344C8D0Ev),
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C15__7S7344C8__7S7344C7[] = {
  0,
  0,
  ABISELECT(176,108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C15__A1__7S7344C7[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(144,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C15[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C3__8S7344C15__A1__7S7344C7[] = {
  0,
  ABISELECT(176,108),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S7344C15[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void _ZN8S7344C16D1Ev();
extern void _ZN8S7344C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C16__7S7344C7[] = {
  ABISELECT(128,80),
  ABISELECT(-48,-28),
  ABISELECT(192,120),
  ABISELECT(152,96),
  ABISELECT(128,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&_ZN8S7344C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C16D0Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void _ZN8S7344C17D1Ev();
extern void _ZN8S7344C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C178S7344C16__7S7344C7[] = {
  ABISELECT(192,120),
  ABISELECT(152,96),
  ABISELECT(128,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&_ZN8S7344C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C17D0Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C128S7344C178S7344C16__A1__7S7344C7[] = {
  ABISELECT(152,96),
  ABISELECT(128,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C128S7344C178S7344C16__A2__7S7344C7[] = {
  ABISELECT(128,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C138S7344C128S7344C178S7344C16__A6__7S7344C7[] = {
  ABISELECT(128,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C128S7344C178S7344C16__A1__7S7344C7[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C178S7344C16__A7__7S7344C7[] = {
  ABISELECT(112,72),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C178S7344C16__A3__7S7344C7[] = {
  ABISELECT(104,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C138S7344C178S7344C16__A8__7S7344C7[] = {
  ABISELECT(104,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C178S7344C16__7S7344C7[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A__8S7344C178S7344C16__7S7344C7[] = {
  ABISELECT(112,72),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev)();
extern void ABISELECT(_ZThn192_N8S7344C17D1Ev,_ZThn120_N8S7344C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev)();
extern void ABISELECT(_ZThn192_N8S7344C17D0Ev,_ZThn120_N8S7344C17D0Ev)() __attribute__((weak));
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C18__8S7344C178S7344C16__7S7344C7[] = {
  0,
  ABISELECT(-192,-120),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C13__A1__8S7344C178S7344C16__7S7344C7[] = {
  ABISELECT(104,68),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C158S7344C16__A2__7S7344C7[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(88,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C15[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C3__8S7344C158S7344C16__A2__7S7344C7[] = {
  0,
  ABISELECT(176,108),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7344C15[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C19D1Ev();
extern void _ZN8S7344C19D0Ev();
extern void _ZN8S7344C102v2Ev();
extern void _ZN8S7344C192v5Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C198S7344C16__7S7344C7[] = {
  ABISELECT(96,68),
  ABISELECT(72,52),
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C19[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  (VTBL_ENTRY)&_ZN8S7344C192v5Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C10D1Ev();
extern void _ZN8S7344C10D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C108S7344C198S7344C16__A2__7S7344C7[] = {
  ABISELECT(72,52),
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C10[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C38S7344C108S7344C198S7344C16__A3__7S7344C7[] = {
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C38S7344C108S7344C198S7344C16__A9__7S7344C7[] = {
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__8S7344C198S7344C16__7S7344C7[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S7344C19[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C10D1Ev();
extern void _ZN8S7344C10D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C108S7344C16__A3__7S7344C7[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C10[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C38S7344C108S7344C16__A4__7S7344C7[] = {
  ABISELECT(56,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C38S7344C108S7344C16__A10__7S7344C7[] = {
  ABISELECT(56,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C16__7S7344C7[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C17__A2__8S7344C16__7S7344C7[] = {
  ABISELECT(112,72),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7344C16D1Ev,_ZTv0_n24_N8S7344C16D1Ev)();
extern void ABISELECT(_ZThn192_N8S7344C16D1Ev,_ZThn120_N8S7344C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7344C16D0Ev,_ZTv0_n24_N8S7344C16D0Ev)();
extern void ABISELECT(_ZThn192_N8S7344C16D0Ev,_ZThn120_N8S7344C16D0Ev)() __attribute__((weak));
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C18__8S7344C16__7S7344C7[] = {
  0,
  ABISELECT(-192,-120),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C16D1Ev,_ZTv0_n24_N8S7344C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C16D0Ev,_ZTv0_n24_N8S7344C16D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C17__A1__8S7344C16__7S7344C7[] = {
  ABISELECT(104,68),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C15__8S7344C16__7S7344C7[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(88,60),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C3__8S7344C16__7S7344C7[] = {
  0,
  ABISELECT(176,108),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZThn56_N8S7344C16D1Ev,_ZThn28_N8S7344C16D1Ev)();
extern void ABISELECT(_ZThn56_N8S7344C16D0Ev,_ZThn28_N8S7344C16D0Ev)();
extern void _ZN8S7344C102v2Ev();
extern void _ZN8S7344C192v5Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C19__8S7344C16__7S7344C7[] = {
  ABISELECT(96,68),
  ABISELECT(72,52),
  ABISELECT(72,52),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7344C16D1Ev,_ZThn28_N8S7344C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7344C16D0Ev,_ZThn28_N8S7344C16D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  (VTBL_ENTRY)&_ZN8S7344C192v5Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZThn72_N8S7344C16D1Ev,_ZThn40_N8S7344C16D1Ev)();
extern void ABISELECT(_ZThn72_N8S7344C16D0Ev,_ZThn40_N8S7344C16D0Ev)();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C10__A1__8S7344C16__7S7344C7[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S7344C16D1Ev,_ZThn40_N8S7344C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S7344C16D0Ev,_ZThn40_N8S7344C16D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C9D1Ev();
extern void _ZN7S7344C9D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C9__7S7344C7[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C9[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7344C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7344C9D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C10D1Ev();
extern void _ZN8S7344C10D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C107S7344C9__7S7344C7[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C10[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C38S7344C107S7344C9__7S7344C7[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C38S7344C107S7344C9__7S7344C7[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C12__7S7344C9__7S7344C7[] = {
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S7344C9[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7344C9D1Ev,_ZTv0_n24_N7S7344C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7344C9D1Ev,_ZThn36_N7S7344C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7344C9D0Ev,_ZTv0_n24_N7S7344C9D0Ev)();
extern void ABISELECT(_ZThn48_N7S7344C9D0Ev,_ZThn36_N7S7344C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7344C14__7S7344C9__7S7344C7[] = {
  ABISELECT(-48,-36),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI7S7344C9[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C9D1Ev,_ZTv0_n24_N7S7344C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C9D0Ev,_ZTv0_n24_N7S7344C9D0Ev),
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C12__7S7344C7[] = {
  ABISELECT(16,8),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C12__7S7344C7[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C138S7344C12__A1__7S7344C7[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C12__7S7344C7[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A2__7S7344C7[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C14D1Ev();
extern void _ZN8S7344C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C14__7S7344C7[] = {
  0,
  0,
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C14[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D0Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C3__A2__7S7344C7[] = {
  ABISELECT(176,108),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C3__A4__7S7344C7[] = {
  ABISELECT(176,108),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C13__A1__7S7344C7[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C13__A5__7S7344C7[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C18D1Ev();
extern void _ZN8S7344C18D0Ev();
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C18__7S7344C7[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C18[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C18D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C14D1Ev();
extern void _ZN8S7344C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C148S7344C18__A1__7S7344C7[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C14[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D0Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__8S7344C148S7344C18__A1__7S7344C7[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7344C14[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__8S7344C18__7S7344C7[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7344C18[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
static  VTT_ENTRY vtt_S7344C7[] = {
  {&(_ZTV7S7344C7[11]),  11,117},
  {&(_tg__ZTV7S7344C8__7S7344C7[9]),  9,13},
  {&(_tg__ZTV8S7344C107S7344C8__A1__7S7344C7[4]),  4,8},
  {&(_tg__ZTV7S7344C38S7344C107S7344C8__A1__7S7344C7[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C38S7344C107S7344C8__A3__7S7344C7[3]),  3,4},
  {&(_tg__ZTV8S7344C157S7344C8__7S7344C7[5]),  5,6},
  {&(_tg__ZTV8S7344C157S7344C8__7S7344C7[5]),  5,6},
  {&(_tg__ZTV7S7344C9__7S7344C8__7S7344C7[10]),  10,14},
  {&(_tg__ZTV8S7344C12__7S7344C8__7S7344C7[6]),  6,8},
  {&(_tg__ZTV8S7344C14__7S7344C8__7S7344C7[6]),  6,9},
  {&(_tg__ZTV8S7344C14__7S7344C8__7S7344C7[6]),  6,9},
  {&(_tg__ZTV8S7344C15__7S7344C8__7S7344C7[5]),  5,6},
  {&(_tg__ZTV8S7344C15__7S7344C8__7S7344C7[5]),  5,6},
  {&(_tg__ZTV8S7344C15__A1__7S7344C7[5]),  5,6},
  {&(_tg__ZTV7S7344C3__8S7344C15__A1__7S7344C7[4]),  4,5},
  {&(_tg__ZTV8S7344C16__7S7344C7[7]),  7,11},
  {&(_tg__ZTV8S7344C178S7344C16__7S7344C7[5]),  5,9},
  {&(_tg__ZTV8S7344C128S7344C178S7344C16__A1__7S7344C7[4]),  4,6},
  {&(_tg__ZTV8S7344C138S7344C128S7344C178S7344C16__A2__7S7344C7[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C138S7344C128S7344C178S7344C16__A6__7S7344C7[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C128S7344C178S7344C16__A1__7S7344C7[4]),  4,5},
  {&(_tg__ZTV7S7344C48S7344C178S7344C16__A7__7S7344C7[3]),  3,4},
  {&(_tg__ZTV8S7344C138S7344C178S7344C16__A3__7S7344C7[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C138S7344C178S7344C16__A8__7S7344C7[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C178S7344C16__7S7344C7[4]),  4,5},
  {&(_tg__ZTV7S7344C4__A__8S7344C178S7344C16__7S7344C7[3]),  3,4},
  {&(_tg__ZTV8S7344C18__8S7344C178S7344C16__7S7344C7[7]),  7,11},
  {&(_tg__ZTV8S7344C13__A1__8S7344C178S7344C16__7S7344C7[3]),  3,4},
  {&(_tg__ZTV8S7344C158S7344C16__A2__7S7344C7[5]),  5,6},
  {&(_tg__ZTV7S7344C3__8S7344C158S7344C16__A2__7S7344C7[4]),  4,5},
  {&(_tg__ZTV8S7344C198S7344C16__7S7344C7[5]),  5,10},
  {&(_tg__ZTV8S7344C108S7344C198S7344C16__A2__7S7344C7[4]),  4,8},
  {&(_tg__ZTV7S7344C38S7344C108S7344C198S7344C16__A3__7S7344C7[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C38S7344C108S7344C198S7344C16__A9__7S7344C7[3]),  3,4},
  {&(_tg__ZTV7S7344C4__8S7344C198S7344C16__7S7344C7[4]),  4,5},
  {&(_tg__ZTV8S7344C108S7344C16__A3__7S7344C7[4]),  4,8},
  {&(_tg__ZTV7S7344C38S7344C108S7344C16__A4__7S7344C7[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C38S7344C108S7344C16__A10__7S7344C7[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C16__7S7344C7[4]),  4,5},
  {&(_tg__ZTV7S7344C48S7344C17__A2__8S7344C16__7S7344C7[3]),  3,4},
  {&(_tg__ZTV8S7344C18__8S7344C16__7S7344C7[7]),  7,11},
  {&(_tg__ZTV8S7344C138S7344C17__A1__8S7344C16__7S7344C7[3]),  3,4},
  {&(_tg__ZTV8S7344C15__8S7344C16__7S7344C7[5]),  5,6},
  {&(_tg__ZTV7S7344C3__8S7344C16__7S7344C7[4]),  4,5},
  {&(_tg__ZTV8S7344C19__8S7344C16__7S7344C7[5]),  5,10},
  {&(_tg__ZTV8S7344C10__A1__8S7344C16__7S7344C7[4]),  4,8},
  {&(_ZTV7S7344C7[80]),  80,117},
  {&(_ZTV7S7344C7[90]),  90,117},
  {&(_ZTV7S7344C7[98]),  98,117},
  {&(_ZTV7S7344C7[98]),  98,117},
  {&(_ZTV7S7344C7[20]),  20,117},
  {&(_ZTV7S7344C7[20]),  20,117},
  {&(_ZTV7S7344C7[105]),  105,117},
  {&(_ZTV7S7344C7[26]),  26,117},
  {&(_ZTV7S7344C7[34]),  34,117},
  {&(_ZTV7S7344C7[41]),  41,117},
  {&(_ZTV7S7344C7[113]),  113,117},
  {&(_ZTV7S7344C7[45]),  45,117},
  {&(_ZTV7S7344C7[51]),  51,117},
  {&(_ZTV7S7344C7[57]),  57,117},
  {&(_ZTV7S7344C7[66]),  66,117},
  {&(_tg__ZTV7S7344C9__7S7344C7[7]),  7,11},
  {&(_tg__ZTV8S7344C107S7344C9__7S7344C7[4]),  4,8},
  {&(_tg__ZTV7S7344C38S7344C107S7344C9__7S7344C7[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C38S7344C107S7344C9__7S7344C7[3]),  3,4},
  {&(_tg__ZTV8S7344C12__7S7344C9__7S7344C7[6]),  6,8},
  {&(_tg__ZTV8S7344C14__7S7344C9__7S7344C7[6]),  6,9},
  {&(_tg__ZTV8S7344C14__7S7344C9__7S7344C7[6]),  6,9},
  {&(_tg__ZTV8S7344C12__7S7344C7[4]),  4,6},
  {&(_tg__ZTV8S7344C138S7344C12__7S7344C7[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C138S7344C12__A1__7S7344C7[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C12__7S7344C7[4]),  4,5},
  {&(_tg__ZTV7S7344C4__A2__7S7344C7[3]),  3,4},
  {&(_tg__ZTV8S7344C14__7S7344C7[5]),  5,8},
  {&(_tg__ZTV8S7344C14__7S7344C7[5]),  5,8},
  {&(_tg__ZTV7S7344C3__A2__7S7344C7[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C3__A4__7S7344C7[3]),  3,4},
  {&(_tg__ZTV8S7344C13__A1__7S7344C7[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C13__A5__7S7344C7[3]),  3,4},
  {&(_tg__ZTV8S7344C18__7S7344C7[5]),  5,9},
  {&(_tg__ZTV8S7344C148S7344C18__A1__7S7344C7[5]),  5,8},
  {&(_tg__ZTV7S7344C4__8S7344C148S7344C18__A1__7S7344C7[4]),  4,5},
  {&(_tg__ZTV7S7344C4__8S7344C18__7S7344C7[4]),  4,5},
};
extern VTBL_ENTRY _ZTI7S7344C7[];
extern  VTBL_ENTRY _ZTV7S7344C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C7[];
static VTBL_ENTRY alt_thunk_names38[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C9D0Ev,_ZTv0_n24_N7S7344C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7344C9D0Ev,_ZThn36_N7S7344C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C9D1Ev,_ZTv0_n24_N7S7344C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7344C9D1Ev,_ZThn36_N7S7344C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7344C16D0Ev,_ZTv0_n24_N8S7344C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7344C16D0Ev,_ZThn120_N8S7344C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7344C16D1Ev,_ZTv0_n24_N8S7344C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7344C16D1Ev,_ZThn120_N8S7344C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7344C17D0Ev,_ZThn120_N8S7344C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7344C17D1Ev,_ZThn120_N8S7344C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C8D0Ev,_ZTv0_n24_N7S7344C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7344C8D0Ev,_ZThn136_N7S7344C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C8D1Ev,_ZTv0_n24_N7S7344C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7344C8D1Ev,_ZThn136_N7S7344C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7344C8D0Ev,_ZTv0_n36_N7S7344C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7344C8D0Ev,_ZThn100_N7S7344C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7344C8D1Ev,_ZTv0_n36_N7S7344C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7344C8D1Ev,_ZThn100_N7S7344C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C7D0Ev,_ZTv0_n24_N7S7344C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7344C7D0Ev,_ZThn160_N7S7344C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7344C7D0Ev,_ZThn136_N7S7344C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C7D1Ev,_ZTv0_n24_N7S7344C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7344C7D1Ev,_ZThn160_N7S7344C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7344C7D1Ev,_ZThn136_N7S7344C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7344C7D0Ev,_ZTv0_n36_N7S7344C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7344C7D0Ev,_ZThn100_N7S7344C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7344C7D1Ev,_ZTv0_n36_N7S7344C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7344C7D1Ev,_ZThn100_N7S7344C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7344C7 = {  "S7344C7", // class name
  bases_S7344C7, 64,
  &(vtc_S7344C7[0]), // expected_vtbl_contents
  &(vtt_S7344C7[0]), // expected_vtt_contents
  ABISELECT(288,176), // object size
  NSPAIRA(_ZTI7S7344C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7344C7),117, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7344C7),83, //virtual table table var
  37, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names38,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7344C20  : virtual S7344C17 {
  ~S7344C20(); // tgen
  S7344C20(); // tgen
};
//SIG(-1 S7344C20) C1{ VBC2{ BC3{ VBC4{ m FL} BC5{ VBC4 BC6{ VBC4 BC7{ m} v1} BC7} VBC6 v2} BC6 VBC8{ BC9{ BC4 VBC6 BC7 vd} v3} BC5}}


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

static void Test_S7344C20()
{
  extern Class_Descriptor cd_S7344C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S7344C20, buf);
    S7344C20 *dp, &lv = *(dp=new (buf) S7344C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S7344C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7344C20)");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C12*)(S7344C17*), ABISELECT(48,24), "S7344C20");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*)(S7344C12*)(S7344C17*), ABISELECT(48,24), "S7344C20");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*), ABISELECT(48,24), "S7344C20");
    /*is_ambiguous_... S7344C20::S7344C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*), ABISELECT(48,24), "S7344C20");
    /*is_ambiguous_... S7344C17::S7344C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C17*), ABISELECT(48,24), "S7344C20");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*)(S7344C17*), ABISELECT(48,24), "S7344C20");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*)(S7344C17*), ABISELECT(48,24), "S7344C20");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*), ABISELECT(8,4), "S7344C20");
    check_base_class_offset(lv, (S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*), ABISELECT(8,4), "S7344C20");
    /*is_ambiguous_... S7344C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*)(S7344C12*)(S7344C17*), ABISELECT(16,8), "S7344C20");
    check_base_class_offset(lv, (S7344C13*)(S7344C12*)(S7344C17*), ABISELECT(8,4), "S7344C20");
    /*is_ambiguous_... S7344C20::S7344C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*), 0, "S7344C20");
    /*is_ambiguous_... S7344C12::S7344C4 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C12*)(S7344C17*), 0, "S7344C20");
    check_base_class_offset(lv, (S7344C4*)(S7344C14*)(S7344C18*), 0, "S7344C20");
    check_base_class_offset(lv, (S7344C12*)(S7344C17*), ABISELECT(8,4), "S7344C20");
    /*is_ambiguous_... S7344C17::S7344C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C17*), ABISELECT(24,12), "S7344C20");
    /*is_ambiguous_... S7344C17::S7344C4 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C17*), ABISELECT(24,12), "S7344C20");
    /*is_ambiguous_... S7344C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C14*)(S7344C18*), ABISELECT(64,36), "S7344C20");
    /*is_ambiguous_... S7344C14::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C14*)(S7344C18*), ABISELECT(72,44), "S7344C20");
    check_base_class_offset(lv, (S7344C14*)(S7344C18*), ABISELECT(56,32), "S7344C20");
    check_base_class_offset(lv, (S7344C18*)(S7344C17*), ABISELECT(56,32), "S7344C20");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*)(S7344C17*), ABISELECT(32,16), "S7344C20");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C13*)(S7344C17*), ABISELECT(32,16), "S7344C20");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*)(S7344C17*), ABISELECT(40,20), "S7344C20");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S7344C13*)(S7344C17*), ABISELECT(32,16), "S7344C20");
    check_base_class_offset(lv, (S7344C17*), ABISELECT(8,4), "S7344C20");
    test_class_info(&lv, &cd_S7344C20);
    dp->~S7344C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7344C20(Test_S7344C20, "S7344C20", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN8S7344C20C1Ev();
extern void _ZN8S7344C20D1Ev();
Name_Map name_map_S7344C20[] = {
  NSPAIR(_ZN8S7344C20C1Ev),
  NSPAIR(_ZN8S7344C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C12;
extern VTBL_ENTRY _ZTI8S7344C12[];
extern  VTBL_ENTRY _ZTV8S7344C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C14;
extern VTBL_ENTRY _ZTI8S7344C14[];
extern  VTBL_ENTRY _ZTV8S7344C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C14[];
extern Class_Descriptor cd_S7344C18;
extern VTBL_ENTRY _ZTI8S7344C18[];
extern  VTBL_ENTRY _ZTV8S7344C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C18[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S7344C17;
extern VTBL_ENTRY _ZTI8S7344C17[];
extern  VTBL_ENTRY _ZTV8S7344C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C17[];
static Base_Class bases_S7344C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7344C4,    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
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S731C17_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_S7344C13,    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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7344C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7344C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(24,12), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_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_S7344C14,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7344C18,    ABISELECT(56,32), //bcp->offset
    30, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7344C4,    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
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7344C13,    ABISELECT(32,16), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //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
    18, //immediately_derived
  0, 0},
  {&cd_S7344C17,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7344C20[];
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C20D1Ev();
extern void _ZN8S7344C20D0Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void ABISELECT(_ZTv0_n64_N8S7344C20D1Ev,_ZTv0_n32_N8S7344C20D1Ev)();
extern void ABISELECT(_ZThn8_N8S7344C20D1Ev,_ZThn4_N8S7344C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7344C20D0Ev,_ZTv0_n32_N8S7344C20D0Ev)();
extern void ABISELECT(_ZThn8_N8S7344C20D0Ev,_ZThn4_N8S7344C20D0Ev)() __attribute__((weak));
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7344C20D1Ev,_ZTv0_n24_N8S7344C20D1Ev)();
extern void ABISELECT(_ZThn56_N8S7344C20D1Ev,_ZThn32_N8S7344C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7344C20D0Ev,_ZTv0_n24_N8S7344C20D0Ev)();
extern void ABISELECT(_ZThn56_N8S7344C20D0Ev,_ZThn32_N8S7344C20D0Ev)() __attribute__((weak));
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY vtc_S7344C20[] = {
  ABISELECT(56,32),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C20[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C20D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C20D0Ev,
  ABISELECT(-8,-4),
  0,
  0,
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7344C20[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7344C20D1Ev,_ZTv0_n32_N8S7344C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7344C20D0Ev,_ZTv0_n32_N8S7344C20D0Ev),
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7344C20[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(16,8),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7344C20[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  -8,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S7344C20[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C20D1Ev,_ZTv0_n24_N8S7344C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C20D0Ev,_ZTv0_n24_N8S7344C20D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern VTBL_ENTRY _ZTV8S7344C20[];
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void _ZN8S7344C17D1Ev();
extern void _ZN8S7344C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C17__8S7344C20[] = {
  ABISELECT(48,28),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&_ZN8S7344C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C17D0Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C128S7344C17__8S7344C20[] = {
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C128S7344C17__8S7344C20[] = {
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C138S7344C128S7344C17__8S7344C20[] = {
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C128S7344C17__8S7344C20[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C17__A2__8S7344C20[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C17__A1__8S7344C20[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C138S7344C17__A3__8S7344C20[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C17__8S7344C20[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A__8S7344C17__8S7344C20[] = {
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev)();
extern void ABISELECT(_ZThn48_N8S7344C17D1Ev,_ZThn28_N8S7344C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev)();
extern void ABISELECT(_ZThn48_N8S7344C17D0Ev,_ZThn28_N8S7344C17D0Ev)() __attribute__((weak));
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C18__8S7344C17__8S7344C20[] = {
  0,
  ABISELECT(-48,-28),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  -8,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C13__A1__8S7344C17__8S7344C20[] = {
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C20[] = {
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C18D1Ev();
extern void _ZN8S7344C18D0Ev();
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C18__8S7344C20[] = {
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C18[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C18D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C14D1Ev();
extern void _ZN8S7344C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C148S7344C18__8S7344C20[] = {
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C14[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D0Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__8S7344C148S7344C18__8S7344C20[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S7344C14[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__8S7344C18__8S7344C20[] = {
  0,
  ABISELECT(48,24),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S7344C18[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
static  VTT_ENTRY vtt_S7344C20[] = {
  {&(_ZTV8S7344C20[7]),  7,41},
  {&(_ZTV8S7344C20[18]),  18,41},
  {&(_ZTV8S7344C20[7]),  7,41},
  {&(_ZTV8S7344C20[25]),  25,41},
  {&(_ZTV8S7344C20[37]),  37,41},
  {&(_ZTV8S7344C20[29]),  29,41},
  {&(_tg__ZTV8S7344C17__8S7344C20[5]),  5,9},
  {&(_tg__ZTV8S7344C128S7344C17__8S7344C20[4]),  4,6},
  {&(_tg__ZTV8S7344C138S7344C128S7344C17__8S7344C20[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C138S7344C128S7344C17__8S7344C20[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C128S7344C17__8S7344C20[4]),  4,5},
  {&(_tg__ZTV7S7344C48S7344C17__A2__8S7344C20[3]),  3,4},
  {&(_tg__ZTV8S7344C138S7344C17__A1__8S7344C20[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C138S7344C17__A3__8S7344C20[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C17__8S7344C20[4]),  4,5},
  {&(_tg__ZTV7S7344C4__A__8S7344C17__8S7344C20[3]),  3,4},
  {&(_tg__ZTV8S7344C18__8S7344C17__8S7344C20[7]),  7,11},
  {&(_tg__ZTV8S7344C13__A1__8S7344C17__8S7344C20[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C20[3]),  3,4},
  {&(_tg__ZTV8S7344C18__8S7344C20[5]),  5,9},
  {&(_tg__ZTV8S7344C148S7344C18__8S7344C20[5]),  5,8},
  {&(_tg__ZTV7S7344C4__8S7344C148S7344C18__8S7344C20[4]),  4,5},
  {&(_tg__ZTV7S7344C4__8S7344C18__8S7344C20[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S7344C20[];
extern  VTBL_ENTRY _ZTV8S7344C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C20[];
static VTBL_ENTRY alt_thunk_names39[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7344C17D0Ev,_ZThn28_N8S7344C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7344C17D1Ev,_ZThn28_N8S7344C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7344C20D0Ev,_ZTv0_n24_N8S7344C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7344C20D0Ev,_ZThn32_N8S7344C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7344C20D1Ev,_ZTv0_n24_N8S7344C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S7344C20D1Ev,_ZThn32_N8S7344C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7344C20D0Ev,_ZTv0_n32_N8S7344C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7344C20D0Ev,_ZThn4_N8S7344C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7344C20D1Ev,_ZTv0_n32_N8S7344C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7344C20D1Ev,_ZThn4_N8S7344C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7344C20 = {  "S7344C20", // class name
  bases_S7344C20, 19,
  &(vtc_S7344C20[0]), // expected_vtbl_contents
  &(vtt_S7344C20[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI8S7344C20),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7344C20),41, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7344C20),23, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names39,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7344C2  : virtual S7344C3 , virtual S7344C7 , virtual S7344C8 , S7344C17 , virtual S7344C20 {
  ::S7344C12 s7344c2f0;
  virtual  ~S7344C2(); // _ZN7S7344C2D2Ev
  virtual void  v6(); // _ZN7S7344C22v6Ev
  S7344C2(); // tgen
};
//SIG(-1 S7344C2) C1{ VBC2{ BC3{ VBC4{ m FL} BC5{ m} v2}} VBC6{ BC7{ VBC8{ BC4 BC9{ BC4 VBC5 BC2 vd v3} BC10{ m} VBC11{ VBC4 BC12{ VBC4 BC3 BC5} VBC3 v4} VBC13{ BC4 VBC3 BC5 vd} vd} BC9 BC14{ VBC2 Fi} vd FD} VBC12 BC14 BC15{ BC16{ BC11 BC3 VBC17{ BC13 v5} BC12} BC14 BC18{ VBC3 BC9 vd v6} BC9 vd Fp} Fs:6} VBC7 BC16 VBC19{ VBC16} vd v1 FC11}


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

static void Test_S7344C2()
{
  extern Class_Descriptor cd_S7344C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,70)];
    init_test(&cd_S7344C2, buf);
    S7344C2 *dp, &lv = *(dp=new (buf) S7344C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,276), "sizeof(S7344C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7344C2)");
    /*is_ambiguous_... S7344C2::S7344C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*), ABISELECT(72,40), "S7344C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C9*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C12*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*)(S7344C12*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*)(S7344C12*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C8*)(S7344C7*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*), ABISELECT(72,40), "S7344C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C12*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(72,40), "S7344C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*)(S7344C12*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(72,40), "S7344C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C17::S7344C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(72,40), "S7344C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C19*)(S7344C16*)(S7344C7*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C16*)(S7344C7*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C8*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C12*)(S7344C17*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*)(S7344C12*)(S7344C17*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C17*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*)(S7344C17*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*)(S7344C17*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C12*)(S7344C17*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*)(S7344C12*)(S7344C17*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C17*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*)(S7344C17*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*)(S7344C17*), ABISELECT(72,40), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*), ABISELECT(96,60), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C3 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C3*), ABISELECT(96,60), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C3 */ AMB_check_base_class_offset(lv, (S7344C3*), ABISELECT(96,60), "S7344C2");
    check_base_class_offset(lv, (S7344C3*)(S7344C15*)(S7344C8*)(S7344C7*), ABISELECT(96,60), "S7344C2");
    /*is_ambiguous_... S7344C7::S7344C15 */ AMB_check_base_class_offset(lv, (S7344C3*)(S7344C15*)(S7344C7*), ABISELECT(96,60), "S7344C2");
    check_base_class_offset(lv, (S7344C3*)(S7344C15*)(S7344C16*)(S7344C7*), ABISELECT(96,60), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C8 */ AMB_check_base_class_offset(lv, (S7344C3*)(S7344C15*)(S7344C8*), ABISELECT(96,60), "S7344C2");
    /*is_ambiguous_... S7344C9::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C9*), ABISELECT(264,160), "S7344C2");
    /*is_ambiguous_... S7344C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C10*)(S7344C9*), ABISELECT(256,152), "S7344C2");
    /*is_ambiguous_... S7344C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C10*)(S7344C9*), ABISELECT(272,168), "S7344C2");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C10*)(S7344C8*)(S7344C7*), ABISELECT(272,168), "S7344C2");
    /*is_ambiguous_... S7344C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C10*)(S7344C19*)(S7344C16*)(S7344C7*), ABISELECT(272,168), "S7344C2");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C10*)(S7344C16*)(S7344C7*), ABISELECT(272,168), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C10*)(S7344C8*), ABISELECT(272,168), "S7344C2");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C9*), ABISELECT(248,148), "S7344C2");
    check_base_class_offset(lv, (S7344C4*)(S7344C3*)(S7344C10*)(S7344C9*), ABISELECT(248,148), "S7344C2");
    check_base_class_offset(lv, (S7344C3*)(S7344C10*)(S7344C9*), ABISELECT(248,148), "S7344C2");
    check_base_class_offset(lv, (S7344C10*)(S7344C9*), ABISELECT(248,148), "S7344C2");
    check_base_class_offset(lv, (S28C52_nt*)(S7344C9*), ABISELECT(248,148), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*)(S7344C12*), ABISELECT(280,172), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C12 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C13*)(S7344C12*), ABISELECT(280,172), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*)(S7344C12*), ABISELECT(288,176), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C12 */ AMB_check_base_class_offset(lv, (S7344C13*)(S7344C12*), ABISELECT(280,172), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*), ABISELECT(296,180), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C12 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C12*), ABISELECT(296,180), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C14 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C14*), ABISELECT(296,180), "S7344C2");
    /*is_ambiguous_... S7344C12::S7344C4 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C12*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(296,180), "S7344C2");
    check_base_class_offset(lv, (S7344C4*)(S7344C14*)(S7344C18*), ABISELECT(296,180), "S7344C2");
    /*is_ambiguous_... S7344C19::S7344C4 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C19*)(S7344C16*)(S7344C7*), ABISELECT(296,180), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C12*)(S7344C17*), ABISELECT(296,180), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C12*)(S7344C17*), ABISELECT(296,180), "S7344C2");
    check_base_class_offset(lv, (S7344C12*)(S7344C9*), ABISELECT(280,172), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C14 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C14*), ABISELECT(304,184), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C14 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C14*), ABISELECT(312,192), "S7344C2");
    check_base_class_offset(lv, (S7344C14*)(S7344C9*), ABISELECT(296,180), "S7344C2");
    check_base_class_offset(lv, (S7344C9*)(S7344C8*)(S7344C7*), ABISELECT(248,148), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C8 */ AMB_check_base_class_offset(lv, (S7344C9*)(S7344C8*), ABISELECT(248,148), "S7344C2");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C10*)(S7344C8*)(S7344C7*), ABISELECT(88,52), "S7344C2");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C8*)(S7344C7*), ABISELECT(80,48), "S7344C2");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C3*)(S7344C10*)(S7344C8*)(S7344C7*), ABISELECT(80,48), "S7344C2");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S7344C3*)(S7344C10*)(S7344C8*)(S7344C7*), ABISELECT(80,48), "S7344C2");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S7344C10*)(S7344C8*)(S7344C7*), ABISELECT(80,48), "S7344C2");
    check_base_class_offset(lv, (S7344C15*)(S7344C8*)(S7344C7*), ABISELECT(96,60), "S7344C2");
    check_base_class_offset(lv, (S7344C8*)(S7344C7*), ABISELECT(80,48), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*), ABISELECT(320,196), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C13 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C13*), ABISELECT(320,196), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*), ABISELECT(328,200), "S7344C2");
    /*is_ambiguous_... S7344C7::S7344C13 */ AMB_check_base_class_offset(lv, (S7344C13*)(S7344C7*), ABISELECT(320,196), "S7344C2");
    /*is_ambiguous_... S7344C7::S7344C15 */ AMB_check_base_class_offset(lv, (S7344C15*)(S7344C7*), ABISELECT(128,80), "S7344C2");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(144,88), "S7344C2");
    check_base_class_offset(lv, (S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(144,88), "S7344C2");
    /*is_ambiguous_... S7344C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*)(S7344C12*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(152,92), "S7344C2");
    check_base_class_offset(lv, (S7344C13*)(S7344C12*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(144,88), "S7344C2");
    check_base_class_offset(lv, (S7344C12*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(144,88), "S7344C2");
    /*is_ambiguous_... S7344C17::S7344C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(160,96), "S7344C2");
    /*is_ambiguous_... S7344C17::S7344C4 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(160,96), "S7344C2");
    /*is_ambiguous_... S7344C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C14*)(S7344C18*), ABISELECT(344,208), "S7344C2");
    /*is_ambiguous_... S7344C14::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C14*)(S7344C18*), ABISELECT(352,216), "S7344C2");
    check_base_class_offset(lv, (S7344C14*)(S7344C18*), ABISELECT(336,204), "S7344C2");
    check_base_class_offset(lv, (S7344C18*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(336,204), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C18*)(S7344C17*), ABISELECT(336,204), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C18*)(S7344C17*), ABISELECT(336,204), "S7344C2");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(168,100), "S7344C2");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C13*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(168,100), "S7344C2");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(176,104), "S7344C2");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S7344C13*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(168,100), "S7344C2");
    check_base_class_offset(lv, (S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(144,88), "S7344C2");
    check_base_class_offset(lv, (S7344C15*)(S7344C16*)(S7344C7*), ABISELECT(184,108), "S7344C2");
    /*is_ambiguous_... S7344C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C10*)(S7344C19*)(S7344C16*)(S7344C7*), ABISELECT(208,120), "S7344C2");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C19*)(S7344C16*)(S7344C7*), ABISELECT(200,116), "S7344C2");
    check_base_class_offset(lv, (S7344C4*)(S7344C3*)(S7344C10*)(S7344C19*)(S7344C16*)(S7344C7*), ABISELECT(200,116), "S7344C2");
    check_base_class_offset(lv, (S7344C3*)(S7344C10*)(S7344C19*)(S7344C16*)(S7344C7*), ABISELECT(200,116), "S7344C2");
    check_base_class_offset(lv, (S7344C10*)(S7344C19*)(S7344C16*)(S7344C7*), ABISELECT(200,116), "S7344C2");
    check_base_class_offset(lv, (S7344C19*)(S7344C16*)(S7344C7*), ABISELECT(200,116), "S7344C2");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C10*)(S7344C16*)(S7344C7*), ABISELECT(224,132), "S7344C2");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C16*)(S7344C7*), ABISELECT(216,128), "S7344C2");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C3*)(S7344C10*)(S7344C16*)(S7344C7*), ABISELECT(216,128), "S7344C2");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S7344C3*)(S7344C10*)(S7344C16*)(S7344C7*), ABISELECT(216,128), "S7344C2");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S7344C10*)(S7344C16*)(S7344C7*), ABISELECT(216,128), "S7344C2");
    check_base_class_offset(lv, (S7344C16*)(S7344C7*), ABISELECT(144,88), "S7344C2");
    check_base_class_offset(lv, (S7344C7*), ABISELECT(80,48), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C10*)(S7344C8*), ABISELECT(376,224), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C8*), ABISELECT(368,220), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C8 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C3*)(S7344C10*)(S7344C8*), ABISELECT(368,220), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C8 */ AMB_check_base_class_offset(lv, (S7344C3*)(S7344C10*)(S7344C8*), ABISELECT(368,220), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C8 */ AMB_check_base_class_offset(lv, (S7344C10*)(S7344C8*), ABISELECT(368,220), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C8 */ AMB_check_base_class_offset(lv, (S7344C15*)(S7344C8*), ABISELECT(384,232), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C8 */ AMB_check_base_class_offset(lv, (S7344C8*), ABISELECT(368,220), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*), 0, "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*), 0, "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*)(S7344C12*)(S7344C17*), ABISELECT(8,4), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C13*)(S7344C12*)(S7344C17*), 0, "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C12*)(S7344C17*), 0, "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C17*), ABISELECT(16,8), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C17*), ABISELECT(16,8), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*)(S7344C17*), ABISELECT(24,12), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C13*)(S7344C17*), ABISELECT(24,12), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*)(S7344C17*), ABISELECT(32,16), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C13*)(S7344C17*), ABISELECT(24,12), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C17*), 0, "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*), ABISELECT(424,256), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*), ABISELECT(424,256), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*)(S7344C12*)(S7344C17*), ABISELECT(432,260), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C13*)(S7344C12*)(S7344C17*), ABISELECT(424,256), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C12*)(S7344C17*), ABISELECT(424,256), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C17*), ABISELECT(440,264), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C17*), ABISELECT(440,264), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*)(S7344C17*), ABISELECT(448,268), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C13*)(S7344C17*), ABISELECT(448,268), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*)(S7344C17*), ABISELECT(456,272), "S7344C2");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C13*)(S7344C17*), ABISELECT(448,268), "S7344C2");
    check_base_class_offset(lv, (S7344C17*)(S7344C20*), ABISELECT(424,256), "S7344C2");
    check_base_class_offset(lv, (S7344C20*), ABISELECT(416,252), "S7344C2");
    check_field_offset(lv, s7344c2f0, ABISELECT(40,20), "S7344C2.s7344c2f0");
    test_class_info(&lv, &cd_S7344C2);
    dp->~S7344C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7344C2(Test_S7344C2, "S7344C2", ABISELECT(464,276));

#else // __cplusplus

extern void _ZN7S7344C2C1Ev();
extern void _ZN7S7344C2D2Ev();
Name_Map name_map_S7344C2[] = {
  NSPAIR(_ZN7S7344C2C1Ev),
  NSPAIR(_ZN7S7344C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S7344C10;
extern VTBL_ENTRY _ZTI8S7344C10[];
extern  VTBL_ENTRY _ZTV8S7344C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C10[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C12;
extern VTBL_ENTRY _ZTI8S7344C12[];
extern  VTBL_ENTRY _ZTV8S7344C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C12[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C14;
extern VTBL_ENTRY _ZTI8S7344C14[];
extern  VTBL_ENTRY _ZTV8S7344C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C14[];
extern Class_Descriptor cd_S7344C9;
extern VTBL_ENTRY _ZTI7S7344C9[];
extern  VTBL_ENTRY _ZTV7S7344C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S7344C10;
extern VTBL_ENTRY _ZTI8S7344C10[];
extern  VTBL_ENTRY _ZTV8S7344C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C10[];
extern Class_Descriptor cd_S7344C15;
extern VTBL_ENTRY _ZTI8S7344C15[];
extern  VTBL_ENTRY _ZTV8S7344C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C15[];
extern Class_Descriptor cd_S7344C8;
extern VTBL_ENTRY _ZTI7S7344C8[];
extern  VTBL_ENTRY _ZTV7S7344C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C8[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S7344C15;
extern VTBL_ENTRY _ZTI8S7344C15[];
extern  VTBL_ENTRY _ZTV8S7344C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C15[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S7344C12;
extern VTBL_ENTRY _ZTI8S7344C12[];
extern  VTBL_ENTRY _ZTV8S7344C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C14;
extern VTBL_ENTRY _ZTI8S7344C14[];
extern  VTBL_ENTRY _ZTV8S7344C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C14[];
extern Class_Descriptor cd_S7344C18;
extern VTBL_ENTRY _ZTI8S7344C18[];
extern  VTBL_ENTRY _ZTV8S7344C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C18[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S7344C17;
extern VTBL_ENTRY _ZTI8S7344C17[];
extern  VTBL_ENTRY _ZTV8S7344C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C17[];
extern Class_Descriptor cd_S7344C15;
extern VTBL_ENTRY _ZTI8S7344C15[];
extern  VTBL_ENTRY _ZTV8S7344C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C15[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S7344C10;
extern VTBL_ENTRY _ZTI8S7344C10[];
extern  VTBL_ENTRY _ZTV8S7344C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C10[];
extern Class_Descriptor cd_S7344C19;
extern VTBL_ENTRY _ZTI8S7344C19[];
extern  VTBL_ENTRY _ZTV8S7344C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C19[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S7344C10;
extern VTBL_ENTRY _ZTI8S7344C10[];
extern  VTBL_ENTRY _ZTV8S7344C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C10[];
extern Class_Descriptor cd_S7344C16;
extern VTBL_ENTRY _ZTI8S7344C16[];
extern  VTBL_ENTRY _ZTV8S7344C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C16[];
extern Class_Descriptor cd_S7344C7;
extern VTBL_ENTRY _ZTI7S7344C7[];
extern  VTBL_ENTRY _ZTV7S7344C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C7[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S7344C10;
extern VTBL_ENTRY _ZTI8S7344C10[];
extern  VTBL_ENTRY _ZTV8S7344C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C10[];
extern Class_Descriptor cd_S7344C15;
extern VTBL_ENTRY _ZTI8S7344C15[];
extern  VTBL_ENTRY _ZTV8S7344C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C15[];
extern Class_Descriptor cd_S7344C8;
extern VTBL_ENTRY _ZTI7S7344C8[];
extern  VTBL_ENTRY _ZTV7S7344C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C8[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S7344C12;
extern VTBL_ENTRY _ZTI8S7344C12[];
extern  VTBL_ENTRY _ZTV8S7344C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S7344C17;
extern VTBL_ENTRY _ZTI8S7344C17[];
extern  VTBL_ENTRY _ZTV8S7344C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C17[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S7344C12;
extern VTBL_ENTRY _ZTI8S7344C12[];
extern  VTBL_ENTRY _ZTV8S7344C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S7344C17;
extern VTBL_ENTRY _ZTI8S7344C17[];
extern  VTBL_ENTRY _ZTV8S7344C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C17[];
extern Class_Descriptor cd_S7344C20;
extern VTBL_ENTRY _ZTI8S7344C20[];
extern  VTBL_ENTRY _ZTV8S7344C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C20[];
static Base_Class bases_S7344C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    2, //immediately_derived
  0, 0},
  {&cd_S7344C4,    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
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7344C3,    ABISELECT(96,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    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
    22, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(256,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(272,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    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
    8, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(248,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7344C3,    ABISELECT(248,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7344C10,    ABISELECT(248,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    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
    22, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(280,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(280,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(288,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7344C13,    ABISELECT(280,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(296,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(296,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7344C12,    ABISELECT(280,172), //bcp->offset
    117, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    108, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    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
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(312,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7344C14,    ABISELECT(296,180), //bcp->offset
    125, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7344C9,    ABISELECT(248,148), //bcp->offset
    103, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S3461C5_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
    27, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(80,48), //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
    16, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7344C3,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7344C10,    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
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7344C15,    ABISELECT(96,60), //bcp->offset
    48, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7344C8,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(320,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(320,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(328,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7344C13,    ABISELECT(320,196), //bcp->offset
    134, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    64, //immediately_derived
  0, 1},
  {&cd_S7344C15,    ABISELECT(128,80), //bcp->offset
    54, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    36, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(152,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S7344C13,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7344C12,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    41, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(160,96), //bcp->offset
    71, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    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
    44, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(352,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7344C14,    ABISELECT(336,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7344C18,    ABISELECT(336,204), //bcp->offset
    139, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    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
    47, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(176,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
    49, //immediately_derived
  0, 0},
  {&cd_S7344C13,    ABISELECT(168,100), //bcp->offset
    75, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7344C17,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7344C15,    ABISELECT(184,108), //bcp->offset
    79, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    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
    56, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    54, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(200,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7344C3,    ABISELECT(200,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S7344C10,    ABISELECT(200,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7344C19,    ABISELECT(200,116), //bcp->offset
    85, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(224,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(216,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(216,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S7344C3,    ABISELECT(216,128), //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
    35, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7344C10,    ABISELECT(216,128), //bcp->offset
    95, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7344C16,    ABISELECT(144,88), //bcp->offset
    60, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7344C7,    ABISELECT(80,48), //bcp->offset
    28, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(376,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
    69, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(368,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(368,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    68, //immediately_derived
  0, 0},
  {&cd_S7344C3,    ABISELECT(368,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S7344C10,    ABISELECT(368,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S7344C15,    ABISELECT(384,232), //bcp->offset
    166, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    125, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S7344C8,    ABISELECT(368,220), //bcp->offset
    150, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    121, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S7344C4,    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
    52, //init_seq
    75, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7344C13,    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
    53, //init_seq
    76, //immediately_derived
  0, 0},
  {&cd_S7344C12,    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
    54, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    78, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    80, //immediately_derived
  0, 0},
  {&cd_S7344C4,    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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S7344C13,    ABISELECT(24,12), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    57, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S7344C17,    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
    58, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    ABISELECT(424,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    85, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(424,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    142, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    87, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(432,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    87, //immediately_derived
  0, 0},
  {&cd_S7344C13,    ABISELECT(424,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    88, //immediately_derived
  0, 0},
  {&cd_S7344C12,    ABISELECT(424,256), //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
    46, //init_seq
    95, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(440,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
    90, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(440,264), //bcp->offset
    195, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    144, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    95, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(448,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
    92, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(448,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    146, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    94, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(456,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
    94, //immediately_derived
  0, 0},
  {&cd_S7344C13,    ABISELECT(448,268), //bcp->offset
    199, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    145, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    95, //immediately_derived
  0, 0},
  {&cd_S7344C17,    ABISELECT(424,256), //bcp->offset
    183, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    139, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    96, //immediately_derived
  0, 1},
  {&cd_S7344C20,    ABISELECT(416,252), //bcp->offset
    172, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7344C2[];
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void _ZN7S7344C2D1Ev();
extern void _ZN7S7344C2D0Ev();
extern void _ZN7S7344C22v6Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n104_N7S7344C2D1Ev,_ZTv0_n52_N7S7344C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S7344C2D1Ev,_ZThn48_N7S7344C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N7S7344C2D0Ev,_ZTv0_n52_N7S7344C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S7344C2D0Ev,_ZThn48_N7S7344C2D0Ev)() __attribute__((weak));
extern void _ZN8S7344C102v2Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void ABISELECT(_ZTvn64_n104_N7S7344C2D1Ev,_ZTvn40_n52_N7S7344C2D1Ev)();
extern void ABISELECT(_ZTvn64_n104_N7S7344C2D0Ev,_ZTvn40_n52_N7S7344C2D0Ev)();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTvn120_n104_N7S7344C2D1Ev,_ZTvn68_n52_N7S7344C2D1Ev)();
extern void ABISELECT(_ZTvn120_n104_N7S7344C2D0Ev,_ZTvn68_n52_N7S7344C2D0Ev)();
extern void _ZN8S7344C102v2Ev();
extern void _ZN8S7344C192v5Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTvn136_n104_N7S7344C2D1Ev,_ZTvn80_n52_N7S7344C2D1Ev)();
extern void ABISELECT(_ZTvn136_n104_N7S7344C2D0Ev,_ZTvn80_n52_N7S7344C2D0Ev)();
extern void _ZN8S7344C102v2Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n72_N7S7344C2D1Ev,_ZTv0_n36_N7S7344C2D1Ev)();
extern void ABISELECT(_ZThn248_N7S7344C2D1Ev,_ZThn148_N7S7344C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7344C2D0Ev,_ZTv0_n36_N7S7344C2D0Ev)();
extern void ABISELECT(_ZThn248_N7S7344C2D0Ev,_ZThn148_N7S7344C2D0Ev)() __attribute__((weak));
extern void _ZN8S7344C102v2Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7344C2D1Ev,_ZTv0_n24_N7S7344C2D1Ev)();
extern void ABISELECT(_ZThn296_N7S7344C2D1Ev,_ZThn180_N7S7344C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7344C2D0Ev,_ZTv0_n24_N7S7344C2D0Ev)();
extern void ABISELECT(_ZThn296_N7S7344C2D0Ev,_ZThn180_N7S7344C2D0Ev)() __attribute__((weak));
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7344C2D1Ev,_ZTv0_n24_N7S7344C2D1Ev)();
extern void ABISELECT(_ZThn336_N7S7344C2D1Ev,_ZThn204_N7S7344C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7344C2D0Ev,_ZTv0_n24_N7S7344C2D0Ev)();
extern void ABISELECT(_ZThn336_N7S7344C2D0Ev,_ZThn204_N7S7344C2D0Ev)() __attribute__((weak));
extern void _ZN8S7344C182v4Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S7344C2D1Ev,_ZTv0_n44_N7S7344C2D1Ev)();
extern void ABISELECT(_ZThn368_N7S7344C2D1Ev,_ZThn220_N7S7344C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7344C2D0Ev,_ZTv0_n44_N7S7344C2D0Ev)();
extern void ABISELECT(_ZThn368_N7S7344C2D0Ev,_ZThn220_N7S7344C2D0Ev)() __attribute__((weak));
extern void _ZN8S7344C102v2Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S7344C2D1Ev,_ZTv0_n32_N7S7344C2D1Ev)();
extern void ABISELECT(_ZThn416_N7S7344C2D1Ev,_ZThn252_N7S7344C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7344C2D0Ev,_ZTv0_n32_N7S7344C2D0Ev)();
extern void ABISELECT(_ZThn416_N7S7344C2D0Ev,_ZThn252_N7S7344C2D0Ev)() __attribute__((weak));
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void ABISELECT(_ZTv0_n64_N7S7344C2D1Ev,_ZTv0_n32_N7S7344C2D1Ev)();
extern void ABISELECT(_ZThn424_N7S7344C2D1Ev,_ZThn256_N7S7344C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7344C2D0Ev,_ZTv0_n32_N7S7344C2D0Ev)();
extern void ABISELECT(_ZThn424_N7S7344C2D0Ev,_ZThn256_N7S7344C2D0Ev)() __attribute__((weak));
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY vtc_S7344C2[] = {
  ABISELECT(424,256),
  ABISELECT(416,252),
  ABISELECT(368,220),
  ABISELECT(320,196),
  ABISELECT(296,180),
  ABISELECT(280,172),
  ABISELECT(272,168),
  ABISELECT(248,148),
  ABISELECT(80,48),
  ABISELECT(96,60),
  ABISELECT(336,204),
  ABISELECT(296,180),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&_ZN7S7344C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7344C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7344C22v6Ev,
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(48,28),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(120,68),
  ABISELECT(64,40),
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(256,156),
  ABISELECT(240,148),
  ABISELECT(16,12),
  ABISELECT(216,132),
  ABISELECT(216,132),
  ABISELECT(200,124),
  ABISELECT(168,100),
  ABISELECT(192,120),
  -8,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N7S7344C2D1Ev,_ZTv0_n52_N7S7344C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N7S7344C2D0Ev,_ZTv0_n52_N7S7344C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  0,
  0,
  ABISELECT(-24,-20),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-56,-40),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(128,80),
  ABISELECT(-48,-28),
  ABISELECT(192,116),
  ABISELECT(152,92),
  ABISELECT(-72,-48),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n104_N7S7344C2D1Ev,_ZTvn40_n52_N7S7344C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n104_N7S7344C2D0Ev,_ZTvn40_n52_N7S7344C2D0Ev),
  ABISELECT(-88,-56),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(-96,-60),
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-112,-68),
  ABISELECT(-184,-108),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(96,64),
  ABISELECT(72,52),
  ABISELECT(-128,-76),
  ABISELECT(-200,-116),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n104_N7S7344C2D1Ev,_ZTvn68_n52_N7S7344C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n104_N7S7344C2D0Ev,_ZTvn68_n52_N7S7344C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  (VTBL_ENTRY)&_ZN8S7344C192v5Ev,
  ABISELECT(56,40),
  ABISELECT(-144,-88),
  ABISELECT(-216,-128),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn136_n104_N7S7344C2D1Ev,_ZTvn80_n52_N7S7344C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn136_n104_N7S7344C2D0Ev,_ZTvn80_n52_N7S7344C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  0,
  ABISELECT(-248,-148),
  0,
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(24,20),
  ABISELECT(-176,-108),
  ABISELECT(-248,-148),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7344C2D1Ev,_ZTv0_n36_N7S7344C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7344C2D0Ev,_ZTv0_n36_N7S7344C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-208,-132),
  ABISELECT(-280,-172),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  ABISELECT(-296,-180),
  0,
  0,
  ABISELECT(-224,-140),
  ABISELECT(-296,-180),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C2D1Ev,_ZTv0_n24_N7S7344C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C2D0Ev,_ZTv0_n24_N7S7344C2D0Ev),
  0,
  ABISELECT(-248,-156),
  ABISELECT(-320,-196),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  0,
  ABISELECT(-336,-204),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-264,-164),
  ABISELECT(-336,-204),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C2D1Ev,_ZTv0_n24_N7S7344C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C2D0Ev,_ZTv0_n24_N7S7344C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
  0,
  ABISELECT(-368,-220),
  0,
  ABISELECT(-272,-160),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-120,-72),
  ABISELECT(-96,-52),
  ABISELECT(-296,-180),
  ABISELECT(-368,-220),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7344C2D1Ev,_ZTv0_n44_N7S7344C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7344C2D0Ev,_ZTv0_n44_N7S7344C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  ABISELECT(-312,-192),
  ABISELECT(-384,-232),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(-416,-252),
  ABISELECT(-80,-48),
  ABISELECT(-120,-72),
  ABISELECT(8,4),
  ABISELECT(-120,-72),
  ABISELECT(-344,-212),
  ABISELECT(-416,-252),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7344C2D1Ev,_ZTv0_n32_N7S7344C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7344C2D0Ev,_ZTv0_n32_N7S7344C2D0Ev),
  ABISELECT(-424,-256),
  0,
  0,
  ABISELECT(-88,-52),
  ABISELECT(-128,-76),
  ABISELECT(-352,-216),
  ABISELECT(-424,-256),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7344C2D1Ev,_ZTv0_n32_N7S7344C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7344C2D0Ev,_ZTv0_n32_N7S7344C2D0Ev),
  ABISELECT(-368,-224),
  ABISELECT(-440,-264),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(-376,-228),
  ABISELECT(-448,-268),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S7344C2[];
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void _ZN8S7344C17D1Ev();
extern void _ZN8S7344C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C17__A__7S7344C2[] = {
  ABISELECT(336,204),
  ABISELECT(296,180),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&_ZN8S7344C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C17D0Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C128S7344C17__A2__7S7344C2[] = {
  ABISELECT(296,180),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C128S7344C17__A4__7S7344C2[] = {
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C138S7344C128S7344C17__A12__7S7344C2[] = {
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C128S7344C17__A2__7S7344C2[] = {
  0,
  ABISELECT(-224,-140),
  ABISELECT(-296,-180),
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C17__A13__7S7344C2[] = {
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C17__A5__7S7344C2[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C138S7344C17__A14__7S7344C2[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C17__A__7S7344C2[] = {
  0,
  ABISELECT(-224,-140),
  ABISELECT(-296,-180),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A__8S7344C17__A__7S7344C2[] = {
  ABISELECT(56,32),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev)();
extern void ABISELECT(_ZThn336_N8S7344C17D1Ev,_ZThn204_N8S7344C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev)();
extern void ABISELECT(_ZThn336_N8S7344C17D0Ev,_ZThn204_N8S7344C17D0Ev)() __attribute__((weak));
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C18__8S7344C17__A__7S7344C2[] = {
  0,
  ABISELECT(-336,-204),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-264,-164),
  ABISELECT(-336,-204),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C13__A1__8S7344C17__A__7S7344C2[] = {
  ABISELECT(48,28),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C3__7S7344C2[] = {
  ABISELECT(-24,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C3__7S7344C2[] = {
  ABISELECT(-24,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C7D1Ev();
extern void _ZN7S7344C7D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C7__7S7344C2[] = {
  ABISELECT(256,156),
  ABISELECT(240,148),
  ABISELECT(16,12),
  ABISELECT(216,132),
  ABISELECT(216,132),
  ABISELECT(200,124),
  ABISELECT(168,100),
  ABISELECT(192,120),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7344C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7344C7D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C8D1Ev();
extern void _ZN7S7344C8D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C87S7344C7__7S7344C2[] = {
  ABISELECT(16,12),
  ABISELECT(216,132),
  ABISELECT(216,132),
  ABISELECT(200,124),
  ABISELECT(168,100),
  ABISELECT(192,120),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7344C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7344C8D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C10D1Ev();
extern void _ZN8S7344C10D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C107S7344C87S7344C7__A1__7S7344C2[] = {
  ABISELECT(192,120),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C10[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C38S7344C107S7344C87S7344C7__A2__7S7344C2[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C38S7344C107S7344C87S7344C7__A4__7S7344C2[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C157S7344C87S7344C7__7S7344C2[] = {
  0,
  0,
  ABISELECT(-24,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C15[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n72_N7S7344C8D1Ev,_ZTv0_n36_N7S7344C8D1Ev)();
extern void ABISELECT(_ZThn168_N7S7344C8D1Ev,_ZThn100_N7S7344C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7344C8D0Ev,_ZTv0_n36_N7S7344C8D0Ev)();
extern void ABISELECT(_ZThn168_N7S7344C8D0Ev,_ZThn100_N7S7344C8D0Ev)() __attribute__((weak));
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C9__7S7344C87S7344C7__7S7344C2[] = {
  0,
  ABISELECT(-168,-100),
  0,
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(24,20),
  ABISELECT(-176,-108),
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7344C8D1Ev,_ZTv0_n36_N7S7344C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7344C8D0Ev,_ZTv0_n36_N7S7344C8D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C12__7S7344C87S7344C7__7S7344C2[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-208,-132),
  ABISELECT(-200,-124),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7344C8D1Ev,_ZTv0_n24_N7S7344C8D1Ev)();
extern void ABISELECT(_ZThn216_N7S7344C8D1Ev,_ZThn132_N7S7344C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7344C8D0Ev,_ZTv0_n24_N7S7344C8D0Ev)();
extern void ABISELECT(_ZThn216_N7S7344C8D0Ev,_ZThn132_N7S7344C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7344C14__7S7344C87S7344C7__7S7344C2[] = {
  ABISELECT(-216,-132),
  0,
  0,
  ABISELECT(-224,-140),
  ABISELECT(-216,-132),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C8D1Ev,_ZTv0_n24_N7S7344C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C8D0Ev,_ZTv0_n24_N7S7344C8D0Ev),
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C15__7S7344C87S7344C7__7S7344C2[] = {
  0,
  0,
  ABISELECT(-24,-20),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C157S7344C7__A1__7S7344C2[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C15[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C3__8S7344C157S7344C7__A1__7S7344C2[] = {
  0,
  ABISELECT(-24,-20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S7344C15[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void _ZN8S7344C16D1Ev();
extern void _ZN8S7344C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C167S7344C7__7S7344C2[] = {
  ABISELECT(128,80),
  ABISELECT(-48,-28),
  ABISELECT(192,116),
  ABISELECT(152,92),
  ABISELECT(-72,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&_ZN8S7344C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C16D0Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void _ZN8S7344C17D1Ev();
extern void _ZN8S7344C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C178S7344C167S7344C7__7S7344C2[] = {
  ABISELECT(192,116),
  ABISELECT(152,92),
  ABISELECT(-72,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&_ZN8S7344C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C17D0Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C128S7344C178S7344C167S7344C7__A1__7S7344C2[] = {
  ABISELECT(152,92),
  ABISELECT(-72,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C128S7344C178S7344C167S7344C7__A2__7S7344C2[] = {
  ABISELECT(-72,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C138S7344C128S7344C178S7344C167S7344C7__A6__7S7344C2[] = {
  ABISELECT(-72,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C128S7344C178S7344C167S7344C7__A1__7S7344C2[] = {
  0,
  ABISELECT(-224,-140),
  ABISELECT(-152,-92),
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C178S7344C167S7344C7__A7__7S7344C2[] = {
  ABISELECT(-88,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C178S7344C167S7344C7__A3__7S7344C2[] = {
  ABISELECT(-96,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C138S7344C178S7344C167S7344C7__A8__7S7344C2[] = {
  ABISELECT(-96,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C178S7344C167S7344C7__7S7344C2[] = {
  0,
  ABISELECT(-224,-140),
  ABISELECT(-152,-92),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A__8S7344C178S7344C167S7344C7__7S7344C2[] = {
  ABISELECT(-88,-56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev)();
extern void ABISELECT(_ZThn192_N8S7344C17D1Ev,_ZThn116_N8S7344C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev)();
extern void ABISELECT(_ZThn192_N8S7344C17D0Ev,_ZThn116_N8S7344C17D0Ev)() __attribute__((weak));
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C18__8S7344C178S7344C167S7344C7__7S7344C2[] = {
  0,
  ABISELECT(-192,-116),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-264,-164),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C13__A1__8S7344C178S7344C167S7344C7__7S7344C2[] = {
  ABISELECT(-96,-60),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C158S7344C167S7344C7__A2__7S7344C2[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C15[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C3__8S7344C158S7344C167S7344C7__A2__7S7344C2[] = {
  0,
  ABISELECT(-24,-20),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7344C15[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C19D1Ev();
extern void _ZN8S7344C19D0Ev();
extern void _ZN8S7344C102v2Ev();
extern void _ZN8S7344C192v5Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C198S7344C167S7344C7__7S7344C2[] = {
  ABISELECT(96,64),
  ABISELECT(72,52),
  ABISELECT(-128,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C19[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  (VTBL_ENTRY)&_ZN8S7344C192v5Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C10D1Ev();
extern void _ZN8S7344C10D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C108S7344C198S7344C167S7344C7__A2__7S7344C2[] = {
  ABISELECT(72,52),
  ABISELECT(-128,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C10[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C38S7344C108S7344C198S7344C167S7344C7__A3__7S7344C2[] = {
  ABISELECT(-128,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C38S7344C108S7344C198S7344C167S7344C7__A9__7S7344C2[] = {
  ABISELECT(-128,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__8S7344C198S7344C167S7344C7__7S7344C2[] = {
  0,
  ABISELECT(-224,-140),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S7344C19[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C10D1Ev();
extern void _ZN8S7344C10D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C108S7344C167S7344C7__A3__7S7344C2[] = {
  ABISELECT(56,40),
  ABISELECT(-144,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C10[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C38S7344C108S7344C167S7344C7__A4__7S7344C2[] = {
  ABISELECT(-144,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C38S7344C108S7344C167S7344C7__A10__7S7344C2[] = {
  ABISELECT(-144,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C167S7344C7__7S7344C2[] = {
  0,
  ABISELECT(-224,-140),
  ABISELECT(-152,-92),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C17__A2__8S7344C167S7344C7__7S7344C2[] = {
  ABISELECT(-88,-56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7344C16D1Ev,_ZTv0_n24_N8S7344C16D1Ev)();
extern void ABISELECT(_ZThn192_N8S7344C16D1Ev,_ZThn116_N8S7344C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7344C16D0Ev,_ZTv0_n24_N8S7344C16D0Ev)();
extern void ABISELECT(_ZThn192_N8S7344C16D0Ev,_ZThn116_N8S7344C16D0Ev)() __attribute__((weak));
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C18__8S7344C167S7344C7__7S7344C2[] = {
  0,
  ABISELECT(-192,-116),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-264,-164),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C16D1Ev,_ZTv0_n24_N8S7344C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C16D0Ev,_ZTv0_n24_N8S7344C16D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C17__A1__8S7344C167S7344C7__7S7344C2[] = {
  ABISELECT(-96,-60),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C15__8S7344C167S7344C7__7S7344C2[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-112,-68),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C3__8S7344C167S7344C7__7S7344C2[] = {
  0,
  ABISELECT(-24,-20),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZThn56_N8S7344C16D1Ev,_ZThn28_N8S7344C16D1Ev)();
extern void ABISELECT(_ZThn56_N8S7344C16D0Ev,_ZThn28_N8S7344C16D0Ev)();
extern void _ZN8S7344C102v2Ev();
extern void _ZN8S7344C192v5Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C19__8S7344C167S7344C7__7S7344C2[] = {
  ABISELECT(96,64),
  ABISELECT(72,52),
  ABISELECT(-128,-76),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7344C16D1Ev,_ZThn28_N8S7344C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7344C16D0Ev,_ZThn28_N8S7344C16D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  (VTBL_ENTRY)&_ZN8S7344C192v5Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZThn72_N8S7344C16D1Ev,_ZThn40_N8S7344C16D1Ev)();
extern void ABISELECT(_ZThn72_N8S7344C16D0Ev,_ZThn40_N8S7344C16D0Ev)();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C10__A1__8S7344C167S7344C7__7S7344C2[] = {
  ABISELECT(56,40),
  ABISELECT(-144,-88),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S7344C16D1Ev,_ZThn40_N8S7344C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S7344C16D0Ev,_ZThn40_N8S7344C16D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n72_N7S7344C7D1Ev,_ZTv0_n36_N7S7344C7D1Ev)();
extern void ABISELECT(_ZThn168_N7S7344C7D1Ev,_ZThn100_N7S7344C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7344C7D0Ev,_ZTv0_n36_N7S7344C7D0Ev)();
extern void ABISELECT(_ZThn168_N7S7344C7D0Ev,_ZThn100_N7S7344C7D0Ev)() __attribute__((weak));
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C9__7S7344C7__7S7344C2[] = {
  0,
  ABISELECT(-168,-100),
  0,
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(24,20),
  ABISELECT(-176,-108),
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7344C7D1Ev,_ZTv0_n36_N7S7344C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7344C7D0Ev,_ZTv0_n36_N7S7344C7D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C12__7S7344C7__7S7344C2[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-208,-132),
  ABISELECT(-200,-124),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7344C7D1Ev,_ZTv0_n24_N7S7344C7D1Ev)();
extern void ABISELECT(_ZThn216_N7S7344C7D1Ev,_ZThn132_N7S7344C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7344C7D0Ev,_ZTv0_n24_N7S7344C7D0Ev)();
extern void ABISELECT(_ZThn216_N7S7344C7D0Ev,_ZThn132_N7S7344C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7344C14__7S7344C7__7S7344C2[] = {
  ABISELECT(-216,-132),
  0,
  0,
  ABISELECT(-224,-140),
  ABISELECT(-216,-132),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C7D1Ev,_ZTv0_n24_N7S7344C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C7D0Ev,_ZTv0_n24_N7S7344C7D0Ev),
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C157S7344C8__7S7344C7__7S7344C2[] = {
  0,
  0,
  ABISELECT(-24,-20),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C13__A1__7S7344C7__7S7344C2[] = {
  0,
  ABISELECT(-248,-156),
  ABISELECT(-240,-148),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C15__A1__7S7344C7__7S7344C2[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-56,-40),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void ABISELECT(_ZThn64_N7S7344C7D1Ev,_ZThn40_N7S7344C7D1Ev)();
extern void ABISELECT(_ZThn64_N7S7344C7D0Ev,_ZThn40_N7S7344C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7344C16__7S7344C7__7S7344C2[] = {
  ABISELECT(128,80),
  ABISELECT(-48,-28),
  ABISELECT(192,116),
  ABISELECT(152,92),
  ABISELECT(-72,-48),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S7344C7D1Ev,_ZThn40_N7S7344C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S7344C7D0Ev,_ZThn40_N7S7344C7D0Ev),
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C178S7344C16__A7__7S7344C7__7S7344C2[] = {
  ABISELECT(-88,-56),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7344C7D1Ev,_ZTv0_n24_N7S7344C7D1Ev)();
extern void ABISELECT(_ZThn256_N7S7344C7D1Ev,_ZThn156_N7S7344C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7344C7D0Ev,_ZTv0_n24_N7S7344C7D0Ev)();
extern void ABISELECT(_ZThn256_N7S7344C7D0Ev,_ZThn156_N7S7344C7D0Ev)() __attribute__((weak));
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C18__7S7344C7__7S7344C2[] = {
  0,
  ABISELECT(-256,-156),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-264,-164),
  ABISELECT(-256,-156),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C7D1Ev,_ZTv0_n24_N7S7344C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C7D0Ev,_ZTv0_n24_N7S7344C7D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C178S7344C16__A3__7S7344C7__7S7344C2[] = {
  ABISELECT(-96,-60),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C158S7344C16__A2__7S7344C7__7S7344C2[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-112,-68),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZThn120_N7S7344C7D1Ev,_ZThn68_N7S7344C7D1Ev)();
extern void ABISELECT(_ZThn120_N7S7344C7D0Ev,_ZThn68_N7S7344C7D0Ev)();
extern void _ZN8S7344C102v2Ev();
extern void _ZN8S7344C192v5Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C198S7344C16__7S7344C7__7S7344C2[] = {
  ABISELECT(96,64),
  ABISELECT(72,52),
  ABISELECT(-128,-76),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S7344C7D1Ev,_ZThn68_N7S7344C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S7344C7D0Ev,_ZThn68_N7S7344C7D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  (VTBL_ENTRY)&_ZN8S7344C192v5Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZThn136_N7S7344C7D1Ev,_ZThn80_N7S7344C7D1Ev)();
extern void ABISELECT(_ZThn136_N7S7344C7D0Ev,_ZThn80_N7S7344C7D0Ev)();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C108S7344C16__A3__7S7344C7__7S7344C2[] = {
  ABISELECT(56,40),
  ABISELECT(-144,-88),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N7S7344C7D1Ev,_ZThn80_N7S7344C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N7S7344C7D0Ev,_ZThn80_N7S7344C7D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C9D1Ev();
extern void _ZN7S7344C9D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C9__7S7344C2[] = {
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(24,20),
  ABISELECT(-176,-108),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C9[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7344C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7344C9D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C10D1Ev();
extern void _ZN8S7344C10D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C107S7344C9__7S7344C2[] = {
  ABISELECT(24,20),
  ABISELECT(-176,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C10[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C38S7344C107S7344C9__A1__7S7344C2[] = {
  ABISELECT(-176,-108),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C38S7344C107S7344C9__A1__7S7344C2[] = {
  ABISELECT(-176,-108),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C12__7S7344C9__7S7344C2[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-208,-132),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S7344C9[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7344C9D1Ev,_ZTv0_n24_N7S7344C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7344C9D1Ev,_ZThn32_N7S7344C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7344C9D0Ev,_ZTv0_n24_N7S7344C9D0Ev)();
extern void ABISELECT(_ZThn48_N7S7344C9D0Ev,_ZThn32_N7S7344C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7344C14__7S7344C9__7S7344C2[] = {
  ABISELECT(-48,-32),
  0,
  0,
  ABISELECT(-224,-140),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7344C9[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C9D1Ev,_ZTv0_n24_N7S7344C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C9D0Ev,_ZTv0_n24_N7S7344C9D0Ev),
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C12__7S7344C2[] = {
  ABISELECT(16,8),
  ABISELECT(-208,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C12__7S7344C2[] = {
  ABISELECT(-208,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C138S7344C12__A2__7S7344C2[] = {
  ABISELECT(-208,-132),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C12__7S7344C2[] = {
  0,
  ABISELECT(-224,-140),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A3__7S7344C2[] = {
  ABISELECT(-224,-140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C14D1Ev();
extern void _ZN8S7344C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C14__7S7344C2[] = {
  0,
  0,
  ABISELECT(-224,-140),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C14[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D0Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C13__A1__7S7344C2[] = {
  ABISELECT(-248,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C13__A5__7S7344C2[] = {
  ABISELECT(-248,-156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C18D1Ev();
extern void _ZN8S7344C18D0Ev();
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C18__7S7344C2[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-264,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C18[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C18D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C14D1Ev();
extern void _ZN8S7344C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C148S7344C18__A1__7S7344C2[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-264,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C14[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D0Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__8S7344C148S7344C18__A1__7S7344C2[] = {
  0,
  ABISELECT(-224,-140),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7344C14[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__8S7344C18__7S7344C2[] = {
  0,
  ABISELECT(-224,-140),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7344C18[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C8D1Ev();
extern void _ZN7S7344C8D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C8__A1__7S7344C2[] = {
  ABISELECT(-272,-160),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-120,-72),
  ABISELECT(-96,-52),
  ABISELECT(-296,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7344C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7344C8D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C10D1Ev();
extern void _ZN8S7344C10D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C107S7344C8__A4__7S7344C2[] = {
  ABISELECT(-96,-52),
  ABISELECT(-296,-180),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C10[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C38S7344C107S7344C8__A5__7S7344C2[] = {
  ABISELECT(-296,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C38S7344C107S7344C8__A11__7S7344C2[] = {
  ABISELECT(-296,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C157S7344C8__A3__7S7344C2[] = {
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  ABISELECT(-312,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C15[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C3__8S7344C157S7344C8__A3__7S7344C2[] = {
  0,
  ABISELECT(-24,-20),
  ABISELECT(288,172),
  (VTBL_ENTRY)&(_ZTI8S7344C15[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n72_N7S7344C8D1Ev,_ZTv0_n36_N7S7344C8D1Ev)();
extern void ABISELECT(_ZTv0_n72_N7S7344C8D0Ev,_ZTv0_n36_N7S7344C8D0Ev)();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C9__7S7344C8__A1__7S7344C2[] = {
  0,
  ABISELECT(120,72),
  0,
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(24,20),
  ABISELECT(-176,-108),
  ABISELECT(120,72),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7344C8D1Ev,_ZTv0_n36_N7S7344C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7344C8D0Ev,_ZTv0_n36_N7S7344C8D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C12__7S7344C8__A1__7S7344C2[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-208,-132),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7344C8D1Ev,_ZTv0_n24_N7S7344C8D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7344C8D0Ev,_ZTv0_n24_N7S7344C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7344C14__7S7344C8__A1__7S7344C2[] = {
  ABISELECT(72,40),
  0,
  0,
  ABISELECT(-224,-140),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C8D1Ev,_ZTv0_n24_N7S7344C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C8D0Ev,_ZTv0_n24_N7S7344C8D0Ev),
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C15__7S7344C8__A1__7S7344C2[] = {
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  ABISELECT(-312,-192),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C3__A2__7S7344C8__A1__7S7344C2[] = {
  0,
  ABISELECT(-24,-20),
  ABISELECT(272,160),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C20D1Ev();
extern void _ZN8S7344C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C20__7S7344C2[] = {
  ABISELECT(-80,-48),
  ABISELECT(-120,-72),
  ABISELECT(8,4),
  ABISELECT(-120,-72),
  ABISELECT(-344,-212),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C20[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C20D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C20D0Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void ABISELECT(_ZTv0_n64_N8S7344C20D1Ev,_ZTv0_n32_N8S7344C20D1Ev)();
extern void ABISELECT(_ZThn8_N8S7344C20D1Ev,_ZThn4_N8S7344C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7344C20D0Ev,_ZTv0_n32_N8S7344C20D0Ev)();
extern void ABISELECT(_ZThn8_N8S7344C20D0Ev,_ZThn4_N8S7344C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7344C17__8S7344C20__7S7344C2[] = {
  ABISELECT(-8,-4),
  0,
  0,
  ABISELECT(-88,-52),
  ABISELECT(-128,-76),
  ABISELECT(-352,-216),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7344C20[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7344C20D1Ev,_ZTv0_n32_N8S7344C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7344C20D0Ev,_ZTv0_n32_N8S7344C20D0Ev),
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C20__7S7344C2[] = {
  0,
  ABISELECT(-224,-140),
  ABISELECT(120,72),
  (VTBL_ENTRY)&(_ZTI8S7344C20[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C17__A2__8S7344C20__7S7344C2[] = {
  ABISELECT(-368,-224),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7344C20[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7344C20D1Ev,_ZTv0_n24_N8S7344C20D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7344C20D0Ev,_ZTv0_n24_N8S7344C20D0Ev)();
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C18__8S7344C20__7S7344C2[] = {
  0,
  ABISELECT(80,48),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-264,-164),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S7344C20[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C20D1Ev,_ZTv0_n24_N8S7344C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C20D0Ev,_ZTv0_n24_N8S7344C20D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C17__A1__8S7344C20__7S7344C2[] = {
  ABISELECT(-376,-228),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7344C20[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void _ZN8S7344C17D1Ev();
extern void _ZN8S7344C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C17__A2__7S7344C2[] = {
  ABISELECT(-88,-52),
  ABISELECT(-128,-76),
  ABISELECT(-352,-216),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&_ZN8S7344C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C17D0Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C128S7344C17__A3__7S7344C2[] = {
  ABISELECT(-128,-76),
  ABISELECT(-352,-216),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C128S7344C17__A6__7S7344C2[] = {
  ABISELECT(-352,-216),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C138S7344C128S7344C17__A15__7S7344C2[] = {
  ABISELECT(-352,-216),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C128S7344C17__A3__7S7344C2[] = {
  0,
  ABISELECT(-224,-140),
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C17__A16__7S7344C2[] = {
  ABISELECT(-368,-224),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C17__A7__7S7344C2[] = {
  ABISELECT(-376,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C138S7344C17__A17__7S7344C2[] = {
  ABISELECT(-376,-228),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C17__A2__7S7344C2[] = {
  0,
  ABISELECT(-224,-140),
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A__8S7344C17__A2__7S7344C2[] = {
  ABISELECT(-368,-224),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev)();
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C18__8S7344C17__A2__7S7344C2[] = {
  0,
  ABISELECT(88,52),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-264,-164),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C13__A1__8S7344C17__A2__7S7344C2[] = {
  ABISELECT(-376,-228),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
static  VTT_ENTRY vtt_S7344C2[] = {
  {&(_ZTV7S7344C2[15]),  15,203},
  {&(_tg__ZTV8S7344C17__A__7S7344C2[5]),  5,9},
  {&(_tg__ZTV8S7344C128S7344C17__A2__7S7344C2[4]),  4,6},
  {&(_tg__ZTV8S7344C138S7344C128S7344C17__A4__7S7344C2[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C138S7344C128S7344C17__A12__7S7344C2[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C128S7344C17__A2__7S7344C2[4]),  4,5},
  {&(_tg__ZTV7S7344C48S7344C17__A13__7S7344C2[3]),  3,4},
  {&(_tg__ZTV8S7344C138S7344C17__A5__7S7344C2[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C138S7344C17__A14__7S7344C2[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C17__A__7S7344C2[4]),  4,5},
  {&(_tg__ZTV7S7344C4__A__8S7344C17__A__7S7344C2[3]),  3,4},
  {&(_tg__ZTV8S7344C18__8S7344C17__A__7S7344C2[7]),  7,11},
  {&(_tg__ZTV8S7344C13__A1__8S7344C17__A__7S7344C2[3]),  3,4},
  {&(_ZTV7S7344C2[53]),  53,203},
  {&(_ZTV7S7344C2[44]),  44,203},
  {&(_ZTV7S7344C2[113]),  113,203},
  {&(_ZTV7S7344C2[123]),  123,203},
  {&(_ZTV7S7344C2[131]),  131,203},
  {&(_ZTV7S7344C2[131]),  131,203},
  {&(_ZTV7S7344C2[53]),  53,203},
  {&(_ZTV7S7344C2[138]),  138,203},
  {&(_ZTV7S7344C2[59]),  59,203},
  {&(_ZTV7S7344C2[67]),  67,203},
  {&(_ZTV7S7344C2[74]),  74,203},
  {&(_ZTV7S7344C2[146]),  146,203},
  {&(_ZTV7S7344C2[78]),  78,203},
  {&(_ZTV7S7344C2[84]),  84,203},
  {&(_ZTV7S7344C2[90]),  90,203},
  {&(_ZTV7S7344C2[99]),  99,203},
  {&(_ZTV7S7344C2[162]),  162,203},
  {&(_ZTV7S7344C2[171]),  171,203},
  {&(_ZTV7S7344C2[23]),  23,203},
  {&(_ZTV7S7344C2[27]),  27,203},
  {&(_ZTV7S7344C2[180]),  180,203},
  {&(_ZTV7S7344C2[191]),  191,203},
  {&(_ZTV7S7344C2[198]),  198,203},
  {&(_ZTV7S7344C2[202]),  202,203},
  {&(_tg__ZTV7S7344C3__7S7344C2[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C3__7S7344C2[3]),  3,4},
  {&(_tg__ZTV7S7344C7__7S7344C2[11]),  11,15},
  {&(_tg__ZTV7S7344C87S7344C7__7S7344C2[9]),  9,13},
  {&(_tg__ZTV8S7344C107S7344C87S7344C7__A1__7S7344C2[4]),  4,8},
  {&(_tg__ZTV7S7344C38S7344C107S7344C87S7344C7__A2__7S7344C2[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C38S7344C107S7344C87S7344C7__A4__7S7344C2[3]),  3,4},
  {&(_tg__ZTV8S7344C157S7344C87S7344C7__7S7344C2[5]),  5,6},
  {&(_tg__ZTV8S7344C157S7344C87S7344C7__7S7344C2[5]),  5,6},
  {&(_tg__ZTV7S7344C9__7S7344C87S7344C7__7S7344C2[10]),  10,14},
  {&(_tg__ZTV8S7344C12__7S7344C87S7344C7__7S7344C2[6]),  6,8},
  {&(_tg__ZTV8S7344C14__7S7344C87S7344C7__7S7344C2[6]),  6,9},
  {&(_tg__ZTV8S7344C14__7S7344C87S7344C7__7S7344C2[6]),  6,9},
  {&(_tg__ZTV8S7344C15__7S7344C87S7344C7__7S7344C2[5]),  5,6},
  {&(_tg__ZTV8S7344C15__7S7344C87S7344C7__7S7344C2[5]),  5,6},
  {&(_tg__ZTV8S7344C157S7344C7__A1__7S7344C2[5]),  5,6},
  {&(_tg__ZTV7S7344C3__8S7344C157S7344C7__A1__7S7344C2[4]),  4,5},
  {&(_tg__ZTV8S7344C167S7344C7__7S7344C2[7]),  7,11},
  {&(_tg__ZTV8S7344C178S7344C167S7344C7__7S7344C2[5]),  5,9},
  {&(_tg__ZTV8S7344C128S7344C178S7344C167S7344C7__A1__7S7344C2[4]),  4,6},
  {&(_tg__ZTV8S7344C138S7344C128S7344C178S7344C167S7344C7__A2__7S7344C2[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C138S7344C128S7344C178S7344C167S7344C7__A6__7S7344C2[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C128S7344C178S7344C167S7344C7__A1__7S7344C2[4]),  4,5},
  {&(_tg__ZTV7S7344C48S7344C178S7344C167S7344C7__A7__7S7344C2[3]),  3,4},
  {&(_tg__ZTV8S7344C138S7344C178S7344C167S7344C7__A3__7S7344C2[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C138S7344C178S7344C167S7344C7__A8__7S7344C2[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C178S7344C167S7344C7__7S7344C2[4]),  4,5},
  {&(_tg__ZTV7S7344C4__A__8S7344C178S7344C167S7344C7__7S7344C2[3]),  3,4},
  {&(_tg__ZTV8S7344C18__8S7344C178S7344C167S7344C7__7S7344C2[7]),  7,11},
  {&(_tg__ZTV8S7344C13__A1__8S7344C178S7344C167S7344C7__7S7344C2[3]),  3,4},
  {&(_tg__ZTV8S7344C158S7344C167S7344C7__A2__7S7344C2[5]),  5,6},
  {&(_tg__ZTV7S7344C3__8S7344C158S7344C167S7344C7__A2__7S7344C2[4]),  4,5},
  {&(_tg__ZTV8S7344C198S7344C167S7344C7__7S7344C2[5]),  5,10},
  {&(_tg__ZTV8S7344C108S7344C198S7344C167S7344C7__A2__7S7344C2[4]),  4,8},
  {&(_tg__ZTV7S7344C38S7344C108S7344C198S7344C167S7344C7__A3__7S7344C2[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C38S7344C108S7344C198S7344C167S7344C7__A9__7S7344C2[3]),  3,4},
  {&(_tg__ZTV7S7344C4__8S7344C198S7344C167S7344C7__7S7344C2[4]),  4,5},
  {&(_tg__ZTV8S7344C108S7344C167S7344C7__A3__7S7344C2[4]),  4,8},
  {&(_tg__ZTV7S7344C38S7344C108S7344C167S7344C7__A4__7S7344C2[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C38S7344C108S7344C167S7344C7__A10__7S7344C2[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C167S7344C7__7S7344C2[4]),  4,5},
  {&(_tg__ZTV7S7344C48S7344C17__A2__8S7344C167S7344C7__7S7344C2[3]),  3,4},
  {&(_tg__ZTV8S7344C18__8S7344C167S7344C7__7S7344C2[7]),  7,11},
  {&(_tg__ZTV8S7344C138S7344C17__A1__8S7344C167S7344C7__7S7344C2[3]),  3,4},
  {&(_tg__ZTV8S7344C15__8S7344C167S7344C7__7S7344C2[5]),  5,6},
  {&(_tg__ZTV7S7344C3__8S7344C167S7344C7__7S7344C2[4]),  4,5},
  {&(_tg__ZTV8S7344C19__8S7344C167S7344C7__7S7344C2[5]),  5,10},
  {&(_tg__ZTV8S7344C10__A1__8S7344C167S7344C7__7S7344C2[4]),  4,8},
  {&(_tg__ZTV7S7344C9__7S7344C7__7S7344C2[10]),  10,14},
  {&(_tg__ZTV8S7344C12__7S7344C7__7S7344C2[6]),  6,8},
  {&(_tg__ZTV8S7344C14__7S7344C7__7S7344C2[6]),  6,9},
  {&(_tg__ZTV8S7344C14__7S7344C7__7S7344C2[6]),  6,9},
  {&(_tg__ZTV8S7344C157S7344C8__7S7344C7__7S7344C2[5]),  5,6},
  {&(_tg__ZTV8S7344C157S7344C8__7S7344C7__7S7344C2[5]),  5,6},
  {&(_tg__ZTV8S7344C13__A1__7S7344C7__7S7344C2[4]),  4,5},
  {&(_tg__ZTV8S7344C15__A1__7S7344C7__7S7344C2[5]),  5,6},
  {&(_tg__ZTV8S7344C16__7S7344C7__7S7344C2[7]),  7,11},
  {&(_tg__ZTV7S7344C48S7344C178S7344C16__A7__7S7344C7__7S7344C2[3]),  3,4},
  {&(_tg__ZTV8S7344C18__7S7344C7__7S7344C2[7]),  7,11},
  {&(_tg__ZTV8S7344C138S7344C178S7344C16__A3__7S7344C7__7S7344C2[3]),  3,4},
  {&(_tg__ZTV8S7344C158S7344C16__A2__7S7344C7__7S7344C2[5]),  5,6},
  {&(_tg__ZTV8S7344C198S7344C16__7S7344C7__7S7344C2[5]),  5,10},
  {&(_tg__ZTV8S7344C108S7344C16__A3__7S7344C7__7S7344C2[4]),  4,8},
  {&(_tg__ZTV7S7344C9__7S7344C2[7]),  7,11},
  {&(_tg__ZTV8S7344C107S7344C9__7S7344C2[4]),  4,8},
  {&(_tg__ZTV7S7344C38S7344C107S7344C9__A1__7S7344C2[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C38S7344C107S7344C9__A1__7S7344C2[3]),  3,4},
  {&(_tg__ZTV8S7344C12__7S7344C9__7S7344C2[6]),  6,8},
  {&(_tg__ZTV8S7344C14__7S7344C9__7S7344C2[6]),  6,9},
  {&(_tg__ZTV8S7344C14__7S7344C9__7S7344C2[6]),  6,9},
  {&(_tg__ZTV8S7344C12__7S7344C2[4]),  4,6},
  {&(_tg__ZTV8S7344C138S7344C12__7S7344C2[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C138S7344C12__A2__7S7344C2[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C12__7S7344C2[4]),  4,5},
  {&(_tg__ZTV7S7344C4__A3__7S7344C2[3]),  3,4},
  {&(_tg__ZTV8S7344C14__7S7344C2[5]),  5,8},
  {&(_tg__ZTV8S7344C14__7S7344C2[5]),  5,8},
  {&(_tg__ZTV8S7344C13__A1__7S7344C2[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C13__A5__7S7344C2[3]),  3,4},
  {&(_tg__ZTV8S7344C18__7S7344C2[5]),  5,9},
  {&(_tg__ZTV8S7344C148S7344C18__A1__7S7344C2[5]),  5,8},
  {&(_tg__ZTV7S7344C4__8S7344C148S7344C18__A1__7S7344C2[4]),  4,5},
  {&(_tg__ZTV7S7344C4__8S7344C18__7S7344C2[4]),  4,5},
  {&(_tg__ZTV7S7344C8__A1__7S7344C2[9]),  9,13},
  {&(_tg__ZTV8S7344C107S7344C8__A4__7S7344C2[4]),  4,8},
  {&(_tg__ZTV7S7344C38S7344C107S7344C8__A5__7S7344C2[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C38S7344C107S7344C8__A11__7S7344C2[3]),  3,4},
  {&(_tg__ZTV8S7344C157S7344C8__A3__7S7344C2[5]),  5,6},
  {&(_tg__ZTV7S7344C3__8S7344C157S7344C8__A3__7S7344C2[4]),  4,5},
  {&(_tg__ZTV7S7344C9__7S7344C8__A1__7S7344C2[10]),  10,14},
  {&(_tg__ZTV8S7344C12__7S7344C8__A1__7S7344C2[6]),  6,8},
  {&(_tg__ZTV8S7344C14__7S7344C8__A1__7S7344C2[6]),  6,9},
  {&(_tg__ZTV8S7344C14__7S7344C8__A1__7S7344C2[6]),  6,9},
  {&(_tg__ZTV8S7344C15__7S7344C8__A1__7S7344C2[5]),  5,6},
  {&(_tg__ZTV7S7344C3__A2__7S7344C8__A1__7S7344C2[4]),  4,5},
  {&(_tg__ZTV8S7344C20__7S7344C2[7]),  7,10},
  {&(_tg__ZTV8S7344C17__8S7344C20__7S7344C2[8]),  8,12},
  {&(_tg__ZTV7S7344C4__A1__8S7344C20__7S7344C2[4]),  4,5},
  {&(_tg__ZTV7S7344C48S7344C17__A2__8S7344C20__7S7344C2[3]),  3,4},
  {&(_tg__ZTV8S7344C18__8S7344C20__7S7344C2[7]),  7,11},
  {&(_tg__ZTV8S7344C138S7344C17__A1__8S7344C20__7S7344C2[3]),  3,4},
  {&(_tg__ZTV8S7344C17__A2__7S7344C2[5]),  5,9},
  {&(_tg__ZTV8S7344C128S7344C17__A3__7S7344C2[4]),  4,6},
  {&(_tg__ZTV8S7344C138S7344C128S7344C17__A6__7S7344C2[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C138S7344C128S7344C17__A15__7S7344C2[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C128S7344C17__A3__7S7344C2[4]),  4,5},
  {&(_tg__ZTV7S7344C48S7344C17__A16__7S7344C2[3]),  3,4},
  {&(_tg__ZTV8S7344C138S7344C17__A7__7S7344C2[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C138S7344C17__A17__7S7344C2[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C17__A2__7S7344C2[4]),  4,5},
  {&(_tg__ZTV7S7344C4__A__8S7344C17__A2__7S7344C2[3]),  3,4},
  {&(_tg__ZTV8S7344C18__8S7344C17__A2__7S7344C2[7]),  7,11},
  {&(_tg__ZTV8S7344C13__A1__8S7344C17__A2__7S7344C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7344C2[];
extern  VTBL_ENTRY _ZTV7S7344C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C2[];
static VTBL_ENTRY alt_thunk_names40[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7344C20D0Ev,_ZTv0_n32_N8S7344C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7344C20D0Ev,_ZThn4_N8S7344C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7344C20D1Ev,_ZTv0_n32_N8S7344C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7344C20D1Ev,_ZThn4_N8S7344C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C9D0Ev,_ZTv0_n24_N7S7344C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7344C9D0Ev,_ZThn32_N7S7344C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C9D1Ev,_ZTv0_n24_N7S7344C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7344C9D1Ev,_ZThn32_N7S7344C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C7D0Ev,_ZTv0_n24_N7S7344C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7344C7D0Ev,_ZThn156_N7S7344C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7344C7D0Ev,_ZThn132_N7S7344C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C7D1Ev,_ZTv0_n24_N7S7344C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7344C7D1Ev,_ZThn156_N7S7344C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7344C7D1Ev,_ZThn132_N7S7344C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7344C7D0Ev,_ZTv0_n36_N7S7344C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7344C7D0Ev,_ZThn100_N7S7344C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7344C7D1Ev,_ZTv0_n36_N7S7344C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7344C7D1Ev,_ZThn100_N7S7344C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7344C16D0Ev,_ZTv0_n24_N8S7344C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7344C16D0Ev,_ZThn116_N8S7344C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7344C16D1Ev,_ZTv0_n24_N8S7344C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7344C16D1Ev,_ZThn116_N8S7344C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C8D0Ev,_ZTv0_n24_N7S7344C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7344C8D0Ev,_ZThn132_N7S7344C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C8D1Ev,_ZTv0_n24_N7S7344C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7344C8D1Ev,_ZThn132_N7S7344C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7344C8D0Ev,_ZTv0_n36_N7S7344C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7344C8D0Ev,_ZThn100_N7S7344C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7344C8D1Ev,_ZTv0_n36_N7S7344C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7344C8D1Ev,_ZThn100_N7S7344C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7344C17D0Ev,_ZThn116_N8S7344C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7344C17D0Ev,_ZThn204_N8S7344C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7344C17D1Ev,_ZThn116_N8S7344C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7344C17D1Ev,_ZThn204_N8S7344C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7344C2D0Ev,_ZTv0_n32_N7S7344C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N7S7344C2D0Ev,_ZThn256_N7S7344C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7344C2D0Ev,_ZThn252_N7S7344C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7344C2D1Ev,_ZTv0_n32_N7S7344C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn424_N7S7344C2D1Ev,_ZThn256_N7S7344C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7344C2D1Ev,_ZThn252_N7S7344C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7344C2D0Ev,_ZTv0_n44_N7S7344C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7344C2D0Ev,_ZThn220_N7S7344C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7344C2D1Ev,_ZTv0_n44_N7S7344C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7344C2D1Ev,_ZThn220_N7S7344C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C2D0Ev,_ZTv0_n24_N7S7344C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S7344C2D0Ev,_ZThn204_N7S7344C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn296_N7S7344C2D0Ev,_ZThn180_N7S7344C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C2D1Ev,_ZTv0_n24_N7S7344C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S7344C2D1Ev,_ZThn204_N7S7344C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn296_N7S7344C2D1Ev,_ZThn180_N7S7344C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7344C2D0Ev,_ZTv0_n36_N7S7344C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7344C2D0Ev,_ZThn148_N7S7344C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7344C2D1Ev,_ZTv0_n36_N7S7344C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7344C2D1Ev,_ZThn148_N7S7344C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N7S7344C2D0Ev,_ZTv0_n52_N7S7344C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7344C2D0Ev,_ZThn48_N7S7344C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N7S7344C2D1Ev,_ZTv0_n52_N7S7344C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7344C2D1Ev,_ZThn48_N7S7344C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7344C2 = {  "S7344C2", // class name
  bases_S7344C2, 97,
  &(vtc_S7344C2[0]), // expected_vtbl_contents
  &(vtt_S7344C2[0]), // expected_vtt_contents
  ABISELECT(464,276), // object size
  NSPAIRA(_ZTI7S7344C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7344C2),203, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7344C2),150, //virtual table table var
  58, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names40,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7344C1  : S7344C2 , S7344C4 , S7344C13 {
  virtual  ~S7344C1(); // _ZN7S7344C1D2Ev
  S7344C1(); // tgen
};
//SIG(1 S7344C1) C1{ BC2{ VBC3{ BC4{ VBC5{ m FL} BC6{ m} v1}} VBC7{ BC8{ VBC9{ BC5 BC10{ BC5 VBC6 BC3 vd v2} BC11{ m} VBC12{ VBC5 BC13{ VBC5 BC4 BC6} VBC4 v3} VBC14{ BC5 VBC4 BC6 vd} vd} BC10 BC15{ VBC3 Fi} vd FD} VBC13 BC15 BC16{ BC17{ BC12 BC4 VBC18{ BC14 v4} BC13} BC15 BC19{ VBC4 BC10 vd v5} BC10 vd Fp} Fs:6} VBC8 BC17 VBC20{ VBC17} vd v6 FC12} BC4 BC13 vd}


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

static void Test_S7344C1()
{
  extern Class_Descriptor cd_S7344C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(32,73)];
    init_test(&cd_S7344C1, buf);
    S7344C1 *dp, &lv = *(dp=new (buf) S7344C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(496,288), "sizeof(S7344C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7344C1)");
    /*is_ambiguous_... S7344C1::S7344C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*), ABISELECT(96,52), "S7344C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C9*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C12*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*)(S7344C12*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C12 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*)(S7344C12*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C8*)(S7344C7*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*), ABISELECT(96,52), "S7344C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C12*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(96,52), "S7344C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*)(S7344C12*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(96,52), "S7344C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C17::S7344C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(96,52), "S7344C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C19*)(S7344C16*)(S7344C7*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C16*)(S7344C7*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C8*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C12*)(S7344C17*)(S7344C2*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*)(S7344C12*)(S7344C17*)(S7344C2*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*)(S7344C2*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C17*)(S7344C2*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*)(S7344C17*)(S7344C2*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*)(S7344C17*)(S7344C2*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C17 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C12*)(S7344C17*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C17 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*)(S7344C12*)(S7344C17*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C17 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C17 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C17*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C17 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*)(S7344C17*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C17 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*)(S7344C17*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C13*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C4*)(S7344C13*), ABISELECT(96,52), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*), ABISELECT(128,72), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C3 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C3*), ABISELECT(128,72), "S7344C1");
    /*is_ambiguous_... S7344C2::S7344C3 */ AMB_check_base_class_offset(lv, (S7344C3*)(S7344C2*), ABISELECT(128,72), "S7344C1");
    check_base_class_offset(lv, (S7344C3*)(S7344C15*)(S7344C8*)(S7344C7*), ABISELECT(128,72), "S7344C1");
    /*is_ambiguous_... S7344C7::S7344C15 */ AMB_check_base_class_offset(lv, (S7344C3*)(S7344C15*)(S7344C7*), ABISELECT(128,72), "S7344C1");
    check_base_class_offset(lv, (S7344C3*)(S7344C15*)(S7344C16*)(S7344C7*), ABISELECT(128,72), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C8 */ AMB_check_base_class_offset(lv, (S7344C3*)(S7344C15*)(S7344C8*), ABISELECT(128,72), "S7344C1");
    /*is_ambiguous_... S7344C9::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C9*), ABISELECT(296,172), "S7344C1");
    /*is_ambiguous_... S7344C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C10*)(S7344C9*), ABISELECT(288,164), "S7344C1");
    /*is_ambiguous_... S7344C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C10*)(S7344C9*), ABISELECT(304,180), "S7344C1");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C10*)(S7344C8*)(S7344C7*), ABISELECT(304,180), "S7344C1");
    /*is_ambiguous_... S7344C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C10*)(S7344C19*)(S7344C16*)(S7344C7*), ABISELECT(304,180), "S7344C1");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C10*)(S7344C16*)(S7344C7*), ABISELECT(304,180), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C10*)(S7344C8*), ABISELECT(304,180), "S7344C1");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C9*), ABISELECT(280,160), "S7344C1");
    check_base_class_offset(lv, (S7344C4*)(S7344C3*)(S7344C10*)(S7344C9*), ABISELECT(280,160), "S7344C1");
    check_base_class_offset(lv, (S7344C3*)(S7344C10*)(S7344C9*), ABISELECT(280,160), "S7344C1");
    check_base_class_offset(lv, (S7344C10*)(S7344C9*), ABISELECT(280,160), "S7344C1");
    check_base_class_offset(lv, (S28C52_nt*)(S7344C9*), ABISELECT(280,160), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*)(S7344C12*), ABISELECT(312,184), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C12 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C13*)(S7344C12*), ABISELECT(312,184), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C12 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*)(S7344C12*), ABISELECT(320,188), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C12 */ AMB_check_base_class_offset(lv, (S7344C13*)(S7344C12*), ABISELECT(312,184), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*), ABISELECT(328,192), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C12 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C12*), ABISELECT(328,192), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C14 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C14*), ABISELECT(328,192), "S7344C1");
    /*is_ambiguous_... S7344C12::S7344C4 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C12*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(328,192), "S7344C1");
    check_base_class_offset(lv, (S7344C4*)(S7344C14*)(S7344C18*), ABISELECT(328,192), "S7344C1");
    /*is_ambiguous_... S7344C19::S7344C4 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C19*)(S7344C16*)(S7344C7*), ABISELECT(328,192), "S7344C1");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C12*)(S7344C17*)(S7344C2*), ABISELECT(328,192), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C12*)(S7344C17*), ABISELECT(328,192), "S7344C1");
    check_base_class_offset(lv, (S7344C12*)(S7344C9*), ABISELECT(312,184), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C14 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C14*), ABISELECT(336,196), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C14 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C14*), ABISELECT(344,204), "S7344C1");
    check_base_class_offset(lv, (S7344C14*)(S7344C9*), ABISELECT(328,192), "S7344C1");
    check_base_class_offset(lv, (S7344C9*)(S7344C8*)(S7344C7*), ABISELECT(280,160), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C8 */ AMB_check_base_class_offset(lv, (S7344C9*)(S7344C8*), ABISELECT(280,160), "S7344C1");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C10*)(S7344C8*)(S7344C7*), ABISELECT(120,64), "S7344C1");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C8*)(S7344C7*), ABISELECT(112,60), "S7344C1");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C3*)(S7344C10*)(S7344C8*)(S7344C7*), ABISELECT(112,60), "S7344C1");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S7344C3*)(S7344C10*)(S7344C8*)(S7344C7*), ABISELECT(112,60), "S7344C1");
    /*is_ambiguous_... S7344C8::S7344C10 */ AMB_check_base_class_offset(lv, (S7344C10*)(S7344C8*)(S7344C7*), ABISELECT(112,60), "S7344C1");
    check_base_class_offset(lv, (S7344C15*)(S7344C8*)(S7344C7*), ABISELECT(128,72), "S7344C1");
    check_base_class_offset(lv, (S7344C8*)(S7344C7*), ABISELECT(112,60), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*), ABISELECT(352,208), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C13 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C13*), ABISELECT(352,208), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*), ABISELECT(360,212), "S7344C1");
    /*is_ambiguous_... S7344C7::S7344C13 */ AMB_check_base_class_offset(lv, (S7344C13*)(S7344C7*), ABISELECT(352,208), "S7344C1");
    /*is_ambiguous_... S7344C7::S7344C15 */ AMB_check_base_class_offset(lv, (S7344C15*)(S7344C7*), ABISELECT(160,92), "S7344C1");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(176,100), "S7344C1");
    check_base_class_offset(lv, (S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(176,100), "S7344C1");
    /*is_ambiguous_... S7344C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*)(S7344C12*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(184,104), "S7344C1");
    check_base_class_offset(lv, (S7344C13*)(S7344C12*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(176,100), "S7344C1");
    check_base_class_offset(lv, (S7344C12*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(176,100), "S7344C1");
    /*is_ambiguous_... S7344C17::S7344C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(192,108), "S7344C1");
    /*is_ambiguous_... S7344C17::S7344C4 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(192,108), "S7344C1");
    /*is_ambiguous_... S7344C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C14*)(S7344C18*), ABISELECT(376,220), "S7344C1");
    /*is_ambiguous_... S7344C14::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C14*)(S7344C18*), ABISELECT(384,228), "S7344C1");
    check_base_class_offset(lv, (S7344C14*)(S7344C18*), ABISELECT(368,216), "S7344C1");
    check_base_class_offset(lv, (S7344C18*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(368,216), "S7344C1");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C18*)(S7344C17*)(S7344C2*), ABISELECT(368,216), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C18*)(S7344C17*), ABISELECT(368,216), "S7344C1");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(200,112), "S7344C1");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C13*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(200,112), "S7344C1");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(208,116), "S7344C1");
    /*is_ambiguous_... S7344C17::S7344C13 */ AMB_check_base_class_offset(lv, (S7344C13*)(S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(200,112), "S7344C1");
    check_base_class_offset(lv, (S7344C17*)(S7344C16*)(S7344C7*), ABISELECT(176,100), "S7344C1");
    check_base_class_offset(lv, (S7344C15*)(S7344C16*)(S7344C7*), ABISELECT(216,120), "S7344C1");
    /*is_ambiguous_... S7344C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C10*)(S7344C19*)(S7344C16*)(S7344C7*), ABISELECT(240,132), "S7344C1");
    check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C19*)(S7344C16*)(S7344C7*), ABISELECT(232,128), "S7344C1");
    check_base_class_offset(lv, (S7344C4*)(S7344C3*)(S7344C10*)(S7344C19*)(S7344C16*)(S7344C7*), ABISELECT(232,128), "S7344C1");
    check_base_class_offset(lv, (S7344C3*)(S7344C10*)(S7344C19*)(S7344C16*)(S7344C7*), ABISELECT(232,128), "S7344C1");
    check_base_class_offset(lv, (S7344C10*)(S7344C19*)(S7344C16*)(S7344C7*), ABISELECT(232,128), "S7344C1");
    check_base_class_offset(lv, (S7344C19*)(S7344C16*)(S7344C7*), ABISELECT(232,128), "S7344C1");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C10*)(S7344C16*)(S7344C7*), ABISELECT(256,144), "S7344C1");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C16*)(S7344C7*), ABISELECT(248,140), "S7344C1");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C3*)(S7344C10*)(S7344C16*)(S7344C7*), ABISELECT(248,140), "S7344C1");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S7344C3*)(S7344C10*)(S7344C16*)(S7344C7*), ABISELECT(248,140), "S7344C1");
    /*is_ambiguous_... S7344C16::S7344C10 */ AMB_check_base_class_offset(lv, (S7344C10*)(S7344C16*)(S7344C7*), ABISELECT(248,140), "S7344C1");
    check_base_class_offset(lv, (S7344C16*)(S7344C7*), ABISELECT(176,100), "S7344C1");
    check_base_class_offset(lv, (S7344C7*)(S7344C2*), ABISELECT(112,60), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7344C10*)(S7344C8*), ABISELECT(408,236), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C3*)(S7344C10*)(S7344C8*), ABISELECT(400,232), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C8 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C3*)(S7344C10*)(S7344C8*), ABISELECT(400,232), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C8 */ AMB_check_base_class_offset(lv, (S7344C3*)(S7344C10*)(S7344C8*), ABISELECT(400,232), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C8 */ AMB_check_base_class_offset(lv, (S7344C10*)(S7344C8*), ABISELECT(400,232), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C8 */ AMB_check_base_class_offset(lv, (S7344C15*)(S7344C8*), ABISELECT(416,244), "S7344C1");
    /*is_ambiguous_... S7344C2::S7344C8 */ AMB_check_base_class_offset(lv, (S7344C8*)(S7344C2*), ABISELECT(400,232), "S7344C1");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*)(S7344C2*), 0, "S7344C1");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*)(S7344C2*), 0, "S7344C1");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*)(S7344C12*)(S7344C17*)(S7344C2*), ABISELECT(8,4), "S7344C1");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C13*)(S7344C12*)(S7344C17*)(S7344C2*), 0, "S7344C1");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C12*)(S7344C17*)(S7344C2*), 0, "S7344C1");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C17*)(S7344C2*), ABISELECT(16,8), "S7344C1");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C17*)(S7344C2*), ABISELECT(16,8), "S7344C1");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*)(S7344C17*)(S7344C2*), ABISELECT(24,12), "S7344C1");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C13*)(S7344C17*)(S7344C2*), ABISELECT(24,12), "S7344C1");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*)(S7344C17*)(S7344C2*), ABISELECT(32,16), "S7344C1");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C13*)(S7344C17*)(S7344C2*), ABISELECT(24,12), "S7344C1");
    /*is_ambiguous_... S7344C2::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C17*)(S7344C2*), 0, "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C17 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*), ABISELECT(456,268), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C13*)(S7344C12*)(S7344C17*), ABISELECT(456,268), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C17 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*)(S7344C12*)(S7344C17*), ABISELECT(464,272), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C13*)(S7344C12*)(S7344C17*), ABISELECT(456,268), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C12*)(S7344C17*), ABISELECT(456,268), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C17 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C17*), ABISELECT(472,276), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C17*), ABISELECT(472,276), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C17 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*)(S7344C17*), ABISELECT(480,280), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C13*)(S7344C17*), ABISELECT(480,280), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C17 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*)(S7344C17*), ABISELECT(488,284), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C17 */ AMB_check_base_class_offset(lv, (S7344C13*)(S7344C17*), ABISELECT(480,280), "S7344C1");
    check_base_class_offset(lv, (S7344C17*)(S7344C20*), ABISELECT(456,268), "S7344C1");
    check_base_class_offset(lv, (S7344C20*)(S7344C2*), ABISELECT(448,264), "S7344C1");
    check_base_class_offset(lv, (S7344C2*), 0, "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*), ABISELECT(72,40), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C4 */ AMB_check_base_class_offset(lv, (S7344C4*), ABISELECT(72,40), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C4*)(S7344C13*), ABISELECT(80,44), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C13 */ AMB_check_base_class_offset(lv, (S7344C4*)(S7344C13*), ABISELECT(80,44), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7344C13*), ABISELECT(88,48), "S7344C1");
    /*is_ambiguous_... S7344C1::S7344C13 */ AMB_check_base_class_offset(lv, (S7344C13*), ABISELECT(80,44), "S7344C1");
    test_class_info(&lv, &cd_S7344C1);
    dp->~S7344C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7344C1(Test_S7344C1, "S7344C1", ABISELECT(496,288));

#else // __cplusplus

extern void _ZN7S7344C1C1Ev();
extern void _ZN7S7344C1D2Ev();
Name_Map name_map_S7344C1[] = {
  NSPAIR(_ZN7S7344C1C1Ev),
  NSPAIR(_ZN7S7344C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S7344C10;
extern VTBL_ENTRY _ZTI8S7344C10[];
extern  VTBL_ENTRY _ZTV8S7344C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C10[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C12;
extern VTBL_ENTRY _ZTI8S7344C12[];
extern  VTBL_ENTRY _ZTV8S7344C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C12[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C14;
extern VTBL_ENTRY _ZTI8S7344C14[];
extern  VTBL_ENTRY _ZTV8S7344C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C14[];
extern Class_Descriptor cd_S7344C9;
extern VTBL_ENTRY _ZTI7S7344C9[];
extern  VTBL_ENTRY _ZTV7S7344C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S7344C10;
extern VTBL_ENTRY _ZTI8S7344C10[];
extern  VTBL_ENTRY _ZTV8S7344C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C10[];
extern Class_Descriptor cd_S7344C15;
extern VTBL_ENTRY _ZTI8S7344C15[];
extern  VTBL_ENTRY _ZTV8S7344C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C15[];
extern Class_Descriptor cd_S7344C8;
extern VTBL_ENTRY _ZTI7S7344C8[];
extern  VTBL_ENTRY _ZTV7S7344C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C8[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S7344C15;
extern VTBL_ENTRY _ZTI8S7344C15[];
extern  VTBL_ENTRY _ZTV8S7344C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C15[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S7344C12;
extern VTBL_ENTRY _ZTI8S7344C12[];
extern  VTBL_ENTRY _ZTV8S7344C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C14;
extern VTBL_ENTRY _ZTI8S7344C14[];
extern  VTBL_ENTRY _ZTV8S7344C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C14[];
extern Class_Descriptor cd_S7344C18;
extern VTBL_ENTRY _ZTI8S7344C18[];
extern  VTBL_ENTRY _ZTV8S7344C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C18[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S7344C17;
extern VTBL_ENTRY _ZTI8S7344C17[];
extern  VTBL_ENTRY _ZTV8S7344C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C17[];
extern Class_Descriptor cd_S7344C15;
extern VTBL_ENTRY _ZTI8S7344C15[];
extern  VTBL_ENTRY _ZTV8S7344C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C15[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S7344C10;
extern VTBL_ENTRY _ZTI8S7344C10[];
extern  VTBL_ENTRY _ZTV8S7344C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C10[];
extern Class_Descriptor cd_S7344C19;
extern VTBL_ENTRY _ZTI8S7344C19[];
extern  VTBL_ENTRY _ZTV8S7344C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C19[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S7344C10;
extern VTBL_ENTRY _ZTI8S7344C10[];
extern  VTBL_ENTRY _ZTV8S7344C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C10[];
extern Class_Descriptor cd_S7344C16;
extern VTBL_ENTRY _ZTI8S7344C16[];
extern  VTBL_ENTRY _ZTV8S7344C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C16[];
extern Class_Descriptor cd_S7344C7;
extern VTBL_ENTRY _ZTI7S7344C7[];
extern  VTBL_ENTRY _ZTV7S7344C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C7[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S7344C3;
extern VTBL_ENTRY _ZTI7S7344C3[];
extern  VTBL_ENTRY _ZTV7S7344C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C3[];
extern Class_Descriptor cd_S7344C10;
extern VTBL_ENTRY _ZTI8S7344C10[];
extern  VTBL_ENTRY _ZTV8S7344C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C10[];
extern Class_Descriptor cd_S7344C15;
extern VTBL_ENTRY _ZTI8S7344C15[];
extern  VTBL_ENTRY _ZTV8S7344C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C15[];
extern Class_Descriptor cd_S7344C8;
extern VTBL_ENTRY _ZTI7S7344C8[];
extern  VTBL_ENTRY _ZTV7S7344C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C8[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S7344C12;
extern VTBL_ENTRY _ZTI8S7344C12[];
extern  VTBL_ENTRY _ZTV8S7344C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S7344C17;
extern VTBL_ENTRY _ZTI8S7344C17[];
extern  VTBL_ENTRY _ZTV8S7344C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C17[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S7344C12;
extern VTBL_ENTRY _ZTI8S7344C12[];
extern  VTBL_ENTRY _ZTV8S7344C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
extern Class_Descriptor cd_S7344C17;
extern VTBL_ENTRY _ZTI8S7344C17[];
extern  VTBL_ENTRY _ZTV8S7344C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C17[];
extern Class_Descriptor cd_S7344C20;
extern VTBL_ENTRY _ZTI8S7344C20[];
extern  VTBL_ENTRY _ZTV8S7344C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C20[];
extern Class_Descriptor cd_S7344C2;
extern VTBL_ENTRY _ZTI7S7344C2[];
extern  VTBL_ENTRY _ZTV7S7344C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C4;
extern VTBL_ENTRY _ZTI7S7344C4[];
extern  VTBL_ENTRY _ZTV7S7344C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7344C13;
extern VTBL_ENTRY _ZTI8S7344C13[];
extern  VTBL_ENTRY _ZTV8S7344C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7344C13[];
static Base_Class bases_S7344C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7344C3,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(296,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
    22, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    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
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    10, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(280,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(280,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7344C3,    ABISELECT(280,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7344C10,    ABISELECT(280,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    132, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(280,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
    22, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(312,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(312,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    140, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(320,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7344C13,    ABISELECT(312,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    139, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    17, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(328,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    142, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7344C12,    ABISELECT(312,184), //bcp->offset
    125, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    138, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(336,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(344,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
    21, //immediately_derived
  0, 0},
  {&cd_S7344C14,    ABISELECT(328,192), //bcp->offset
    133, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    143, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7344C9,    ABISELECT(280,160), //bcp->offset
    111, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    131, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7344C3,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7344C10,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7344C15,    ABISELECT(128,72), //bcp->offset
    56, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7344C8,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(352,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(352,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    146, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    33, //immediately_derived
  0, 0},
  {&cd_S7344C13,    ABISELECT(352,208), //bcp->offset
    142, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    145, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    64, //immediately_derived
  0, 1},
  {&cd_S7344C15,    ABISELECT(160,92), //bcp->offset
    62, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    36, //immediately_derived
  0, 0},
  {&cd_S7344C4,    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
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    38, //immediately_derived
  0, 0},
  {&cd_S7344C13,    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
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7344C12,    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
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(192,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(192,108), //bcp->offset
    79, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(376,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7344C14,    ABISELECT(368,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    148, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7344C18,    ABISELECT(368,216), //bcp->offset
    147, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(200,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(200,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(208,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S7344C13,    ABISELECT(200,112), //bcp->offset
    83, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S7344C17,    ABISELECT(176,100), //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
    28, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7344C15,    ABISELECT(216,120), //bcp->offset
    87, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(240,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(232,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(232,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7344C3,    ABISELECT(232,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S7344C10,    ABISELECT(232,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7344C19,    ABISELECT(232,128), //bcp->offset
    93, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(256,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(248,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(248,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S7344C3,    ABISELECT(248,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7344C10,    ABISELECT(248,140), //bcp->offset
    103, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S7344C16,    ABISELECT(176,100), //bcp->offset
    68, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S7344C7,    ABISELECT(112,60), //bcp->offset
    36, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    97, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(408,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
    69, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(400,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(400,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    154, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    68, //immediately_derived
  0, 0},
  {&cd_S7344C3,    ABISELECT(400,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    153, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S7344C10,    ABISELECT(400,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    152, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S7344C15,    ABISELECT(416,244), //bcp->offset
    174, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    155, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S7344C8,    ABISELECT(400,232), //bcp->offset
    158, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    151, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    97, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S7344C4,    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
    52, //init_seq
    75, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7344C13,    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
    53, //init_seq
    76, //immediately_derived
  0, 0},
  {&cd_S7344C12,    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
    54, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    78, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    80, //immediately_derived
  0, 0},
  {&cd_S7344C4,    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
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S7344C13,    ABISELECT(24,12), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    57, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S7344C17,    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
    58, //init_seq
    97, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(456,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    85, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(456,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    172, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    87, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(464,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
    87, //immediately_derived
  0, 0},
  {&cd_S7344C13,    ABISELECT(456,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    171, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    88, //immediately_derived
  0, 0},
  {&cd_S7344C12,    ABISELECT(456,268), //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
    46, //init_seq
    95, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(472,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
    90, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(472,276), //bcp->offset
    203, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    174, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    95, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    -1, //init_seq
    92, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(480,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    176, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    94, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(488,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
    94, //immediately_derived
  0, 0},
  {&cd_S7344C13,    ABISELECT(480,280), //bcp->offset
    207, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    175, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    95, //immediately_derived
  0, 0},
  {&cd_S7344C17,    ABISELECT(456,268), //bcp->offset
    191, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    169, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    96, //immediately_derived
  0, 1},
  {&cd_S7344C20,    ABISELECT(448,264), //bcp->offset
    180, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    163, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    97, //immediately_derived
  0, 1},
  {&cd_S7344C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    59, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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
    99, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(72,40), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    60, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    101, //immediately_derived
  0, 0},
  {&cd_S7344C4,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    61, //init_seq
    103, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    103, //immediately_derived
  0, 0},
  {&cd_S7344C13,    ABISELECT(80,44), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    62, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7344C1[];
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void _ZN7S7344C1D1Ev();
extern void _ZN7S7344C1D0Ev();
extern void _ZN7S7344C22v6Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n104_N7S7344C1D1Ev,_ZTv0_n52_N7S7344C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S7344C1D1Ev,_ZThn60_N7S7344C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N7S7344C1D0Ev,_ZTv0_n52_N7S7344C1D0Ev)();
extern void ABISELECT(_ZThn112_N7S7344C1D0Ev,_ZThn60_N7S7344C1D0Ev)() __attribute__((weak));
extern void _ZN8S7344C102v2Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void ABISELECT(_ZTvn64_n104_N7S7344C1D1Ev,_ZTvn40_n52_N7S7344C1D1Ev)();
extern void ABISELECT(_ZTvn64_n104_N7S7344C1D0Ev,_ZTvn40_n52_N7S7344C1D0Ev)();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTvn120_n104_N7S7344C1D1Ev,_ZTvn68_n52_N7S7344C1D1Ev)();
extern void ABISELECT(_ZTvn120_n104_N7S7344C1D0Ev,_ZTvn68_n52_N7S7344C1D0Ev)();
extern void _ZN8S7344C102v2Ev();
extern void _ZN8S7344C192v5Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTvn136_n104_N7S7344C1D1Ev,_ZTvn80_n52_N7S7344C1D1Ev)();
extern void ABISELECT(_ZTvn136_n104_N7S7344C1D0Ev,_ZTvn80_n52_N7S7344C1D0Ev)();
extern void _ZN8S7344C102v2Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n72_N7S7344C1D1Ev,_ZTv0_n36_N7S7344C1D1Ev)();
extern void ABISELECT(_ZThn280_N7S7344C1D1Ev,_ZThn160_N7S7344C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7344C1D0Ev,_ZTv0_n36_N7S7344C1D0Ev)();
extern void ABISELECT(_ZThn280_N7S7344C1D0Ev,_ZThn160_N7S7344C1D0Ev)() __attribute__((weak));
extern void _ZN8S7344C102v2Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7344C1D1Ev,_ZTv0_n24_N7S7344C1D1Ev)();
extern void ABISELECT(_ZThn328_N7S7344C1D1Ev,_ZThn192_N7S7344C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7344C1D0Ev,_ZTv0_n24_N7S7344C1D0Ev)();
extern void ABISELECT(_ZThn328_N7S7344C1D0Ev,_ZThn192_N7S7344C1D0Ev)() __attribute__((weak));
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7344C1D1Ev,_ZTv0_n24_N7S7344C1D1Ev)();
extern void ABISELECT(_ZThn368_N7S7344C1D1Ev,_ZThn216_N7S7344C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7344C1D0Ev,_ZTv0_n24_N7S7344C1D0Ev)();
extern void ABISELECT(_ZThn368_N7S7344C1D0Ev,_ZThn216_N7S7344C1D0Ev)() __attribute__((weak));
extern void _ZN8S7344C182v4Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S7344C1D1Ev,_ZTv0_n44_N7S7344C1D1Ev)();
extern void ABISELECT(_ZThn400_N7S7344C1D1Ev,_ZThn232_N7S7344C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7344C1D0Ev,_ZTv0_n44_N7S7344C1D0Ev)();
extern void ABISELECT(_ZThn400_N7S7344C1D0Ev,_ZThn232_N7S7344C1D0Ev)() __attribute__((weak));
extern void _ZN8S7344C102v2Ev();
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S7344C1D1Ev,_ZTv0_n32_N7S7344C1D1Ev)();
extern void ABISELECT(_ZThn448_N7S7344C1D1Ev,_ZThn264_N7S7344C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7344C1D0Ev,_ZTv0_n32_N7S7344C1D0Ev)();
extern void ABISELECT(_ZThn448_N7S7344C1D0Ev,_ZThn264_N7S7344C1D0Ev)() __attribute__((weak));
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void ABISELECT(_ZTv0_n64_N7S7344C1D1Ev,_ZTv0_n32_N7S7344C1D1Ev)();
extern void ABISELECT(_ZThn456_N7S7344C1D1Ev,_ZThn268_N7S7344C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7344C1D0Ev,_ZTv0_n32_N7S7344C1D0Ev)();
extern void ABISELECT(_ZThn456_N7S7344C1D0Ev,_ZThn268_N7S7344C1D0Ev)() __attribute__((weak));
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY vtc_S7344C1[] = {
  ABISELECT(456,268),
  ABISELECT(448,264),
  ABISELECT(400,232),
  ABISELECT(352,208),
  ABISELECT(328,192),
  ABISELECT(312,184),
  ABISELECT(304,180),
  ABISELECT(280,160),
  ABISELECT(112,60),
  ABISELECT(128,72),
  ABISELECT(368,216),
  ABISELECT(328,192),
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&_ZN7S7344C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7344C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7344C22v6Ev,
  ABISELECT(80,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(72,40),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(24,12),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(16,8),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(120,68),
  ABISELECT(64,40),
  0,
  ABISELECT(-112,-60),
  0,
  ABISELECT(256,156),
  ABISELECT(240,148),
  ABISELECT(16,12),
  ABISELECT(216,132),
  ABISELECT(216,132),
  ABISELECT(200,124),
  ABISELECT(168,100),
  ABISELECT(192,120),
  ABISELECT(-16,-8),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N7S7344C1D1Ev,_ZTv0_n52_N7S7344C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N7S7344C1D0Ev,_ZTv0_n52_N7S7344C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  0,
  0,
  ABISELECT(-32,-20),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-64,-40),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(128,80),
  ABISELECT(-48,-28),
  ABISELECT(192,116),
  ABISELECT(152,92),
  ABISELECT(-80,-48),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n104_N7S7344C1D1Ev,_ZTvn40_n52_N7S7344C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n104_N7S7344C1D0Ev,_ZTvn40_n52_N7S7344C1D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(-104,-60),
  ABISELECT(-200,-112),
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-120,-68),
  ABISELECT(-216,-120),
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(96,64),
  ABISELECT(72,52),
  ABISELECT(-136,-76),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n104_N7S7344C1D1Ev,_ZTvn68_n52_N7S7344C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n104_N7S7344C1D0Ev,_ZTvn68_n52_N7S7344C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  (VTBL_ENTRY)&_ZN8S7344C192v5Ev,
  ABISELECT(56,40),
  ABISELECT(-152,-88),
  ABISELECT(-248,-140),
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn136_n104_N7S7344C1D1Ev,_ZTvn80_n52_N7S7344C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn136_n104_N7S7344C1D0Ev,_ZTvn80_n52_N7S7344C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  0,
  ABISELECT(-280,-160),
  0,
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(24,20),
  ABISELECT(-184,-108),
  ABISELECT(-280,-160),
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7344C1D1Ev,_ZTv0_n36_N7S7344C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7344C1D0Ev,_ZTv0_n36_N7S7344C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-216,-132),
  ABISELECT(-312,-184),
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  ABISELECT(-328,-192),
  0,
  0,
  ABISELECT(-232,-140),
  ABISELECT(-328,-192),
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C1D1Ev,_ZTv0_n24_N7S7344C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C1D0Ev,_ZTv0_n24_N7S7344C1D0Ev),
  0,
  ABISELECT(-256,-156),
  ABISELECT(-352,-208),
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  0,
  ABISELECT(-368,-216),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-272,-164),
  ABISELECT(-368,-216),
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C1D1Ev,_ZTv0_n24_N7S7344C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C1D0Ev,_ZTv0_n24_N7S7344C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
  0,
  ABISELECT(-400,-232),
  0,
  ABISELECT(-272,-160),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-120,-72),
  ABISELECT(-96,-52),
  ABISELECT(-304,-180),
  ABISELECT(-400,-232),
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7344C1D1Ev,_ZTv0_n44_N7S7344C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7344C1D0Ev,_ZTv0_n44_N7S7344C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  ABISELECT(-320,-192),
  ABISELECT(-416,-244),
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(-448,-264),
  ABISELECT(-80,-48),
  ABISELECT(-120,-72),
  ABISELECT(8,4),
  ABISELECT(-120,-72),
  ABISELECT(-352,-212),
  ABISELECT(-448,-264),
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7344C1D1Ev,_ZTv0_n32_N7S7344C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7344C1D0Ev,_ZTv0_n32_N7S7344C1D0Ev),
  ABISELECT(-456,-268),
  0,
  0,
  ABISELECT(-88,-52),
  ABISELECT(-128,-76),
  ABISELECT(-360,-216),
  ABISELECT(-456,-268),
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7344C1D1Ev,_ZTv0_n32_N7S7344C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7344C1D0Ev,_ZTv0_n32_N7S7344C1D0Ev),
  ABISELECT(-376,-224),
  ABISELECT(-472,-276),
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  ABISELECT(-384,-228),
  ABISELECT(-480,-280),
  (VTBL_ENTRY)&(_ZTI7S7344C1[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S7344C1[];
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void _ZN7S7344C2D1Ev();
extern void _ZN7S7344C2D0Ev();
extern void _ZN7S7344C22v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C2__7S7344C1[] = {
  ABISELECT(456,268),
  ABISELECT(448,264),
  ABISELECT(400,232),
  ABISELECT(352,208),
  ABISELECT(328,192),
  ABISELECT(312,184),
  ABISELECT(304,180),
  ABISELECT(280,160),
  ABISELECT(112,60),
  ABISELECT(128,72),
  ABISELECT(368,216),
  ABISELECT(328,192),
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&_ZN7S7344C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7344C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7344C22v6Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void _ZN8S7344C17D1Ev();
extern void _ZN8S7344C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C177S7344C2__A1__7S7344C1[] = {
  ABISELECT(368,216),
  ABISELECT(328,192),
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&_ZN8S7344C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C17D0Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C128S7344C177S7344C2__A2__7S7344C1[] = {
  ABISELECT(328,192),
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C128S7344C177S7344C2__A4__7S7344C1[] = {
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C138S7344C128S7344C177S7344C2__A12__7S7344C1[] = {
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C128S7344C177S7344C2__A2__7S7344C1[] = {
  0,
  ABISELECT(-232,-140),
  ABISELECT(-328,-192),
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C177S7344C2__A13__7S7344C1[] = {
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C177S7344C2__A5__7S7344C1[] = {
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C138S7344C177S7344C2__A14__7S7344C1[] = {
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C177S7344C2__A1__7S7344C1[] = {
  0,
  ABISELECT(-232,-140),
  ABISELECT(-328,-192),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A__8S7344C177S7344C2__A1__7S7344C1[] = {
  ABISELECT(80,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev)();
extern void ABISELECT(_ZThn368_N8S7344C17D1Ev,_ZThn216_N8S7344C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev)();
extern void ABISELECT(_ZThn368_N8S7344C17D0Ev,_ZThn216_N8S7344C17D0Ev)() __attribute__((weak));
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C18__8S7344C177S7344C2__A1__7S7344C1[] = {
  0,
  ABISELECT(-368,-216),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-272,-164),
  ABISELECT(-368,-216),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C13__A1__8S7344C177S7344C2__A1__7S7344C1[] = {
  ABISELECT(72,40),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C157S7344C87S7344C7__7S7344C2__7S7344C1[] = {
  0,
  0,
  ABISELECT(-32,-20),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n104_N7S7344C2D1Ev,_ZTv0_n52_N7S7344C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S7344C2D1Ev,_ZThn60_N7S7344C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N7S7344C2D0Ev,_ZTv0_n52_N7S7344C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S7344C2D0Ev,_ZThn60_N7S7344C2D0Ev)() __attribute__((weak));
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C7__7S7344C2__7S7344C1[] = {
  ABISELECT(120,68),
  ABISELECT(64,40),
  0,
  ABISELECT(-112,-60),
  0,
  ABISELECT(256,156),
  ABISELECT(240,148),
  ABISELECT(16,12),
  ABISELECT(216,132),
  ABISELECT(216,132),
  ABISELECT(200,124),
  ABISELECT(168,100),
  ABISELECT(192,120),
  ABISELECT(-16,-8),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N7S7344C2D1Ev,_ZTv0_n52_N7S7344C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N7S7344C2D0Ev,_ZTv0_n52_N7S7344C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n72_N7S7344C2D1Ev,_ZTv0_n36_N7S7344C2D1Ev)();
extern void ABISELECT(_ZThn280_N7S7344C2D1Ev,_ZThn160_N7S7344C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7344C2D0Ev,_ZTv0_n36_N7S7344C2D0Ev)();
extern void ABISELECT(_ZThn280_N7S7344C2D0Ev,_ZThn160_N7S7344C2D0Ev)() __attribute__((weak));
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C9__7S7344C2__7S7344C1[] = {
  0,
  ABISELECT(-280,-160),
  0,
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(24,20),
  ABISELECT(-184,-108),
  ABISELECT(-280,-160),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7344C2D1Ev,_ZTv0_n36_N7S7344C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7344C2D0Ev,_ZTv0_n36_N7S7344C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C12__7S7344C2__7S7344C1[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-216,-132),
  ABISELECT(-312,-184),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7344C2D1Ev,_ZTv0_n24_N7S7344C2D1Ev)();
extern void ABISELECT(_ZThn328_N7S7344C2D1Ev,_ZThn192_N7S7344C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7344C2D0Ev,_ZTv0_n24_N7S7344C2D0Ev)();
extern void ABISELECT(_ZThn328_N7S7344C2D0Ev,_ZThn192_N7S7344C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7344C14__7S7344C2__7S7344C1[] = {
  ABISELECT(-328,-192),
  0,
  0,
  ABISELECT(-232,-140),
  ABISELECT(-328,-192),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C2D1Ev,_ZTv0_n24_N7S7344C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C2D0Ev,_ZTv0_n24_N7S7344C2D0Ev),
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C13__A1__7S7344C2__7S7344C1[] = {
  0,
  ABISELECT(-256,-156),
  ABISELECT(-352,-208),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C157S7344C7__A1__7S7344C2__7S7344C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-64,-40),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void ABISELECT(_ZTvn64_n104_N7S7344C2D1Ev,_ZTvn40_n52_N7S7344C2D1Ev)();
extern void ABISELECT(_ZTvn64_n104_N7S7344C2D0Ev,_ZTvn40_n52_N7S7344C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7344C167S7344C7__7S7344C2__7S7344C1[] = {
  ABISELECT(128,80),
  ABISELECT(-48,-28),
  ABISELECT(192,116),
  ABISELECT(152,92),
  ABISELECT(-80,-48),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n104_N7S7344C2D1Ev,_ZTvn40_n52_N7S7344C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n104_N7S7344C2D0Ev,_ZTvn40_n52_N7S7344C2D0Ev),
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C178S7344C167S7344C7__A7__7S7344C2__7S7344C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7344C2D1Ev,_ZTv0_n24_N7S7344C2D1Ev)();
extern void ABISELECT(_ZThn368_N7S7344C2D1Ev,_ZThn216_N7S7344C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7344C2D0Ev,_ZTv0_n24_N7S7344C2D0Ev)();
extern void ABISELECT(_ZThn368_N7S7344C2D0Ev,_ZThn216_N7S7344C2D0Ev)() __attribute__((weak));
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C18__7S7344C2__7S7344C1[] = {
  0,
  ABISELECT(-368,-216),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-272,-164),
  ABISELECT(-368,-216),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C2D1Ev,_ZTv0_n24_N7S7344C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C2D0Ev,_ZTv0_n24_N7S7344C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C178S7344C167S7344C7__A3__7S7344C2__7S7344C1[] = {
  ABISELECT(-104,-60),
  ABISELECT(-200,-112),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C158S7344C167S7344C7__A2__7S7344C2__7S7344C1[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-120,-68),
  ABISELECT(-216,-120),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTvn120_n104_N7S7344C2D1Ev,_ZTvn68_n52_N7S7344C2D1Ev)();
extern void ABISELECT(_ZTvn120_n104_N7S7344C2D0Ev,_ZTvn68_n52_N7S7344C2D0Ev)();
extern void _ZN8S7344C102v2Ev();
extern void _ZN8S7344C192v5Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C198S7344C167S7344C7__7S7344C2__7S7344C1[] = {
  ABISELECT(96,64),
  ABISELECT(72,52),
  ABISELECT(-136,-76),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n104_N7S7344C2D1Ev,_ZTvn68_n52_N7S7344C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn120_n104_N7S7344C2D0Ev,_ZTvn68_n52_N7S7344C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  (VTBL_ENTRY)&_ZN8S7344C192v5Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTvn136_n104_N7S7344C2D1Ev,_ZTvn80_n52_N7S7344C2D1Ev)();
extern void ABISELECT(_ZTvn136_n104_N7S7344C2D0Ev,_ZTvn80_n52_N7S7344C2D0Ev)();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C108S7344C167S7344C7__A3__7S7344C2__7S7344C1[] = {
  ABISELECT(56,40),
  ABISELECT(-152,-88),
  ABISELECT(-248,-140),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn136_n104_N7S7344C2D1Ev,_ZTvn80_n52_N7S7344C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn136_n104_N7S7344C2D0Ev,_ZTvn80_n52_N7S7344C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S7344C2D1Ev,_ZTv0_n44_N7S7344C2D1Ev)();
extern void ABISELECT(_ZThn400_N7S7344C2D1Ev,_ZThn232_N7S7344C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7344C2D0Ev,_ZTv0_n44_N7S7344C2D0Ev)();
extern void ABISELECT(_ZThn400_N7S7344C2D0Ev,_ZThn232_N7S7344C2D0Ev)() __attribute__((weak));
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C8__A1__7S7344C2__7S7344C1[] = {
  0,
  ABISELECT(-400,-232),
  0,
  ABISELECT(-272,-160),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-120,-72),
  ABISELECT(-96,-52),
  ABISELECT(-304,-180),
  ABISELECT(-400,-232),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7344C2D1Ev,_ZTv0_n44_N7S7344C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7344C2D0Ev,_ZTv0_n44_N7S7344C2D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C157S7344C8__A3__7S7344C2__7S7344C1[] = {
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  ABISELECT(-320,-192),
  ABISELECT(-416,-244),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C17__A13__7S7344C2__7S7344C1[] = {
  ABISELECT(80,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C17__A5__7S7344C2__7S7344C1[] = {
  ABISELECT(72,40),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S7344C2D1Ev,_ZTv0_n32_N7S7344C2D1Ev)();
extern void ABISELECT(_ZThn448_N7S7344C2D1Ev,_ZThn264_N7S7344C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7344C2D0Ev,_ZTv0_n32_N7S7344C2D0Ev)();
extern void ABISELECT(_ZThn448_N7S7344C2D0Ev,_ZThn264_N7S7344C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7344C20__7S7344C2__7S7344C1[] = {
  ABISELECT(-448,-264),
  ABISELECT(-80,-48),
  ABISELECT(-120,-72),
  ABISELECT(8,4),
  ABISELECT(-120,-72),
  ABISELECT(-352,-212),
  ABISELECT(-448,-264),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7344C2D1Ev,_ZTv0_n32_N7S7344C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7344C2D0Ev,_ZTv0_n32_N7S7344C2D0Ev),
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void ABISELECT(_ZTv0_n64_N7S7344C2D1Ev,_ZTv0_n32_N7S7344C2D1Ev)();
extern void ABISELECT(_ZThn456_N7S7344C2D1Ev,_ZThn268_N7S7344C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7344C2D0Ev,_ZTv0_n32_N7S7344C2D0Ev)();
extern void ABISELECT(_ZThn456_N7S7344C2D0Ev,_ZThn268_N7S7344C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7344C17__A2__7S7344C2__7S7344C1[] = {
  ABISELECT(-456,-268),
  0,
  0,
  ABISELECT(-88,-52),
  ABISELECT(-128,-76),
  ABISELECT(-360,-216),
  ABISELECT(-456,-268),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7344C2D1Ev,_ZTv0_n32_N7S7344C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7344C2D0Ev,_ZTv0_n32_N7S7344C2D0Ev),
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C17__A16__7S7344C2__7S7344C1[] = {
  ABISELECT(-376,-224),
  ABISELECT(-472,-276),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C17__A7__7S7344C2__7S7344C1[] = {
  ABISELECT(-384,-228),
  ABISELECT(-480,-280),
  (VTBL_ENTRY)&(_ZTI7S7344C2[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A__7S7344C1[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C13__A__7S7344C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C13__A19__7S7344C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C3__7S7344C1[] = {
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C3__7S7344C1[] = {
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C7D1Ev();
extern void _ZN7S7344C7D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C7__7S7344C1[] = {
  ABISELECT(256,156),
  ABISELECT(240,148),
  ABISELECT(16,12),
  ABISELECT(216,132),
  ABISELECT(216,132),
  ABISELECT(200,124),
  ABISELECT(168,100),
  ABISELECT(192,120),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7344C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7344C7D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C8D1Ev();
extern void _ZN7S7344C8D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C87S7344C7__7S7344C1[] = {
  ABISELECT(16,12),
  ABISELECT(216,132),
  ABISELECT(216,132),
  ABISELECT(200,124),
  ABISELECT(168,100),
  ABISELECT(192,120),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7344C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7344C8D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C10D1Ev();
extern void _ZN8S7344C10D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C107S7344C87S7344C7__A1__7S7344C1[] = {
  ABISELECT(192,120),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C10[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C38S7344C107S7344C87S7344C7__A2__7S7344C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C38S7344C107S7344C87S7344C7__A4__7S7344C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C157S7344C87S7344C7__7S7344C1[] = {
  0,
  0,
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C15[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n72_N7S7344C8D1Ev,_ZTv0_n36_N7S7344C8D1Ev)();
extern void ABISELECT(_ZThn168_N7S7344C8D1Ev,_ZThn100_N7S7344C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7344C8D0Ev,_ZTv0_n36_N7S7344C8D0Ev)();
extern void ABISELECT(_ZThn168_N7S7344C8D0Ev,_ZThn100_N7S7344C8D0Ev)() __attribute__((weak));
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C9__7S7344C87S7344C7__7S7344C1[] = {
  0,
  ABISELECT(-168,-100),
  0,
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(24,20),
  ABISELECT(-184,-108),
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7344C8D1Ev,_ZTv0_n36_N7S7344C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7344C8D0Ev,_ZTv0_n36_N7S7344C8D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C12__7S7344C87S7344C7__7S7344C1[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-216,-132),
  ABISELECT(-200,-124),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7344C8D1Ev,_ZTv0_n24_N7S7344C8D1Ev)();
extern void ABISELECT(_ZThn216_N7S7344C8D1Ev,_ZThn132_N7S7344C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7344C8D0Ev,_ZTv0_n24_N7S7344C8D0Ev)();
extern void ABISELECT(_ZThn216_N7S7344C8D0Ev,_ZThn132_N7S7344C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7344C14__7S7344C87S7344C7__7S7344C1[] = {
  ABISELECT(-216,-132),
  0,
  0,
  ABISELECT(-232,-140),
  ABISELECT(-216,-132),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C8D1Ev,_ZTv0_n24_N7S7344C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C8D0Ev,_ZTv0_n24_N7S7344C8D0Ev),
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C15__7S7344C87S7344C7__7S7344C1[] = {
  0,
  0,
  ABISELECT(-32,-20),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C157S7344C7__A1__7S7344C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C15[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C3__8S7344C157S7344C7__A1__7S7344C1[] = {
  0,
  ABISELECT(-32,-20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI8S7344C15[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void _ZN8S7344C16D1Ev();
extern void _ZN8S7344C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C167S7344C7__7S7344C1[] = {
  ABISELECT(128,80),
  ABISELECT(-48,-28),
  ABISELECT(192,116),
  ABISELECT(152,92),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&_ZN8S7344C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C16D0Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void _ZN8S7344C17D1Ev();
extern void _ZN8S7344C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C178S7344C167S7344C7__7S7344C1[] = {
  ABISELECT(192,116),
  ABISELECT(152,92),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&_ZN8S7344C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C17D0Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C128S7344C178S7344C167S7344C7__A1__7S7344C1[] = {
  ABISELECT(152,92),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C128S7344C178S7344C167S7344C7__A2__7S7344C1[] = {
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C138S7344C128S7344C178S7344C167S7344C7__A6__7S7344C1[] = {
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C128S7344C178S7344C167S7344C7__A1__7S7344C1[] = {
  0,
  ABISELECT(-232,-140),
  ABISELECT(-152,-92),
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C178S7344C167S7344C7__A7__7S7344C1[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C178S7344C167S7344C7__A3__7S7344C1[] = {
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C138S7344C178S7344C167S7344C7__A8__7S7344C1[] = {
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C178S7344C167S7344C7__7S7344C1[] = {
  0,
  ABISELECT(-232,-140),
  ABISELECT(-152,-92),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A__8S7344C178S7344C167S7344C7__7S7344C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev)();
extern void ABISELECT(_ZThn192_N8S7344C17D1Ev,_ZThn116_N8S7344C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev)();
extern void ABISELECT(_ZThn192_N8S7344C17D0Ev,_ZThn116_N8S7344C17D0Ev)() __attribute__((weak));
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C18__8S7344C178S7344C167S7344C7__7S7344C1[] = {
  0,
  ABISELECT(-192,-116),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-272,-164),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C13__A1__8S7344C178S7344C167S7344C7__7S7344C1[] = {
  ABISELECT(-104,-60),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C158S7344C167S7344C7__A2__7S7344C1[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C15[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C3__8S7344C158S7344C167S7344C7__A2__7S7344C1[] = {
  0,
  ABISELECT(-32,-20),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S7344C15[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C19D1Ev();
extern void _ZN8S7344C19D0Ev();
extern void _ZN8S7344C102v2Ev();
extern void _ZN8S7344C192v5Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C198S7344C167S7344C7__7S7344C1[] = {
  ABISELECT(96,64),
  ABISELECT(72,52),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C19[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C19D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C19D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  (VTBL_ENTRY)&_ZN8S7344C192v5Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C10D1Ev();
extern void _ZN8S7344C10D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C108S7344C198S7344C167S7344C7__A2__7S7344C1[] = {
  ABISELECT(72,52),
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C10[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C38S7344C108S7344C198S7344C167S7344C7__A3__7S7344C1[] = {
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C38S7344C108S7344C198S7344C167S7344C7__A9__7S7344C1[] = {
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__8S7344C198S7344C167S7344C7__7S7344C1[] = {
  0,
  ABISELECT(-232,-140),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S7344C19[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C10D1Ev();
extern void _ZN8S7344C10D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C108S7344C167S7344C7__A3__7S7344C1[] = {
  ABISELECT(56,40),
  ABISELECT(-152,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C10[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C38S7344C108S7344C167S7344C7__A4__7S7344C1[] = {
  ABISELECT(-152,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C38S7344C108S7344C167S7344C7__A10__7S7344C1[] = {
  ABISELECT(-152,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C167S7344C7__7S7344C1[] = {
  0,
  ABISELECT(-232,-140),
  ABISELECT(-152,-92),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C17__A2__8S7344C167S7344C7__7S7344C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7344C16D1Ev,_ZTv0_n24_N8S7344C16D1Ev)();
extern void ABISELECT(_ZThn192_N8S7344C16D1Ev,_ZThn116_N8S7344C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7344C16D0Ev,_ZTv0_n24_N8S7344C16D0Ev)();
extern void ABISELECT(_ZThn192_N8S7344C16D0Ev,_ZThn116_N8S7344C16D0Ev)() __attribute__((weak));
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C18__8S7344C167S7344C7__7S7344C1[] = {
  0,
  ABISELECT(-192,-116),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-272,-164),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C16D1Ev,_ZTv0_n24_N8S7344C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C16D0Ev,_ZTv0_n24_N8S7344C16D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C17__A1__8S7344C167S7344C7__7S7344C1[] = {
  ABISELECT(-104,-60),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C15__8S7344C167S7344C7__7S7344C1[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-120,-68),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C3__8S7344C167S7344C7__7S7344C1[] = {
  0,
  ABISELECT(-32,-20),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZThn56_N8S7344C16D1Ev,_ZThn28_N8S7344C16D1Ev)();
extern void ABISELECT(_ZThn56_N8S7344C16D0Ev,_ZThn28_N8S7344C16D0Ev)();
extern void _ZN8S7344C102v2Ev();
extern void _ZN8S7344C192v5Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C19__8S7344C167S7344C7__7S7344C1[] = {
  ABISELECT(96,64),
  ABISELECT(72,52),
  ABISELECT(-136,-76),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7344C16D1Ev,_ZThn28_N8S7344C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S7344C16D0Ev,_ZThn28_N8S7344C16D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  (VTBL_ENTRY)&_ZN8S7344C192v5Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZThn72_N8S7344C16D1Ev,_ZThn40_N8S7344C16D1Ev)();
extern void ABISELECT(_ZThn72_N8S7344C16D0Ev,_ZThn40_N8S7344C16D0Ev)();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C10__A1__8S7344C167S7344C7__7S7344C1[] = {
  ABISELECT(56,40),
  ABISELECT(-152,-88),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7344C16[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S7344C16D1Ev,_ZThn40_N8S7344C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N8S7344C16D0Ev,_ZThn40_N8S7344C16D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n72_N7S7344C7D1Ev,_ZTv0_n36_N7S7344C7D1Ev)();
extern void ABISELECT(_ZThn168_N7S7344C7D1Ev,_ZThn100_N7S7344C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7344C7D0Ev,_ZTv0_n36_N7S7344C7D0Ev)();
extern void ABISELECT(_ZThn168_N7S7344C7D0Ev,_ZThn100_N7S7344C7D0Ev)() __attribute__((weak));
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C9__7S7344C7__7S7344C1[] = {
  0,
  ABISELECT(-168,-100),
  0,
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(24,20),
  ABISELECT(-184,-108),
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7344C7D1Ev,_ZTv0_n36_N7S7344C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7344C7D0Ev,_ZTv0_n36_N7S7344C7D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C12__7S7344C7__7S7344C1[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-216,-132),
  ABISELECT(-200,-124),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7344C7D1Ev,_ZTv0_n24_N7S7344C7D1Ev)();
extern void ABISELECT(_ZThn216_N7S7344C7D1Ev,_ZThn132_N7S7344C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7344C7D0Ev,_ZTv0_n24_N7S7344C7D0Ev)();
extern void ABISELECT(_ZThn216_N7S7344C7D0Ev,_ZThn132_N7S7344C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7344C14__7S7344C7__7S7344C1[] = {
  ABISELECT(-216,-132),
  0,
  0,
  ABISELECT(-232,-140),
  ABISELECT(-216,-132),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C7D1Ev,_ZTv0_n24_N7S7344C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C7D0Ev,_ZTv0_n24_N7S7344C7D0Ev),
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C157S7344C8__7S7344C7__7S7344C1[] = {
  0,
  0,
  ABISELECT(-32,-20),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C13__A1__7S7344C7__7S7344C1[] = {
  0,
  ABISELECT(-256,-156),
  ABISELECT(-240,-148),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C15__A1__7S7344C7__7S7344C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(-64,-40),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void ABISELECT(_ZThn64_N7S7344C7D1Ev,_ZThn40_N7S7344C7D1Ev)();
extern void ABISELECT(_ZThn64_N7S7344C7D0Ev,_ZThn40_N7S7344C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7344C16__7S7344C7__7S7344C1[] = {
  ABISELECT(128,80),
  ABISELECT(-48,-28),
  ABISELECT(192,116),
  ABISELECT(152,92),
  ABISELECT(-80,-48),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S7344C7D1Ev,_ZThn40_N7S7344C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S7344C7D0Ev,_ZThn40_N7S7344C7D0Ev),
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C178S7344C16__A7__7S7344C7__7S7344C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7344C7D1Ev,_ZTv0_n24_N7S7344C7D1Ev)();
extern void ABISELECT(_ZThn256_N7S7344C7D1Ev,_ZThn156_N7S7344C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7344C7D0Ev,_ZTv0_n24_N7S7344C7D0Ev)();
extern void ABISELECT(_ZThn256_N7S7344C7D0Ev,_ZThn156_N7S7344C7D0Ev)() __attribute__((weak));
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C18__7S7344C7__7S7344C1[] = {
  0,
  ABISELECT(-256,-156),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-272,-164),
  ABISELECT(-256,-156),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C7D1Ev,_ZTv0_n24_N7S7344C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C7D0Ev,_ZTv0_n24_N7S7344C7D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C178S7344C16__A3__7S7344C7__7S7344C1[] = {
  ABISELECT(-104,-60),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C158S7344C16__A2__7S7344C7__7S7344C1[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-120,-68),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZThn120_N7S7344C7D1Ev,_ZThn68_N7S7344C7D1Ev)();
extern void ABISELECT(_ZThn120_N7S7344C7D0Ev,_ZThn68_N7S7344C7D0Ev)();
extern void _ZN8S7344C102v2Ev();
extern void _ZN8S7344C192v5Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C198S7344C16__7S7344C7__7S7344C1[] = {
  ABISELECT(96,64),
  ABISELECT(72,52),
  ABISELECT(-136,-76),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S7344C7D1Ev,_ZThn68_N7S7344C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn120_N7S7344C7D0Ev,_ZThn68_N7S7344C7D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
  (VTBL_ENTRY)&_ZN8S7344C192v5Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZThn136_N7S7344C7D1Ev,_ZThn80_N7S7344C7D1Ev)();
extern void ABISELECT(_ZThn136_N7S7344C7D0Ev,_ZThn80_N7S7344C7D0Ev)();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C108S7344C16__A3__7S7344C7__7S7344C1[] = {
  ABISELECT(56,40),
  ABISELECT(-152,-88),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI7S7344C7[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N7S7344C7D1Ev,_ZThn80_N7S7344C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N7S7344C7D0Ev,_ZThn80_N7S7344C7D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C9D1Ev();
extern void _ZN7S7344C9D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C9__7S7344C1[] = {
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(24,20),
  ABISELECT(-184,-108),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C9[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7344C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7344C9D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C10D1Ev();
extern void _ZN8S7344C10D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C107S7344C9__7S7344C1[] = {
  ABISELECT(24,20),
  ABISELECT(-184,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C10[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C38S7344C107S7344C9__A1__7S7344C1[] = {
  ABISELECT(-184,-108),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C38S7344C107S7344C9__A1__7S7344C1[] = {
  ABISELECT(-184,-108),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C12__7S7344C9__7S7344C1[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-216,-132),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S7344C9[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7344C9D1Ev,_ZTv0_n24_N7S7344C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7344C9D1Ev,_ZThn32_N7S7344C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7344C9D0Ev,_ZTv0_n24_N7S7344C9D0Ev)();
extern void ABISELECT(_ZThn48_N7S7344C9D0Ev,_ZThn32_N7S7344C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7344C14__7S7344C9__7S7344C1[] = {
  ABISELECT(-48,-32),
  0,
  0,
  ABISELECT(-232,-140),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7344C9[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C9D1Ev,_ZTv0_n24_N7S7344C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C9D0Ev,_ZTv0_n24_N7S7344C9D0Ev),
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C12__7S7344C1[] = {
  ABISELECT(16,8),
  ABISELECT(-216,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C12__7S7344C1[] = {
  ABISELECT(-216,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C138S7344C12__A2__7S7344C1[] = {
  ABISELECT(-216,-132),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C12__7S7344C1[] = {
  0,
  ABISELECT(-232,-140),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A3__7S7344C1[] = {
  ABISELECT(-232,-140),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C14D1Ev();
extern void _ZN8S7344C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C14__7S7344C1[] = {
  0,
  0,
  ABISELECT(-232,-140),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C14[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D0Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C13__A1__7S7344C1[] = {
  ABISELECT(-256,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C13__A5__7S7344C1[] = {
  ABISELECT(-256,-156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C18D1Ev();
extern void _ZN8S7344C18D0Ev();
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C18__7S7344C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-272,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C18[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C18D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C18D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C14D1Ev();
extern void _ZN8S7344C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C148S7344C18__A1__7S7344C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-272,-164),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C14[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C14D0Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__8S7344C148S7344C18__A1__7S7344C1[] = {
  0,
  ABISELECT(-232,-140),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7344C14[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__8S7344C18__7S7344C1[] = {
  0,
  ABISELECT(-232,-140),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7344C18[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN7S7344C8D1Ev();
extern void _ZN7S7344C8D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C8__A1__7S7344C1[] = {
  ABISELECT(-272,-160),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-120,-72),
  ABISELECT(-96,-52),
  ABISELECT(-304,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7344C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7344C8D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C10D1Ev();
extern void _ZN8S7344C10D0Ev();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C107S7344C8__A4__7S7344C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(-304,-180),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C10[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C10D0Ev,
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C38S7344C107S7344C8__A5__7S7344C1[] = {
  ABISELECT(-304,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C3[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C47S7344C38S7344C107S7344C8__A11__7S7344C1[] = {
  ABISELECT(-304,-180),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C157S7344C8__A3__7S7344C1[] = {
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  ABISELECT(-320,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C15[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C3__8S7344C157S7344C8__A3__7S7344C1[] = {
  0,
  ABISELECT(-32,-20),
  ABISELECT(288,172),
  (VTBL_ENTRY)&(_ZTI8S7344C15[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n72_N7S7344C8D1Ev,_ZTv0_n36_N7S7344C8D1Ev)();
extern void ABISELECT(_ZTv0_n72_N7S7344C8D0Ev,_ZTv0_n36_N7S7344C8D0Ev)();
extern void _ZN8S7344C102v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C9__7S7344C8__A1__7S7344C1[] = {
  0,
  ABISELECT(120,72),
  0,
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(32,24),
  ABISELECT(24,20),
  ABISELECT(-184,-108),
  ABISELECT(120,72),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7344C8D1Ev,_ZTv0_n36_N7S7344C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7344C8D0Ev,_ZTv0_n36_N7S7344C8D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C102v2Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C12__7S7344C8__A1__7S7344C1[] = {
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-216,-132),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7344C8D1Ev,_ZTv0_n24_N7S7344C8D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7344C8D0Ev,_ZTv0_n24_N7S7344C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7344C14__7S7344C8__A1__7S7344C1[] = {
  ABISELECT(72,40),
  0,
  0,
  ABISELECT(-232,-140),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C8D1Ev,_ZTv0_n24_N7S7344C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7344C8D0Ev,_ZTv0_n24_N7S7344C8D0Ev),
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C15__7S7344C8__A1__7S7344C1[] = {
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  ABISELECT(-320,-192),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C3__A2__7S7344C8__A1__7S7344C1[] = {
  0,
  ABISELECT(-32,-20),
  ABISELECT(272,160),
  (VTBL_ENTRY)&(_ZTI7S7344C8[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C20D1Ev();
extern void _ZN8S7344C20D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C20__7S7344C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-120,-72),
  ABISELECT(8,4),
  ABISELECT(-120,-72),
  ABISELECT(-352,-212),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C20[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C20D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C20D0Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void ABISELECT(_ZTv0_n64_N8S7344C20D1Ev,_ZTv0_n32_N8S7344C20D1Ev)();
extern void ABISELECT(_ZThn8_N8S7344C20D1Ev,_ZThn4_N8S7344C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S7344C20D0Ev,_ZTv0_n32_N8S7344C20D0Ev)();
extern void ABISELECT(_ZThn8_N8S7344C20D0Ev,_ZThn4_N8S7344C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7344C17__8S7344C20__7S7344C1[] = {
  ABISELECT(-8,-4),
  0,
  0,
  ABISELECT(-88,-52),
  ABISELECT(-128,-76),
  ABISELECT(-360,-216),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7344C20[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7344C20D1Ev,_ZTv0_n32_N8S7344C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S7344C20D0Ev,_ZTv0_n32_N8S7344C20D0Ev),
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C20__7S7344C1[] = {
  0,
  ABISELECT(-232,-140),
  ABISELECT(120,72),
  (VTBL_ENTRY)&(_ZTI8S7344C20[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C17__A2__8S7344C20__7S7344C1[] = {
  ABISELECT(-376,-224),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7344C20[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7344C20D1Ev,_ZTv0_n24_N8S7344C20D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7344C20D0Ev,_ZTv0_n24_N8S7344C20D0Ev)();
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C18__8S7344C20__7S7344C1[] = {
  0,
  ABISELECT(80,48),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-272,-164),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S7344C20[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C20D1Ev,_ZTv0_n24_N8S7344C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C20D0Ev,_ZTv0_n24_N8S7344C20D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C17__A1__8S7344C20__7S7344C1[] = {
  ABISELECT(-384,-228),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7344C20[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
extern void _ZN8S7344C17D1Ev();
extern void _ZN8S7344C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C17__A2__7S7344C1[] = {
  ABISELECT(-88,-52),
  ABISELECT(-128,-76),
  ABISELECT(-360,-216),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
  (VTBL_ENTRY)&_ZN8S7344C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7344C17D0Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void _ZN8S7344C122v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C128S7344C17__A3__7S7344C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(-360,-216),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7344C122v3Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C128S7344C17__A6__7S7344C1[] = {
  ABISELECT(-360,-216),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C138S7344C128S7344C17__A15__7S7344C1[] = {
  ABISELECT(-360,-216),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C128S7344C17__A3__7S7344C1[] = {
  0,
  ABISELECT(-232,-140),
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI8S7344C12[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C17__A16__7S7344C1[] = {
  ABISELECT(-376,-224),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C138S7344C17__A7__7S7344C1[] = {
  ABISELECT(-384,-228),
  0,
  (VTBL_ENTRY)&(_ZTI8S7344C13[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C48S7344C138S7344C17__A17__7S7344C1[] = {
  ABISELECT(-384,-228),
  0,
  (VTBL_ENTRY)&(_ZTI7S7344C4[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A1__8S7344C17__A2__7S7344C1[] = {
  0,
  ABISELECT(-232,-140),
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7344C4__A__8S7344C17__A2__7S7344C1[] = {
  ABISELECT(-376,-224),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
extern void _ZN7S7344C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev)();
extern void _ZN8S7344C182v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C18__8S7344C17__A2__7S7344C1[] = {
  0,
  ABISELECT(88,52),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-272,-164),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev),
  (VTBL_ENTRY)&_ZN8S7344C182v4Ev,
};
extern void _ZN7S7344C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7344C13__A1__8S7344C17__A2__7S7344C1[] = {
  ABISELECT(-384,-228),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7344C17[0]),
  (VTBL_ENTRY)&_ZN7S7344C42v1Ev,
};
static  VTT_ENTRY vtt_S7344C1[] = {
  {&(_ZTV7S7344C1[15]),  15,211},
  {&(_tg__ZTV7S7344C2__7S7344C1[15]),  15,20},
  {&(_tg__ZTV8S7344C177S7344C2__A1__7S7344C1[5]),  5,9},
  {&(_tg__ZTV8S7344C128S7344C177S7344C2__A2__7S7344C1[4]),  4,6},
  {&(_tg__ZTV8S7344C138S7344C128S7344C177S7344C2__A4__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C138S7344C128S7344C177S7344C2__A12__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C128S7344C177S7344C2__A2__7S7344C1[4]),  4,5},
  {&(_tg__ZTV7S7344C48S7344C177S7344C2__A13__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C138S7344C177S7344C2__A5__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C138S7344C177S7344C2__A14__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C177S7344C2__A1__7S7344C1[4]),  4,5},
  {&(_tg__ZTV7S7344C4__A__8S7344C177S7344C2__A1__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C18__8S7344C177S7344C2__A1__7S7344C1[7]),  7,11},
  {&(_tg__ZTV8S7344C13__A1__8S7344C177S7344C2__A1__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C157S7344C87S7344C7__7S7344C2__7S7344C1[5]),  5,6},
  {&(_tg__ZTV7S7344C7__7S7344C2__7S7344C1[16]),  16,20},
  {&(_tg__ZTV7S7344C9__7S7344C2__7S7344C1[10]),  10,14},
  {&(_tg__ZTV8S7344C12__7S7344C2__7S7344C1[6]),  6,8},
  {&(_tg__ZTV8S7344C14__7S7344C2__7S7344C1[6]),  6,9},
  {&(_tg__ZTV8S7344C14__7S7344C2__7S7344C1[6]),  6,9},
  {&(_tg__ZTV8S7344C157S7344C87S7344C7__7S7344C2__7S7344C1[5]),  5,6},
  {&(_tg__ZTV8S7344C13__A1__7S7344C2__7S7344C1[4]),  4,5},
  {&(_tg__ZTV8S7344C157S7344C7__A1__7S7344C2__7S7344C1[5]),  5,6},
  {&(_tg__ZTV8S7344C167S7344C7__7S7344C2__7S7344C1[7]),  7,11},
  {&(_tg__ZTV7S7344C48S7344C178S7344C167S7344C7__A7__7S7344C2__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C18__7S7344C2__7S7344C1[7]),  7,11},
  {&(_tg__ZTV8S7344C138S7344C178S7344C167S7344C7__A3__7S7344C2__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C158S7344C167S7344C7__A2__7S7344C2__7S7344C1[5]),  5,6},
  {&(_tg__ZTV8S7344C198S7344C167S7344C7__7S7344C2__7S7344C1[5]),  5,10},
  {&(_tg__ZTV8S7344C108S7344C167S7344C7__A3__7S7344C2__7S7344C1[4]),  4,8},
  {&(_tg__ZTV7S7344C8__A1__7S7344C2__7S7344C1[12]),  12,16},
  {&(_tg__ZTV8S7344C157S7344C8__A3__7S7344C2__7S7344C1[5]),  5,6},
  {&(_tg__ZTV7S7344C48S7344C17__A13__7S7344C2__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C138S7344C17__A5__7S7344C2__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C20__7S7344C2__7S7344C1[8]),  8,11},
  {&(_tg__ZTV8S7344C17__A2__7S7344C2__7S7344C1[8]),  8,12},
  {&(_tg__ZTV7S7344C48S7344C17__A16__7S7344C2__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C138S7344C17__A7__7S7344C2__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C13__A__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C13__A19__7S7344C1[3]),  3,4},
  {&(_ZTV7S7344C1[61]),  61,211},
  {&(_ZTV7S7344C1[52]),  52,211},
  {&(_ZTV7S7344C1[121]),  121,211},
  {&(_ZTV7S7344C1[131]),  131,211},
  {&(_ZTV7S7344C1[139]),  139,211},
  {&(_ZTV7S7344C1[139]),  139,211},
  {&(_ZTV7S7344C1[61]),  61,211},
  {&(_ZTV7S7344C1[146]),  146,211},
  {&(_ZTV7S7344C1[67]),  67,211},
  {&(_ZTV7S7344C1[75]),  75,211},
  {&(_ZTV7S7344C1[82]),  82,211},
  {&(_ZTV7S7344C1[154]),  154,211},
  {&(_ZTV7S7344C1[86]),  86,211},
  {&(_ZTV7S7344C1[92]),  92,211},
  {&(_ZTV7S7344C1[98]),  98,211},
  {&(_ZTV7S7344C1[107]),  107,211},
  {&(_ZTV7S7344C1[170]),  170,211},
  {&(_ZTV7S7344C1[179]),  179,211},
  {&(_ZTV7S7344C1[23]),  23,211},
  {&(_ZTV7S7344C1[27]),  27,211},
  {&(_ZTV7S7344C1[188]),  188,211},
  {&(_ZTV7S7344C1[199]),  199,211},
  {&(_ZTV7S7344C1[206]),  206,211},
  {&(_ZTV7S7344C1[210]),  210,211},
  {&(_ZTV7S7344C1[31]),  31,211},
  {&(_ZTV7S7344C1[35]),  35,211},
  {&(_tg__ZTV7S7344C3__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C3__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C7__7S7344C1[11]),  11,15},
  {&(_tg__ZTV7S7344C87S7344C7__7S7344C1[9]),  9,13},
  {&(_tg__ZTV8S7344C107S7344C87S7344C7__A1__7S7344C1[4]),  4,8},
  {&(_tg__ZTV7S7344C38S7344C107S7344C87S7344C7__A2__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C38S7344C107S7344C87S7344C7__A4__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C157S7344C87S7344C7__7S7344C1[5]),  5,6},
  {&(_tg__ZTV8S7344C157S7344C87S7344C7__7S7344C1[5]),  5,6},
  {&(_tg__ZTV7S7344C9__7S7344C87S7344C7__7S7344C1[10]),  10,14},
  {&(_tg__ZTV8S7344C12__7S7344C87S7344C7__7S7344C1[6]),  6,8},
  {&(_tg__ZTV8S7344C14__7S7344C87S7344C7__7S7344C1[6]),  6,9},
  {&(_tg__ZTV8S7344C14__7S7344C87S7344C7__7S7344C1[6]),  6,9},
  {&(_tg__ZTV8S7344C15__7S7344C87S7344C7__7S7344C1[5]),  5,6},
  {&(_tg__ZTV8S7344C15__7S7344C87S7344C7__7S7344C1[5]),  5,6},
  {&(_tg__ZTV8S7344C157S7344C7__A1__7S7344C1[5]),  5,6},
  {&(_tg__ZTV7S7344C3__8S7344C157S7344C7__A1__7S7344C1[4]),  4,5},
  {&(_tg__ZTV8S7344C167S7344C7__7S7344C1[7]),  7,11},
  {&(_tg__ZTV8S7344C178S7344C167S7344C7__7S7344C1[5]),  5,9},
  {&(_tg__ZTV8S7344C128S7344C178S7344C167S7344C7__A1__7S7344C1[4]),  4,6},
  {&(_tg__ZTV8S7344C138S7344C128S7344C178S7344C167S7344C7__A2__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C138S7344C128S7344C178S7344C167S7344C7__A6__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C128S7344C178S7344C167S7344C7__A1__7S7344C1[4]),  4,5},
  {&(_tg__ZTV7S7344C48S7344C178S7344C167S7344C7__A7__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C138S7344C178S7344C167S7344C7__A3__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C138S7344C178S7344C167S7344C7__A8__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C178S7344C167S7344C7__7S7344C1[4]),  4,5},
  {&(_tg__ZTV7S7344C4__A__8S7344C178S7344C167S7344C7__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C18__8S7344C178S7344C167S7344C7__7S7344C1[7]),  7,11},
  {&(_tg__ZTV8S7344C13__A1__8S7344C178S7344C167S7344C7__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C158S7344C167S7344C7__A2__7S7344C1[5]),  5,6},
  {&(_tg__ZTV7S7344C3__8S7344C158S7344C167S7344C7__A2__7S7344C1[4]),  4,5},
  {&(_tg__ZTV8S7344C198S7344C167S7344C7__7S7344C1[5]),  5,10},
  {&(_tg__ZTV8S7344C108S7344C198S7344C167S7344C7__A2__7S7344C1[4]),  4,8},
  {&(_tg__ZTV7S7344C38S7344C108S7344C198S7344C167S7344C7__A3__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C38S7344C108S7344C198S7344C167S7344C7__A9__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C4__8S7344C198S7344C167S7344C7__7S7344C1[4]),  4,5},
  {&(_tg__ZTV8S7344C108S7344C167S7344C7__A3__7S7344C1[4]),  4,8},
  {&(_tg__ZTV7S7344C38S7344C108S7344C167S7344C7__A4__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C38S7344C108S7344C167S7344C7__A10__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C167S7344C7__7S7344C1[4]),  4,5},
  {&(_tg__ZTV7S7344C48S7344C17__A2__8S7344C167S7344C7__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C18__8S7344C167S7344C7__7S7344C1[7]),  7,11},
  {&(_tg__ZTV8S7344C138S7344C17__A1__8S7344C167S7344C7__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C15__8S7344C167S7344C7__7S7344C1[5]),  5,6},
  {&(_tg__ZTV7S7344C3__8S7344C167S7344C7__7S7344C1[4]),  4,5},
  {&(_tg__ZTV8S7344C19__8S7344C167S7344C7__7S7344C1[5]),  5,10},
  {&(_tg__ZTV8S7344C10__A1__8S7344C167S7344C7__7S7344C1[4]),  4,8},
  {&(_tg__ZTV7S7344C9__7S7344C7__7S7344C1[10]),  10,14},
  {&(_tg__ZTV8S7344C12__7S7344C7__7S7344C1[6]),  6,8},
  {&(_tg__ZTV8S7344C14__7S7344C7__7S7344C1[6]),  6,9},
  {&(_tg__ZTV8S7344C14__7S7344C7__7S7344C1[6]),  6,9},
  {&(_tg__ZTV8S7344C157S7344C8__7S7344C7__7S7344C1[5]),  5,6},
  {&(_tg__ZTV8S7344C157S7344C8__7S7344C7__7S7344C1[5]),  5,6},
  {&(_tg__ZTV8S7344C13__A1__7S7344C7__7S7344C1[4]),  4,5},
  {&(_tg__ZTV8S7344C15__A1__7S7344C7__7S7344C1[5]),  5,6},
  {&(_tg__ZTV8S7344C16__7S7344C7__7S7344C1[7]),  7,11},
  {&(_tg__ZTV7S7344C48S7344C178S7344C16__A7__7S7344C7__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C18__7S7344C7__7S7344C1[7]),  7,11},
  {&(_tg__ZTV8S7344C138S7344C178S7344C16__A3__7S7344C7__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C158S7344C16__A2__7S7344C7__7S7344C1[5]),  5,6},
  {&(_tg__ZTV8S7344C198S7344C16__7S7344C7__7S7344C1[5]),  5,10},
  {&(_tg__ZTV8S7344C108S7344C16__A3__7S7344C7__7S7344C1[4]),  4,8},
  {&(_tg__ZTV7S7344C9__7S7344C1[7]),  7,11},
  {&(_tg__ZTV8S7344C107S7344C9__7S7344C1[4]),  4,8},
  {&(_tg__ZTV7S7344C38S7344C107S7344C9__A1__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C38S7344C107S7344C9__A1__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C12__7S7344C9__7S7344C1[6]),  6,8},
  {&(_tg__ZTV8S7344C14__7S7344C9__7S7344C1[6]),  6,9},
  {&(_tg__ZTV8S7344C14__7S7344C9__7S7344C1[6]),  6,9},
  {&(_tg__ZTV8S7344C12__7S7344C1[4]),  4,6},
  {&(_tg__ZTV8S7344C138S7344C12__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C138S7344C12__A2__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C12__7S7344C1[4]),  4,5},
  {&(_tg__ZTV7S7344C4__A3__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C14__7S7344C1[5]),  5,8},
  {&(_tg__ZTV8S7344C14__7S7344C1[5]),  5,8},
  {&(_tg__ZTV8S7344C13__A1__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C13__A5__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C18__7S7344C1[5]),  5,9},
  {&(_tg__ZTV8S7344C148S7344C18__A1__7S7344C1[5]),  5,8},
  {&(_tg__ZTV7S7344C4__8S7344C148S7344C18__A1__7S7344C1[4]),  4,5},
  {&(_tg__ZTV7S7344C4__8S7344C18__7S7344C1[4]),  4,5},
  {&(_tg__ZTV7S7344C8__A1__7S7344C1[9]),  9,13},
  {&(_tg__ZTV8S7344C107S7344C8__A4__7S7344C1[4]),  4,8},
  {&(_tg__ZTV7S7344C38S7344C107S7344C8__A5__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C47S7344C38S7344C107S7344C8__A11__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C157S7344C8__A3__7S7344C1[5]),  5,6},
  {&(_tg__ZTV7S7344C3__8S7344C157S7344C8__A3__7S7344C1[4]),  4,5},
  {&(_tg__ZTV7S7344C9__7S7344C8__A1__7S7344C1[10]),  10,14},
  {&(_tg__ZTV8S7344C12__7S7344C8__A1__7S7344C1[6]),  6,8},
  {&(_tg__ZTV8S7344C14__7S7344C8__A1__7S7344C1[6]),  6,9},
  {&(_tg__ZTV8S7344C14__7S7344C8__A1__7S7344C1[6]),  6,9},
  {&(_tg__ZTV8S7344C15__7S7344C8__A1__7S7344C1[5]),  5,6},
  {&(_tg__ZTV7S7344C3__A2__7S7344C8__A1__7S7344C1[4]),  4,5},
  {&(_tg__ZTV8S7344C20__7S7344C1[7]),  7,10},
  {&(_tg__ZTV8S7344C17__8S7344C20__7S7344C1[8]),  8,12},
  {&(_tg__ZTV7S7344C4__A1__8S7344C20__7S7344C1[4]),  4,5},
  {&(_tg__ZTV7S7344C48S7344C17__A2__8S7344C20__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C18__8S7344C20__7S7344C1[7]),  7,11},
  {&(_tg__ZTV8S7344C138S7344C17__A1__8S7344C20__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C17__A2__7S7344C1[5]),  5,9},
  {&(_tg__ZTV8S7344C128S7344C17__A3__7S7344C1[4]),  4,6},
  {&(_tg__ZTV8S7344C138S7344C128S7344C17__A6__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C138S7344C128S7344C17__A15__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C128S7344C17__A3__7S7344C1[4]),  4,5},
  {&(_tg__ZTV7S7344C48S7344C17__A16__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C138S7344C17__A7__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C48S7344C138S7344C17__A17__7S7344C1[3]),  3,4},
  {&(_tg__ZTV7S7344C4__A1__8S7344C17__A2__7S7344C1[4]),  4,5},
  {&(_tg__ZTV7S7344C4__A__8S7344C17__A2__7S7344C1[3]),  3,4},
  {&(_tg__ZTV8S7344C18__8S7344C17__A2__7S7344C1[7]),  7,11},
  {&(_tg__ZTV8S7344C13__A1__8S7344C17__A2__7S7344C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7344C1[];
extern  VTBL_ENTRY _ZTV7S7344C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7344C1[];
static VTBL_ENTRY alt_thunk_names41[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7344C20D0Ev,_ZTv0_n32_N8S7344C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7344C20D0Ev,_ZThn4_N8S7344C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S7344C20D1Ev,_ZTv0_n32_N8S7344C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7344C20D1Ev,_ZThn4_N8S7344C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C9D0Ev,_ZTv0_n24_N7S7344C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7344C9D0Ev,_ZThn32_N7S7344C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C9D1Ev,_ZTv0_n24_N7S7344C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7344C9D1Ev,_ZThn32_N7S7344C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C7D0Ev,_ZTv0_n24_N7S7344C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7344C7D0Ev,_ZThn156_N7S7344C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7344C7D0Ev,_ZThn132_N7S7344C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C7D1Ev,_ZTv0_n24_N7S7344C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7344C7D1Ev,_ZThn156_N7S7344C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7344C7D1Ev,_ZThn132_N7S7344C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7344C7D0Ev,_ZTv0_n36_N7S7344C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7344C7D0Ev,_ZThn100_N7S7344C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7344C7D1Ev,_ZTv0_n36_N7S7344C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7344C7D1Ev,_ZThn100_N7S7344C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7344C16D0Ev,_ZTv0_n24_N8S7344C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7344C16D0Ev,_ZThn116_N8S7344C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7344C16D1Ev,_ZTv0_n24_N8S7344C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7344C16D1Ev,_ZThn116_N8S7344C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C8D0Ev,_ZTv0_n24_N7S7344C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7344C8D0Ev,_ZThn132_N7S7344C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C8D1Ev,_ZTv0_n24_N7S7344C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N7S7344C8D1Ev,_ZThn132_N7S7344C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7344C8D0Ev,_ZTv0_n36_N7S7344C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7344C8D0Ev,_ZThn100_N7S7344C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7344C8D1Ev,_ZTv0_n36_N7S7344C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S7344C8D1Ev,_ZThn100_N7S7344C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7344C2D0Ev,_ZTv0_n32_N7S7344C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7344C2D0Ev,_ZThn268_N7S7344C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S7344C2D0Ev,_ZThn264_N7S7344C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7344C2D1Ev,_ZTv0_n32_N7S7344C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7344C2D1Ev,_ZThn268_N7S7344C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S7344C2D1Ev,_ZThn264_N7S7344C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7344C2D0Ev,_ZTv0_n44_N7S7344C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7344C2D0Ev,_ZThn232_N7S7344C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7344C2D1Ev,_ZTv0_n44_N7S7344C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7344C2D1Ev,_ZThn232_N7S7344C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C2D0Ev,_ZTv0_n24_N7S7344C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7344C2D0Ev,_ZThn216_N7S7344C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N7S7344C2D0Ev,_ZThn192_N7S7344C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C2D1Ev,_ZTv0_n24_N7S7344C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7344C2D1Ev,_ZThn216_N7S7344C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N7S7344C2D1Ev,_ZThn192_N7S7344C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7344C2D0Ev,_ZTv0_n36_N7S7344C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S7344C2D0Ev,_ZThn160_N7S7344C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7344C2D1Ev,_ZTv0_n36_N7S7344C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S7344C2D1Ev,_ZThn160_N7S7344C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N7S7344C2D0Ev,_ZTv0_n52_N7S7344C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7344C2D0Ev,_ZThn60_N7S7344C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N7S7344C2D1Ev,_ZTv0_n52_N7S7344C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7344C2D1Ev,_ZThn60_N7S7344C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7344C17D0Ev,_ZTv0_n24_N8S7344C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7344C17D0Ev,_ZThn116_N8S7344C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S7344C17D0Ev,_ZThn216_N8S7344C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7344C17D1Ev,_ZTv0_n24_N8S7344C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7344C17D1Ev,_ZThn116_N8S7344C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S7344C17D1Ev,_ZThn216_N8S7344C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7344C1D0Ev,_ZTv0_n32_N7S7344C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7344C1D0Ev,_ZThn268_N7S7344C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S7344C1D0Ev,_ZThn264_N7S7344C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7344C1D1Ev,_ZTv0_n32_N7S7344C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7344C1D1Ev,_ZThn268_N7S7344C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S7344C1D1Ev,_ZThn264_N7S7344C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7344C1D0Ev,_ZTv0_n44_N7S7344C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7344C1D0Ev,_ZThn232_N7S7344C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7344C1D1Ev,_ZTv0_n44_N7S7344C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7344C1D1Ev,_ZThn232_N7S7344C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C1D0Ev,_ZTv0_n24_N7S7344C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7344C1D0Ev,_ZThn216_N7S7344C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N7S7344C1D0Ev,_ZThn192_N7S7344C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7344C1D1Ev,_ZTv0_n24_N7S7344C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7344C1D1Ev,_ZThn216_N7S7344C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N7S7344C1D1Ev,_ZThn192_N7S7344C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7344C1D0Ev,_ZTv0_n36_N7S7344C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S7344C1D0Ev,_ZThn160_N7S7344C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7344C1D1Ev,_ZTv0_n36_N7S7344C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S7344C1D1Ev,_ZThn160_N7S7344C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N7S7344C1D0Ev,_ZTv0_n52_N7S7344C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7344C1D0Ev,_ZThn60_N7S7344C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N7S7344C1D1Ev,_ZTv0_n52_N7S7344C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7344C1D1Ev,_ZThn60_N7S7344C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7344C1 = {  "S7344C1", // class name
  bases_S7344C1, 104,
  &(vtc_S7344C1[0]), // expected_vtbl_contents
  &(vtt_S7344C1[0]), // expected_vtt_contents
  ABISELECT(496,288), // object size
  NSPAIRA(_ZTI7S7344C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7344C1),211, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7344C1),180, //virtual table table var
  62, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names41,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7831C4  : virtual S3461C5_nt , S731C17_nt {
  virtual void  v1(); // _ZN7S7831C42v1Ev
  ~S7831C4(); // tgen
  S7831C4(); // tgen
};
//SIG(-1 S7831C4) C1{ VBC2{ m FL} BC3{ m} v1}


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

static void Test_S7831C4()
{
  extern Class_Descriptor cd_S7831C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7831C4, buf);
    S7831C4 *dp, &lv = *(dp=new (buf) S7831C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7831C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7831C4)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S7831C4");
    check_base_class_offset(lv, (S731C17_nt*), 0, "S7831C4");
    test_class_info(&lv, &cd_S7831C4);
    dp->~S7831C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7831C4(Test_S7831C4, "S7831C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7831C4C1Ev();
extern void _ZN7S7831C4D1Ev();
Name_Map name_map_S7831C4[] = {
  NSPAIR(_ZN7S7831C4C1Ev),
  NSPAIR(_ZN7S7831C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S7831C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7831C4[];
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY vtc_S7831C4[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S7831C4[];
static  VTT_ENTRY vtt_S7831C4[] = {
  {&(_ZTV7S7831C4[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
Class_Descriptor cd_S7831C4 = {  "S7831C4", // class name
  bases_S7831C4, 2,
  &(vtc_S7831C4[0]), // expected_vtbl_contents
  &(vtt_S7831C4[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7831C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7831C4),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7831C4),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  S7831C8  : S7831C4 {
  ~S7831C8(); // tgen
  S7831C8(); // tgen
};
//SIG(-1 S7831C8) C1{ BC2{ VBC3{ m FL} BC4{ m} v1}}


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

static void Test_S7831C8()
{
  extern Class_Descriptor cd_S7831C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7831C8, buf);
    S7831C8 *dp, &lv = *(dp=new (buf) S7831C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7831C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7831C8)");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*), ABISELECT(8,4), "S7831C8");
    check_base_class_offset(lv, (S731C17_nt*)(S7831C4*), 0, "S7831C8");
    check_base_class_offset(lv, (S7831C4*), 0, "S7831C8");
    test_class_info(&lv, &cd_S7831C8);
    dp->~S7831C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7831C8(Test_S7831C8, "S7831C8", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7831C8C1Ev();
extern void _ZN7S7831C8D1Ev();
Name_Map name_map_S7831C8[] = {
  NSPAIR(_ZN7S7831C8C1Ev),
  NSPAIR(_ZN7S7831C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
static Base_Class bases_S7831C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7831C4,    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 _ZTI7S7831C8[];
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY vtc_S7831C8[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S7831C8[];
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__7S7831C8[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
static  VTT_ENTRY vtt_S7831C8[] = {
  {&(_ZTV7S7831C8[3]),  3,4},
  {&(_tg__ZTV7S7831C4__7S7831C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
Class_Descriptor cd_S7831C8 = {  "S7831C8", // class name
  bases_S7831C8, 3,
  &(vtc_S7831C8[0]), // expected_vtbl_contents
  &(vtt_S7831C8[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7831C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7831C8),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7831C8),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  S7831C7  : S3461C5_nt , virtual S731C17_nt , S7831C8 {
  virtual  ~S7831C7(); // _ZN7S7831C7D2Ev
  virtual void  v2(); // _ZN7S7831C72v2Ev
  S7831C7(); // tgen
};
//SIG(-1 S7831C7) C1{ BC2{ m FL} VBC3{ m} BC4{ BC5{ VBC2 BC3 v2}} vd v1}


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

static void Test_S7831C7()
{
  extern Class_Descriptor cd_S7831C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S7831C7, buf);
    S7831C7 *dp, &lv = *(dp=new (buf) S7831C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S7831C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7831C7)");
    /*is_ambiguous_... S7831C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S7831C7");
    /*is_ambiguous_... S7831C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(16,12), "S7831C7");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C8*), ABISELECT(16,12), "S7831C7");
    check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C8*), 0, "S7831C7");
    check_base_class_offset(lv, (S7831C4*)(S7831C8*), 0, "S7831C7");
    check_base_class_offset(lv, (S7831C8*), 0, "S7831C7");
    test_class_info(&lv, &cd_S7831C7);
    dp->~S7831C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7831C7(Test_S7831C7, "S7831C7", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN7S7831C7C1Ev();
extern void _ZN7S7831C7D2Ev();
Name_Map name_map_S7831C7[] = {
  NSPAIR(_ZN7S7831C7C1Ev),
  NSPAIR(_ZN7S7831C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C8;
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
static Base_Class bases_S7831C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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_S3461C5_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
    4, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7831C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7831C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7831C7[];
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C7D1Ev();
extern void _ZN7S7831C7D0Ev();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY vtc_S7831C7[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C7[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern VTBL_ENTRY _ZTV7S7831C7[];
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C8__7S7831C7[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C47S7831C8__7S7831C7[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
static  VTT_ENTRY vtt_S7831C7[] = {
  {&(_ZTV7S7831C7[4]),  4,8},
  {&(_tg__ZTV7S7831C8__7S7831C7[3]),  3,4},
  {&(_tg__ZTV7S7831C47S7831C8__7S7831C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7831C7[];
extern  VTBL_ENTRY _ZTV7S7831C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C7[];
Class_Descriptor cd_S7831C7 = {  "S7831C7", // class name
  bases_S7831C7, 6,
  &(vtc_S7831C7[0]), // expected_vtbl_contents
  &(vtt_S7831C7[0]), // expected_vtt_contents
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI7S7831C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7831C7),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7831C7),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  S7831C3  : virtual S7831C4 , S7831C7 {
  virtual  ~S7831C3(); // _ZN7S7831C3D2Ev
  virtual void  v3(); // _ZN7S7831C32v3Ev
  S7831C3(); // tgen
};
//SIG(-1 S7831C3) C1{ VBC2{ VBC3{ m FL} BC4{ m} v2} BC5{ BC3 VBC4 BC6{ BC2} vd v3} vd v1}


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

static void Test_S7831C3()
{
  extern Class_Descriptor cd_S7831C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S7831C3, buf);
    S7831C3 *dp, &lv = *(dp=new (buf) S7831C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S7831C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7831C3)");
    /*is_ambiguous_... S7831C3::S7831C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*), ABISELECT(24,16), "S7831C3");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C8*)(S7831C7*), ABISELECT(24,16), "S7831C3");
    /*is_ambiguous_... S7831C3::S7831C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*), ABISELECT(16,12), "S7831C3");
    /*is_ambiguous_... S7831C3::S7831C4 */ AMB_check_base_class_offset(lv, (S7831C4*), ABISELECT(16,12), "S7831C3");
    /*is_ambiguous_... S7831C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C7*), ABISELECT(8,4), "S7831C3");
    /*is_ambiguous_... S7831C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C7*), ABISELECT(32,24), "S7831C3");
    check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C8*)(S7831C7*), 0, "S7831C3");
    check_base_class_offset(lv, (S7831C4*)(S7831C8*)(S7831C7*), 0, "S7831C3");
    check_base_class_offset(lv, (S7831C8*)(S7831C7*), 0, "S7831C3");
    check_base_class_offset(lv, (S7831C7*), 0, "S7831C3");
    test_class_info(&lv, &cd_S7831C3);
    dp->~S7831C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7831C3(Test_S7831C3, "S7831C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S7831C3C1Ev();
extern void _ZN7S7831C3D2Ev();
Name_Map name_map_S7831C3[] = {
  NSPAIR(_ZN7S7831C3C1Ev),
  NSPAIR(_ZN7S7831C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C8;
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
extern Class_Descriptor cd_S7831C7;
extern VTBL_ENTRY _ZTI7S7831C7[];
extern  VTBL_ENTRY _ZTV7S7831C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C7[];
static Base_Class bases_S7831C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(16,12), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7831C4,    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
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7831C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7831C7,    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 _ZTI7S7831C3[];
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C3D1Ev();
extern void _ZN7S7831C3D0Ev();
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C32v3Ev();
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY vtc_S7831C3[] = {
  ABISELECT(16,12),
  ABISELECT(32,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C3[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7831C32v3Ev,
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7831C3[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S7831C3[];
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C7D1Ev();
extern void _ZN7S7831C7D0Ev();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C7__7S7831C3[] = {
  ABISELECT(32,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C7[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C87S7831C7__7S7831C3[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C47S7831C87S7831C7__A1__7S7831C3[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__7S7831C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
static  VTT_ENTRY vtt_S7831C3[] = {
  {&(_ZTV7S7831C3[5]),  5,15},
  {&(_tg__ZTV7S7831C7__7S7831C3[4]),  4,8},
  {&(_tg__ZTV7S7831C87S7831C7__7S7831C3[3]),  3,4},
  {&(_tg__ZTV7S7831C47S7831C87S7831C7__A1__7S7831C3[3]),  3,4},
  {&(_ZTV7S7831C3[14]),  14,15},
  {&(_tg__ZTV7S7831C4__7S7831C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7831C3[];
extern  VTBL_ENTRY _ZTV7S7831C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C3[];
Class_Descriptor cd_S7831C3 = {  "S7831C3", // class name
  bases_S7831C3, 9,
  &(vtc_S7831C3[0]), // expected_vtbl_contents
  &(vtt_S7831C3[0]), // expected_vtt_contents
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S7831C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7831C3),15, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7831C3),6, //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  S7831C11  : S3461C5_nt , virtual S7831C4 , S731C17_nt {
  virtual  ~S7831C11(); // _ZN8S7831C11D2Ev
  S7831C11(); // tgen
};
//SIG(-1 S7831C11) C1{ BC2{ m FL} VBC3{ VBC2 BC4{ m} v1} BC4 vd}


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

static void Test_S7831C11()
{
  extern Class_Descriptor cd_S7831C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S7831C11, buf);
    S7831C11 *dp, &lv = *(dp=new (buf) S7831C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S7831C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7831C11)");
    /*is_ambiguous_... S7831C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S7831C11");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*), ABISELECT(16,12), "S7831C11");
    check_base_class_offset(lv, (S731C17_nt*)(S7831C4*), 0, "S7831C11");
    check_base_class_offset(lv, (S7831C4*), 0, "S7831C11");
    /*is_ambiguous_... S7831C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(16,12), "S7831C11");
    test_class_info(&lv, &cd_S7831C11);
    dp->~S7831C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7831C11(Test_S7831C11, "S7831C11", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN8S7831C11C1Ev();
extern void _ZN8S7831C11D2Ev();
Name_Map name_map_S7831C11[] = {
  NSPAIR(_ZN8S7831C11C1Ev),
  NSPAIR(_ZN8S7831C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S7831C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7831C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7831C11[];
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C11D1Ev();
extern void _ZN8S7831C11D0Ev();
static  VTBL_ENTRY vtc_S7831C11[] = {
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D0Ev,
};
extern VTBL_ENTRY _ZTV8S7831C11[];
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__8S7831C11[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
static  VTT_ENTRY vtt_S7831C11[] = {
  {&(_ZTV8S7831C11[5]),  5,8},
  {&(_ZTV8S7831C11[5]),  5,8},
  {&(_tg__ZTV7S7831C4__8S7831C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7831C11[];
extern  VTBL_ENTRY _ZTV8S7831C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C11[];
Class_Descriptor cd_S7831C11 = {  "S7831C11", // class name
  bases_S7831C11, 5,
  &(vtc_S7831C11[0]), // expected_vtbl_contents
  &(vtt_S7831C11[0]), // expected_vtt_contents
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI8S7831C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7831C11),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7831C11),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  S7831C10  : S731C17_nt , virtual S7831C4 , S7831C11 , S3461C5_nt {
  __tsi64 s7831c10f0;
  virtual  ~S7831C10(); // _ZN8S7831C10D2Ev
  S7831C10(); // tgen
};
//SIG(-1 S7831C10) C1{ BC2{ m} VBC3{ VBC4{ m FL} BC2 v1} BC5{ BC4 VBC3 BC2 vd} BC4 vd FL}


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

static void Test_S7831C10()
{
  extern Class_Descriptor cd_S7831C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,11)];
    init_test(&cd_S7831C10, buf);
    S7831C10 *dp, &lv = *(dp=new (buf) S7831C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S7831C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7831C10)");
    /*is_ambiguous_... S7831C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(17,13), "S7831C10");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*), ABISELECT(40,32), "S7831C10");
    check_base_class_offset(lv, (S731C17_nt*)(S7831C4*), 0, "S7831C10");
    check_base_class_offset(lv, (S7831C4*), 0, "S7831C10");
    check_base_class_offset(lv, (S7831C4*)(S7831C11*), 0, "S7831C10");
    /*is_ambiguous_... S7831C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C11*), ABISELECT(8,4), "S7831C10");
    /*is_ambiguous_... S7831C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C11*), ABISELECT(16,12), "S7831C10");
    check_base_class_offset(lv, (S7831C11*), 0, "S7831C10");
    /*is_ambiguous_... S7831C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(24,16), "S7831C10");
    check_field_offset(lv, s7831c10f0, ABISELECT(32,24), "S7831C10.s7831c10f0");
    test_class_info(&lv, &cd_S7831C10);
    dp->~S7831C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7831C10(Test_S7831C10, "S7831C10", ABISELECT(48,40));

#else // __cplusplus

extern void _ZN8S7831C10C1Ev();
extern void _ZN8S7831C10D2Ev();
Name_Map name_map_S7831C10[] = {
  NSPAIR(_ZN8S7831C10C1Ev),
  NSPAIR(_ZN8S7831C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C11;
extern VTBL_ENTRY _ZTI8S7831C11[];
extern  VTBL_ENTRY _ZTV8S7831C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
static Base_Class bases_S7831C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    ABISELECT(17,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7831C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    6, //immediately_derived
  0, 0},
  {&cd_S7831C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7831C10[];
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C10D1Ev();
extern void _ZN8S7831C10D0Ev();
static  VTBL_ENTRY vtc_S7831C10[] = {
  0,
  0,
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C10[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C10D0Ev,
};
extern VTBL_ENTRY _ZTV8S7831C10[];
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C11D1Ev();
extern void _ZN8S7831C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C11__8S7831C10[] = {
  0,
  0,
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D0Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__8S7831C10[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
static  VTT_ENTRY vtt_S7831C10[] = {
  {&(_ZTV8S7831C10[5]),  5,8},
  {&(_tg__ZTV8S7831C11__8S7831C10[5]),  5,8},
  {&(_tg__ZTV8S7831C11__8S7831C10[5]),  5,8},
  {&(_ZTV8S7831C10[5]),  5,8},
  {&(_tg__ZTV7S7831C4__8S7831C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7831C10[];
extern  VTBL_ENTRY _ZTV8S7831C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C10[];
Class_Descriptor cd_S7831C10 = {  "S7831C10", // class name
  bases_S7831C10, 8,
  &(vtc_S7831C10[0]), // expected_vtbl_contents
  &(vtt_S7831C10[0]), // expected_vtt_contents
  ABISELECT(48,40), // object size
  NSPAIRA(_ZTI8S7831C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7831C10),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7831C10),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  S7831C13  : virtual S3461C5_nt , S7831C4 , S731C17_nt {
  ~S7831C13(); // tgen
  S7831C13(); // tgen
};
//SIG(-1 S7831C13) C1{ VBC2{ m FL} BC3{ VBC2 BC4{ m} v1} BC4}


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

static void Test_S7831C13()
{
  extern Class_Descriptor cd_S7831C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7831C13, buf);
    S7831C13 *dp, &lv = *(dp=new (buf) S7831C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7831C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7831C13)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S7831C13");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*), ABISELECT(8,4), "S7831C13");
    check_base_class_offset(lv, (S731C17_nt*)(S7831C4*), 0, "S7831C13");
    check_base_class_offset(lv, (S7831C4*), 0, "S7831C13");
    /*is_ambiguous_... S7831C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(8,4), "S7831C13");
    test_class_info(&lv, &cd_S7831C13);
    dp->~S7831C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7831C13(Test_S7831C13, "S7831C13", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S7831C13C1Ev();
extern void _ZN8S7831C13D1Ev();
Name_Map name_map_S7831C13[] = {
  NSPAIR(_ZN8S7831C13C1Ev),
  NSPAIR(_ZN8S7831C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S7831C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7831C4,    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_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7831C13[];
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY vtc_S7831C13[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C13[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern VTBL_ENTRY _ZTV8S7831C13[];
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__8S7831C13[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
static  VTT_ENTRY vtt_S7831C13[] = {
  {&(_ZTV8S7831C13[3]),  3,4},
  {&(_tg__ZTV7S7831C4__8S7831C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7831C13[];
extern  VTBL_ENTRY _ZTV8S7831C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C13[];
Class_Descriptor cd_S7831C13 = {  "S7831C13", // class name
  bases_S7831C13, 4,
  &(vtc_S7831C13[0]), // expected_vtbl_contents
  &(vtt_S7831C13[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S7831C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7831C13),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7831C13),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  S7831C16  : virtual S3461C5_nt , S7831C13 , virtual S7831C4 {
  virtual void  v4(); // _ZN8S7831C162v4Ev
  ~S7831C16(); // tgen
  S7831C16(); // tgen
};
//SIG(-1 S7831C16) C1{ VBC2{ m FL} BC3{ VBC2 BC4{ VBC2 BC5{ m} v2} BC5} VBC4 v1}


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

static void Test_S7831C16()
{
  extern Class_Descriptor cd_S7831C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7831C16, buf);
    S7831C16 *dp, &lv = *(dp=new (buf) S7831C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7831C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7831C16)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(16,8), "S7831C16");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C13*), ABISELECT(16,8), "S7831C16");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C13*), ABISELECT(16,8), "S7831C16");
    /*is_ambiguous_... S7831C16::S7831C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*), ABISELECT(16,8), "S7831C16");
    check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C13*), 0, "S7831C16");
    check_base_class_offset(lv, (S7831C4*)(S7831C13*), 0, "S7831C16");
    /*is_ambiguous_... S7831C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C13*), ABISELECT(8,4), "S7831C16");
    check_base_class_offset(lv, (S7831C13*), 0, "S7831C16");
    /*is_ambiguous_... S7831C16::S7831C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*), ABISELECT(24,16), "S7831C16");
    /*is_ambiguous_... S7831C16::S7831C4 */ AMB_check_base_class_offset(lv, (S7831C4*), ABISELECT(24,16), "S7831C16");
    test_class_info(&lv, &cd_S7831C16);
    dp->~S7831C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7831C16(Test_S7831C16, "S7831C16", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S7831C16C1Ev();
extern void _ZN8S7831C16D1Ev();
Name_Map name_map_S7831C16[] = {
  NSPAIR(_ZN8S7831C16C1Ev),
  NSPAIR(_ZN8S7831C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C13;
extern VTBL_ENTRY _ZTI8S7831C13[];
extern  VTBL_ENTRY _ZTV8S7831C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
static Base_Class bases_S7831C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7831C4,    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_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7831C13,    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_S731C17_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_S7831C4,    ABISELECT(24,16), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7831C16[];
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY vtc_S7831C16[] = {
  ABISELECT(24,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C16[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
  0,
  -8,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7831C16[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern VTBL_ENTRY _ZTV8S7831C16[];
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C13__8S7831C16[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C13[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C48S7831C13__8S7831C16[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__A1__8S7831C16[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
static  VTT_ENTRY vtt_S7831C16[] = {
  {&(_ZTV8S7831C16[4]),  4,11},
  {&(_tg__ZTV8S7831C13__8S7831C16[3]),  3,4},
  {&(_tg__ZTV7S7831C48S7831C13__8S7831C16[3]),  3,4},
  {&(_ZTV8S7831C16[10]),  10,11},
  {&(_tg__ZTV7S7831C4__A1__8S7831C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7831C16[];
extern  VTBL_ENTRY _ZTV8S7831C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C16[];
Class_Descriptor cd_S7831C16 = {  "S7831C16", // class name
  bases_S7831C16, 7,
  &(vtc_S7831C16[0]), // expected_vtbl_contents
  &(vtt_S7831C16[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S7831C16),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7831C16),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7831C16),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  S7831C14  : S3461C5_nt , S7831C7 , S28C52_nt , virtual S7831C16 , virtual S7831C11 {
  virtual  ~S7831C14(); // _ZN8S7831C14D2Ev
  S7831C14(); // tgen
};
//SIG(-1 S7831C14) C1{ BC2{ m FL} BC3{ BC2 VBC4{ m} BC5{ BC6{ VBC2 BC4 v1}} vd v2} BC7{ m} VBC8{ VBC2 BC9{ VBC2 BC6 BC4} VBC6 v3} VBC10{ BC2 VBC6 BC4 vd} vd}


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

static void Test_S7831C14()
{
  extern Class_Descriptor cd_S7831C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,14)];
    init_test(&cd_S7831C14, buf);
    S7831C14 *dp, &lv = *(dp=new (buf) S7831C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S7831C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7831C14)");
    /*is_ambiguous_... S7831C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(16,12), "S7831C14");
    /*is_ambiguous_... S7831C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C7*), ABISELECT(8,4), "S7831C14");
    /*is_ambiguous_... S7831C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C7*), ABISELECT(24,20), "S7831C14");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C8*)(S7831C7*), ABISELECT(24,20), "S7831C14");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C16*), ABISELECT(24,20), "S7831C14");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C13*)(S7831C16*), ABISELECT(24,20), "S7831C14");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C13*)(S7831C16*), ABISELECT(24,20), "S7831C14");
    /*is_ambiguous_... S7831C14::S7831C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*), ABISELECT(24,20), "S7831C14");
    check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C8*)(S7831C7*), 0, "S7831C14");
    check_base_class_offset(lv, (S7831C4*)(S7831C8*)(S7831C7*), 0, "S7831C14");
    check_base_class_offset(lv, (S7831C8*)(S7831C7*), 0, "S7831C14");
    check_base_class_offset(lv, (S7831C7*), 0, "S7831C14");
    check_base_class_offset(lv, (S28C52_nt*), 0, "S7831C14");
    check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C13*)(S7831C16*), ABISELECT(32,28), "S7831C14");
    check_base_class_offset(lv, (S7831C4*)(S7831C13*)(S7831C16*), ABISELECT(32,28), "S7831C14");
    /*is_ambiguous_... S7831C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C13*)(S7831C16*), ABISELECT(40,32), "S7831C14");
    check_base_class_offset(lv, (S7831C13*)(S7831C16*), ABISELECT(32,28), "S7831C14");
    /*is_ambiguous_... S7831C14::S7831C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*), ABISELECT(48,36), "S7831C14");
    /*is_ambiguous_... S7831C16::S7831C4 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C16*), ABISELECT(48,36), "S7831C14");
    check_base_class_offset(lv, (S7831C4*)(S7831C11*), ABISELECT(48,36), "S7831C14");
    check_base_class_offset(lv, (S7831C16*), ABISELECT(32,28), "S7831C14");
    /*is_ambiguous_... S7831C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C11*), ABISELECT(56,40), "S7831C14");
    /*is_ambiguous_... S7831C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C11*), ABISELECT(64,48), "S7831C14");
    check_base_class_offset(lv, (S7831C11*), ABISELECT(48,36), "S7831C14");
    test_class_info(&lv, &cd_S7831C14);
    dp->~S7831C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7831C14(Test_S7831C14, "S7831C14", ABISELECT(72,52));

#else // __cplusplus

extern void _ZN8S7831C14C1Ev();
extern void _ZN8S7831C14D2Ev();
Name_Map name_map_S7831C14[] = {
  NSPAIR(_ZN8S7831C14C1Ev),
  NSPAIR(_ZN8S7831C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C8;
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
extern Class_Descriptor cd_S7831C7;
extern VTBL_ENTRY _ZTI7S7831C7[];
extern  VTBL_ENTRY _ZTV7S7831C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C7[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C13;
extern VTBL_ENTRY _ZTI8S7831C13[];
extern  VTBL_ENTRY _ZTV8S7831C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C16;
extern VTBL_ENTRY _ZTI8S7831C16[];
extern  VTBL_ENTRY _ZTV8S7831C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C16[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C11;
extern VTBL_ENTRY _ZTI8S7831C11[];
extern  VTBL_ENTRY _ZTV8S7831C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C11[];
static Base_Class bases_S7831C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7831C4,    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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7831C8,    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_S7831C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S28C52_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(32,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7831C13,    ABISELECT(32,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
    3, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    14, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(48,36), //bcp->offset
    -1, //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
    1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7831C16,    ABISELECT(32,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_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
    18, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7831C11,    ABISELECT(48,36), //bcp->offset
    19, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7831C14[];
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C14D1Ev();
extern void _ZN8S7831C14D0Ev();
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7831C14D1Ev,_ZTv0_n24_N8S7831C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S7831C14D1Ev,_ZThn36_N8S7831C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7831C14D0Ev,_ZTv0_n24_N8S7831C14D0Ev)();
extern void ABISELECT(_ZThn48_N8S7831C14D0Ev,_ZThn36_N8S7831C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7831C14[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C14[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C14D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI8S7831C14[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
  ABISELECT(-48,-36),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S7831C14[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C14D1Ev,_ZTv0_n24_N8S7831C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C14D0Ev,_ZTv0_n24_N8S7831C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S7831C14[];
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C7D1Ev();
extern void _ZN7S7831C7D0Ev();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C7__8S7831C14[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C7[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C87S7831C7__8S7831C14[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C47S7831C87S7831C7__8S7831C14[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C16__8S7831C14[] = {
  ABISELECT(16,8),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C16[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C138S7831C16__8S7831C14[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C13[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C48S7831C138S7831C16__A1__8S7831C14[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__A1__8S7831C16__8S7831C14[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7831C16[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__A2__8S7831C14[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C11D1Ev();
extern void _ZN8S7831C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C11__8S7831C14[] = {
  0,
  0,
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D0Ev,
};
static  VTT_ENTRY vtt_S7831C14[] = {
  {&(_ZTV8S7831C14[7]),  7,28},
  {&(_tg__ZTV7S7831C7__8S7831C14[4]),  4,8},
  {&(_tg__ZTV7S7831C87S7831C7__8S7831C14[3]),  3,4},
  {&(_tg__ZTV7S7831C47S7831C87S7831C7__8S7831C14[3]),  3,4},
  {&(_ZTV8S7831C14[17]),  17,28},
  {&(_ZTV8S7831C14[25]),  25,28},
  {&(_ZTV8S7831C14[25]),  25,28},
  {&(_tg__ZTV8S7831C16__8S7831C14[4]),  4,6},
  {&(_tg__ZTV8S7831C138S7831C16__8S7831C14[3]),  3,4},
  {&(_tg__ZTV7S7831C48S7831C138S7831C16__A1__8S7831C14[3]),  3,4},
  {&(_tg__ZTV7S7831C4__A1__8S7831C16__8S7831C14[4]),  4,5},
  {&(_tg__ZTV7S7831C4__A2__8S7831C14[3]),  3,4},
  {&(_tg__ZTV8S7831C11__8S7831C14[5]),  5,8},
  {&(_tg__ZTV8S7831C11__8S7831C14[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S7831C14[];
extern  VTBL_ENTRY _ZTV8S7831C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C14[];
static VTBL_ENTRY alt_thunk_names42[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C14D0Ev,_ZTv0_n24_N8S7831C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7831C14D0Ev,_ZThn36_N8S7831C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C14D1Ev,_ZTv0_n24_N8S7831C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7831C14D1Ev,_ZThn36_N8S7831C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7831C14 = {  "S7831C14", // class name
  bases_S7831C14, 19,
  &(vtc_S7831C14[0]), // expected_vtbl_contents
  &(vtt_S7831C14[0]), // expected_vtt_contents
  ABISELECT(72,52), // object size
  NSPAIRA(_ZTI8S7831C14),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7831C14),28, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7831C14),14, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names42,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7831C12  : virtual S3461C5_nt , virtual S7831C13 , S7831C11 , virtual S7831C7 , S7831C14 {
  ~S7831C12(); // tgen
  S7831C12(); // tgen
};
//SIG(-1 S7831C12) C1{ VBC2{ m FL} VBC3{ VBC2 BC4{ VBC2 BC5{ m} v1} BC5} BC6{ BC2 VBC4 BC5 vd} VBC7{ BC2 VBC5 BC8{ BC4} vd v2} BC9{ BC2 BC7 BC10{ m} VBC11{ VBC2 BC3 VBC4 v3} VBC6 vd}}


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

static void Test_S7831C12()
{
  extern Class_Descriptor cd_S7831C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,24)];
    init_test(&cd_S7831C12, buf);
    S7831C12 *dp, &lv = *(dp=new (buf) S7831C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S7831C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7831C12)");
    /*is_ambiguous_... S7831C12::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(48,36), "S7831C12");
    /*is_ambiguous_... S7831C12::S7831C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C13*), ABISELECT(48,36), "S7831C12");
    /*is_ambiguous_... S7831C12::S7831C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C13*), ABISELECT(48,36), "S7831C12");
    /*is_ambiguous_... S7831C12::S7831C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*), ABISELECT(48,36), "S7831C12");
    /*is_ambiguous_... S7831C12::S7831C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C8*)(S7831C7*), ABISELECT(48,36), "S7831C12");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C8*)(S7831C7*)(S7831C14*), ABISELECT(48,36), "S7831C12");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C16*), ABISELECT(48,36), "S7831C12");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C13*)(S7831C16*), ABISELECT(48,36), "S7831C12");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C13*)(S7831C16*), ABISELECT(48,36), "S7831C12");
    /*is_ambiguous_... S7831C12::S7831C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C13*), ABISELECT(56,44), "S7831C12");
    /*is_ambiguous_... S7831C12::S7831C13 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C13*), ABISELECT(56,44), "S7831C12");
    /*is_ambiguous_... S7831C12::S7831C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C13*), ABISELECT(64,48), "S7831C12");
    /*is_ambiguous_... S7831C12::S7831C13 */ AMB_check_base_class_offset(lv, (S7831C13*), ABISELECT(56,44), "S7831C12");
    /*is_ambiguous_... S7831C12::S7831C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C11*), ABISELECT(8,4), "S7831C12");
    /*is_ambiguous_... S7831C12::S7831C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*), 0, "S7831C12");
    /*is_ambiguous_... S7831C12::S7831C11 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C11*), 0, "S7831C12");
    /*is_ambiguous_... S7831C16::S7831C4 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C16*), 0, "S7831C12");
    /*is_ambiguous_... S7831C12::S7831C11 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C11*), 0, "S7831C12");
    /*is_ambiguous_... S7831C12::S7831C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C11*), ABISELECT(16,12), "S7831C12");
    /*is_ambiguous_... S7831C12::S7831C11 */ AMB_check_base_class_offset(lv, (S7831C11*), 0, "S7831C12");
    /*is_ambiguous_... S7831C12::S7831C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C7*), ABISELECT(80,56), "S7831C12");
    /*is_ambiguous_... S7831C12::S7831C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C7*), ABISELECT(88,64), "S7831C12");
    /*is_ambiguous_... S7831C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C7*)(S7831C14*), ABISELECT(88,64), "S7831C12");
    /*is_ambiguous_... S7831C12::S7831C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C8*)(S7831C7*), ABISELECT(72,52), "S7831C12");
    /*is_ambiguous_... S7831C12::S7831C7 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C8*)(S7831C7*), ABISELECT(72,52), "S7831C12");
    /*is_ambiguous_... S7831C12::S7831C7 */ AMB_check_base_class_offset(lv, (S7831C8*)(S7831C7*), ABISELECT(72,52), "S7831C12");
    /*is_ambiguous_... S7831C12::S7831C7 */ AMB_check_base_class_offset(lv, (S7831C7*), ABISELECT(72,52), "S7831C12");
    /*is_ambiguous_... S7831C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C14*), ABISELECT(40,28), "S7831C12");
    /*is_ambiguous_... S7831C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C7*)(S7831C14*), ABISELECT(32,20), "S7831C12");
    check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C8*)(S7831C7*)(S7831C14*), ABISELECT(24,16), "S7831C12");
    check_base_class_offset(lv, (S7831C4*)(S7831C8*)(S7831C7*)(S7831C14*), ABISELECT(24,16), "S7831C12");
    check_base_class_offset(lv, (S7831C8*)(S7831C7*)(S7831C14*), ABISELECT(24,16), "S7831C12");
    check_base_class_offset(lv, (S7831C7*)(S7831C14*), ABISELECT(24,16), "S7831C12");
    check_base_class_offset(lv, (S28C52_nt*)(S7831C14*), ABISELECT(24,16), "S7831C12");
    check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C13*)(S7831C16*), ABISELECT(96,68), "S7831C12");
    check_base_class_offset(lv, (S7831C4*)(S7831C13*)(S7831C16*), ABISELECT(96,68), "S7831C12");
    /*is_ambiguous_... S7831C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C13*)(S7831C16*), ABISELECT(104,72), "S7831C12");
    check_base_class_offset(lv, (S7831C13*)(S7831C16*), ABISELECT(96,68), "S7831C12");
    check_base_class_offset(lv, (S7831C16*)(S7831C14*), ABISELECT(96,68), "S7831C12");
    /*is_ambiguous_... S7831C12::S7831C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C11*), ABISELECT(120,80), "S7831C12");
    /*is_ambiguous_... S7831C12::S7831C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C11*), ABISELECT(128,88), "S7831C12");
    check_base_class_offset(lv, (S7831C11*)(S7831C14*), ABISELECT(112,76), "S7831C12");
    check_base_class_offset(lv, (S7831C14*), ABISELECT(24,16), "S7831C12");
    test_class_info(&lv, &cd_S7831C12);
    dp->~S7831C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7831C12(Test_S7831C12, "S7831C12", ABISELECT(136,92));

#else // __cplusplus

extern void _ZN8S7831C12C1Ev();
extern void _ZN8S7831C12D1Ev();
Name_Map name_map_S7831C12[] = {
  NSPAIR(_ZN8S7831C12C1Ev),
  NSPAIR(_ZN8S7831C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C13;
extern VTBL_ENTRY _ZTI8S7831C13[];
extern  VTBL_ENTRY _ZTV8S7831C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C11;
extern VTBL_ENTRY _ZTI8S7831C11[];
extern  VTBL_ENTRY _ZTV8S7831C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C8;
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
extern Class_Descriptor cd_S7831C7;
extern VTBL_ENTRY _ZTI7S7831C7[];
extern  VTBL_ENTRY _ZTV7S7831C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C7[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C8;
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
extern Class_Descriptor cd_S7831C7;
extern VTBL_ENTRY _ZTI7S7831C7[];
extern  VTBL_ENTRY _ZTV7S7831C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C7[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C13;
extern VTBL_ENTRY _ZTI8S7831C13[];
extern  VTBL_ENTRY _ZTV8S7831C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C13[];
extern Class_Descriptor cd_S7831C16;
extern VTBL_ENTRY _ZTI8S7831C16[];
extern  VTBL_ENTRY _ZTV8S7831C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C16[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C11;
extern VTBL_ENTRY _ZTI8S7831C11[];
extern  VTBL_ENTRY _ZTV8S7831C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C11[];
extern Class_Descriptor cd_S7831C14;
extern VTBL_ENTRY _ZTI8S7831C14[];
extern  VTBL_ENTRY _ZTV8S7831C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C14[];
static Base_Class bases_S7831C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(56,44), //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
    4, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(64,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7831C13,    ABISELECT(56,44), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7831C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7831C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(88,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_S731C17_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
    13, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(72,52), //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
    14, //immediately_derived
  0, 0},
  {&cd_S7831C8,    ABISELECT(72,52), //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
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7831C7,    ABISELECT(72,52), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_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
    31, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7831C4,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7831C8,    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
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7831C7,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(104,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7831C13,    ABISELECT(96,68), //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
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7831C16,    ABISELECT(96,68), //bcp->offset
    40, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(120,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(128,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7831C11,    ABISELECT(112,76), //bcp->offset
    48, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S7831C14,    ABISELECT(24,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7831C12[];
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C12D1Ev();
extern void _ZN8S7831C12D0Ev();
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZThn24_N8S7831C12D1Ev,_ZThn16_N8S7831C12D1Ev)();
extern void ABISELECT(_ZThn24_N8S7831C12D0Ev,_ZThn16_N8S7831C12D0Ev)();
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev)();
extern void ABISELECT(_ZThn72_N8S7831C12D1Ev,_ZThn52_N8S7831C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev)();
extern void ABISELECT(_ZThn72_N8S7831C12D0Ev,_ZThn52_N8S7831C12D0Ev)() __attribute__((weak));
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev)();
extern void ABISELECT(_ZThn112_N8S7831C12D1Ev,_ZThn76_N8S7831C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev)();
extern void ABISELECT(_ZThn112_N8S7831C12D0Ev,_ZThn76_N8S7831C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7831C12[] = {
  ABISELECT(112,76),
  ABISELECT(96,68),
  ABISELECT(88,64),
  ABISELECT(72,52),
  ABISELECT(56,44),
  0,
  0,
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C12D0Ev,
  ABISELECT(88,60),
  ABISELECT(-24,-16),
  ABISELECT(72,52),
  ABISELECT(64,48),
  ABISELECT(24,20),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7831C12D1Ev,_ZThn16_N8S7831C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7831C12D0Ev,_ZThn16_N8S7831C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  0,
  -8,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  0,
  0,
  ABISELECT(-96,-68),
  ABISELECT(-48,-32),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-64,-40),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S7831C12[];
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C11D1Ev();
extern void _ZN8S7831C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C11__A__8S7831C12[] = {
  0,
  0,
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D0Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C14D1Ev();
extern void _ZN8S7831C14D0Ev();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C14__8S7831C12[] = {
  ABISELECT(88,60),
  ABISELECT(-24,-16),
  ABISELECT(72,52),
  ABISELECT(64,48),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C14[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C14D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C7D1Ev();
extern void _ZN7S7831C7D0Ev();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C78S7831C14__A1__8S7831C12[] = {
  ABISELECT(64,48),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C7[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C87S7831C78S7831C14__A1__8S7831C12[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C47S7831C87S7831C78S7831C14__A3__8S7831C12[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C16__8S7831C14__8S7831C12[] = {
  0,
  0,
  ABISELECT(-96,-68),
  ABISELECT(-48,-32),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI8S7831C14[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__A2__8S7831C14__8S7831C12[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7831C14[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7831C14D1Ev,_ZTv0_n24_N8S7831C14D1Ev)();
extern void ABISELECT(_ZThn88_N8S7831C14D1Ev,_ZThn60_N8S7831C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7831C14D0Ev,_ZTv0_n24_N8S7831C14D0Ev)();
extern void ABISELECT(_ZThn88_N8S7831C14D0Ev,_ZThn60_N8S7831C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7831C11__8S7831C14__8S7831C12[] = {
  ABISELECT(-88,-60),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-64,-40),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S7831C14[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C14D1Ev,_ZTv0_n24_N8S7831C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C14D0Ev,_ZTv0_n24_N8S7831C14D0Ev),
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C13__8S7831C12[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C13[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C48S7831C13__8S7831C12[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__A1__8S7831C12[] = {
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C7D1Ev();
extern void _ZN7S7831C7D0Ev();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C7__8S7831C12[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C7[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C87S7831C7__8S7831C12[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C47S7831C87S7831C7__A2__8S7831C12[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C16__8S7831C12[] = {
  ABISELECT(-96,-68),
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C16[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C138S7831C16__A1__8S7831C12[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C13[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C48S7831C138S7831C16__A4__8S7831C12[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__A1__8S7831C16__8S7831C12[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI8S7831C16[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C11D1Ev();
extern void _ZN8S7831C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C11__A1__8S7831C12[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D0Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__8S7831C11__A1__8S7831C12[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(112,76),
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
static  VTT_ENTRY vtt_S7831C12[] = {
  {&(_ZTV8S7831C12[10]),  10,57},
  {&(_tg__ZTV8S7831C11__A__8S7831C12[5]),  5,8},
  {&(_tg__ZTV8S7831C11__A__8S7831C12[5]),  5,8},
  {&(_tg__ZTV8S7831C14__8S7831C12[7]),  7,11},
  {&(_tg__ZTV7S7831C78S7831C14__A1__8S7831C12[4]),  4,8},
  {&(_tg__ZTV7S7831C87S7831C78S7831C14__A1__8S7831C12[3]),  3,4},
  {&(_tg__ZTV7S7831C47S7831C87S7831C78S7831C14__A3__8S7831C12[3]),  3,4},
  {&(_tg__ZTV8S7831C16__8S7831C14__8S7831C12[6]),  6,8},
  {&(_tg__ZTV7S7831C4__A2__8S7831C14__8S7831C12[4]),  4,5},
  {&(_tg__ZTV8S7831C11__8S7831C14__8S7831C12[6]),  6,9},
  {&(_ZTV8S7831C12[28]),  28,57},
  {&(_ZTV8S7831C12[10]),  10,57},
  {&(_ZTV8S7831C12[36]),  36,57},
  {&(_ZTV8S7831C12[20]),  20,57},
  {&(_ZTV8S7831C12[46]),  46,57},
  {&(_ZTV8S7831C12[54]),  54,57},
  {&(_tg__ZTV8S7831C13__8S7831C12[3]),  3,4},
  {&(_tg__ZTV7S7831C48S7831C13__8S7831C12[3]),  3,4},
  {&(_tg__ZTV7S7831C4__A1__8S7831C12[3]),  3,4},
  {&(_tg__ZTV7S7831C7__8S7831C12[4]),  4,8},
  {&(_tg__ZTV7S7831C87S7831C7__8S7831C12[3]),  3,4},
  {&(_tg__ZTV7S7831C47S7831C87S7831C7__A2__8S7831C12[3]),  3,4},
  {&(_tg__ZTV8S7831C16__8S7831C12[4]),  4,6},
  {&(_tg__ZTV8S7831C138S7831C16__A1__8S7831C12[3]),  3,4},
  {&(_tg__ZTV7S7831C48S7831C138S7831C16__A4__8S7831C12[3]),  3,4},
  {&(_tg__ZTV7S7831C4__A1__8S7831C16__8S7831C12[4]),  4,5},
  {&(_tg__ZTV8S7831C11__A1__8S7831C12[5]),  5,8},
  {&(_tg__ZTV7S7831C4__8S7831C11__A1__8S7831C12[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S7831C12[];
extern  VTBL_ENTRY _ZTV8S7831C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C12[];
static VTBL_ENTRY alt_thunk_names43[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C14D0Ev,_ZTv0_n24_N8S7831C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7831C14D0Ev,_ZThn60_N8S7831C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C14D1Ev,_ZTv0_n24_N8S7831C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7831C14D1Ev,_ZThn60_N8S7831C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7831C12D0Ev,_ZThn76_N8S7831C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7831C12D0Ev,_ZThn52_N8S7831C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7831C12D1Ev,_ZThn76_N8S7831C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7831C12D1Ev,_ZThn52_N8S7831C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7831C12 = {  "S7831C12", // class name
  bases_S7831C12, 32,
  &(vtc_S7831C12[0]), // expected_vtbl_contents
  &(vtt_S7831C12[0]), // expected_vtt_contents
  ABISELECT(136,92), // object size
  NSPAIRA(_ZTI8S7831C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7831C12),57, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7831C12),28, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names43,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7831C18  : virtual S7831C8 {
  int s7831c18f0;
  ~S7831C18(); // tgen
  S7831C18(); // tgen
};
//SIG(-1 S7831C18) C1{ VBC2{ BC3{ VBC4{ m FL} BC5{ m} v1}} Fi}


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

static void Test_S7831C18()
{
  extern Class_Descriptor cd_S7831C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7831C18, buf);
    S7831C18 *dp, &lv = *(dp=new (buf) S7831C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7831C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7831C18)");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C8*), ABISELECT(16,8), "S7831C18");
    check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C8*), 0, "S7831C18");
    check_base_class_offset(lv, (S7831C4*)(S7831C8*), 0, "S7831C18");
    check_base_class_offset(lv, (S7831C8*), 0, "S7831C18");
    check_field_offset(lv, s7831c18f0, ABISELECT(8,4), "S7831C18.s7831c18f0");
    test_class_info(&lv, &cd_S7831C18);
    dp->~S7831C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7831C18(Test_S7831C18, "S7831C18", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S7831C18C1Ev();
extern void _ZN8S7831C18D1Ev();
Name_Map name_map_S7831C18[] = {
  NSPAIR(_ZN8S7831C18C1Ev),
  NSPAIR(_ZN8S7831C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C8;
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
static Base_Class bases_S7831C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7831C4,    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
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7831C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7831C18[];
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY vtc_S7831C18[] = {
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C18[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern VTBL_ENTRY _ZTV8S7831C18[];
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C8__8S7831C18[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C47S7831C8__8S7831C18[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
static  VTT_ENTRY vtt_S7831C18[] = {
  {&(_ZTV8S7831C18[5]),  5,6},
  {&(_ZTV8S7831C18[5]),  5,6},
  {&(_tg__ZTV7S7831C8__8S7831C18[3]),  3,4},
  {&(_tg__ZTV7S7831C47S7831C8__8S7831C18[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7831C18[];
extern  VTBL_ENTRY _ZTV8S7831C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C18[];
Class_Descriptor cd_S7831C18 = {  "S7831C18", // class name
  bases_S7831C18, 4,
  &(vtc_S7831C18[0]), // expected_vtbl_contents
  &(vtt_S7831C18[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S7831C18),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7831C18),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7831C18),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  S7831C17  : virtual S7831C18 , S7831C3 , virtual S7831C11 , virtual S7831C12 {
  void *s7831c17f0[9];
  virtual  ~S7831C17(); // _ZN8S7831C17D2Ev
  S7831C17(); // tgen
};
//SIG(-1 S7831C17) C1{ VBC2{ VBC3{ BC4{ VBC5{ m FL} BC6{ m} v1}} Fi} BC7{ VBC4 BC8{ BC5 VBC6 BC3 vd v2} vd v3} VBC9{ BC5 VBC4 BC6 vd} VBC10{ VBC5 VBC11{ VBC5 BC4 BC6} BC9 VBC8 BC12{ BC5 BC8 BC13{ m} VBC14{ VBC5 BC11 VBC4 v4} VBC9 vd}} vd Fp[9]}


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

static void Test_S7831C17()
{
  extern Class_Descriptor cd_S7831C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,38)];
    init_test(&cd_S7831C17, buf);
    S7831C17 *dp, &lv = *(dp=new (buf) S7831C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,148), "sizeof(S7831C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7831C17)");
    /*is_ambiguous_... S7831C17::S7831C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C8*), ABISELECT(104,56), "S7831C17");
    /*is_ambiguous_... S7831C17::S7831C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*), ABISELECT(104,56), "S7831C17");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C8*)(S7831C7*)(S7831C3*), ABISELECT(104,56), "S7831C17");
    /*is_ambiguous_... S7831C12::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C12*), ABISELECT(104,56), "S7831C17");
    /*is_ambiguous_... S7831C17::S7831C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C13*), ABISELECT(104,56), "S7831C17");
    /*is_ambiguous_... S7831C17::S7831C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C13*), ABISELECT(104,56), "S7831C17");
    /*is_ambiguous_... S7831C17::S7831C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C8*)(S7831C7*), ABISELECT(104,56), "S7831C17");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C8*)(S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(104,56), "S7831C17");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C16*), ABISELECT(104,56), "S7831C17");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C13*)(S7831C16*), ABISELECT(104,56), "S7831C17");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C13*)(S7831C16*), ABISELECT(104,56), "S7831C17");
    /*is_ambiguous_... S7831C17::S7831C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C8*), ABISELECT(88,48), "S7831C17");
    /*is_ambiguous_... S7831C17::S7831C8 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C8*), ABISELECT(88,48), "S7831C17");
    check_base_class_offset(lv, (S7831C8*)(S7831C18*), ABISELECT(88,48), "S7831C17");
    check_base_class_offset(lv, (S7831C18*), ABISELECT(88,48), "S7831C17");
    /*is_ambiguous_... S7831C17::S7831C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*), ABISELECT(120,68), "S7831C17");
    /*is_ambiguous_... S7831C3::S7831C4 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C3*), ABISELECT(120,68), "S7831C17");
    /*is_ambiguous_... S7831C17::S7831C11 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C11*), ABISELECT(120,68), "S7831C17");
    /*is_ambiguous_... S7831C12::S7831C11 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C11*)(S7831C12*), ABISELECT(120,68), "S7831C17");
    /*is_ambiguous_... S7831C16::S7831C4 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C16*), ABISELECT(120,68), "S7831C17");
    /*is_ambiguous_... S7831C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C7*)(S7831C3*), ABISELECT(8,4), "S7831C17");
    /*is_ambiguous_... S7831C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C7*)(S7831C3*), ABISELECT(112,64), "S7831C17");
    /*is_ambiguous_... S7831C17::S7831C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C7*), ABISELECT(112,64), "S7831C17");
    /*is_ambiguous_... S7831C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(112,64), "S7831C17");
    check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C8*)(S7831C7*)(S7831C3*), 0, "S7831C17");
    check_base_class_offset(lv, (S7831C4*)(S7831C8*)(S7831C7*)(S7831C3*), 0, "S7831C17");
    check_base_class_offset(lv, (S7831C8*)(S7831C7*)(S7831C3*), 0, "S7831C17");
    check_base_class_offset(lv, (S7831C7*)(S7831C3*), 0, "S7831C17");
    check_base_class_offset(lv, (S7831C3*), 0, "S7831C17");
    /*is_ambiguous_... S7831C17::S7831C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C11*), ABISELECT(128,72), "S7831C17");
    /*is_ambiguous_... S7831C17::S7831C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C11*), ABISELECT(136,80), "S7831C17");
    /*is_ambiguous_... S7831C17::S7831C11 */ AMB_check_base_class_offset(lv, (S7831C11*), ABISELECT(120,68), "S7831C17");
    check_base_class_offset(lv, (S7831C11*)(S7831C14*)(S7831C12*), ABISELECT(120,68), "S7831C17");
    /*is_ambiguous_... S7831C17::S7831C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C13*), ABISELECT(192,120), "S7831C17");
    /*is_ambiguous_... S7831C17::S7831C13 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C13*), ABISELECT(192,120), "S7831C17");
    /*is_ambiguous_... S7831C17::S7831C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C13*), ABISELECT(200,124), "S7831C17");
    /*is_ambiguous_... S7831C12::S7831C13 */ AMB_check_base_class_offset(lv, (S7831C13*)(S7831C12*), ABISELECT(192,120), "S7831C17");
    /*is_ambiguous_... S7831C12::S7831C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C11*)(S7831C12*), ABISELECT(152,88), "S7831C17");
    /*is_ambiguous_... S7831C12::S7831C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C11*)(S7831C12*), ABISELECT(160,96), "S7831C17");
    /*is_ambiguous_... S7831C12::S7831C11 */ AMB_check_base_class_offset(lv, (S7831C11*)(S7831C12*), ABISELECT(144,84), "S7831C17");
    /*is_ambiguous_... S7831C17::S7831C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C7*), ABISELECT(216,132), "S7831C17");
    /*is_ambiguous_... S7831C17::S7831C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C8*)(S7831C7*), ABISELECT(208,128), "S7831C17");
    /*is_ambiguous_... S7831C17::S7831C7 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C8*)(S7831C7*), ABISELECT(208,128), "S7831C17");
    /*is_ambiguous_... S7831C17::S7831C7 */ AMB_check_base_class_offset(lv, (S7831C8*)(S7831C7*), ABISELECT(208,128), "S7831C17");
    /*is_ambiguous_... S7831C12::S7831C7 */ AMB_check_base_class_offset(lv, (S7831C7*)(S7831C12*), ABISELECT(208,128), "S7831C17");
    /*is_ambiguous_... S7831C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C14*)(S7831C12*), ABISELECT(184,112), "S7831C17");
    /*is_ambiguous_... S7831C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(176,104), "S7831C17");
    check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C8*)(S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(168,100), "S7831C17");
    check_base_class_offset(lv, (S7831C4*)(S7831C8*)(S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(168,100), "S7831C17");
    check_base_class_offset(lv, (S7831C8*)(S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(168,100), "S7831C17");
    check_base_class_offset(lv, (S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(168,100), "S7831C17");
    check_base_class_offset(lv, (S28C52_nt*)(S7831C14*)(S7831C12*), ABISELECT(168,100), "S7831C17");
    check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C13*)(S7831C16*), ABISELECT(224,140), "S7831C17");
    check_base_class_offset(lv, (S7831C4*)(S7831C13*)(S7831C16*), ABISELECT(224,140), "S7831C17");
    /*is_ambiguous_... S7831C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C13*)(S7831C16*), ABISELECT(232,144), "S7831C17");
    check_base_class_offset(lv, (S7831C13*)(S7831C16*), ABISELECT(224,140), "S7831C17");
    check_base_class_offset(lv, (S7831C16*)(S7831C14*)(S7831C12*), ABISELECT(224,140), "S7831C17");
    check_base_class_offset(lv, (S7831C14*)(S7831C12*), ABISELECT(168,100), "S7831C17");
    check_base_class_offset(lv, (S7831C12*), ABISELECT(144,84), "S7831C17");
    check_field_offset(lv, s7831c17f0, ABISELECT(16,12), "S7831C17.s7831c17f0");
    test_class_info(&lv, &cd_S7831C17);
    dp->~S7831C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7831C17(Test_S7831C17, "S7831C17", ABISELECT(240,148));

#else // __cplusplus

extern void _ZN8S7831C17C1Ev();
extern void _ZN8S7831C17D2Ev();
Name_Map name_map_S7831C17[] = {
  NSPAIR(_ZN8S7831C17C1Ev),
  NSPAIR(_ZN8S7831C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C8;
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
extern Class_Descriptor cd_S7831C18;
extern VTBL_ENTRY _ZTI8S7831C18[];
extern  VTBL_ENTRY _ZTV8S7831C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C18[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C8;
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
extern Class_Descriptor cd_S7831C7;
extern VTBL_ENTRY _ZTI7S7831C7[];
extern  VTBL_ENTRY _ZTV7S7831C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C7[];
extern Class_Descriptor cd_S7831C3;
extern VTBL_ENTRY _ZTI7S7831C3[];
extern  VTBL_ENTRY _ZTV7S7831C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C11;
extern VTBL_ENTRY _ZTI8S7831C11[];
extern  VTBL_ENTRY _ZTV8S7831C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C11[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C13;
extern VTBL_ENTRY _ZTI8S7831C13[];
extern  VTBL_ENTRY _ZTV8S7831C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C11;
extern VTBL_ENTRY _ZTI8S7831C11[];
extern  VTBL_ENTRY _ZTV8S7831C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C8;
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
extern Class_Descriptor cd_S7831C7;
extern VTBL_ENTRY _ZTI7S7831C7[];
extern  VTBL_ENTRY _ZTV7S7831C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C7[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C8;
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
extern Class_Descriptor cd_S7831C7;
extern VTBL_ENTRY _ZTI7S7831C7[];
extern  VTBL_ENTRY _ZTV7S7831C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C7[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C13;
extern VTBL_ENTRY _ZTI8S7831C13[];
extern  VTBL_ENTRY _ZTV8S7831C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C13[];
extern Class_Descriptor cd_S7831C16;
extern VTBL_ENTRY _ZTI8S7831C16[];
extern  VTBL_ENTRY _ZTV8S7831C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C16[];
extern Class_Descriptor cd_S7831C14;
extern VTBL_ENTRY _ZTI8S7831C14[];
extern  VTBL_ENTRY _ZTV8S7831C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C14[];
extern Class_Descriptor cd_S7831C12;
extern VTBL_ENTRY _ZTI8S7831C12[];
extern  VTBL_ENTRY _ZTV8S7831C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C12[];
static Base_Class bases_S7831C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(88,48), //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_S7831C8,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7831C18,    ABISELECT(88,48), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7831C4,    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
    20, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7831C8,    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
    21, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7831C7,    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
    22, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7831C3,    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
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    16, //immediately_derived
  0, 0},
  {&cd_S7831C11,    ABISELECT(120,68), //bcp->offset
    23, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    20, //immediately_derived
  0, 0},
  {&cd_S7831C13,    ABISELECT(192,120), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(152,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    23, //immediately_derived
  0, 0},
  {&cd_S7831C11,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(216,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    26, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7831C8,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7831C7,    ABISELECT(208,128), //bcp->offset
    63, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S3461C5_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
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(176,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
    34, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    32, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7831C8,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7831C7,    ABISELECT(168,100), //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
    17, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    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
    41, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(232,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7831C13,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7831C16,    ABISELECT(224,140), //bcp->offset
    74, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S7831C14,    ABISELECT(168,100), //bcp->offset
    47, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7831C12,    ABISELECT(144,84), //bcp->offset
    32, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7831C17[];
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C17D1Ev();
extern void _ZN8S7831C17D0Ev();
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C32v3Ev();
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7831C17D1Ev,_ZTv0_n24_N8S7831C17D1Ev)();
extern void ABISELECT(_ZThn120_N8S7831C17D1Ev,_ZThn68_N8S7831C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7831C17D0Ev,_ZTv0_n24_N8S7831C17D0Ev)();
extern void ABISELECT(_ZThn120_N8S7831C17D0Ev,_ZThn68_N8S7831C17D0Ev)() __attribute__((weak));
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S7831C17D1Ev,_ZTv0_n44_N8S7831C17D1Ev)();
extern void ABISELECT(_ZThn144_N8S7831C17D1Ev,_ZThn84_N8S7831C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7831C17D0Ev,_ZTv0_n44_N8S7831C17D0Ev)();
extern void ABISELECT(_ZThn144_N8S7831C17D0Ev,_ZThn84_N8S7831C17D0Ev)() __attribute__((weak));
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S7831C17D1Ev,_ZTvn16_n44_N8S7831C17D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S7831C17D0Ev,_ZTvn16_n44_N8S7831C17D0Ev)();
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7831C17D1Ev,_ZTv0_n24_N8S7831C17D1Ev)();
extern void ABISELECT(_ZThn208_N8S7831C17D1Ev,_ZThn128_N8S7831C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7831C17D0Ev,_ZTv0_n24_N8S7831C17D0Ev)();
extern void ABISELECT(_ZThn208_N8S7831C17D0Ev,_ZThn128_N8S7831C17D0Ev)() __attribute__((weak));
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
static  VTBL_ENTRY vtc_S7831C17[] = {
  ABISELECT(224,140),
  ABISELECT(208,128),
  ABISELECT(192,120),
  ABISELECT(144,84),
  ABISELECT(120,68),
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(120,68),
  ABISELECT(112,64),
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C17D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7831C32v3Ev,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  ABISELECT(-120,-68),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C17D1Ev,_ZTv0_n24_N8S7831C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C17D0Ev,_ZTv0_n24_N8S7831C17D0Ev),
  ABISELECT(24,16),
  ABISELECT(-144,-84),
  ABISELECT(-24,-16),
  ABISELECT(80,56),
  ABISELECT(-32,-20),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-40,-28),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7831C17D1Ev,_ZTv0_n44_N8S7831C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7831C17D0Ev,_ZTv0_n44_N8S7831C17D0Ev),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(56,40),
  ABISELECT(-56,-36),
  ABISELECT(-64,-44),
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S7831C17D1Ev,_ZTvn16_n44_N8S7831C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S7831C17D0Ev,_ZTvn16_n44_N8S7831C17D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  0,
  ABISELECT(-88,-64),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  0,
  ABISELECT(-208,-128),
  0,
  ABISELECT(-96,-64),
  ABISELECT(-104,-72),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C17D1Ev,_ZTv0_n24_N8S7831C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C17D0Ev,_ZTv0_n24_N8S7831C17D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  0,
  0,
  ABISELECT(-104,-72),
  ABISELECT(-120,-84),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
};
extern VTBL_ENTRY _ZTV8S7831C17[];
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C3D1Ev();
extern void _ZN7S7831C3D0Ev();
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C3__8S7831C17[] = {
  ABISELECT(120,68),
  ABISELECT(112,64),
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C3[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7831C32v3Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C7D1Ev();
extern void _ZN7S7831C7D0Ev();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C77S7831C3__8S7831C17[] = {
  ABISELECT(112,64),
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C7[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C87S7831C77S7831C3__A1__8S7831C17[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C47S7831C87S7831C77S7831C3__A2__8S7831C17[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__7S7831C3__8S7831C17[] = {
  0,
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7831C3[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C18__8S7831C17[] = {
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C18[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C8__8S7831C17[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C47S7831C8__8S7831C17[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__A1__8S7831C17[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C11D1Ev();
extern void _ZN8S7831C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C11__8S7831C17[] = {
  0,
  0,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D0Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C12D1Ev();
extern void _ZN8S7831C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C12__8S7831C17[] = {
  ABISELECT(-24,-16),
  ABISELECT(80,56),
  ABISELECT(-32,-20),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C12D0Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C11D1Ev();
extern void _ZN8S7831C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C118S7831C12__A1__8S7831C17[] = {
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D0Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__8S7831C118S7831C12__A1__8S7831C17[] = {
  0,
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C14D1Ev();
extern void _ZN8S7831C14D0Ev();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C148S7831C12__8S7831C17[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(56,40),
  ABISELECT(-56,-36),
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C14[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C14D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C7D1Ev();
extern void _ZN7S7831C7D0Ev();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C78S7831C148S7831C12__A2__8S7831C17[] = {
  ABISELECT(-56,-36),
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C7[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C87S7831C78S7831C148S7831C12__A3__8S7831C17[] = {
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C47S7831C87S7831C78S7831C148S7831C12__A5__8S7831C17[] = {
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C16__8S7831C148S7831C12__8S7831C17[] = {
  0,
  0,
  ABISELECT(-104,-72),
  ABISELECT(-120,-84),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S7831C14[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7831C14D1Ev,_ZTv0_n24_N8S7831C14D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7831C14D0Ev,_ZTv0_n24_N8S7831C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7831C11__8S7831C148S7831C12__8S7831C17[] = {
  ABISELECT(48,32),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S7831C14[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C14D1Ev,_ZTv0_n24_N8S7831C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C14D0Ev,_ZTv0_n24_N8S7831C14D0Ev),
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C13__8S7831C12__8S7831C17[] = {
  0,
  ABISELECT(-88,-64),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7831C11__A1__8S7831C12__8S7831C17[] = {
  ABISELECT(24,16),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev),
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev)();
extern void ABISELECT(_ZThn64_N8S7831C12D1Ev,_ZThn44_N8S7831C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev)();
extern void ABISELECT(_ZThn64_N8S7831C12D0Ev,_ZThn44_N8S7831C12D0Ev)() __attribute__((weak));
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C7__8S7831C12__8S7831C17[] = {
  0,
  ABISELECT(-64,-44),
  0,
  ABISELECT(-96,-64),
  ABISELECT(-104,-72),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZThn24_N8S7831C12D1Ev,_ZThn16_N8S7831C12D1Ev)();
extern void ABISELECT(_ZThn24_N8S7831C12D0Ev,_ZThn16_N8S7831C12D0Ev)();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C14__8S7831C12__8S7831C17[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(56,40),
  ABISELECT(-56,-36),
  ABISELECT(-64,-44),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7831C12D1Ev,_ZThn16_N8S7831C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7831C12D0Ev,_ZThn16_N8S7831C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C16__8S7831C12__8S7831C17[] = {
  0,
  0,
  ABISELECT(-104,-72),
  ABISELECT(-120,-84),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C13__8S7831C17[] = {
  ABISELECT(-88,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C13[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C48S7831C13__A3__8S7831C17[] = {
  ABISELECT(-88,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C7D1Ev();
extern void _ZN7S7831C7D0Ev();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C7__A1__8S7831C17[] = {
  ABISELECT(-96,-64),
  ABISELECT(-104,-72),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C7[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C87S7831C7__A2__8S7831C17[] = {
  ABISELECT(-104,-72),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C47S7831C87S7831C7__A4__8S7831C17[] = {
  ABISELECT(-104,-72),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C16__8S7831C17[] = {
  ABISELECT(-104,-72),
  ABISELECT(-120,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C16[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C138S7831C16__A1__8S7831C17[] = {
  ABISELECT(-120,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C13[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C48S7831C138S7831C16__A6__8S7831C17[] = {
  ABISELECT(-120,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__A1__8S7831C16__8S7831C17[] = {
  0,
  ABISELECT(-16,-12),
  ABISELECT(104,72),
  (VTBL_ENTRY)&(_ZTI8S7831C16[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
static  VTT_ENTRY vtt_S7831C17[] = {
  {&(_ZTV8S7831C17[12]),  12,82},
  {&(_tg__ZTV7S7831C3__8S7831C17[5]),  5,10},
  {&(_tg__ZTV7S7831C77S7831C3__8S7831C17[4]),  4,8},
  {&(_tg__ZTV7S7831C87S7831C77S7831C3__A1__8S7831C17[3]),  3,4},
  {&(_tg__ZTV7S7831C47S7831C87S7831C77S7831C3__A2__8S7831C17[3]),  3,4},
  {&(_tg__ZTV7S7831C4__7S7831C3__8S7831C17[4]),  4,5},
  {&(_ZTV8S7831C17[22]),  22,82},
  {&(_ZTV8S7831C17[22]),  22,82},
  {&(_ZTV8S7831C17[29]),  29,82},
  {&(_ZTV8S7831C17[29]),  29,82},
  {&(_ZTV8S7831C17[44]),  44,82},
  {&(_ZTV8S7831C17[62]),  62,82},
  {&(_ZTV8S7831C17[70]),  70,82},
  {&(_ZTV8S7831C17[54]),  54,82},
  {&(_ZTV8S7831C17[80]),  80,82},
  {&(_tg__ZTV8S7831C18__8S7831C17[5]),  5,6},
  {&(_tg__ZTV8S7831C18__8S7831C17[5]),  5,6},
  {&(_tg__ZTV7S7831C8__8S7831C17[3]),  3,4},
  {&(_tg__ZTV7S7831C47S7831C8__8S7831C17[3]),  3,4},
  {&(_tg__ZTV7S7831C4__A1__8S7831C17[3]),  3,4},
  {&(_tg__ZTV8S7831C11__8S7831C17[5]),  5,8},
  {&(_tg__ZTV8S7831C11__8S7831C17[5]),  5,8},
  {&(_tg__ZTV8S7831C12__8S7831C17[10]),  10,13},
  {&(_tg__ZTV8S7831C118S7831C12__A1__8S7831C17[5]),  5,8},
  {&(_tg__ZTV7S7831C4__8S7831C118S7831C12__A1__8S7831C17[4]),  4,5},
  {&(_tg__ZTV8S7831C148S7831C12__8S7831C17[7]),  7,11},
  {&(_tg__ZTV7S7831C78S7831C148S7831C12__A2__8S7831C17[4]),  4,8},
  {&(_tg__ZTV7S7831C87S7831C78S7831C148S7831C12__A3__8S7831C17[3]),  3,4},
  {&(_tg__ZTV7S7831C47S7831C87S7831C78S7831C148S7831C12__A5__8S7831C17[3]),  3,4},
  {&(_tg__ZTV8S7831C16__8S7831C148S7831C12__8S7831C17[6]),  6,8},
  {&(_tg__ZTV8S7831C11__8S7831C148S7831C12__8S7831C17[6]),  6,9},
  {&(_tg__ZTV8S7831C11__8S7831C148S7831C12__8S7831C17[6]),  6,9},
  {&(_tg__ZTV8S7831C13__8S7831C12__8S7831C17[4]),  4,5},
  {&(_tg__ZTV8S7831C11__A1__8S7831C12__8S7831C17[6]),  6,9},
  {&(_tg__ZTV7S7831C7__8S7831C12__8S7831C17[7]),  7,11},
  {&(_tg__ZTV8S7831C14__8S7831C12__8S7831C17[7]),  7,11},
  {&(_tg__ZTV8S7831C16__8S7831C12__8S7831C17[6]),  6,8},
  {&(_tg__ZTV8S7831C11__A1__8S7831C12__8S7831C17[6]),  6,9},
  {&(_tg__ZTV8S7831C13__8S7831C17[3]),  3,4},
  {&(_tg__ZTV7S7831C48S7831C13__A3__8S7831C17[3]),  3,4},
  {&(_tg__ZTV7S7831C7__A1__8S7831C17[4]),  4,8},
  {&(_tg__ZTV7S7831C87S7831C7__A2__8S7831C17[3]),  3,4},
  {&(_tg__ZTV7S7831C47S7831C87S7831C7__A4__8S7831C17[3]),  3,4},
  {&(_tg__ZTV8S7831C16__8S7831C17[4]),  4,6},
  {&(_tg__ZTV8S7831C138S7831C16__A1__8S7831C17[3]),  3,4},
  {&(_tg__ZTV7S7831C48S7831C138S7831C16__A6__8S7831C17[3]),  3,4},
  {&(_tg__ZTV7S7831C4__A1__8S7831C16__8S7831C17[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S7831C17[];
extern  VTBL_ENTRY _ZTV8S7831C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C17[];
static VTBL_ENTRY alt_thunk_names44[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7831C12D0Ev,_ZThn44_N8S7831C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7831C12D1Ev,_ZThn44_N8S7831C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7831C17D0Ev,_ZTv0_n44_N8S7831C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7831C17D0Ev,_ZThn84_N8S7831C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7831C17D1Ev,_ZTv0_n44_N8S7831C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7831C17D1Ev,_ZThn84_N8S7831C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C17D0Ev,_ZTv0_n24_N8S7831C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7831C17D0Ev,_ZThn128_N8S7831C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7831C17D0Ev,_ZThn68_N8S7831C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C17D1Ev,_ZTv0_n24_N8S7831C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7831C17D1Ev,_ZThn128_N8S7831C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S7831C17D1Ev,_ZThn68_N8S7831C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7831C17 = {  "S7831C17", // class name
  bases_S7831C17, 43,
  &(vtc_S7831C17[0]), // expected_vtbl_contents
  &(vtt_S7831C17[0]), // expected_vtt_contents
  ABISELECT(240,148), // object size
  NSPAIRA(_ZTI8S7831C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7831C17),82, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7831C17),47, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names44,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7831C9  : virtual S7831C4 , virtual S7831C10 , virtual S7831C12 , S7831C17 {
  virtual  ~S7831C9(); // _ZN7S7831C9D2Ev
  S7831C9(); // tgen
};
//SIG(-1 S7831C9) C1{ VBC2{ VBC3{ m FL} BC4{ m} v1} VBC5{ BC4 VBC2 BC6{ BC3 VBC2 BC4 vd} BC3 vd FL} VBC7{ VBC3 VBC8{ VBC3 BC2 BC4} BC6 VBC9{ BC3 VBC4 BC10{ BC2} vd v2} BC11{ BC3 BC9 BC12{ m} VBC13{ VBC3 BC8 VBC2 v3} VBC6 vd}} BC14{ VBC15{ VBC10 Fi} BC16{ VBC2 BC9 vd v4} VBC6 VBC7 vd Fp[9]} vd}


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

static void Test_S7831C9()
{
  extern Class_Descriptor cd_S7831C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,46)];
    init_test(&cd_S7831C9, buf);
    S7831C9 *dp, &lv = *(dp=new (buf) S7831C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,180), "sizeof(S7831C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7831C9)");
    /*is_ambiguous_... S7831C9::S7831C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*), ABISELECT(88,48), "S7831C9");
    /*is_ambiguous_... S7831C12::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C12*), ABISELECT(88,48), "S7831C9");
    /*is_ambiguous_... S7831C9::S7831C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C13*), ABISELECT(88,48), "S7831C9");
    /*is_ambiguous_... S7831C9::S7831C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C13*), ABISELECT(88,48), "S7831C9");
    /*is_ambiguous_... S7831C9::S7831C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C8*)(S7831C7*), ABISELECT(88,48), "S7831C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C8*)(S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(88,48), "S7831C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C16*), ABISELECT(88,48), "S7831C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C13*)(S7831C16*), ABISELECT(88,48), "S7831C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C13*)(S7831C16*), ABISELECT(88,48), "S7831C9");
    /*is_ambiguous_... S7831C9::S7831C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C8*), ABISELECT(88,48), "S7831C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C8*)(S7831C7*)(S7831C3*)(S7831C17*), ABISELECT(88,48), "S7831C9");
    /*is_ambiguous_... S7831C9::S7831C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*), ABISELECT(96,56), "S7831C9");
    /*is_ambiguous_... S7831C9::S7831C4 */ AMB_check_base_class_offset(lv, (S7831C4*), ABISELECT(96,56), "S7831C9");
    check_base_class_offset(lv, (S7831C4*)(S7831C10*), ABISELECT(96,56), "S7831C9");
    check_base_class_offset(lv, (S7831C4*)(S7831C11*)(S7831C10*), ABISELECT(96,56), "S7831C9");
    /*is_ambiguous_... S7831C12::S7831C11 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C11*)(S7831C12*), ABISELECT(96,56), "S7831C9");
    /*is_ambiguous_... S7831C16::S7831C4 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C16*), ABISELECT(96,56), "S7831C9");
    /*is_ambiguous_... S7831C9::S7831C11 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C11*), ABISELECT(96,56), "S7831C9");
    /*is_ambiguous_... S7831C3::S7831C4 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C3*)(S7831C17*), ABISELECT(96,56), "S7831C9");
    /*is_ambiguous_... S7831C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C10*), ABISELECT(113,69), "S7831C9");
    /*is_ambiguous_... S7831C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C11*)(S7831C10*), ABISELECT(104,60), "S7831C9");
    /*is_ambiguous_... S7831C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C11*)(S7831C10*), ABISELECT(112,68), "S7831C9");
    check_base_class_offset(lv, (S7831C11*)(S7831C10*), ABISELECT(96,56), "S7831C9");
    /*is_ambiguous_... S7831C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C10*), ABISELECT(120,72), "S7831C9");
    check_base_class_offset(lv, (S7831C10*), ABISELECT(96,56), "S7831C9");
    /*is_ambiguous_... S7831C9::S7831C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C13*), ABISELECT(184,124), "S7831C9");
    /*is_ambiguous_... S7831C9::S7831C13 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C13*), ABISELECT(184,124), "S7831C9");
    /*is_ambiguous_... S7831C9::S7831C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C13*), ABISELECT(192,128), "S7831C9");
    /*is_ambiguous_... S7831C12::S7831C13 */ AMB_check_base_class_offset(lv, (S7831C13*)(S7831C12*), ABISELECT(184,124), "S7831C9");
    /*is_ambiguous_... S7831C12::S7831C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C11*)(S7831C12*), ABISELECT(144,92), "S7831C9");
    /*is_ambiguous_... S7831C12::S7831C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C11*)(S7831C12*), ABISELECT(152,100), "S7831C9");
    /*is_ambiguous_... S7831C12::S7831C11 */ AMB_check_base_class_offset(lv, (S7831C11*)(S7831C12*), ABISELECT(136,88), "S7831C9");
    /*is_ambiguous_... S7831C9::S7831C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C7*), ABISELECT(208,136), "S7831C9");
    /*is_ambiguous_... S7831C9::S7831C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C7*), ABISELECT(216,144), "S7831C9");
    /*is_ambiguous_... S7831C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(216,144), "S7831C9");
    /*is_ambiguous_... S7831C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C7*)(S7831C3*)(S7831C17*), ABISELECT(216,144), "S7831C9");
    /*is_ambiguous_... S7831C9::S7831C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C8*)(S7831C7*), ABISELECT(200,132), "S7831C9");
    /*is_ambiguous_... S7831C9::S7831C7 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C8*)(S7831C7*), ABISELECT(200,132), "S7831C9");
    /*is_ambiguous_... S7831C9::S7831C7 */ AMB_check_base_class_offset(lv, (S7831C8*)(S7831C7*), ABISELECT(200,132), "S7831C9");
    /*is_ambiguous_... S7831C12::S7831C7 */ AMB_check_base_class_offset(lv, (S7831C7*)(S7831C12*), ABISELECT(200,132), "S7831C9");
    /*is_ambiguous_... S7831C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C14*)(S7831C12*), ABISELECT(176,116), "S7831C9");
    /*is_ambiguous_... S7831C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(168,108), "S7831C9");
    check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C8*)(S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(160,104), "S7831C9");
    check_base_class_offset(lv, (S7831C4*)(S7831C8*)(S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(160,104), "S7831C9");
    check_base_class_offset(lv, (S7831C8*)(S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(160,104), "S7831C9");
    check_base_class_offset(lv, (S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(160,104), "S7831C9");
    check_base_class_offset(lv, (S28C52_nt*)(S7831C14*)(S7831C12*), ABISELECT(160,104), "S7831C9");
    check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C13*)(S7831C16*), ABISELECT(224,148), "S7831C9");
    check_base_class_offset(lv, (S7831C4*)(S7831C13*)(S7831C16*), ABISELECT(224,148), "S7831C9");
    /*is_ambiguous_... S7831C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C13*)(S7831C16*), ABISELECT(232,152), "S7831C9");
    check_base_class_offset(lv, (S7831C13*)(S7831C16*), ABISELECT(224,148), "S7831C9");
    check_base_class_offset(lv, (S7831C16*)(S7831C14*)(S7831C12*), ABISELECT(224,148), "S7831C9");
    /*is_ambiguous_... S7831C9::S7831C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C11*), ABISELECT(248,160), "S7831C9");
    /*is_ambiguous_... S7831C9::S7831C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C11*), ABISELECT(256,168), "S7831C9");
    check_base_class_offset(lv, (S7831C11*)(S7831C14*)(S7831C12*), ABISELECT(240,156), "S7831C9");
    /*is_ambiguous_... S7831C17::S7831C11 */ AMB_check_base_class_offset(lv, (S7831C11*)(S7831C17*), ABISELECT(240,156), "S7831C9");
    check_base_class_offset(lv, (S7831C14*)(S7831C12*), ABISELECT(160,104), "S7831C9");
    check_base_class_offset(lv, (S7831C12*), ABISELECT(136,88), "S7831C9");
    check_base_class_offset(lv, (S7831C12*)(S7831C17*), ABISELECT(136,88), "S7831C9");
    /*is_ambiguous_... S7831C9::S7831C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C8*), ABISELECT(264,172), "S7831C9");
    /*is_ambiguous_... S7831C9::S7831C8 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C8*), ABISELECT(264,172), "S7831C9");
    check_base_class_offset(lv, (S7831C8*)(S7831C18*), ABISELECT(264,172), "S7831C9");
    check_base_class_offset(lv, (S7831C18*)(S7831C17*), ABISELECT(264,172), "S7831C9");
    /*is_ambiguous_... S7831C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C7*)(S7831C3*)(S7831C17*), ABISELECT(8,4), "S7831C9");
    check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C8*)(S7831C7*)(S7831C3*)(S7831C17*), 0, "S7831C9");
    check_base_class_offset(lv, (S7831C4*)(S7831C8*)(S7831C7*)(S7831C3*)(S7831C17*), 0, "S7831C9");
    check_base_class_offset(lv, (S7831C8*)(S7831C7*)(S7831C3*)(S7831C17*), 0, "S7831C9");
    check_base_class_offset(lv, (S7831C7*)(S7831C3*)(S7831C17*), 0, "S7831C9");
    check_base_class_offset(lv, (S7831C3*)(S7831C17*), 0, "S7831C9");
    check_base_class_offset(lv, (S7831C17*), 0, "S7831C9");
    test_class_info(&lv, &cd_S7831C9);
    dp->~S7831C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7831C9(Test_S7831C9, "S7831C9", ABISELECT(280,180));

#else // __cplusplus

extern void _ZN7S7831C9C1Ev();
extern void _ZN7S7831C9D2Ev();
Name_Map name_map_S7831C9[] = {
  NSPAIR(_ZN7S7831C9C1Ev),
  NSPAIR(_ZN7S7831C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C11;
extern VTBL_ENTRY _ZTI8S7831C11[];
extern  VTBL_ENTRY _ZTV8S7831C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S7831C10;
extern VTBL_ENTRY _ZTI8S7831C10[];
extern  VTBL_ENTRY _ZTV8S7831C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C10[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C13;
extern VTBL_ENTRY _ZTI8S7831C13[];
extern  VTBL_ENTRY _ZTV8S7831C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C11;
extern VTBL_ENTRY _ZTI8S7831C11[];
extern  VTBL_ENTRY _ZTV8S7831C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C8;
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
extern Class_Descriptor cd_S7831C7;
extern VTBL_ENTRY _ZTI7S7831C7[];
extern  VTBL_ENTRY _ZTV7S7831C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C7[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C8;
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
extern Class_Descriptor cd_S7831C7;
extern VTBL_ENTRY _ZTI7S7831C7[];
extern  VTBL_ENTRY _ZTV7S7831C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C7[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C13;
extern VTBL_ENTRY _ZTI8S7831C13[];
extern  VTBL_ENTRY _ZTV8S7831C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C13[];
extern Class_Descriptor cd_S7831C16;
extern VTBL_ENTRY _ZTI8S7831C16[];
extern  VTBL_ENTRY _ZTV8S7831C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C16[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C11;
extern VTBL_ENTRY _ZTI8S7831C11[];
extern  VTBL_ENTRY _ZTV8S7831C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C11[];
extern Class_Descriptor cd_S7831C14;
extern VTBL_ENTRY _ZTI8S7831C14[];
extern  VTBL_ENTRY _ZTV8S7831C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C14[];
extern Class_Descriptor cd_S7831C12;
extern VTBL_ENTRY _ZTI8S7831C12[];
extern  VTBL_ENTRY _ZTV8S7831C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C8;
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
extern Class_Descriptor cd_S7831C18;
extern VTBL_ENTRY _ZTI8S7831C18[];
extern  VTBL_ENTRY _ZTV8S7831C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C18[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C8;
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
extern Class_Descriptor cd_S7831C7;
extern VTBL_ENTRY _ZTI7S7831C7[];
extern  VTBL_ENTRY _ZTV7S7831C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C7[];
extern Class_Descriptor cd_S7831C3;
extern VTBL_ENTRY _ZTI7S7831C3[];
extern  VTBL_ENTRY _ZTV7S7831C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C3[];
extern Class_Descriptor cd_S7831C17;
extern VTBL_ENTRY _ZTI8S7831C17[];
extern  VTBL_ENTRY _ZTV8S7831C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C17[];
static Base_Class bases_S7831C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    2, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(113,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
    8, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    6, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    6, //immediately_derived
  0, 0},
  {&cd_S7831C11,    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
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    8, //immediately_derived
  0, 0},
  {&cd_S7831C10,    ABISELECT(96,56), //bcp->offset
    18, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(184,124), //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
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(192,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
    12, //immediately_derived
  0, 0},
  {&cd_S7831C13,    ABISELECT(184,124), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    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
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7831C11,    ABISELECT(136,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(208,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(216,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
    21, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(200,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7831C8,    ABISELECT(200,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7831C7,    ABISELECT(200,132), //bcp->offset
    58, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(176,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
    37, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(168,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7831C8,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7831C7,    ABISELECT(160,104), //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
    16, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(232,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
    32, //immediately_derived
  0, 0},
  {&cd_S7831C13,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7831C16,    ABISELECT(224,148), //bcp->offset
    69, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(248,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(256,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
    36, //immediately_derived
  0, 0},
  {&cd_S7831C11,    ABISELECT(240,156), //bcp->offset
    77, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S7831C14,    ABISELECT(160,104), //bcp->offset
    42, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S7831C12,    ABISELECT(136,88), //bcp->offset
    27, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(264,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
    40, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(264,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7831C8,    ABISELECT(264,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7831C18,    ABISELECT(264,172), //bcp->offset
    86, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7831C4,    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
    22, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S7831C8,    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
    23, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7831C7,    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
    24, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7831C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S7831C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7831C9[];
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C9D1Ev();
extern void _ZN7S7831C9D0Ev();
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C32v3Ev();
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7831C9D1Ev,_ZTv0_n24_N7S7831C9D1Ev)();
extern void ABISELECT(_ZThn96_N7S7831C9D1Ev,_ZThn56_N7S7831C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7831C9D0Ev,_ZTv0_n24_N7S7831C9D0Ev)();
extern void ABISELECT(_ZThn96_N7S7831C9D0Ev,_ZThn56_N7S7831C9D0Ev)() __attribute__((weak));
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S7831C9D1Ev,_ZTv0_n44_N7S7831C9D1Ev)();
extern void ABISELECT(_ZThn136_N7S7831C9D1Ev,_ZThn88_N7S7831C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7831C9D0Ev,_ZTv0_n44_N7S7831C9D0Ev)();
extern void ABISELECT(_ZThn136_N7S7831C9D0Ev,_ZThn88_N7S7831C9D0Ev)() __attribute__((weak));
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N7S7831C9D1Ev,_ZTvn16_n44_N7S7831C9D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N7S7831C9D0Ev,_ZTvn16_n44_N7S7831C9D0Ev)();
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7831C9D1Ev,_ZTv0_n24_N7S7831C9D1Ev)();
extern void ABISELECT(_ZThn200_N7S7831C9D1Ev,_ZThn132_N7S7831C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7831C9D0Ev,_ZTv0_n24_N7S7831C9D0Ev)();
extern void ABISELECT(_ZThn200_N7S7831C9D0Ev,_ZThn132_N7S7831C9D0Ev)() __attribute__((weak));
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7831C9D1Ev,_ZTv0_n24_N7S7831C9D1Ev)();
extern void ABISELECT(_ZThn240_N7S7831C9D1Ev,_ZThn156_N7S7831C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7831C9D0Ev,_ZTv0_n24_N7S7831C9D0Ev)();
extern void ABISELECT(_ZThn240_N7S7831C9D0Ev,_ZThn156_N7S7831C9D0Ev)() __attribute__((weak));
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY vtc_S7831C9[] = {
  ABISELECT(96,56),
  ABISELECT(224,148),
  ABISELECT(200,132),
  ABISELECT(184,124),
  ABISELECT(136,88),
  ABISELECT(240,156),
  ABISELECT(264,172),
  ABISELECT(264,172),
  ABISELECT(96,56),
  ABISELECT(216,144),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7831C32v3Ev,
  ABISELECT(-96,-56),
  0,
  0,
  -8,
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C9D1Ev,_ZTv0_n24_N7S7831C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C9D0Ev,_ZTv0_n24_N7S7831C9D0Ev),
  ABISELECT(24,16),
  ABISELECT(-136,-88),
  ABISELECT(104,68),
  ABISELECT(88,60),
  ABISELECT(80,56),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-48,-40),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7831C9D1Ev,_ZTv0_n44_N7S7831C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7831C9D0Ev,_ZTv0_n44_N7S7831C9D0Ev),
  ABISELECT(80,52),
  ABISELECT(-64,-48),
  ABISELECT(64,44),
  ABISELECT(56,40),
  ABISELECT(-72,-56),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N7S7831C9D1Ev,_ZTvn16_n44_N7S7831C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N7S7831C9D0Ev,_ZTvn16_n44_N7S7831C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  0,
  ABISELECT(-96,-76),
  ABISELECT(-184,-124),
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  0,
  ABISELECT(-200,-132),
  0,
  ABISELECT(16,12),
  ABISELECT(-112,-84),
  ABISELECT(-200,-132),
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C9D1Ev,_ZTv0_n24_N7S7831C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C9D0Ev,_ZTv0_n24_N7S7831C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  0,
  0,
  ABISELECT(-128,-92),
  ABISELECT(-136,-100),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
  ABISELECT(-240,-156),
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  ABISELECT(-152,-108),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C9D1Ev,_ZTv0_n24_N7S7831C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C9D0Ev,_ZTv0_n24_N7S7831C9D0Ev),
  0,
  0,
  ABISELECT(-176,-124),
  ABISELECT(-264,-172),
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S7831C9[];
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C17D1Ev();
extern void _ZN8S7831C17D0Ev();
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C17__7S7831C9[] = {
  ABISELECT(224,148),
  ABISELECT(200,132),
  ABISELECT(184,124),
  ABISELECT(136,88),
  ABISELECT(240,156),
  ABISELECT(264,172),
  ABISELECT(264,172),
  ABISELECT(96,56),
  ABISELECT(216,144),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C17D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7831C32v3Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C3D1Ev();
extern void _ZN7S7831C3D0Ev();
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C38S7831C17__7S7831C9[] = {
  ABISELECT(96,56),
  ABISELECT(216,144),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C3[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7831C32v3Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C7D1Ev();
extern void _ZN7S7831C7D0Ev();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C77S7831C38S7831C17__A2__7S7831C9[] = {
  ABISELECT(216,144),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C7[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C87S7831C77S7831C38S7831C17__A3__7S7831C9[] = {
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C47S7831C87S7831C77S7831C38S7831C17__A6__7S7831C9[] = {
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__7S7831C38S7831C17__7S7831C9[] = {
  0,
  -8,
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7831C3[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C18__8S7831C17__7S7831C9[] = {
  0,
  0,
  ABISELECT(-176,-124),
  ABISELECT(-264,-172),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__A1__8S7831C17__7S7831C9[] = {
  0,
  -8,
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7831C17D1Ev,_ZTv0_n24_N8S7831C17D1Ev)();
extern void ABISELECT(_ZThn240_N8S7831C17D1Ev,_ZThn156_N8S7831C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7831C17D0Ev,_ZTv0_n24_N8S7831C17D0Ev)();
extern void ABISELECT(_ZThn240_N8S7831C17D0Ev,_ZThn156_N8S7831C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7831C11__8S7831C17__7S7831C9[] = {
  ABISELECT(-240,-156),
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  ABISELECT(-152,-108),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C17D1Ev,_ZTv0_n24_N8S7831C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C17D0Ev,_ZTv0_n24_N8S7831C17D0Ev),
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S7831C17D1Ev,_ZTv0_n44_N8S7831C17D1Ev)();
extern void ABISELECT(_ZThn136_N8S7831C17D1Ev,_ZThn88_N8S7831C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7831C17D0Ev,_ZTv0_n44_N8S7831C17D0Ev)();
extern void ABISELECT(_ZThn136_N8S7831C17D0Ev,_ZThn88_N8S7831C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7831C12__8S7831C17__7S7831C9[] = {
  ABISELECT(24,16),
  ABISELECT(-136,-88),
  ABISELECT(104,68),
  ABISELECT(88,60),
  ABISELECT(80,56),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-48,-40),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7831C17D1Ev,_ZTv0_n44_N8S7831C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7831C17D0Ev,_ZTv0_n44_N8S7831C17D0Ev),
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C13__8S7831C17__7S7831C9[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-184,-124),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7831C17D1Ev,_ZTv0_n24_N8S7831C17D1Ev)();
extern void ABISELECT(_ZThn200_N8S7831C17D1Ev,_ZThn132_N8S7831C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7831C17D0Ev,_ZTv0_n24_N8S7831C17D0Ev)();
extern void ABISELECT(_ZThn200_N8S7831C17D0Ev,_ZThn132_N8S7831C17D0Ev)() __attribute__((weak));
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C7__A1__8S7831C17__7S7831C9[] = {
  0,
  ABISELECT(-200,-132),
  0,
  ABISELECT(16,12),
  ABISELECT(-112,-84),
  ABISELECT(-200,-132),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C17D1Ev,_ZTv0_n24_N8S7831C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C17D0Ev,_ZTv0_n24_N8S7831C17D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S7831C17D1Ev,_ZTvn16_n44_N8S7831C17D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S7831C17D0Ev,_ZTvn16_n44_N8S7831C17D0Ev)();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C148S7831C12__8S7831C17__7S7831C9[] = {
  ABISELECT(80,52),
  ABISELECT(-64,-48),
  ABISELECT(64,44),
  ABISELECT(56,40),
  ABISELECT(-72,-56),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S7831C17D1Ev,_ZTvn16_n44_N8S7831C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S7831C17D0Ev,_ZTvn16_n44_N8S7831C17D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C16__8S7831C17__7S7831C9[] = {
  0,
  0,
  ABISELECT(-128,-92),
  ABISELECT(-136,-100),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__7S7831C9[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C10D1Ev();
extern void _ZN8S7831C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C10__7S7831C9[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C10[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C10D0Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C11D1Ev();
extern void _ZN8S7831C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C118S7831C10__7S7831C9[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D0Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C12D1Ev();
extern void _ZN8S7831C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C12__7S7831C9[] = {
  ABISELECT(104,68),
  ABISELECT(88,60),
  ABISELECT(80,56),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-48,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C12D0Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C11D1Ev();
extern void _ZN8S7831C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C118S7831C12__A1__7S7831C9[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-48,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D0Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__8S7831C118S7831C12__A1__7S7831C9[] = {
  0,
  -8,
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C14D1Ev();
extern void _ZN8S7831C14D0Ev();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C148S7831C12__7S7831C9[] = {
  ABISELECT(80,52),
  ABISELECT(-64,-48),
  ABISELECT(64,44),
  ABISELECT(56,40),
  ABISELECT(-72,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C14[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C14D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C7D1Ev();
extern void _ZN7S7831C7D0Ev();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C78S7831C148S7831C12__A1__7S7831C9[] = {
  ABISELECT(56,40),
  ABISELECT(-72,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C7[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C87S7831C78S7831C148S7831C12__A1__7S7831C9[] = {
  ABISELECT(-72,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C47S7831C87S7831C78S7831C148S7831C12__A3__7S7831C9[] = {
  ABISELECT(-72,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C16__8S7831C148S7831C12__7S7831C9[] = {
  0,
  0,
  ABISELECT(-128,-92),
  ABISELECT(-136,-100),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S7831C14[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__A2__8S7831C148S7831C12__7S7831C9[] = {
  0,
  -8,
  ABISELECT(64,48),
  (VTBL_ENTRY)&(_ZTI8S7831C14[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7831C14D1Ev,_ZTv0_n24_N8S7831C14D1Ev)();
extern void ABISELECT(_ZThn80_N8S7831C14D1Ev,_ZThn52_N8S7831C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7831C14D0Ev,_ZTv0_n24_N8S7831C14D0Ev)();
extern void ABISELECT(_ZThn80_N8S7831C14D0Ev,_ZThn52_N8S7831C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7831C11__8S7831C148S7831C12__7S7831C9[] = {
  ABISELECT(-80,-52),
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  ABISELECT(-152,-108),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S7831C14[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C14D1Ev,_ZTv0_n24_N8S7831C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C14D0Ev,_ZTv0_n24_N8S7831C14D0Ev),
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C13__8S7831C12__7S7831C9[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__A1__8S7831C12__7S7831C9[] = {
  0,
  -8,
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev)();
extern void ABISELECT(_ZThn64_N8S7831C12D1Ev,_ZThn44_N8S7831C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev)();
extern void ABISELECT(_ZThn64_N8S7831C12D0Ev,_ZThn44_N8S7831C12D0Ev)() __attribute__((weak));
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C7__8S7831C12__7S7831C9[] = {
  0,
  ABISELECT(-64,-44),
  0,
  ABISELECT(16,12),
  ABISELECT(-112,-84),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZThn24_N8S7831C12D1Ev,_ZThn16_N8S7831C12D1Ev)();
extern void ABISELECT(_ZThn24_N8S7831C12D0Ev,_ZThn16_N8S7831C12D0Ev)();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C14__8S7831C12__7S7831C9[] = {
  ABISELECT(80,52),
  ABISELECT(-64,-48),
  ABISELECT(64,44),
  ABISELECT(56,40),
  ABISELECT(-72,-56),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7831C12D1Ev,_ZThn16_N8S7831C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7831C12D0Ev,_ZThn16_N8S7831C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C16__8S7831C12__7S7831C9[] = {
  0,
  0,
  ABISELECT(-128,-92),
  ABISELECT(-136,-100),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev)();
extern void ABISELECT(_ZThn104_N8S7831C12D1Ev,_ZThn68_N8S7831C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev)();
extern void ABISELECT(_ZThn104_N8S7831C12D0Ev,_ZThn68_N8S7831C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7831C11__A1__8S7831C12__7S7831C9[] = {
  ABISELECT(-104,-68),
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  ABISELECT(-152,-108),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev),
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C13__7S7831C9[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C13[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C48S7831C13__A1__7S7831C9[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C7D1Ev();
extern void _ZN7S7831C7D0Ev();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C7__7S7831C9[] = {
  ABISELECT(16,12),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C7[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C87S7831C7__7S7831C9[] = {
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C47S7831C87S7831C7__A2__7S7831C9[] = {
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C16__7S7831C9[] = {
  ABISELECT(-128,-92),
  ABISELECT(-136,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C16[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C138S7831C16__A1__7S7831C9[] = {
  ABISELECT(-136,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C13[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C48S7831C138S7831C16__A4__7S7831C9[] = {
  ABISELECT(-136,-100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__A1__8S7831C16__7S7831C9[] = {
  0,
  -8,
  ABISELECT(128,92),
  (VTBL_ENTRY)&(_ZTI8S7831C16[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C11D1Ev();
extern void _ZN8S7831C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C11__A2__7S7831C9[] = {
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  ABISELECT(-152,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D0Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__8S7831C11__A2__7S7831C9[] = {
  0,
  -8,
  ABISELECT(144,100),
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C18__7S7831C9[] = {
  0,
  0,
  ABISELECT(-176,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C18[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C8__A2__7S7831C9[] = {
  ABISELECT(-176,-124),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C47S7831C8__A5__7S7831C9[] = {
  ABISELECT(-176,-124),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
static  VTT_ENTRY vtt_S7831C9[] = {
  {&(_ZTV7S7831C9[13]),  13,92},
  {&(_tg__ZTV8S7831C17__7S7831C9[12]),  12,17},
  {&(_tg__ZTV7S7831C38S7831C17__7S7831C9[5]),  5,10},
  {&(_tg__ZTV7S7831C77S7831C38S7831C17__A2__7S7831C9[4]),  4,8},
  {&(_tg__ZTV7S7831C87S7831C77S7831C38S7831C17__A3__7S7831C9[3]),  3,4},
  {&(_tg__ZTV7S7831C47S7831C87S7831C77S7831C38S7831C17__A6__7S7831C9[3]),  3,4},
  {&(_tg__ZTV7S7831C4__7S7831C38S7831C17__7S7831C9[4]),  4,5},
  {&(_tg__ZTV8S7831C18__8S7831C17__7S7831C9[5]),  5,6},
  {&(_tg__ZTV8S7831C18__8S7831C17__7S7831C9[5]),  5,6},
  {&(_tg__ZTV7S7831C4__A1__8S7831C17__7S7831C9[4]),  4,5},
  {&(_tg__ZTV8S7831C11__8S7831C17__7S7831C9[6]),  6,9},
  {&(_tg__ZTV8S7831C12__8S7831C17__7S7831C9[12]),  12,15},
  {&(_tg__ZTV8S7831C13__8S7831C17__7S7831C9[4]),  4,5},
  {&(_tg__ZTV7S7831C7__A1__8S7831C17__7S7831C9[7]),  7,11},
  {&(_tg__ZTV8S7831C148S7831C12__8S7831C17__7S7831C9[7]),  7,11},
  {&(_tg__ZTV8S7831C16__8S7831C17__7S7831C9[6]),  6,8},
  {&(_ZTV7S7831C9[24]),  24,92},
  {&(_ZTV7S7831C9[24]),  24,92},
  {&(_ZTV7S7831C9[39]),  39,92},
  {&(_ZTV7S7831C9[57]),  57,92},
  {&(_ZTV7S7831C9[65]),  65,92},
  {&(_ZTV7S7831C9[49]),  49,92},
  {&(_ZTV7S7831C9[75]),  75,92},
  {&(_ZTV7S7831C9[83]),  83,92},
  {&(_ZTV7S7831C9[91]),  91,92},
  {&(_ZTV7S7831C9[91]),  91,92},
  {&(_tg__ZTV7S7831C4__7S7831C9[3]),  3,4},
  {&(_tg__ZTV8S7831C10__7S7831C9[5]),  5,8},
  {&(_tg__ZTV8S7831C118S7831C10__7S7831C9[5]),  5,8},
  {&(_tg__ZTV8S7831C118S7831C10__7S7831C9[5]),  5,8},
  {&(_tg__ZTV8S7831C10__7S7831C9[5]),  5,8},
  {&(_tg__ZTV8S7831C12__7S7831C9[10]),  10,13},
  {&(_tg__ZTV8S7831C118S7831C12__A1__7S7831C9[5]),  5,8},
  {&(_tg__ZTV7S7831C4__8S7831C118S7831C12__A1__7S7831C9[4]),  4,5},
  {&(_tg__ZTV8S7831C148S7831C12__7S7831C9[7]),  7,11},
  {&(_tg__ZTV7S7831C78S7831C148S7831C12__A1__7S7831C9[4]),  4,8},
  {&(_tg__ZTV7S7831C87S7831C78S7831C148S7831C12__A1__7S7831C9[3]),  3,4},
  {&(_tg__ZTV7S7831C47S7831C87S7831C78S7831C148S7831C12__A3__7S7831C9[3]),  3,4},
  {&(_tg__ZTV8S7831C16__8S7831C148S7831C12__7S7831C9[6]),  6,8},
  {&(_tg__ZTV7S7831C4__A2__8S7831C148S7831C12__7S7831C9[4]),  4,5},
  {&(_tg__ZTV8S7831C11__8S7831C148S7831C12__7S7831C9[6]),  6,9},
  {&(_tg__ZTV8S7831C13__8S7831C12__7S7831C9[4]),  4,5},
  {&(_tg__ZTV7S7831C4__A1__8S7831C12__7S7831C9[4]),  4,5},
  {&(_tg__ZTV7S7831C7__8S7831C12__7S7831C9[7]),  7,11},
  {&(_tg__ZTV8S7831C14__8S7831C12__7S7831C9[7]),  7,11},
  {&(_tg__ZTV8S7831C16__8S7831C12__7S7831C9[6]),  6,8},
  {&(_tg__ZTV8S7831C11__A1__8S7831C12__7S7831C9[6]),  6,9},
  {&(_tg__ZTV8S7831C13__7S7831C9[3]),  3,4},
  {&(_tg__ZTV7S7831C48S7831C13__A1__7S7831C9[3]),  3,4},
  {&(_tg__ZTV7S7831C7__7S7831C9[4]),  4,8},
  {&(_tg__ZTV7S7831C87S7831C7__7S7831C9[3]),  3,4},
  {&(_tg__ZTV7S7831C47S7831C87S7831C7__A2__7S7831C9[3]),  3,4},
  {&(_tg__ZTV8S7831C16__7S7831C9[4]),  4,6},
  {&(_tg__ZTV8S7831C138S7831C16__A1__7S7831C9[3]),  3,4},
  {&(_tg__ZTV7S7831C48S7831C138S7831C16__A4__7S7831C9[3]),  3,4},
  {&(_tg__ZTV7S7831C4__A1__8S7831C16__7S7831C9[4]),  4,5},
  {&(_tg__ZTV8S7831C11__A2__7S7831C9[5]),  5,8},
  {&(_tg__ZTV7S7831C4__8S7831C11__A2__7S7831C9[4]),  4,5},
  {&(_tg__ZTV8S7831C18__7S7831C9[5]),  5,6},
  {&(_tg__ZTV8S7831C18__7S7831C9[5]),  5,6},
  {&(_tg__ZTV7S7831C8__A2__7S7831C9[3]),  3,4},
  {&(_tg__ZTV7S7831C47S7831C8__A5__7S7831C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7831C9[];
extern  VTBL_ENTRY _ZTV7S7831C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C9[];
static VTBL_ENTRY alt_thunk_names45[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7831C12D0Ev,_ZThn68_N8S7831C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7831C12D0Ev,_ZThn44_N8S7831C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7831C12D1Ev,_ZThn68_N8S7831C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7831C12D1Ev,_ZThn44_N8S7831C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C14D0Ev,_ZTv0_n24_N8S7831C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7831C14D0Ev,_ZThn52_N8S7831C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C14D1Ev,_ZTv0_n24_N8S7831C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7831C14D1Ev,_ZThn52_N8S7831C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7831C17D0Ev,_ZTv0_n44_N8S7831C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7831C17D0Ev,_ZThn88_N8S7831C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7831C17D1Ev,_ZTv0_n44_N8S7831C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7831C17D1Ev,_ZThn88_N8S7831C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C17D0Ev,_ZTv0_n24_N8S7831C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7831C17D0Ev,_ZThn132_N8S7831C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S7831C17D0Ev,_ZThn156_N8S7831C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C17D1Ev,_ZTv0_n24_N8S7831C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7831C17D1Ev,_ZThn132_N8S7831C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S7831C17D1Ev,_ZThn156_N8S7831C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7831C9D0Ev,_ZTv0_n44_N7S7831C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7831C9D0Ev,_ZThn88_N7S7831C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7831C9D1Ev,_ZTv0_n44_N7S7831C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7831C9D1Ev,_ZThn88_N7S7831C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7831C9D0Ev,_ZTv0_n24_N7S7831C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7831C9D0Ev,_ZThn156_N7S7831C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S7831C9D0Ev,_ZThn132_N7S7831C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7831C9D0Ev,_ZThn56_N7S7831C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7831C9D1Ev,_ZTv0_n24_N7S7831C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7831C9D1Ev,_ZThn156_N7S7831C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S7831C9D1Ev,_ZThn132_N7S7831C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7831C9D1Ev,_ZThn56_N7S7831C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7831C9 = {  "S7831C9", // class name
  bases_S7831C9, 50,
  &(vtc_S7831C9[0]), // expected_vtbl_contents
  &(vtt_S7831C9[0]), // expected_vtt_contents
  ABISELECT(280,180), // object size
  NSPAIRA(_ZTI7S7831C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7831C9),92, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7831C9),62, //virtual table table var
  26, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names45,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7831C2  : virtual S7831C3 , S3461C5_nt , virtual S7831C9 , S7831C11 , S7831C13 {
  char s7831c2f0;
  virtual  ~S7831C2(); // _ZN7S7831C2D2Ev
  virtual void  v5(); // _ZN7S7831C22v5Ev
  S7831C2(); // tgen
};
//SIG(-1 S7831C2) C1{ VBC2{ VBC3{ VBC4{ m FL} BC5{ m} v2} BC6{ BC4 VBC5 BC7{ BC3} vd v3} vd v4} BC4 VBC8{ VBC3 VBC9{ BC5 VBC3 BC10{ BC4 VBC3 BC5 vd} BC4 vd FL} VBC11{ VBC4 VBC12{ VBC4 BC3 BC5} BC10 VBC6 BC13{ BC4 BC6 BC14{ m} VBC15{ VBC4 BC12 VBC3 v5} VBC10 vd}} BC16{ VBC17{ VBC7 Fi} BC2 VBC10 VBC11 vd Fp[9]} vd} BC10 BC12 vd v1 Fc}


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

static void Test_S7831C2()
{
  extern Class_Descriptor cd_S7831C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(43,56)];
    init_test(&cd_S7831C2, buf);
    S7831C2 *dp, &lv = *(dp=new (buf) S7831C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,220), "sizeof(S7831C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7831C2)");
    /*is_ambiguous_... S7831C2::S7831C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*), ABISELECT(64,44), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C8*)(S7831C7*)(S7831C3*), ABISELECT(64,44), "S7831C2");
    /*is_ambiguous_... S7831C12::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C12*), ABISELECT(64,44), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C13*), ABISELECT(64,44), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C13*), ABISELECT(64,44), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C8*)(S7831C7*), ABISELECT(64,44), "S7831C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C8*)(S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(64,44), "S7831C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C16*), ABISELECT(64,44), "S7831C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C13*)(S7831C16*), ABISELECT(64,44), "S7831C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C13*)(S7831C16*), ABISELECT(64,44), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C8*), ABISELECT(64,44), "S7831C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C8*)(S7831C7*)(S7831C3*)(S7831C17*)(S7831C9*), ABISELECT(64,44), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C13*), ABISELECT(64,44), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C13*), ABISELECT(64,44), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*), ABISELECT(160,100), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C3 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C3*), ABISELECT(160,100), "S7831C2");
    /*is_ambiguous_... S7831C9::S7831C4 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C9*), ABISELECT(160,100), "S7831C2");
    check_base_class_offset(lv, (S7831C4*)(S7831C10*), ABISELECT(160,100), "S7831C2");
    check_base_class_offset(lv, (S7831C4*)(S7831C11*)(S7831C10*), ABISELECT(160,100), "S7831C2");
    /*is_ambiguous_... S7831C12::S7831C11 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C11*)(S7831C12*), ABISELECT(160,100), "S7831C2");
    /*is_ambiguous_... S7831C16::S7831C4 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C16*), ABISELECT(160,100), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C11 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C11*), ABISELECT(160,100), "S7831C2");
    /*is_ambiguous_... S7831C3::S7831C4 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C3*)(S7831C17*)(S7831C9*), ABISELECT(160,100), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C11 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C11*), ABISELECT(160,100), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C7*)(S7831C3*), ABISELECT(56,36), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C7*)(S7831C3*), 0, "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C7*), 0, "S7831C2");
    /*is_ambiguous_... S7831C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C7*)(S7831C14*)(S7831C12*), 0, "S7831C2");
    /*is_ambiguous_... S7831C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C7*)(S7831C3*)(S7831C17*)(S7831C9*), 0, "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C8*)(S7831C7*)(S7831C3*), ABISELECT(48,32), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C3 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C8*)(S7831C7*)(S7831C3*), ABISELECT(48,32), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C3 */ AMB_check_base_class_offset(lv, (S7831C8*)(S7831C7*)(S7831C3*), ABISELECT(48,32), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C3 */ AMB_check_base_class_offset(lv, (S7831C7*)(S7831C3*), ABISELECT(48,32), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C3 */ AMB_check_base_class_offset(lv, (S7831C3*), ABISELECT(48,32), "S7831C2");
    /*is_ambiguous_... S7831C2::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(24,16), "S7831C2");
    /*is_ambiguous_... S7831C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C10*), ABISELECT(177,113), "S7831C2");
    /*is_ambiguous_... S7831C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C11*)(S7831C10*), ABISELECT(168,104), "S7831C2");
    /*is_ambiguous_... S7831C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C11*)(S7831C10*), ABISELECT(176,112), "S7831C2");
    check_base_class_offset(lv, (S7831C11*)(S7831C10*), ABISELECT(160,100), "S7831C2");
    /*is_ambiguous_... S7831C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C10*), ABISELECT(184,116), "S7831C2");
    check_base_class_offset(lv, (S7831C10*)(S7831C9*), ABISELECT(160,100), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C13*), ABISELECT(248,168), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C13 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C13*), ABISELECT(248,168), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C13*), ABISELECT(256,172), "S7831C2");
    /*is_ambiguous_... S7831C12::S7831C13 */ AMB_check_base_class_offset(lv, (S7831C13*)(S7831C12*), ABISELECT(248,168), "S7831C2");
    /*is_ambiguous_... S7831C12::S7831C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C11*)(S7831C12*), ABISELECT(208,136), "S7831C2");
    /*is_ambiguous_... S7831C12::S7831C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C11*)(S7831C12*), ABISELECT(216,144), "S7831C2");
    /*is_ambiguous_... S7831C12::S7831C11 */ AMB_check_base_class_offset(lv, (S7831C11*)(S7831C12*), ABISELECT(200,132), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C7*), ABISELECT(272,180), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C8*)(S7831C7*), ABISELECT(264,176), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C7 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C8*)(S7831C7*), ABISELECT(264,176), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C7 */ AMB_check_base_class_offset(lv, (S7831C8*)(S7831C7*), ABISELECT(264,176), "S7831C2");
    /*is_ambiguous_... S7831C12::S7831C7 */ AMB_check_base_class_offset(lv, (S7831C7*)(S7831C12*), ABISELECT(264,176), "S7831C2");
    /*is_ambiguous_... S7831C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C14*)(S7831C12*), ABISELECT(240,160), "S7831C2");
    /*is_ambiguous_... S7831C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(232,152), "S7831C2");
    check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C8*)(S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(224,148), "S7831C2");
    check_base_class_offset(lv, (S7831C4*)(S7831C8*)(S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(224,148), "S7831C2");
    check_base_class_offset(lv, (S7831C8*)(S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(224,148), "S7831C2");
    check_base_class_offset(lv, (S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(224,148), "S7831C2");
    check_base_class_offset(lv, (S28C52_nt*)(S7831C14*)(S7831C12*), ABISELECT(224,148), "S7831C2");
    check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C13*)(S7831C16*), ABISELECT(280,188), "S7831C2");
    check_base_class_offset(lv, (S7831C4*)(S7831C13*)(S7831C16*), ABISELECT(280,188), "S7831C2");
    /*is_ambiguous_... S7831C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C13*)(S7831C16*), ABISELECT(288,192), "S7831C2");
    check_base_class_offset(lv, (S7831C13*)(S7831C16*), ABISELECT(280,188), "S7831C2");
    check_base_class_offset(lv, (S7831C16*)(S7831C14*)(S7831C12*), ABISELECT(280,188), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C11*), ABISELECT(304,200), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C11*), ABISELECT(312,208), "S7831C2");
    check_base_class_offset(lv, (S7831C11*)(S7831C14*)(S7831C12*), ABISELECT(296,196), "S7831C2");
    /*is_ambiguous_... S7831C17::S7831C11 */ AMB_check_base_class_offset(lv, (S7831C11*)(S7831C17*)(S7831C9*), ABISELECT(296,196), "S7831C2");
    check_base_class_offset(lv, (S7831C14*)(S7831C12*), ABISELECT(224,148), "S7831C2");
    check_base_class_offset(lv, (S7831C12*)(S7831C9*), ABISELECT(200,132), "S7831C2");
    check_base_class_offset(lv, (S7831C12*)(S7831C17*)(S7831C9*), ABISELECT(200,132), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C8*), ABISELECT(320,212), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C8 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C8*), ABISELECT(320,212), "S7831C2");
    check_base_class_offset(lv, (S7831C8*)(S7831C18*), ABISELECT(320,212), "S7831C2");
    check_base_class_offset(lv, (S7831C18*)(S7831C17*)(S7831C9*), ABISELECT(320,212), "S7831C2");
    /*is_ambiguous_... S7831C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C7*)(S7831C3*)(S7831C17*)(S7831C9*), ABISELECT(80,56), "S7831C2");
    check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C8*)(S7831C7*)(S7831C3*)(S7831C17*)(S7831C9*), ABISELECT(72,52), "S7831C2");
    check_base_class_offset(lv, (S7831C4*)(S7831C8*)(S7831C7*)(S7831C3*)(S7831C17*)(S7831C9*), ABISELECT(72,52), "S7831C2");
    check_base_class_offset(lv, (S7831C8*)(S7831C7*)(S7831C3*)(S7831C17*)(S7831C9*), ABISELECT(72,52), "S7831C2");
    check_base_class_offset(lv, (S7831C7*)(S7831C3*)(S7831C17*)(S7831C9*), ABISELECT(72,52), "S7831C2");
    check_base_class_offset(lv, (S7831C3*)(S7831C17*)(S7831C9*), ABISELECT(72,52), "S7831C2");
    check_base_class_offset(lv, (S7831C17*)(S7831C9*), ABISELECT(72,52), "S7831C2");
    check_base_class_offset(lv, (S7831C9*), ABISELECT(72,52), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C11*), ABISELECT(8,4), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C11*), ABISELECT(16,12), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C11 */ AMB_check_base_class_offset(lv, (S7831C11*), 0, "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C13*), ABISELECT(32,24), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C13 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C13*), ABISELECT(32,24), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C13*), ABISELECT(40,28), "S7831C2");
    /*is_ambiguous_... S7831C2::S7831C13 */ AMB_check_base_class_offset(lv, (S7831C13*), ABISELECT(32,24), "S7831C2");
    check_field_offset(lv, s7831c2f0, ABISELECT(41,29), "S7831C2.s7831c2f0");
    test_class_info(&lv, &cd_S7831C2);
    dp->~S7831C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7831C2(Test_S7831C2, "S7831C2", ABISELECT(336,220));

#else // __cplusplus

extern void _ZN7S7831C2C1Ev();
extern void _ZN7S7831C2D2Ev();
Name_Map name_map_S7831C2[] = {
  NSPAIR(_ZN7S7831C2C1Ev),
  NSPAIR(_ZN7S7831C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C8;
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
extern Class_Descriptor cd_S7831C7;
extern VTBL_ENTRY _ZTI7S7831C7[];
extern  VTBL_ENTRY _ZTV7S7831C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C7[];
extern Class_Descriptor cd_S7831C3;
extern VTBL_ENTRY _ZTI7S7831C3[];
extern  VTBL_ENTRY _ZTV7S7831C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C11;
extern VTBL_ENTRY _ZTI8S7831C11[];
extern  VTBL_ENTRY _ZTV8S7831C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S7831C10;
extern VTBL_ENTRY _ZTI8S7831C10[];
extern  VTBL_ENTRY _ZTV8S7831C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C10[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C13;
extern VTBL_ENTRY _ZTI8S7831C13[];
extern  VTBL_ENTRY _ZTV8S7831C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C11;
extern VTBL_ENTRY _ZTI8S7831C11[];
extern  VTBL_ENTRY _ZTV8S7831C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C8;
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
extern Class_Descriptor cd_S7831C7;
extern VTBL_ENTRY _ZTI7S7831C7[];
extern  VTBL_ENTRY _ZTV7S7831C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C7[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C8;
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
extern Class_Descriptor cd_S7831C7;
extern VTBL_ENTRY _ZTI7S7831C7[];
extern  VTBL_ENTRY _ZTV7S7831C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C7[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C13;
extern VTBL_ENTRY _ZTI8S7831C13[];
extern  VTBL_ENTRY _ZTV8S7831C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C13[];
extern Class_Descriptor cd_S7831C16;
extern VTBL_ENTRY _ZTI8S7831C16[];
extern  VTBL_ENTRY _ZTV8S7831C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C16[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C11;
extern VTBL_ENTRY _ZTI8S7831C11[];
extern  VTBL_ENTRY _ZTV8S7831C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C11[];
extern Class_Descriptor cd_S7831C14;
extern VTBL_ENTRY _ZTI8S7831C14[];
extern  VTBL_ENTRY _ZTV8S7831C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C14[];
extern Class_Descriptor cd_S7831C12;
extern VTBL_ENTRY _ZTI8S7831C12[];
extern  VTBL_ENTRY _ZTV8S7831C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C8;
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
extern Class_Descriptor cd_S7831C18;
extern VTBL_ENTRY _ZTI8S7831C18[];
extern  VTBL_ENTRY _ZTV8S7831C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C18[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C8;
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
extern Class_Descriptor cd_S7831C7;
extern VTBL_ENTRY _ZTI7S7831C7[];
extern  VTBL_ENTRY _ZTV7S7831C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C7[];
extern Class_Descriptor cd_S7831C3;
extern VTBL_ENTRY _ZTI7S7831C3[];
extern  VTBL_ENTRY _ZTV7S7831C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C3[];
extern Class_Descriptor cd_S7831C17;
extern VTBL_ENTRY _ZTI8S7831C17[];
extern  VTBL_ENTRY _ZTV8S7831C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C17[];
extern Class_Descriptor cd_S7831C9;
extern VTBL_ENTRY _ZTI7S7831C9[];
extern  VTBL_ENTRY _ZTV7S7831C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C11;
extern VTBL_ENTRY _ZTI8S7831C11[];
extern  VTBL_ENTRY _ZTV8S7831C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C11[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C13;
extern VTBL_ENTRY _ZTI8S7831C13[];
extern  VTBL_ENTRY _ZTV8S7831C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C13[];
static Base_Class bases_S7831C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3461C5_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
    8, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7831C4,    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
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7831C8,    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
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7831C7,    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
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7831C3,    ABISELECT(48,32), //bcp->offset
    24, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    ABISELECT(177,113), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3461C5_nt,    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
    14, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7831C11,    ABISELECT(160,100), //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
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(184,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
    16, //immediately_derived
  0, 0},
  {&cd_S7831C10,    ABISELECT(160,100), //bcp->offset
    60, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    57, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(248,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(248,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(256,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7831C13,    ABISELECT(248,168), //bcp->offset
    95, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(208,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(216,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
    23, //immediately_derived
  0, 0},
  {&cd_S7831C11,    ABISELECT(200,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(272,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(264,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(264,176), //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
    10, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7831C8,    ABISELECT(264,176), //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
    11, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7831C7,    ABISELECT(264,176), //bcp->offset
    100, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(240,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
    44, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(232,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
    34, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(224,148), //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
    18, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7831C8,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7831C7,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(280,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(280,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(288,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7831C13,    ABISELECT(280,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7831C16,    ABISELECT(280,188), //bcp->offset
    111, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(304,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
    43, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(312,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
    43, //immediately_derived
  0, 0},
  {&cd_S7831C11,    ABISELECT(296,196), //bcp->offset
    119, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S7831C14,    ABISELECT(224,148), //bcp->offset
    84, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7831C12,    ABISELECT(200,132), //bcp->offset
    69, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    56, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(320,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(320,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7831C8,    ABISELECT(320,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S7831C18,    ABISELECT(320,212), //bcp->offset
    128, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    56, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    52, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(72,52), //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
    26, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S7831C8,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S7831C7,    ABISELECT(72,52), //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
    28, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7831C3,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S7831C17,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7831C9,    ABISELECT(72,52), //bcp->offset
    38, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_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
    60, //immediately_derived
  0, 0},
  {&cd_S7831C11,    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_S731C17_nt,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7831C4,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    64, //immediately_derived
  0, 0},
  {&cd_S7831C13,    ABISELECT(32,24), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7831C2[];
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C2D1Ev();
extern void _ZN7S7831C2D0Ev();
extern void _ZN7S7831C22v5Ev();
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n56_N7S7831C2D1Ev,_ZTv0_n28_N7S7831C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S7831C2D1Ev,_ZThn32_N7S7831C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7831C2D0Ev,_ZTv0_n28_N7S7831C2D0Ev)();
extern void ABISELECT(_ZThn48_N7S7831C2D0Ev,_ZThn32_N7S7831C2D0Ev)() __attribute__((weak));
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C32v3Ev();
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S7831C2D1Ev,_ZTv0_n60_N7S7831C2D1Ev)();
extern void ABISELECT(_ZThn72_N7S7831C2D1Ev,_ZThn52_N7S7831C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7831C2D0Ev,_ZTv0_n60_N7S7831C2D0Ev)();
extern void ABISELECT(_ZThn72_N7S7831C2D0Ev,_ZThn52_N7S7831C2D0Ev)() __attribute__((weak));
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C32v3Ev();
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7831C2D1Ev,_ZTv0_n24_N7S7831C2D1Ev)();
extern void ABISELECT(_ZThn160_N7S7831C2D1Ev,_ZThn100_N7S7831C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7831C2D0Ev,_ZTv0_n24_N7S7831C2D0Ev)();
extern void ABISELECT(_ZThn160_N7S7831C2D0Ev,_ZThn100_N7S7831C2D0Ev)() __attribute__((weak));
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S7831C2D1Ev,_ZTv0_n44_N7S7831C2D1Ev)();
extern void ABISELECT(_ZThn200_N7S7831C2D1Ev,_ZThn132_N7S7831C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7831C2D0Ev,_ZTv0_n44_N7S7831C2D0Ev)();
extern void ABISELECT(_ZThn200_N7S7831C2D0Ev,_ZThn132_N7S7831C2D0Ev)() __attribute__((weak));
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N7S7831C2D1Ev,_ZTvn16_n44_N7S7831C2D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N7S7831C2D0Ev,_ZTvn16_n44_N7S7831C2D0Ev)();
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7831C2D1Ev,_ZTv0_n24_N7S7831C2D1Ev)();
extern void ABISELECT(_ZThn264_N7S7831C2D1Ev,_ZThn176_N7S7831C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7831C2D0Ev,_ZTv0_n24_N7S7831C2D0Ev)();
extern void ABISELECT(_ZThn264_N7S7831C2D0Ev,_ZThn176_N7S7831C2D0Ev)() __attribute__((weak));
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7831C2D1Ev,_ZTv0_n24_N7S7831C2D1Ev)();
extern void ABISELECT(_ZThn296_N7S7831C2D1Ev,_ZThn196_N7S7831C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7831C2D0Ev,_ZTv0_n24_N7S7831C2D0Ev)();
extern void ABISELECT(_ZThn296_N7S7831C2D0Ev,_ZThn196_N7S7831C2D0Ev)() __attribute__((weak));
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY vtc_S7831C2[] = {
  ABISELECT(320,212),
  ABISELECT(320,212),
  ABISELECT(296,196),
  ABISELECT(280,188),
  ABISELECT(264,176),
  ABISELECT(248,168),
  ABISELECT(200,132),
  ABISELECT(160,100),
  ABISELECT(72,52),
  0,
  ABISELECT(48,32),
  ABISELECT(160,100),
  ABISELECT(160,100),
  ABISELECT(64,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C2[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C22v5Ev,
  ABISELECT(32,20),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S7831C2[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  0,
  0,
  ABISELECT(-48,-32),
  0,
  ABISELECT(112,68),
  ABISELECT(-48,-32),
  ABISELECT(16,12),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7831C2[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7831C2D1Ev,_ZTv0_n28_N7S7831C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7831C2D0Ev,_ZTv0_n28_N7S7831C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7831C32v3Ev,
  0,
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-72,-52),
  -8,
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI7S7831C2[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7831C2D1Ev,_ZTv0_n60_N7S7831C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7831C2D0Ev,_ZTv0_n60_N7S7831C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7831C32v3Ev,
  ABISELECT(-160,-100),
  0,
  0,
  ABISELECT(-96,-56),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI7S7831C2[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C2D1Ev,_ZTv0_n24_N7S7831C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C2D0Ev,_ZTv0_n24_N7S7831C2D0Ev),
  ABISELECT(24,16),
  ABISELECT(-200,-132),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-200,-132),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  ABISELECT(-200,-132),
  (VTBL_ENTRY)&(_ZTI7S7831C2[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7831C2D1Ev,_ZTv0_n44_N7S7831C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7831C2D0Ev,_ZTv0_n44_N7S7831C2D0Ev),
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI7S7831C2[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N7S7831C2D1Ev,_ZTvn16_n44_N7S7831C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N7S7831C2D0Ev,_ZTvn16_n44_N7S7831C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  0,
  ABISELECT(-184,-124),
  ABISELECT(-248,-168),
  (VTBL_ENTRY)&(_ZTI7S7831C2[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  0,
  ABISELECT(-264,-176),
  0,
  ABISELECT(-264,-176),
  ABISELECT(-200,-132),
  ABISELECT(-264,-176),
  (VTBL_ENTRY)&(_ZTI7S7831C2[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C2D1Ev,_ZTv0_n24_N7S7831C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C2D0Ev,_ZTv0_n24_N7S7831C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-280,-188),
  (VTBL_ENTRY)&(_ZTI7S7831C2[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
  ABISELECT(-296,-196),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  ABISELECT(-296,-196),
  (VTBL_ENTRY)&(_ZTI7S7831C2[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C2D1Ev,_ZTv0_n24_N7S7831C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C2D0Ev,_ZTv0_n24_N7S7831C2D0Ev),
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-320,-212),
  (VTBL_ENTRY)&(_ZTI7S7831C2[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S7831C2[];
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C11D1Ev();
extern void _ZN8S7831C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C11__A__7S7831C2[] = {
  ABISELECT(160,100),
  ABISELECT(160,100),
  ABISELECT(64,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D0Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__8S7831C11__A__7S7831C2[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C13__A__7S7831C2[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C13[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C48S7831C13__A8__7S7831C2[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C3D1Ev();
extern void _ZN7S7831C3D0Ev();
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C3__7S7831C2[] = {
  ABISELECT(112,68),
  ABISELECT(-48,-32),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C3[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7831C32v3Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C7D1Ev();
extern void _ZN7S7831C7D0Ev();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C77S7831C3__7S7831C2[] = {
  ABISELECT(-48,-32),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C7[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C87S7831C77S7831C3__7S7831C2[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C47S7831C87S7831C77S7831C3__A1__7S7831C2[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__7S7831C3__7S7831C2[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI7S7831C3[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__7S7831C2[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C9D1Ev();
extern void _ZN7S7831C9D0Ev();
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C9__7S7831C2[] = {
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-72,-52),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7831C32v3Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C17D1Ev();
extern void _ZN8S7831C17D0Ev();
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C177S7831C9__7S7831C2[] = {
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-72,-52),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C17D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7831C32v3Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C3D1Ev();
extern void _ZN7S7831C3D0Ev();
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C38S7831C177S7831C9__A1__7S7831C2[] = {
  ABISELECT(88,48),
  ABISELECT(-72,-52),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C3[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7831C32v3Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C7D1Ev();
extern void _ZN7S7831C7D0Ev();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C77S7831C38S7831C177S7831C9__A3__7S7831C2[] = {
  ABISELECT(-72,-52),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C7[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C87S7831C77S7831C38S7831C177S7831C9__A4__7S7831C2[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C47S7831C87S7831C77S7831C38S7831C177S7831C9__A7__7S7831C2[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__7S7831C38S7831C177S7831C9__A1__7S7831C2[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S7831C3[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C18__8S7831C177S7831C9__7S7831C2[] = {
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__A1__8S7831C177S7831C9__7S7831C2[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7831C17D1Ev,_ZTv0_n24_N8S7831C17D1Ev)();
extern void ABISELECT(_ZThn224_N8S7831C17D1Ev,_ZThn144_N8S7831C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7831C17D0Ev,_ZTv0_n24_N8S7831C17D0Ev)();
extern void ABISELECT(_ZThn224_N8S7831C17D0Ev,_ZThn144_N8S7831C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7831C11__8S7831C177S7831C9__7S7831C2[] = {
  ABISELECT(-224,-144),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C17D1Ev,_ZTv0_n24_N8S7831C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C17D0Ev,_ZTv0_n24_N8S7831C17D0Ev),
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S7831C17D1Ev,_ZTv0_n44_N8S7831C17D1Ev)();
extern void ABISELECT(_ZThn128_N8S7831C17D1Ev,_ZThn80_N8S7831C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7831C17D0Ev,_ZTv0_n44_N8S7831C17D0Ev)();
extern void ABISELECT(_ZThn128_N8S7831C17D0Ev,_ZThn80_N8S7831C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7831C12__8S7831C177S7831C9__7S7831C2[] = {
  ABISELECT(24,16),
  ABISELECT(-128,-80),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-200,-132),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7831C17D1Ev,_ZTv0_n44_N8S7831C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7831C17D0Ev,_ZTv0_n44_N8S7831C17D0Ev),
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C13__8S7831C177S7831C9__7S7831C2[] = {
  0,
  ABISELECT(-184,-124),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7831C17D1Ev,_ZTv0_n24_N8S7831C17D1Ev)();
extern void ABISELECT(_ZThn192_N8S7831C17D1Ev,_ZThn124_N8S7831C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7831C17D0Ev,_ZTv0_n24_N8S7831C17D0Ev)();
extern void ABISELECT(_ZThn192_N8S7831C17D0Ev,_ZThn124_N8S7831C17D0Ev)() __attribute__((weak));
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C7__A1__8S7831C177S7831C9__7S7831C2[] = {
  0,
  ABISELECT(-192,-124),
  0,
  ABISELECT(-264,-176),
  ABISELECT(-200,-132),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C17D1Ev,_ZTv0_n24_N8S7831C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C17D0Ev,_ZTv0_n24_N8S7831C17D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S7831C17D1Ev,_ZTvn16_n44_N8S7831C17D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S7831C17D0Ev,_ZTvn16_n44_N8S7831C17D0Ev)();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C148S7831C12__8S7831C177S7831C9__7S7831C2[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S7831C17D1Ev,_ZTvn16_n44_N8S7831C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S7831C17D0Ev,_ZTvn16_n44_N8S7831C17D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C16__8S7831C177S7831C9__7S7831C2[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7831C9D1Ev,_ZTv0_n24_N7S7831C9D1Ev)();
extern void ABISELECT(_ZThn88_N7S7831C9D1Ev,_ZThn48_N7S7831C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7831C9D0Ev,_ZTv0_n24_N7S7831C9D0Ev)();
extern void ABISELECT(_ZThn88_N7S7831C9D0Ev,_ZThn48_N7S7831C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7831C10__7S7831C9__7S7831C2[] = {
  ABISELECT(-88,-48),
  0,
  0,
  ABISELECT(-96,-56),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C9D1Ev,_ZTv0_n24_N7S7831C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C9D0Ev,_ZTv0_n24_N7S7831C9D0Ev),
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S7831C9D1Ev,_ZTv0_n44_N7S7831C9D1Ev)();
extern void ABISELECT(_ZThn128_N7S7831C9D1Ev,_ZThn80_N7S7831C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7831C9D0Ev,_ZTv0_n44_N7S7831C9D0Ev)();
extern void ABISELECT(_ZThn128_N7S7831C9D0Ev,_ZThn80_N7S7831C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7831C12__7S7831C9__7S7831C2[] = {
  ABISELECT(24,16),
  ABISELECT(-128,-80),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-200,-132),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7831C9D1Ev,_ZTv0_n44_N7S7831C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7831C9D0Ev,_ZTv0_n44_N7S7831C9D0Ev),
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C13__7S7831C9__7S7831C2[] = {
  0,
  ABISELECT(-184,-124),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7831C9D1Ev,_ZTv0_n24_N7S7831C9D1Ev)();
extern void ABISELECT(_ZThn192_N7S7831C9D1Ev,_ZThn124_N7S7831C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7831C9D0Ev,_ZTv0_n24_N7S7831C9D0Ev)();
extern void ABISELECT(_ZThn192_N7S7831C9D0Ev,_ZThn124_N7S7831C9D0Ev)() __attribute__((weak));
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C7__7S7831C9__7S7831C2[] = {
  0,
  ABISELECT(-192,-124),
  0,
  ABISELECT(-264,-176),
  ABISELECT(-200,-132),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C9D1Ev,_ZTv0_n24_N7S7831C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C9D0Ev,_ZTv0_n24_N7S7831C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N7S7831C9D1Ev,_ZTvn16_n44_N7S7831C9D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N7S7831C9D0Ev,_ZTvn16_n44_N7S7831C9D0Ev)();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C148S7831C12__7S7831C9__7S7831C2[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N7S7831C9D1Ev,_ZTvn16_n44_N7S7831C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N7S7831C9D0Ev,_ZTvn16_n44_N7S7831C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C16__7S7831C9__7S7831C2[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7831C9D1Ev,_ZTv0_n24_N7S7831C9D1Ev)();
extern void ABISELECT(_ZThn224_N7S7831C9D1Ev,_ZThn144_N7S7831C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7831C9D0Ev,_ZTv0_n24_N7S7831C9D0Ev)();
extern void ABISELECT(_ZThn224_N7S7831C9D0Ev,_ZThn144_N7S7831C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7831C11__A2__7S7831C9__7S7831C2[] = {
  ABISELECT(-224,-144),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C9D1Ev,_ZTv0_n24_N7S7831C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C9D0Ev,_ZTv0_n24_N7S7831C9D0Ev),
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C18__7S7831C9__7S7831C2[] = {
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C10D1Ev();
extern void _ZN8S7831C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C10__7S7831C2[] = {
  0,
  0,
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C10[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C10D0Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C11D1Ev();
extern void _ZN8S7831C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C118S7831C10__7S7831C2[] = {
  0,
  0,
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D0Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C12D1Ev();
extern void _ZN8S7831C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C12__7S7831C2[] = {
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-200,-132),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C12D0Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C11D1Ev();
extern void _ZN8S7831C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C118S7831C12__A1__7S7831C2[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D0Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__8S7831C118S7831C12__A1__7S7831C2[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C14D1Ev();
extern void _ZN8S7831C14D0Ev();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C148S7831C12__7S7831C2[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C14[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C14D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C7D1Ev();
extern void _ZN7S7831C7D0Ev();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C78S7831C148S7831C12__A2__7S7831C2[] = {
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C7[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C87S7831C78S7831C148S7831C12__A2__7S7831C2[] = {
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C47S7831C87S7831C78S7831C148S7831C12__A4__7S7831C2[] = {
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C16__8S7831C148S7831C12__7S7831C2[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S7831C14[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__A2__8S7831C148S7831C12__7S7831C2[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(64,48),
  (VTBL_ENTRY)&(_ZTI8S7831C14[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7831C14D1Ev,_ZTv0_n24_N8S7831C14D1Ev)();
extern void ABISELECT(_ZThn72_N8S7831C14D1Ev,_ZThn48_N8S7831C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7831C14D0Ev,_ZTv0_n24_N8S7831C14D0Ev)();
extern void ABISELECT(_ZThn72_N8S7831C14D0Ev,_ZThn48_N8S7831C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7831C11__8S7831C148S7831C12__7S7831C2[] = {
  ABISELECT(-72,-48),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S7831C14[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C14D1Ev,_ZTv0_n24_N8S7831C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C14D0Ev,_ZTv0_n24_N8S7831C14D0Ev),
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C13__8S7831C12__7S7831C2[] = {
  0,
  ABISELECT(-184,-124),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__A1__8S7831C12__7S7831C2[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev)();
extern void ABISELECT(_ZThn64_N8S7831C12D1Ev,_ZThn44_N8S7831C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev)();
extern void ABISELECT(_ZThn64_N8S7831C12D0Ev,_ZThn44_N8S7831C12D0Ev)() __attribute__((weak));
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C7__8S7831C12__7S7831C2[] = {
  0,
  ABISELECT(-64,-44),
  0,
  ABISELECT(-264,-176),
  ABISELECT(-200,-132),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZThn24_N8S7831C12D1Ev,_ZThn16_N8S7831C12D1Ev)();
extern void ABISELECT(_ZThn24_N8S7831C12D0Ev,_ZThn16_N8S7831C12D0Ev)();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C14__8S7831C12__7S7831C2[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7831C12D1Ev,_ZThn16_N8S7831C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7831C12D0Ev,_ZThn16_N8S7831C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C16__8S7831C12__7S7831C2[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev)();
extern void ABISELECT(_ZThn96_N8S7831C12D1Ev,_ZThn64_N8S7831C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev)();
extern void ABISELECT(_ZThn96_N8S7831C12D0Ev,_ZThn64_N8S7831C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7831C11__A1__8S7831C12__7S7831C2[] = {
  ABISELECT(-96,-64),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev),
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C13__7S7831C2[] = {
  ABISELECT(-184,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C13[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C48S7831C13__A2__7S7831C2[] = {
  ABISELECT(-184,-124),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C7D1Ev();
extern void _ZN7S7831C7D0Ev();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C7__A1__7S7831C2[] = {
  ABISELECT(-264,-176),
  ABISELECT(-200,-132),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C7[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C87S7831C7__A1__7S7831C2[] = {
  ABISELECT(-200,-132),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C47S7831C87S7831C7__A3__7S7831C2[] = {
  ABISELECT(-200,-132),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C16__7S7831C2[] = {
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C16[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C138S7831C16__A1__7S7831C2[] = {
  ABISELECT(-216,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C13[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C48S7831C138S7831C16__A5__7S7831C2[] = {
  ABISELECT(-216,-144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__A1__8S7831C16__7S7831C2[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S7831C16[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C11D1Ev();
extern void _ZN8S7831C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C11__A2__7S7831C2[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D0Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__8S7831C11__A2__7S7831C2[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(136,96),
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C18__7S7831C2[] = {
  0,
  0,
  ABISELECT(-256,-168),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C18[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C8__A3__7S7831C2[] = {
  ABISELECT(-256,-168),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C47S7831C8__A6__7S7831C2[] = {
  ABISELECT(-256,-168),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
static  VTT_ENTRY vtt_S7831C2[] = {
  {&(_ZTV7S7831C2[16]),  16,134},
  {&(_tg__ZTV8S7831C11__A__7S7831C2[5]),  5,8},
  {&(_tg__ZTV7S7831C4__8S7831C11__A__7S7831C2[4]),  4,5},
  {&(_tg__ZTV8S7831C13__A__7S7831C2[3]),  3,4},
  {&(_tg__ZTV7S7831C48S7831C13__A8__7S7831C2[3]),  3,4},
  {&(_ZTV7S7831C2[33]),  33,134},
  {&(_ZTV7S7831C2[66]),  66,134},
  {&(_ZTV7S7831C2[55]),  55,134},
  {&(_ZTV7S7831C2[66]),  66,134},
  {&(_ZTV7S7831C2[81]),  81,134},
  {&(_ZTV7S7831C2[99]),  99,134},
  {&(_ZTV7S7831C2[107]),  107,134},
  {&(_ZTV7S7831C2[91]),  91,134},
  {&(_ZTV7S7831C2[117]),  117,134},
  {&(_ZTV7S7831C2[125]),  125,134},
  {&(_ZTV7S7831C2[133]),  133,134},
  {&(_ZTV7S7831C2[133]),  133,134},
  {&(_ZTV7S7831C2[23]),  23,134},
  {&(_tg__ZTV7S7831C3__7S7831C2[5]),  5,10},
  {&(_tg__ZTV7S7831C77S7831C3__7S7831C2[4]),  4,8},
  {&(_tg__ZTV7S7831C87S7831C77S7831C3__7S7831C2[3]),  3,4},
  {&(_tg__ZTV7S7831C47S7831C87S7831C77S7831C3__A1__7S7831C2[3]),  3,4},
  {&(_tg__ZTV7S7831C4__7S7831C3__7S7831C2[4]),  4,5},
  {&(_tg__ZTV7S7831C4__7S7831C2[3]),  3,4},
  {&(_tg__ZTV7S7831C9__7S7831C2[13]),  13,18},
  {&(_tg__ZTV8S7831C177S7831C9__7S7831C2[12]),  12,17},
  {&(_tg__ZTV7S7831C38S7831C177S7831C9__A1__7S7831C2[5]),  5,10},
  {&(_tg__ZTV7S7831C77S7831C38S7831C177S7831C9__A3__7S7831C2[4]),  4,8},
  {&(_tg__ZTV7S7831C87S7831C77S7831C38S7831C177S7831C9__A4__7S7831C2[3]),  3,4},
  {&(_tg__ZTV7S7831C47S7831C87S7831C77S7831C38S7831C177S7831C9__A7__7S7831C2[3]),  3,4},
  {&(_tg__ZTV7S7831C4__7S7831C38S7831C177S7831C9__A1__7S7831C2[4]),  4,5},
  {&(_tg__ZTV8S7831C18__8S7831C177S7831C9__7S7831C2[5]),  5,6},
  {&(_tg__ZTV8S7831C18__8S7831C177S7831C9__7S7831C2[5]),  5,6},
  {&(_tg__ZTV7S7831C4__A1__8S7831C177S7831C9__7S7831C2[4]),  4,5},
  {&(_tg__ZTV8S7831C11__8S7831C177S7831C9__7S7831C2[6]),  6,9},
  {&(_tg__ZTV8S7831C12__8S7831C177S7831C9__7S7831C2[12]),  12,15},
  {&(_tg__ZTV8S7831C13__8S7831C177S7831C9__7S7831C2[4]),  4,5},
  {&(_tg__ZTV7S7831C7__A1__8S7831C177S7831C9__7S7831C2[7]),  7,11},
  {&(_tg__ZTV8S7831C148S7831C12__8S7831C177S7831C9__7S7831C2[7]),  7,11},
  {&(_tg__ZTV8S7831C16__8S7831C177S7831C9__7S7831C2[6]),  6,8},
  {&(_tg__ZTV8S7831C10__7S7831C9__7S7831C2[6]),  6,9},
  {&(_tg__ZTV8S7831C10__7S7831C9__7S7831C2[6]),  6,9},
  {&(_tg__ZTV8S7831C12__7S7831C9__7S7831C2[12]),  12,15},
  {&(_tg__ZTV8S7831C13__7S7831C9__7S7831C2[4]),  4,5},
  {&(_tg__ZTV7S7831C7__7S7831C9__7S7831C2[7]),  7,11},
  {&(_tg__ZTV8S7831C148S7831C12__7S7831C9__7S7831C2[7]),  7,11},
  {&(_tg__ZTV8S7831C16__7S7831C9__7S7831C2[6]),  6,8},
  {&(_tg__ZTV8S7831C11__A2__7S7831C9__7S7831C2[6]),  6,9},
  {&(_tg__ZTV8S7831C18__7S7831C9__7S7831C2[5]),  5,6},
  {&(_tg__ZTV8S7831C18__7S7831C9__7S7831C2[5]),  5,6},
  {&(_tg__ZTV8S7831C10__7S7831C2[5]),  5,8},
  {&(_tg__ZTV8S7831C118S7831C10__7S7831C2[5]),  5,8},
  {&(_tg__ZTV8S7831C118S7831C10__7S7831C2[5]),  5,8},
  {&(_tg__ZTV8S7831C10__7S7831C2[5]),  5,8},
  {&(_tg__ZTV8S7831C12__7S7831C2[10]),  10,13},
  {&(_tg__ZTV8S7831C118S7831C12__A1__7S7831C2[5]),  5,8},
  {&(_tg__ZTV7S7831C4__8S7831C118S7831C12__A1__7S7831C2[4]),  4,5},
  {&(_tg__ZTV8S7831C148S7831C12__7S7831C2[7]),  7,11},
  {&(_tg__ZTV7S7831C78S7831C148S7831C12__A2__7S7831C2[4]),  4,8},
  {&(_tg__ZTV7S7831C87S7831C78S7831C148S7831C12__A2__7S7831C2[3]),  3,4},
  {&(_tg__ZTV7S7831C47S7831C87S7831C78S7831C148S7831C12__A4__7S7831C2[3]),  3,4},
  {&(_tg__ZTV8S7831C16__8S7831C148S7831C12__7S7831C2[6]),  6,8},
  {&(_tg__ZTV7S7831C4__A2__8S7831C148S7831C12__7S7831C2[4]),  4,5},
  {&(_tg__ZTV8S7831C11__8S7831C148S7831C12__7S7831C2[6]),  6,9},
  {&(_tg__ZTV8S7831C13__8S7831C12__7S7831C2[4]),  4,5},
  {&(_tg__ZTV7S7831C4__A1__8S7831C12__7S7831C2[4]),  4,5},
  {&(_tg__ZTV7S7831C7__8S7831C12__7S7831C2[7]),  7,11},
  {&(_tg__ZTV8S7831C14__8S7831C12__7S7831C2[7]),  7,11},
  {&(_tg__ZTV8S7831C16__8S7831C12__7S7831C2[6]),  6,8},
  {&(_tg__ZTV8S7831C11__A1__8S7831C12__7S7831C2[6]),  6,9},
  {&(_tg__ZTV8S7831C13__7S7831C2[3]),  3,4},
  {&(_tg__ZTV7S7831C48S7831C13__A2__7S7831C2[3]),  3,4},
  {&(_tg__ZTV7S7831C7__A1__7S7831C2[4]),  4,8},
  {&(_tg__ZTV7S7831C87S7831C7__A1__7S7831C2[3]),  3,4},
  {&(_tg__ZTV7S7831C47S7831C87S7831C7__A3__7S7831C2[3]),  3,4},
  {&(_tg__ZTV8S7831C16__7S7831C2[4]),  4,6},
  {&(_tg__ZTV8S7831C138S7831C16__A1__7S7831C2[3]),  3,4},
  {&(_tg__ZTV7S7831C48S7831C138S7831C16__A5__7S7831C2[3]),  3,4},
  {&(_tg__ZTV7S7831C4__A1__8S7831C16__7S7831C2[4]),  4,5},
  {&(_tg__ZTV8S7831C11__A2__7S7831C2[5]),  5,8},
  {&(_tg__ZTV7S7831C4__8S7831C11__A2__7S7831C2[4]),  4,5},
  {&(_tg__ZTV8S7831C18__7S7831C2[5]),  5,6},
  {&(_tg__ZTV8S7831C18__7S7831C2[5]),  5,6},
  {&(_tg__ZTV7S7831C8__A3__7S7831C2[3]),  3,4},
  {&(_tg__ZTV7S7831C47S7831C8__A6__7S7831C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7831C2[];
extern  VTBL_ENTRY _ZTV7S7831C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C2[];
static VTBL_ENTRY alt_thunk_names46[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7831C12D0Ev,_ZThn64_N8S7831C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7831C12D0Ev,_ZThn44_N8S7831C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7831C12D1Ev,_ZThn64_N8S7831C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7831C12D1Ev,_ZThn44_N8S7831C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C14D0Ev,_ZTv0_n24_N8S7831C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7831C14D0Ev,_ZThn48_N8S7831C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C14D1Ev,_ZTv0_n24_N8S7831C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7831C14D1Ev,_ZThn48_N8S7831C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7831C9D0Ev,_ZTv0_n44_N7S7831C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7831C9D0Ev,_ZThn80_N7S7831C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7831C9D1Ev,_ZTv0_n44_N7S7831C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7831C9D1Ev,_ZThn80_N7S7831C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7831C9D0Ev,_ZTv0_n24_N7S7831C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7831C9D0Ev,_ZThn144_N7S7831C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7831C9D0Ev,_ZThn124_N7S7831C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7831C9D0Ev,_ZThn48_N7S7831C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7831C9D1Ev,_ZTv0_n24_N7S7831C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7831C9D1Ev,_ZThn144_N7S7831C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7831C9D1Ev,_ZThn124_N7S7831C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7831C9D1Ev,_ZThn48_N7S7831C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7831C17D0Ev,_ZTv0_n44_N8S7831C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7831C17D0Ev,_ZThn80_N8S7831C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7831C17D1Ev,_ZTv0_n44_N8S7831C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7831C17D1Ev,_ZThn80_N8S7831C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C17D0Ev,_ZTv0_n24_N8S7831C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7831C17D0Ev,_ZThn124_N8S7831C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7831C17D0Ev,_ZThn144_N8S7831C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C17D1Ev,_ZTv0_n24_N8S7831C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7831C17D1Ev,_ZThn124_N8S7831C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7831C17D1Ev,_ZThn144_N8S7831C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7831C2D0Ev,_ZTv0_n44_N7S7831C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S7831C2D0Ev,_ZThn132_N7S7831C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7831C2D1Ev,_ZTv0_n44_N7S7831C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S7831C2D1Ev,_ZThn132_N7S7831C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7831C2D0Ev,_ZTv0_n24_N7S7831C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N7S7831C2D0Ev,_ZThn196_N7S7831C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7831C2D0Ev,_ZThn176_N7S7831C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7831C2D0Ev,_ZThn100_N7S7831C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7831C2D1Ev,_ZTv0_n24_N7S7831C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N7S7831C2D1Ev,_ZThn196_N7S7831C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7831C2D1Ev,_ZThn176_N7S7831C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7831C2D1Ev,_ZThn100_N7S7831C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7831C2D0Ev,_ZTv0_n60_N7S7831C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7831C2D0Ev,_ZThn52_N7S7831C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7831C2D1Ev,_ZTv0_n60_N7S7831C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7831C2D1Ev,_ZThn52_N7S7831C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7831C2D0Ev,_ZTv0_n28_N7S7831C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7831C2D0Ev,_ZThn32_N7S7831C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7831C2D1Ev,_ZTv0_n28_N7S7831C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7831C2D1Ev,_ZThn32_N7S7831C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7831C2 = {  "S7831C2", // class name
  bases_S7831C2, 65,
  &(vtc_S7831C2[0]), // expected_vtbl_contents
  &(vtt_S7831C2[0]), // expected_vtt_contents
  ABISELECT(336,220), // object size
  NSPAIRA(_ZTI7S7831C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7831C2),134, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7831C2),85, //virtual table table var
  34, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names46,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7831C1  : S7831C2 , virtual S28C52_nt {
  virtual  ~S7831C1(); // _ZN7S7831C1D2Ev
  S7831C1(); // tgen
};
//SIG(1 S7831C1) C1{ BC2{ VBC3{ VBC4{ VBC5{ m FL} BC6{ m} v1} BC7{ BC5 VBC6 BC8{ BC4} vd v2} vd v3} BC5 VBC9{ VBC4 VBC10{ BC6 VBC4 BC11{ BC5 VBC4 BC6 vd} BC5 vd FL} VBC12{ VBC5 VBC13{ VBC5 BC4 BC6} BC11 VBC7 BC14{ BC5 BC7 BC15{ m} VBC16{ VBC5 BC13 VBC4 v4} VBC11 vd}} BC17{ VBC18{ VBC8 Fi} BC3 VBC11 VBC12 vd Fp[9]} vd} BC11 BC13 vd v5 Fc} VBC15 vd}


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

static void Test_S7831C1()
{
  extern Class_Descriptor cd_S7831C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(43,56)];
    init_test(&cd_S7831C1, buf);
    S7831C1 *dp, &lv = *(dp=new (buf) S7831C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,220), "sizeof(S7831C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7831C1)");
    /*is_ambiguous_... S7831C1::S7831C4 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*), ABISELECT(64,44), "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C8*)(S7831C7*)(S7831C3*), ABISELECT(64,44), "S7831C1");
    /*is_ambiguous_... S7831C12::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C12*), ABISELECT(64,44), "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C13*), ABISELECT(64,44), "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C13*), ABISELECT(64,44), "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C8*)(S7831C7*), ABISELECT(64,44), "S7831C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C8*)(S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(64,44), "S7831C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C16*), ABISELECT(64,44), "S7831C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C13*)(S7831C16*), ABISELECT(64,44), "S7831C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C13*)(S7831C16*), ABISELECT(64,44), "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C8*), ABISELECT(64,44), "S7831C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C8*)(S7831C7*)(S7831C3*)(S7831C17*)(S7831C9*), ABISELECT(64,44), "S7831C1");
    /*is_ambiguous_... S7831C2::S7831C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C13*)(S7831C2*), ABISELECT(64,44), "S7831C1");
    /*is_ambiguous_... S7831C2::S7831C13 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C4*)(S7831C13*)(S7831C2*), ABISELECT(64,44), "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C4 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*), ABISELECT(160,100), "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C3 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C3*), ABISELECT(160,100), "S7831C1");
    /*is_ambiguous_... S7831C9::S7831C4 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C9*), ABISELECT(160,100), "S7831C1");
    check_base_class_offset(lv, (S7831C4*)(S7831C10*), ABISELECT(160,100), "S7831C1");
    check_base_class_offset(lv, (S7831C4*)(S7831C11*)(S7831C10*), ABISELECT(160,100), "S7831C1");
    /*is_ambiguous_... S7831C12::S7831C11 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C11*)(S7831C12*), ABISELECT(160,100), "S7831C1");
    /*is_ambiguous_... S7831C16::S7831C4 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C16*), ABISELECT(160,100), "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C11 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C11*), ABISELECT(160,100), "S7831C1");
    /*is_ambiguous_... S7831C3::S7831C4 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C3*)(S7831C17*)(S7831C9*), ABISELECT(160,100), "S7831C1");
    /*is_ambiguous_... S7831C2::S7831C11 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C11*)(S7831C2*), ABISELECT(160,100), "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C7*)(S7831C3*), ABISELECT(56,36), "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C7*)(S7831C3*), 0, "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C7*), 0, "S7831C1");
    /*is_ambiguous_... S7831C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C7*)(S7831C14*)(S7831C12*), 0, "S7831C1");
    /*is_ambiguous_... S7831C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C7*)(S7831C3*)(S7831C17*)(S7831C9*), 0, "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C8*)(S7831C7*)(S7831C3*), ABISELECT(48,32), "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C3 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C8*)(S7831C7*)(S7831C3*), ABISELECT(48,32), "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C3 */ AMB_check_base_class_offset(lv, (S7831C8*)(S7831C7*)(S7831C3*), ABISELECT(48,32), "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C3 */ AMB_check_base_class_offset(lv, (S7831C7*)(S7831C3*), ABISELECT(48,32), "S7831C1");
    /*is_ambiguous_... S7831C2::S7831C3 */ AMB_check_base_class_offset(lv, (S7831C3*)(S7831C2*), ABISELECT(48,32), "S7831C1");
    /*is_ambiguous_... S7831C2::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C2*), ABISELECT(24,16), "S7831C1");
    /*is_ambiguous_... S7831C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C10*), ABISELECT(177,113), "S7831C1");
    /*is_ambiguous_... S7831C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C11*)(S7831C10*), ABISELECT(168,104), "S7831C1");
    /*is_ambiguous_... S7831C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C11*)(S7831C10*), ABISELECT(176,112), "S7831C1");
    check_base_class_offset(lv, (S7831C11*)(S7831C10*), ABISELECT(160,100), "S7831C1");
    /*is_ambiguous_... S7831C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C10*), ABISELECT(184,116), "S7831C1");
    check_base_class_offset(lv, (S7831C10*)(S7831C9*), ABISELECT(160,100), "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C13*), ABISELECT(248,168), "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C13 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C13*), ABISELECT(248,168), "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C13*), ABISELECT(256,172), "S7831C1");
    /*is_ambiguous_... S7831C12::S7831C13 */ AMB_check_base_class_offset(lv, (S7831C13*)(S7831C12*), ABISELECT(248,168), "S7831C1");
    /*is_ambiguous_... S7831C12::S7831C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C11*)(S7831C12*), ABISELECT(208,136), "S7831C1");
    /*is_ambiguous_... S7831C12::S7831C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C11*)(S7831C12*), ABISELECT(216,144), "S7831C1");
    /*is_ambiguous_... S7831C12::S7831C11 */ AMB_check_base_class_offset(lv, (S7831C11*)(S7831C12*), ABISELECT(200,132), "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C7*), ABISELECT(272,180), "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C8*)(S7831C7*), ABISELECT(264,176), "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C7 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C8*)(S7831C7*), ABISELECT(264,176), "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C7 */ AMB_check_base_class_offset(lv, (S7831C8*)(S7831C7*), ABISELECT(264,176), "S7831C1");
    /*is_ambiguous_... S7831C12::S7831C7 */ AMB_check_base_class_offset(lv, (S7831C7*)(S7831C12*), ABISELECT(264,176), "S7831C1");
    /*is_ambiguous_... S7831C14::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C14*)(S7831C12*), ABISELECT(240,160), "S7831C1");
    /*is_ambiguous_... S7831C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(232,152), "S7831C1");
    check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C8*)(S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(224,148), "S7831C1");
    check_base_class_offset(lv, (S7831C4*)(S7831C8*)(S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(224,148), "S7831C1");
    check_base_class_offset(lv, (S7831C8*)(S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(224,148), "S7831C1");
    check_base_class_offset(lv, (S7831C7*)(S7831C14*)(S7831C12*), ABISELECT(224,148), "S7831C1");
    check_base_class_offset(lv, (S28C52_nt*)(S7831C14*)(S7831C12*), ABISELECT(224,148), "S7831C1");
    check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C13*)(S7831C16*), ABISELECT(280,188), "S7831C1");
    check_base_class_offset(lv, (S7831C4*)(S7831C13*)(S7831C16*), ABISELECT(280,188), "S7831C1");
    /*is_ambiguous_... S7831C13::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C13*)(S7831C16*), ABISELECT(288,192), "S7831C1");
    check_base_class_offset(lv, (S7831C13*)(S7831C16*), ABISELECT(280,188), "S7831C1");
    check_base_class_offset(lv, (S7831C16*)(S7831C14*)(S7831C12*), ABISELECT(280,188), "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C11*), ABISELECT(304,200), "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C11*), ABISELECT(312,208), "S7831C1");
    check_base_class_offset(lv, (S7831C11*)(S7831C14*)(S7831C12*), ABISELECT(296,196), "S7831C1");
    /*is_ambiguous_... S7831C17::S7831C11 */ AMB_check_base_class_offset(lv, (S7831C11*)(S7831C17*)(S7831C9*), ABISELECT(296,196), "S7831C1");
    check_base_class_offset(lv, (S7831C14*)(S7831C12*), ABISELECT(224,148), "S7831C1");
    check_base_class_offset(lv, (S7831C12*)(S7831C9*), ABISELECT(200,132), "S7831C1");
    check_base_class_offset(lv, (S7831C12*)(S7831C17*)(S7831C9*), ABISELECT(200,132), "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C8*), ABISELECT(320,212), "S7831C1");
    /*is_ambiguous_... S7831C1::S7831C8 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C8*), ABISELECT(320,212), "S7831C1");
    check_base_class_offset(lv, (S7831C8*)(S7831C18*), ABISELECT(320,212), "S7831C1");
    check_base_class_offset(lv, (S7831C18*)(S7831C17*)(S7831C9*), ABISELECT(320,212), "S7831C1");
    /*is_ambiguous_... S7831C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C7*)(S7831C3*)(S7831C17*)(S7831C9*), ABISELECT(80,56), "S7831C1");
    check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C8*)(S7831C7*)(S7831C3*)(S7831C17*)(S7831C9*), ABISELECT(72,52), "S7831C1");
    check_base_class_offset(lv, (S7831C4*)(S7831C8*)(S7831C7*)(S7831C3*)(S7831C17*)(S7831C9*), ABISELECT(72,52), "S7831C1");
    check_base_class_offset(lv, (S7831C8*)(S7831C7*)(S7831C3*)(S7831C17*)(S7831C9*), ABISELECT(72,52), "S7831C1");
    check_base_class_offset(lv, (S7831C7*)(S7831C3*)(S7831C17*)(S7831C9*), ABISELECT(72,52), "S7831C1");
    check_base_class_offset(lv, (S7831C3*)(S7831C17*)(S7831C9*), ABISELECT(72,52), "S7831C1");
    check_base_class_offset(lv, (S7831C17*)(S7831C9*), ABISELECT(72,52), "S7831C1");
    check_base_class_offset(lv, (S7831C9*)(S7831C2*), ABISELECT(72,52), "S7831C1");
    /*is_ambiguous_... S7831C2::S7831C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7831C11*)(S7831C2*), ABISELECT(8,4), "S7831C1");
    /*is_ambiguous_... S7831C2::S7831C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C11*)(S7831C2*), ABISELECT(16,12), "S7831C1");
    /*is_ambiguous_... S7831C2::S7831C11 */ AMB_check_base_class_offset(lv, (S7831C11*)(S7831C2*), 0, "S7831C1");
    /*is_ambiguous_... S7831C2::S7831C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C4*)(S7831C13*)(S7831C2*), ABISELECT(32,24), "S7831C1");
    /*is_ambiguous_... S7831C2::S7831C13 */ AMB_check_base_class_offset(lv, (S7831C4*)(S7831C13*)(S7831C2*), ABISELECT(32,24), "S7831C1");
    /*is_ambiguous_... S7831C2::S7831C13 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7831C13*)(S7831C2*), ABISELECT(40,28), "S7831C1");
    /*is_ambiguous_... S7831C2::S7831C13 */ AMB_check_base_class_offset(lv, (S7831C13*)(S7831C2*), ABISELECT(32,24), "S7831C1");
    check_base_class_offset(lv, (S7831C2*), 0, "S7831C1");
    /*is_ambiguous_... S7831C1::S28C52_nt */ AMB_check_base_class_offset(lv, (S28C52_nt*), 0, "S7831C1");
    test_class_info(&lv, &cd_S7831C1);
    dp->~S7831C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7831C1(Test_S7831C1, "S7831C1", ABISELECT(336,220));

#else // __cplusplus

extern void _ZN7S7831C1C1Ev();
extern void _ZN7S7831C1D2Ev();
Name_Map name_map_S7831C1[] = {
  NSPAIR(_ZN7S7831C1C1Ev),
  NSPAIR(_ZN7S7831C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C8;
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
extern Class_Descriptor cd_S7831C7;
extern VTBL_ENTRY _ZTI7S7831C7[];
extern  VTBL_ENTRY _ZTV7S7831C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C7[];
extern Class_Descriptor cd_S7831C3;
extern VTBL_ENTRY _ZTI7S7831C3[];
extern  VTBL_ENTRY _ZTV7S7831C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C11;
extern VTBL_ENTRY _ZTI8S7831C11[];
extern  VTBL_ENTRY _ZTV8S7831C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S7831C10;
extern VTBL_ENTRY _ZTI8S7831C10[];
extern  VTBL_ENTRY _ZTV8S7831C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C10[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C13;
extern VTBL_ENTRY _ZTI8S7831C13[];
extern  VTBL_ENTRY _ZTV8S7831C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C11;
extern VTBL_ENTRY _ZTI8S7831C11[];
extern  VTBL_ENTRY _ZTV8S7831C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C11[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C8;
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
extern Class_Descriptor cd_S7831C7;
extern VTBL_ENTRY _ZTI7S7831C7[];
extern  VTBL_ENTRY _ZTV7S7831C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C7[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C8;
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
extern Class_Descriptor cd_S7831C7;
extern VTBL_ENTRY _ZTI7S7831C7[];
extern  VTBL_ENTRY _ZTV7S7831C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C7[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C13;
extern VTBL_ENTRY _ZTI8S7831C13[];
extern  VTBL_ENTRY _ZTV8S7831C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C13[];
extern Class_Descriptor cd_S7831C16;
extern VTBL_ENTRY _ZTI8S7831C16[];
extern  VTBL_ENTRY _ZTV8S7831C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C16[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C11;
extern VTBL_ENTRY _ZTI8S7831C11[];
extern  VTBL_ENTRY _ZTV8S7831C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C11[];
extern Class_Descriptor cd_S7831C14;
extern VTBL_ENTRY _ZTI8S7831C14[];
extern  VTBL_ENTRY _ZTV8S7831C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C14[];
extern Class_Descriptor cd_S7831C12;
extern VTBL_ENTRY _ZTI8S7831C12[];
extern  VTBL_ENTRY _ZTV8S7831C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C8;
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
extern Class_Descriptor cd_S7831C18;
extern VTBL_ENTRY _ZTI8S7831C18[];
extern  VTBL_ENTRY _ZTV8S7831C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C18[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S7831C8;
extern VTBL_ENTRY _ZTI7S7831C8[];
extern  VTBL_ENTRY _ZTV7S7831C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C8[];
extern Class_Descriptor cd_S7831C7;
extern VTBL_ENTRY _ZTI7S7831C7[];
extern  VTBL_ENTRY _ZTV7S7831C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C7[];
extern Class_Descriptor cd_S7831C3;
extern VTBL_ENTRY _ZTI7S7831C3[];
extern  VTBL_ENTRY _ZTV7S7831C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C3[];
extern Class_Descriptor cd_S7831C17;
extern VTBL_ENTRY _ZTI8S7831C17[];
extern  VTBL_ENTRY _ZTV8S7831C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C17[];
extern Class_Descriptor cd_S7831C9;
extern VTBL_ENTRY _ZTI7S7831C9[];
extern  VTBL_ENTRY _ZTV7S7831C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C11;
extern VTBL_ENTRY _ZTI8S7831C11[];
extern  VTBL_ENTRY _ZTV8S7831C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C11[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C4;
extern VTBL_ENTRY _ZTI7S7831C4[];
extern  VTBL_ENTRY _ZTV7S7831C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C4[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7831C13;
extern VTBL_ENTRY _ZTI8S7831C13[];
extern  VTBL_ENTRY _ZTV8S7831C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7831C13[];
extern Class_Descriptor cd_S7831C2;
extern VTBL_ENTRY _ZTI7S7831C2[];
extern  VTBL_ENTRY _ZTV7S7831C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C2[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
static Base_Class bases_S7831C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3461C5_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
    8, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7831C4,    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
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7831C8,    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
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7831C7,    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
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7831C3,    ABISELECT(48,32), //bcp->offset
    25, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    65, //immediately_derived
  0, 1},
  {&cd_S3461C5_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
    65, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(177,113), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3461C5_nt,    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
    14, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7831C11,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(184,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
    16, //immediately_derived
  0, 0},
  {&cd_S7831C10,    ABISELECT(160,100), //bcp->offset
    61, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    57, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(248,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(248,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(256,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7831C13,    ABISELECT(248,168), //bcp->offset
    96, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(208,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(216,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
    23, //immediately_derived
  0, 0},
  {&cd_S7831C11,    ABISELECT(200,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(272,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(264,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(264,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7831C8,    ABISELECT(264,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7831C7,    ABISELECT(264,176), //bcp->offset
    101, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(240,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
    44, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(232,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
    34, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(224,148), //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
    18, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7831C8,    ABISELECT(224,148), //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
    19, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7831C7,    ABISELECT(224,148), //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
    20, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(280,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(280,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(288,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7831C13,    ABISELECT(280,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7831C16,    ABISELECT(280,188), //bcp->offset
    112, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(304,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
    43, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(312,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
    43, //immediately_derived
  0, 0},
  {&cd_S7831C11,    ABISELECT(296,196), //bcp->offset
    120, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S7831C14,    ABISELECT(224,148), //bcp->offset
    85, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7831C12,    ABISELECT(200,132), //bcp->offset
    70, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    56, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(320,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(320,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S7831C8,    ABISELECT(320,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S7831C18,    ABISELECT(320,212), //bcp->offset
    129, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    56, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    52, //immediately_derived
  0, 0},
  {&cd_S7831C4,    ABISELECT(72,52), //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
    26, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S7831C8,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S7831C7,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S7831C3,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S7831C17,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S7831C9,    ABISELECT(72,52), //bcp->offset
    39, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    65, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_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
    60, //immediately_derived
  0, 0},
  {&cd_S7831C11,    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
    65, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S7831C4,    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
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    64, //immediately_derived
  0, 0},
  {&cd_S7831C13,    ABISELECT(32,24), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S7831C2,    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
    35, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S28C52_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S7831C1[];
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C1D1Ev();
extern void _ZN7S7831C1D0Ev();
extern void _ZN7S7831C22v5Ev();
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n56_N7S7831C1D1Ev,_ZTv0_n28_N7S7831C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S7831C1D1Ev,_ZThn32_N7S7831C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7831C1D0Ev,_ZTv0_n28_N7S7831C1D0Ev)();
extern void ABISELECT(_ZThn48_N7S7831C1D0Ev,_ZThn32_N7S7831C1D0Ev)() __attribute__((weak));
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C32v3Ev();
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S7831C1D1Ev,_ZTv0_n60_N7S7831C1D1Ev)();
extern void ABISELECT(_ZThn72_N7S7831C1D1Ev,_ZThn52_N7S7831C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7831C1D0Ev,_ZTv0_n60_N7S7831C1D0Ev)();
extern void ABISELECT(_ZThn72_N7S7831C1D0Ev,_ZThn52_N7S7831C1D0Ev)() __attribute__((weak));
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C32v3Ev();
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7831C1D1Ev,_ZTv0_n24_N7S7831C1D1Ev)();
extern void ABISELECT(_ZThn160_N7S7831C1D1Ev,_ZThn100_N7S7831C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7831C1D0Ev,_ZTv0_n24_N7S7831C1D0Ev)();
extern void ABISELECT(_ZThn160_N7S7831C1D0Ev,_ZThn100_N7S7831C1D0Ev)() __attribute__((weak));
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S7831C1D1Ev,_ZTv0_n44_N7S7831C1D1Ev)();
extern void ABISELECT(_ZThn200_N7S7831C1D1Ev,_ZThn132_N7S7831C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7831C1D0Ev,_ZTv0_n44_N7S7831C1D0Ev)();
extern void ABISELECT(_ZThn200_N7S7831C1D0Ev,_ZThn132_N7S7831C1D0Ev)() __attribute__((weak));
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N7S7831C1D1Ev,_ZTvn16_n44_N7S7831C1D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N7S7831C1D0Ev,_ZTvn16_n44_N7S7831C1D0Ev)();
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7831C1D1Ev,_ZTv0_n24_N7S7831C1D1Ev)();
extern void ABISELECT(_ZThn264_N7S7831C1D1Ev,_ZThn176_N7S7831C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7831C1D0Ev,_ZTv0_n24_N7S7831C1D0Ev)();
extern void ABISELECT(_ZThn264_N7S7831C1D0Ev,_ZThn176_N7S7831C1D0Ev)() __attribute__((weak));
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7831C1D1Ev,_ZTv0_n24_N7S7831C1D1Ev)();
extern void ABISELECT(_ZThn296_N7S7831C1D1Ev,_ZThn196_N7S7831C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7831C1D0Ev,_ZTv0_n24_N7S7831C1D0Ev)();
extern void ABISELECT(_ZThn296_N7S7831C1D0Ev,_ZThn196_N7S7831C1D0Ev)() __attribute__((weak));
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY vtc_S7831C1[] = {
  0,
  ABISELECT(320,212),
  ABISELECT(320,212),
  ABISELECT(296,196),
  ABISELECT(280,188),
  ABISELECT(264,176),
  ABISELECT(248,168),
  ABISELECT(200,132),
  ABISELECT(160,100),
  ABISELECT(72,52),
  0,
  ABISELECT(48,32),
  ABISELECT(160,100),
  ABISELECT(160,100),
  ABISELECT(64,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C1[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C22v5Ev,
  ABISELECT(32,20),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S7831C1[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  0,
  0,
  ABISELECT(-48,-32),
  0,
  ABISELECT(112,68),
  ABISELECT(-48,-32),
  ABISELECT(16,12),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7831C1[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7831C1D1Ev,_ZTv0_n28_N7S7831C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7831C1D0Ev,_ZTv0_n28_N7S7831C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7831C32v3Ev,
  0,
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-72,-52),
  -8,
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI7S7831C1[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7831C1D1Ev,_ZTv0_n60_N7S7831C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7831C1D0Ev,_ZTv0_n60_N7S7831C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7831C32v3Ev,
  ABISELECT(-160,-100),
  0,
  0,
  ABISELECT(-96,-56),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI7S7831C1[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C1D1Ev,_ZTv0_n24_N7S7831C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C1D0Ev,_ZTv0_n24_N7S7831C1D0Ev),
  ABISELECT(24,16),
  ABISELECT(-200,-132),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-200,-132),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  ABISELECT(-200,-132),
  (VTBL_ENTRY)&(_ZTI7S7831C1[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7831C1D1Ev,_ZTv0_n44_N7S7831C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7831C1D0Ev,_ZTv0_n44_N7S7831C1D0Ev),
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI7S7831C1[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N7S7831C1D1Ev,_ZTvn16_n44_N7S7831C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N7S7831C1D0Ev,_ZTvn16_n44_N7S7831C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  0,
  ABISELECT(-184,-124),
  ABISELECT(-248,-168),
  (VTBL_ENTRY)&(_ZTI7S7831C1[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  0,
  ABISELECT(-264,-176),
  0,
  ABISELECT(-264,-176),
  ABISELECT(-200,-132),
  ABISELECT(-264,-176),
  (VTBL_ENTRY)&(_ZTI7S7831C1[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C1D1Ev,_ZTv0_n24_N7S7831C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C1D0Ev,_ZTv0_n24_N7S7831C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-280,-188),
  (VTBL_ENTRY)&(_ZTI7S7831C1[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
  ABISELECT(-296,-196),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  ABISELECT(-296,-196),
  (VTBL_ENTRY)&(_ZTI7S7831C1[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C1D1Ev,_ZTv0_n24_N7S7831C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C1D0Ev,_ZTv0_n24_N7S7831C1D0Ev),
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-320,-212),
  (VTBL_ENTRY)&(_ZTI7S7831C1[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S7831C1[];
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C2D1Ev();
extern void _ZN7S7831C2D0Ev();
extern void _ZN7S7831C22v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C2__7S7831C1[] = {
  ABISELECT(320,212),
  ABISELECT(320,212),
  ABISELECT(296,196),
  ABISELECT(280,188),
  ABISELECT(264,176),
  ABISELECT(248,168),
  ABISELECT(200,132),
  ABISELECT(160,100),
  ABISELECT(72,52),
  0,
  ABISELECT(48,32),
  ABISELECT(160,100),
  ABISELECT(160,100),
  ABISELECT(64,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C2[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C22v5Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C11D1Ev();
extern void _ZN8S7831C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C117S7831C2__A3__7S7831C1[] = {
  ABISELECT(160,100),
  ABISELECT(160,100),
  ABISELECT(64,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D0Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__8S7831C117S7831C2__A3__7S7831C1[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C137S7831C2__A2__7S7831C1[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C13[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C48S7831C137S7831C2__A8__7S7831C1[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n56_N7S7831C2D1Ev,_ZTv0_n28_N7S7831C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S7831C2D1Ev,_ZThn32_N7S7831C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7831C2D0Ev,_ZTv0_n28_N7S7831C2D0Ev)();
extern void ABISELECT(_ZThn48_N7S7831C2D0Ev,_ZThn32_N7S7831C2D0Ev)() __attribute__((weak));
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C3__7S7831C2__7S7831C1[] = {
  0,
  0,
  ABISELECT(-48,-32),
  0,
  ABISELECT(112,68),
  ABISELECT(-48,-32),
  ABISELECT(16,12),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7831C2[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7831C2D1Ev,_ZTv0_n28_N7S7831C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7831C2D0Ev,_ZTv0_n28_N7S7831C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7831C32v3Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7831C2D1Ev,_ZTv0_n24_N7S7831C2D1Ev)();
extern void ABISELECT(_ZThn160_N7S7831C2D1Ev,_ZThn100_N7S7831C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7831C2D0Ev,_ZTv0_n24_N7S7831C2D0Ev)();
extern void ABISELECT(_ZThn160_N7S7831C2D0Ev,_ZThn100_N7S7831C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7831C10__7S7831C2__7S7831C1[] = {
  ABISELECT(-160,-100),
  0,
  0,
  ABISELECT(-96,-56),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI7S7831C2[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C2D1Ev,_ZTv0_n24_N7S7831C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C2D0Ev,_ZTv0_n24_N7S7831C2D0Ev),
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n120_N7S7831C2D1Ev,_ZTv0_n60_N7S7831C2D1Ev)();
extern void ABISELECT(_ZThn72_N7S7831C2D1Ev,_ZThn52_N7S7831C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N7S7831C2D0Ev,_ZTv0_n60_N7S7831C2D0Ev)();
extern void ABISELECT(_ZThn72_N7S7831C2D0Ev,_ZThn52_N7S7831C2D0Ev)() __attribute__((weak));
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C9__7S7831C2__7S7831C1[] = {
  0,
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-72,-52),
  -8,
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI7S7831C2[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7831C2D1Ev,_ZTv0_n60_N7S7831C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N7S7831C2D0Ev,_ZTv0_n60_N7S7831C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7831C32v3Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S7831C2D1Ev,_ZTv0_n44_N7S7831C2D1Ev)();
extern void ABISELECT(_ZThn200_N7S7831C2D1Ev,_ZThn132_N7S7831C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7831C2D0Ev,_ZTv0_n44_N7S7831C2D0Ev)();
extern void ABISELECT(_ZThn200_N7S7831C2D0Ev,_ZThn132_N7S7831C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7831C12__7S7831C2__7S7831C1[] = {
  ABISELECT(24,16),
  ABISELECT(-200,-132),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-200,-132),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  ABISELECT(-200,-132),
  (VTBL_ENTRY)&(_ZTI7S7831C2[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7831C2D1Ev,_ZTv0_n44_N7S7831C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7831C2D0Ev,_ZTv0_n44_N7S7831C2D0Ev),
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C13__7S7831C2__7S7831C1[] = {
  0,
  ABISELECT(-184,-124),
  ABISELECT(-248,-168),
  (VTBL_ENTRY)&(_ZTI7S7831C2[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7831C2D1Ev,_ZTv0_n24_N7S7831C2D1Ev)();
extern void ABISELECT(_ZThn264_N7S7831C2D1Ev,_ZThn176_N7S7831C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7831C2D0Ev,_ZTv0_n24_N7S7831C2D0Ev)();
extern void ABISELECT(_ZThn264_N7S7831C2D0Ev,_ZThn176_N7S7831C2D0Ev)() __attribute__((weak));
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C7__A1__7S7831C2__7S7831C1[] = {
  0,
  ABISELECT(-264,-176),
  0,
  ABISELECT(-264,-176),
  ABISELECT(-200,-132),
  ABISELECT(-264,-176),
  (VTBL_ENTRY)&(_ZTI7S7831C2[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C2D1Ev,_ZTv0_n24_N7S7831C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C2D0Ev,_ZTv0_n24_N7S7831C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N7S7831C2D1Ev,_ZTvn16_n44_N7S7831C2D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N7S7831C2D0Ev,_ZTvn16_n44_N7S7831C2D0Ev)();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C148S7831C12__7S7831C2__7S7831C1[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI7S7831C2[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N7S7831C2D1Ev,_ZTvn16_n44_N7S7831C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N7S7831C2D0Ev,_ZTvn16_n44_N7S7831C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C16__7S7831C2__7S7831C1[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-280,-188),
  (VTBL_ENTRY)&(_ZTI7S7831C2[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7831C2D1Ev,_ZTv0_n24_N7S7831C2D1Ev)();
extern void ABISELECT(_ZThn296_N7S7831C2D1Ev,_ZThn196_N7S7831C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7831C2D0Ev,_ZTv0_n24_N7S7831C2D0Ev)();
extern void ABISELECT(_ZThn296_N7S7831C2D0Ev,_ZThn196_N7S7831C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7831C11__A2__7S7831C2__7S7831C1[] = {
  ABISELECT(-296,-196),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  ABISELECT(-296,-196),
  (VTBL_ENTRY)&(_ZTI7S7831C2[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C2D1Ev,_ZTv0_n24_N7S7831C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C2D0Ev,_ZTv0_n24_N7S7831C2D0Ev),
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C18__7S7831C2__7S7831C1[] = {
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-320,-212),
  (VTBL_ENTRY)&(_ZTI7S7831C2[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C13__A__7S7831C2__7S7831C1[] = {
  ABISELECT(32,20),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI7S7831C2[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C3D1Ev();
extern void _ZN7S7831C3D0Ev();
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C3__7S7831C1[] = {
  ABISELECT(112,68),
  ABISELECT(-48,-32),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C3[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7831C32v3Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C7D1Ev();
extern void _ZN7S7831C7D0Ev();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C77S7831C3__7S7831C1[] = {
  ABISELECT(-48,-32),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C7[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C87S7831C77S7831C3__7S7831C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C47S7831C87S7831C77S7831C3__A1__7S7831C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__7S7831C3__7S7831C1[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI7S7831C3[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__7S7831C1[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C9D1Ev();
extern void _ZN7S7831C9D0Ev();
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C9__7S7831C1[] = {
  ABISELECT(88,48),
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-72,-52),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7831C32v3Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C17D1Ev();
extern void _ZN8S7831C17D0Ev();
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C177S7831C9__7S7831C1[] = {
  ABISELECT(208,136),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(128,80),
  ABISELECT(224,144),
  ABISELECT(248,160),
  ABISELECT(248,160),
  ABISELECT(88,48),
  ABISELECT(-72,-52),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C17D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C17D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7831C32v3Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C3D1Ev();
extern void _ZN7S7831C3D0Ev();
extern void _ZN7S7831C72v2Ev();
extern void _ZN7S7831C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C38S7831C177S7831C9__A1__7S7831C1[] = {
  ABISELECT(88,48),
  ABISELECT(-72,-52),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C3[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7831C32v3Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C7D1Ev();
extern void _ZN7S7831C7D0Ev();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C77S7831C38S7831C177S7831C9__A3__7S7831C1[] = {
  ABISELECT(-72,-52),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C7[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C87S7831C77S7831C38S7831C177S7831C9__A4__7S7831C1[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C47S7831C87S7831C77S7831C38S7831C177S7831C9__A7__7S7831C1[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__7S7831C38S7831C177S7831C9__A1__7S7831C1[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S7831C3[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C18__8S7831C177S7831C9__7S7831C1[] = {
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__A1__8S7831C177S7831C9__7S7831C1[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7831C17D1Ev,_ZTv0_n24_N8S7831C17D1Ev)();
extern void ABISELECT(_ZThn224_N8S7831C17D1Ev,_ZThn144_N8S7831C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7831C17D0Ev,_ZTv0_n24_N8S7831C17D0Ev)();
extern void ABISELECT(_ZThn224_N8S7831C17D0Ev,_ZThn144_N8S7831C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7831C11__8S7831C177S7831C9__7S7831C1[] = {
  ABISELECT(-224,-144),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C17D1Ev,_ZTv0_n24_N8S7831C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C17D0Ev,_ZTv0_n24_N8S7831C17D0Ev),
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S7831C17D1Ev,_ZTv0_n44_N8S7831C17D1Ev)();
extern void ABISELECT(_ZThn128_N8S7831C17D1Ev,_ZThn80_N8S7831C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S7831C17D0Ev,_ZTv0_n44_N8S7831C17D0Ev)();
extern void ABISELECT(_ZThn128_N8S7831C17D0Ev,_ZThn80_N8S7831C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7831C12__8S7831C177S7831C9__7S7831C1[] = {
  ABISELECT(24,16),
  ABISELECT(-128,-80),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-200,-132),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7831C17D1Ev,_ZTv0_n44_N8S7831C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S7831C17D0Ev,_ZTv0_n44_N8S7831C17D0Ev),
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C13__8S7831C177S7831C9__7S7831C1[] = {
  0,
  ABISELECT(-184,-124),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7831C17D1Ev,_ZTv0_n24_N8S7831C17D1Ev)();
extern void ABISELECT(_ZThn192_N8S7831C17D1Ev,_ZThn124_N8S7831C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7831C17D0Ev,_ZTv0_n24_N8S7831C17D0Ev)();
extern void ABISELECT(_ZThn192_N8S7831C17D0Ev,_ZThn124_N8S7831C17D0Ev)() __attribute__((weak));
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C7__A1__8S7831C177S7831C9__7S7831C1[] = {
  0,
  ABISELECT(-192,-124),
  0,
  ABISELECT(-264,-176),
  ABISELECT(-200,-132),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C17D1Ev,_ZTv0_n24_N8S7831C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C17D0Ev,_ZTv0_n24_N8S7831C17D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S7831C17D1Ev,_ZTvn16_n44_N8S7831C17D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S7831C17D0Ev,_ZTvn16_n44_N8S7831C17D0Ev)();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C148S7831C12__8S7831C177S7831C9__7S7831C1[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S7831C17D1Ev,_ZTvn16_n44_N8S7831C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S7831C17D0Ev,_ZTvn16_n44_N8S7831C17D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C16__8S7831C177S7831C9__7S7831C1[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S7831C17[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7831C9D1Ev,_ZTv0_n24_N7S7831C9D1Ev)();
extern void ABISELECT(_ZThn88_N7S7831C9D1Ev,_ZThn48_N7S7831C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7831C9D0Ev,_ZTv0_n24_N7S7831C9D0Ev)();
extern void ABISELECT(_ZThn88_N7S7831C9D0Ev,_ZThn48_N7S7831C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7831C10__7S7831C9__7S7831C1[] = {
  ABISELECT(-88,-48),
  0,
  0,
  ABISELECT(-96,-56),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C9D1Ev,_ZTv0_n24_N7S7831C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C9D0Ev,_ZTv0_n24_N7S7831C9D0Ev),
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n88_N7S7831C9D1Ev,_ZTv0_n44_N7S7831C9D1Ev)();
extern void ABISELECT(_ZThn128_N7S7831C9D1Ev,_ZThn80_N7S7831C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7831C9D0Ev,_ZTv0_n44_N7S7831C9D0Ev)();
extern void ABISELECT(_ZThn128_N7S7831C9D0Ev,_ZThn80_N7S7831C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7831C12__7S7831C9__7S7831C1[] = {
  ABISELECT(24,16),
  ABISELECT(-128,-80),
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-200,-132),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7831C9D1Ev,_ZTv0_n44_N7S7831C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7831C9D0Ev,_ZTv0_n44_N7S7831C9D0Ev),
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C13__7S7831C9__7S7831C1[] = {
  0,
  ABISELECT(-184,-124),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7831C9D1Ev,_ZTv0_n24_N7S7831C9D1Ev)();
extern void ABISELECT(_ZThn192_N7S7831C9D1Ev,_ZThn124_N7S7831C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7831C9D0Ev,_ZTv0_n24_N7S7831C9D0Ev)();
extern void ABISELECT(_ZThn192_N7S7831C9D0Ev,_ZThn124_N7S7831C9D0Ev)() __attribute__((weak));
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C7__7S7831C9__7S7831C1[] = {
  0,
  ABISELECT(-192,-124),
  0,
  ABISELECT(-264,-176),
  ABISELECT(-200,-132),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C9D1Ev,_ZTv0_n24_N7S7831C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C9D0Ev,_ZTv0_n24_N7S7831C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTvn24_n88_N7S7831C9D1Ev,_ZTvn16_n44_N7S7831C9D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N7S7831C9D0Ev,_ZTvn16_n44_N7S7831C9D0Ev)();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C148S7831C12__7S7831C9__7S7831C1[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N7S7831C9D1Ev,_ZTvn16_n44_N7S7831C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N7S7831C9D0Ev,_ZTvn16_n44_N7S7831C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C16__7S7831C9__7S7831C1[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7831C9D1Ev,_ZTv0_n24_N7S7831C9D1Ev)();
extern void ABISELECT(_ZThn224_N7S7831C9D1Ev,_ZThn144_N7S7831C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7831C9D0Ev,_ZTv0_n24_N7S7831C9D0Ev)();
extern void ABISELECT(_ZThn224_N7S7831C9D0Ev,_ZThn144_N7S7831C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7831C11__A2__7S7831C9__7S7831C1[] = {
  ABISELECT(-224,-144),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C9D1Ev,_ZTv0_n24_N7S7831C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7831C9D0Ev,_ZTv0_n24_N7S7831C9D0Ev),
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C18__7S7831C9__7S7831C1[] = {
  0,
  0,
  ABISELECT(-256,-168),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI7S7831C9[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C10D1Ev();
extern void _ZN8S7831C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C10__7S7831C1[] = {
  0,
  0,
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C10[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C10D0Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C11D1Ev();
extern void _ZN8S7831C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C118S7831C10__7S7831C1[] = {
  0,
  0,
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D0Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C12D1Ev();
extern void _ZN8S7831C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C12__7S7831C1[] = {
  ABISELECT(96,64),
  ABISELECT(80,56),
  ABISELECT(-200,-132),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C12D0Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C11D1Ev();
extern void _ZN8S7831C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C118S7831C12__A1__7S7831C1[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D0Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__8S7831C118S7831C12__A1__7S7831C1[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C14D1Ev();
extern void _ZN8S7831C14D0Ev();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C148S7831C12__7S7831C1[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C14[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C14D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C7D1Ev();
extern void _ZN7S7831C7D0Ev();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C78S7831C148S7831C12__A2__7S7831C1[] = {
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C7[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C87S7831C78S7831C148S7831C12__A2__7S7831C1[] = {
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C47S7831C87S7831C78S7831C148S7831C12__A4__7S7831C1[] = {
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C16__8S7831C148S7831C12__7S7831C1[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S7831C14[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__A2__8S7831C148S7831C12__7S7831C1[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(64,48),
  (VTBL_ENTRY)&(_ZTI8S7831C14[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7831C14D1Ev,_ZTv0_n24_N8S7831C14D1Ev)();
extern void ABISELECT(_ZThn72_N8S7831C14D1Ev,_ZThn48_N8S7831C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7831C14D0Ev,_ZTv0_n24_N8S7831C14D0Ev)();
extern void ABISELECT(_ZThn72_N8S7831C14D0Ev,_ZThn48_N8S7831C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7831C11__8S7831C148S7831C12__7S7831C1[] = {
  ABISELECT(-72,-48),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S7831C14[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C14D1Ev,_ZTv0_n24_N8S7831C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C14D0Ev,_ZTv0_n24_N8S7831C14D0Ev),
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C13__8S7831C12__7S7831C1[] = {
  0,
  ABISELECT(-184,-124),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__A1__8S7831C12__7S7831C1[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev)();
extern void ABISELECT(_ZThn64_N8S7831C12D1Ev,_ZThn44_N8S7831C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev)();
extern void ABISELECT(_ZThn64_N8S7831C12D0Ev,_ZThn44_N8S7831C12D0Ev)() __attribute__((weak));
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C7__8S7831C12__7S7831C1[] = {
  0,
  ABISELECT(-64,-44),
  0,
  ABISELECT(-264,-176),
  ABISELECT(-200,-132),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZThn24_N8S7831C12D1Ev,_ZThn16_N8S7831C12D1Ev)();
extern void ABISELECT(_ZThn24_N8S7831C12D0Ev,_ZThn16_N8S7831C12D0Ev)();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C14__8S7831C12__7S7831C1[] = {
  ABISELECT(72,48),
  ABISELECT(-64,-48),
  ABISELECT(56,40),
  ABISELECT(-224,-148),
  ABISELECT(-160,-104),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7831C12D1Ev,_ZThn16_N8S7831C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S7831C12D0Ev,_ZThn16_N8S7831C12D0Ev),
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C16__8S7831C12__7S7831C1[] = {
  0,
  0,
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev)();
extern void ABISELECT(_ZThn96_N8S7831C12D1Ev,_ZThn64_N8S7831C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev)();
extern void ABISELECT(_ZThn96_N8S7831C12D0Ev,_ZThn64_N8S7831C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7831C11__A1__8S7831C12__7S7831C1[] = {
  ABISELECT(-96,-64),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S7831C12[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev),
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C13__7S7831C1[] = {
  ABISELECT(-184,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C13[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C48S7831C13__A2__7S7831C1[] = {
  ABISELECT(-184,-124),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN7S7831C7D1Ev();
extern void _ZN7S7831C7D0Ev();
extern void _ZN7S7831C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C7__A1__7S7831C1[] = {
  ABISELECT(-264,-176),
  ABISELECT(-200,-132),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C7[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7831C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7831C72v2Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C87S7831C7__A1__7S7831C1[] = {
  ABISELECT(-200,-132),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C47S7831C87S7831C7__A3__7S7831C1[] = {
  ABISELECT(-200,-132),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C162v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C16__7S7831C1[] = {
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C16[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C162v4Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C138S7831C16__A1__7S7831C1[] = {
  ABISELECT(-216,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C13[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C48S7831C138S7831C16__A5__7S7831C1[] = {
  ABISELECT(-216,-144),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__A1__8S7831C16__7S7831C1[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S7831C16[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
extern void _ZN8S7831C11D1Ev();
extern void _ZN8S7831C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C11__A2__7S7831C1[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  ABISELECT(-232,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7831C11D0Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C4__8S7831C11__A2__7S7831C1[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(136,96),
  (VTBL_ENTRY)&(_ZTI8S7831C11[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7831C18__7S7831C1[] = {
  0,
  0,
  ABISELECT(-256,-168),
  0,
  (VTBL_ENTRY)&(_ZTI8S7831C18[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C8__A3__7S7831C1[] = {
  ABISELECT(-256,-168),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C8[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
extern void _ZN7S7831C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7831C47S7831C8__A6__7S7831C1[] = {
  ABISELECT(-256,-168),
  0,
  (VTBL_ENTRY)&(_ZTI7S7831C4[0]),
  (VTBL_ENTRY)&_ZN7S7831C42v1Ev,
};
static  VTT_ENTRY vtt_S7831C1[] = {
  {&(_ZTV7S7831C1[17]),  17,135},
  {&(_tg__ZTV7S7831C2__7S7831C1[16]),  16,20},
  {&(_tg__ZTV8S7831C117S7831C2__A3__7S7831C1[5]),  5,8},
  {&(_tg__ZTV7S7831C4__8S7831C117S7831C2__A3__7S7831C1[4]),  4,5},
  {&(_tg__ZTV8S7831C137S7831C2__A2__7S7831C1[3]),  3,4},
  {&(_tg__ZTV7S7831C48S7831C137S7831C2__A8__7S7831C1[3]),  3,4},
  {&(_tg__ZTV7S7831C3__7S7831C2__7S7831C1[9]),  9,14},
  {&(_tg__ZTV8S7831C10__7S7831C2__7S7831C1[6]),  6,9},
  {&(_tg__ZTV7S7831C9__7S7831C2__7S7831C1[17]),  17,22},
  {&(_tg__ZTV8S7831C10__7S7831C2__7S7831C1[6]),  6,9},
  {&(_tg__ZTV8S7831C12__7S7831C2__7S7831C1[12]),  12,15},
  {&(_tg__ZTV8S7831C13__7S7831C2__7S7831C1[4]),  4,5},
  {&(_tg__ZTV7S7831C7__A1__7S7831C2__7S7831C1[7]),  7,11},
  {&(_tg__ZTV8S7831C148S7831C12__7S7831C2__7S7831C1[7]),  7,11},
  {&(_tg__ZTV8S7831C16__7S7831C2__7S7831C1[6]),  6,8},
  {&(_tg__ZTV8S7831C11__A2__7S7831C2__7S7831C1[6]),  6,9},
  {&(_tg__ZTV8S7831C18__7S7831C2__7S7831C1[5]),  5,6},
  {&(_tg__ZTV8S7831C18__7S7831C2__7S7831C1[5]),  5,6},
  {&(_tg__ZTV8S7831C13__A__7S7831C2__7S7831C1[3]),  3,4},
  {&(_ZTV7S7831C1[34]),  34,135},
  {&(_ZTV7S7831C1[67]),  67,135},
  {&(_ZTV7S7831C1[56]),  56,135},
  {&(_ZTV7S7831C1[67]),  67,135},
  {&(_ZTV7S7831C1[82]),  82,135},
  {&(_ZTV7S7831C1[100]),  100,135},
  {&(_ZTV7S7831C1[108]),  108,135},
  {&(_ZTV7S7831C1[92]),  92,135},
  {&(_ZTV7S7831C1[118]),  118,135},
  {&(_ZTV7S7831C1[126]),  126,135},
  {&(_ZTV7S7831C1[134]),  134,135},
  {&(_ZTV7S7831C1[134]),  134,135},
  {&(_ZTV7S7831C1[24]),  24,135},
  {&(_tg__ZTV7S7831C3__7S7831C1[5]),  5,10},
  {&(_tg__ZTV7S7831C77S7831C3__7S7831C1[4]),  4,8},
  {&(_tg__ZTV7S7831C87S7831C77S7831C3__7S7831C1[3]),  3,4},
  {&(_tg__ZTV7S7831C47S7831C87S7831C77S7831C3__A1__7S7831C1[3]),  3,4},
  {&(_tg__ZTV7S7831C4__7S7831C3__7S7831C1[4]),  4,5},
  {&(_tg__ZTV7S7831C4__7S7831C1[3]),  3,4},
  {&(_tg__ZTV7S7831C9__7S7831C1[13]),  13,18},
  {&(_tg__ZTV8S7831C177S7831C9__7S7831C1[12]),  12,17},
  {&(_tg__ZTV7S7831C38S7831C177S7831C9__A1__7S7831C1[5]),  5,10},
  {&(_tg__ZTV7S7831C77S7831C38S7831C177S7831C9__A3__7S7831C1[4]),  4,8},
  {&(_tg__ZTV7S7831C87S7831C77S7831C38S7831C177S7831C9__A4__7S7831C1[3]),  3,4},
  {&(_tg__ZTV7S7831C47S7831C87S7831C77S7831C38S7831C177S7831C9__A7__7S7831C1[3]),  3,4},
  {&(_tg__ZTV7S7831C4__7S7831C38S7831C177S7831C9__A1__7S7831C1[4]),  4,5},
  {&(_tg__ZTV8S7831C18__8S7831C177S7831C9__7S7831C1[5]),  5,6},
  {&(_tg__ZTV8S7831C18__8S7831C177S7831C9__7S7831C1[5]),  5,6},
  {&(_tg__ZTV7S7831C4__A1__8S7831C177S7831C9__7S7831C1[4]),  4,5},
  {&(_tg__ZTV8S7831C11__8S7831C177S7831C9__7S7831C1[6]),  6,9},
  {&(_tg__ZTV8S7831C12__8S7831C177S7831C9__7S7831C1[12]),  12,15},
  {&(_tg__ZTV8S7831C13__8S7831C177S7831C9__7S7831C1[4]),  4,5},
  {&(_tg__ZTV7S7831C7__A1__8S7831C177S7831C9__7S7831C1[7]),  7,11},
  {&(_tg__ZTV8S7831C148S7831C12__8S7831C177S7831C9__7S7831C1[7]),  7,11},
  {&(_tg__ZTV8S7831C16__8S7831C177S7831C9__7S7831C1[6]),  6,8},
  {&(_tg__ZTV8S7831C10__7S7831C9__7S7831C1[6]),  6,9},
  {&(_tg__ZTV8S7831C10__7S7831C9__7S7831C1[6]),  6,9},
  {&(_tg__ZTV8S7831C12__7S7831C9__7S7831C1[12]),  12,15},
  {&(_tg__ZTV8S7831C13__7S7831C9__7S7831C1[4]),  4,5},
  {&(_tg__ZTV7S7831C7__7S7831C9__7S7831C1[7]),  7,11},
  {&(_tg__ZTV8S7831C148S7831C12__7S7831C9__7S7831C1[7]),  7,11},
  {&(_tg__ZTV8S7831C16__7S7831C9__7S7831C1[6]),  6,8},
  {&(_tg__ZTV8S7831C11__A2__7S7831C9__7S7831C1[6]),  6,9},
  {&(_tg__ZTV8S7831C18__7S7831C9__7S7831C1[5]),  5,6},
  {&(_tg__ZTV8S7831C18__7S7831C9__7S7831C1[5]),  5,6},
  {&(_tg__ZTV8S7831C10__7S7831C1[5]),  5,8},
  {&(_tg__ZTV8S7831C118S7831C10__7S7831C1[5]),  5,8},
  {&(_tg__ZTV8S7831C118S7831C10__7S7831C1[5]),  5,8},
  {&(_tg__ZTV8S7831C10__7S7831C1[5]),  5,8},
  {&(_tg__ZTV8S7831C12__7S7831C1[10]),  10,13},
  {&(_tg__ZTV8S7831C118S7831C12__A1__7S7831C1[5]),  5,8},
  {&(_tg__ZTV7S7831C4__8S7831C118S7831C12__A1__7S7831C1[4]),  4,5},
  {&(_tg__ZTV8S7831C148S7831C12__7S7831C1[7]),  7,11},
  {&(_tg__ZTV7S7831C78S7831C148S7831C12__A2__7S7831C1[4]),  4,8},
  {&(_tg__ZTV7S7831C87S7831C78S7831C148S7831C12__A2__7S7831C1[3]),  3,4},
  {&(_tg__ZTV7S7831C47S7831C87S7831C78S7831C148S7831C12__A4__7S7831C1[3]),  3,4},
  {&(_tg__ZTV8S7831C16__8S7831C148S7831C12__7S7831C1[6]),  6,8},
  {&(_tg__ZTV7S7831C4__A2__8S7831C148S7831C12__7S7831C1[4]),  4,5},
  {&(_tg__ZTV8S7831C11__8S7831C148S7831C12__7S7831C1[6]),  6,9},
  {&(_tg__ZTV8S7831C13__8S7831C12__7S7831C1[4]),  4,5},
  {&(_tg__ZTV7S7831C4__A1__8S7831C12__7S7831C1[4]),  4,5},
  {&(_tg__ZTV7S7831C7__8S7831C12__7S7831C1[7]),  7,11},
  {&(_tg__ZTV8S7831C14__8S7831C12__7S7831C1[7]),  7,11},
  {&(_tg__ZTV8S7831C16__8S7831C12__7S7831C1[6]),  6,8},
  {&(_tg__ZTV8S7831C11__A1__8S7831C12__7S7831C1[6]),  6,9},
  {&(_tg__ZTV8S7831C13__7S7831C1[3]),  3,4},
  {&(_tg__ZTV7S7831C48S7831C13__A2__7S7831C1[3]),  3,4},
  {&(_tg__ZTV7S7831C7__A1__7S7831C1[4]),  4,8},
  {&(_tg__ZTV7S7831C87S7831C7__A1__7S7831C1[3]),  3,4},
  {&(_tg__ZTV7S7831C47S7831C87S7831C7__A3__7S7831C1[3]),  3,4},
  {&(_tg__ZTV8S7831C16__7S7831C1[4]),  4,6},
  {&(_tg__ZTV8S7831C138S7831C16__A1__7S7831C1[3]),  3,4},
  {&(_tg__ZTV7S7831C48S7831C138S7831C16__A5__7S7831C1[3]),  3,4},
  {&(_tg__ZTV7S7831C4__A1__8S7831C16__7S7831C1[4]),  4,5},
  {&(_tg__ZTV8S7831C11__A2__7S7831C1[5]),  5,8},
  {&(_tg__ZTV7S7831C4__8S7831C11__A2__7S7831C1[4]),  4,5},
  {&(_tg__ZTV8S7831C18__7S7831C1[5]),  5,6},
  {&(_tg__ZTV8S7831C18__7S7831C1[5]),  5,6},
  {&(_tg__ZTV7S7831C8__A3__7S7831C1[3]),  3,4},
  {&(_tg__ZTV7S7831C47S7831C8__A6__7S7831C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7831C1[];
extern  VTBL_ENTRY _ZTV7S7831C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7831C1[];
static VTBL_ENTRY alt_thunk_names47[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C12D0Ev,_ZTv0_n24_N8S7831C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7831C12D0Ev,_ZThn64_N8S7831C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7831C12D0Ev,_ZThn44_N8S7831C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C12D1Ev,_ZTv0_n24_N8S7831C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7831C12D1Ev,_ZThn64_N8S7831C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7831C12D1Ev,_ZThn44_N8S7831C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C14D0Ev,_ZTv0_n24_N8S7831C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7831C14D0Ev,_ZThn48_N8S7831C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C14D1Ev,_ZTv0_n24_N8S7831C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7831C14D1Ev,_ZThn48_N8S7831C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7831C9D0Ev,_ZTv0_n44_N7S7831C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7831C9D0Ev,_ZThn80_N7S7831C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7831C9D1Ev,_ZTv0_n44_N7S7831C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7831C9D1Ev,_ZThn80_N7S7831C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7831C9D0Ev,_ZTv0_n24_N7S7831C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7831C9D0Ev,_ZThn144_N7S7831C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7831C9D0Ev,_ZThn124_N7S7831C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7831C9D0Ev,_ZThn48_N7S7831C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7831C9D1Ev,_ZTv0_n24_N7S7831C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7831C9D1Ev,_ZThn144_N7S7831C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7831C9D1Ev,_ZThn124_N7S7831C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7831C9D1Ev,_ZThn48_N7S7831C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7831C17D0Ev,_ZTv0_n44_N8S7831C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7831C17D0Ev,_ZThn80_N8S7831C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S7831C17D1Ev,_ZTv0_n44_N8S7831C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7831C17D1Ev,_ZThn80_N8S7831C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C17D0Ev,_ZTv0_n24_N8S7831C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7831C17D0Ev,_ZThn124_N8S7831C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7831C17D0Ev,_ZThn144_N8S7831C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7831C17D1Ev,_ZTv0_n24_N8S7831C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7831C17D1Ev,_ZThn124_N8S7831C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7831C17D1Ev,_ZThn144_N8S7831C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7831C2D0Ev,_ZTv0_n44_N7S7831C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S7831C2D0Ev,_ZThn132_N7S7831C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7831C2D1Ev,_ZTv0_n44_N7S7831C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S7831C2D1Ev,_ZThn132_N7S7831C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7831C2D0Ev,_ZTv0_n60_N7S7831C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7831C2D0Ev,_ZThn52_N7S7831C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7831C2D1Ev,_ZTv0_n60_N7S7831C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7831C2D1Ev,_ZThn52_N7S7831C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7831C2D0Ev,_ZTv0_n24_N7S7831C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N7S7831C2D0Ev,_ZThn196_N7S7831C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7831C2D0Ev,_ZThn176_N7S7831C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7831C2D0Ev,_ZThn100_N7S7831C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7831C2D1Ev,_ZTv0_n24_N7S7831C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N7S7831C2D1Ev,_ZThn196_N7S7831C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7831C2D1Ev,_ZThn176_N7S7831C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7831C2D1Ev,_ZThn100_N7S7831C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7831C2D0Ev,_ZTv0_n28_N7S7831C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7831C2D0Ev,_ZThn32_N7S7831C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7831C2D1Ev,_ZTv0_n28_N7S7831C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7831C2D1Ev,_ZThn32_N7S7831C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7831C1D0Ev,_ZTv0_n44_N7S7831C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S7831C1D0Ev,_ZThn132_N7S7831C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7831C1D1Ev,_ZTv0_n44_N7S7831C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S7831C1D1Ev,_ZThn132_N7S7831C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7831C1D0Ev,_ZTv0_n24_N7S7831C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N7S7831C1D0Ev,_ZThn196_N7S7831C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7831C1D0Ev,_ZThn176_N7S7831C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7831C1D0Ev,_ZThn100_N7S7831C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7831C1D1Ev,_ZTv0_n24_N7S7831C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N7S7831C1D1Ev,_ZThn196_N7S7831C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7831C1D1Ev,_ZThn176_N7S7831C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7831C1D1Ev,_ZThn100_N7S7831C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7831C1D0Ev,_ZTv0_n60_N7S7831C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7831C1D0Ev,_ZThn52_N7S7831C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N7S7831C1D1Ev,_ZTv0_n60_N7S7831C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7831C1D1Ev,_ZThn52_N7S7831C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7831C1D0Ev,_ZTv0_n28_N7S7831C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7831C1D0Ev,_ZThn32_N7S7831C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7831C1D1Ev,_ZTv0_n28_N7S7831C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7831C1D1Ev,_ZThn32_N7S7831C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7831C1 = {  "S7831C1", // class name
  bases_S7831C1, 67,
  &(vtc_S7831C1[0]), // expected_vtbl_contents
  &(vtt_S7831C1[0]), // expected_vtt_contents
  ABISELECT(336,220), // object size
  NSPAIRA(_ZTI7S7831C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7831C1),135, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7831C1),99, //virtual table table var
  35, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names47,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19897C5  : virtual S3461C5_nt , S731C17_nt {
  virtual void  v1(); // _ZN8S19897C52v1Ev
  ~S19897C5(); // tgen
  S19897C5(); // tgen
};
//SIG(-1 S19897C5) C1{ VBC2{ m FL} BC3{ m} v1}


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

static void Test_S19897C5()
{
  extern Class_Descriptor cd_S19897C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19897C5, buf);
    S19897C5 *dp, &lv = *(dp=new (buf) S19897C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19897C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19897C5)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S19897C5");
    check_base_class_offset(lv, (S731C17_nt*), 0, "S19897C5");
    test_class_info(&lv, &cd_S19897C5);
    dp->~S19897C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19897C5(Test_S19897C5, "S19897C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S19897C5C1Ev();
extern void _ZN8S19897C5D1Ev();
Name_Map name_map_S19897C5[] = {
  NSPAIR(_ZN8S19897C5C1Ev),
  NSPAIR(_ZN8S19897C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S19897C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19897C5[];
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY vtc_S19897C5[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S19897C5[];
static  VTT_ENTRY vtt_S19897C5[] = {
  {&(_ZTV8S19897C5[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
Class_Descriptor cd_S19897C5 = {  "S19897C5", // class name
  bases_S19897C5, 2,
  &(vtc_S19897C5[0]), // expected_vtbl_contents
  &(vtt_S19897C5[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S19897C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19897C5),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19897C5),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  S19897C3  : virtual S3461C5_nt , S19897C5 , S731C17_nt {
  ~S19897C3(); // tgen
  S19897C3(); // tgen
};
//SIG(-1 S19897C3) C1{ VBC2{ m FL} BC3{ VBC2 BC4{ m} v1} BC4}


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

static void Test_S19897C3()
{
  extern Class_Descriptor cd_S19897C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19897C3, buf);
    S19897C3 *dp, &lv = *(dp=new (buf) S19897C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19897C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19897C3)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S19897C3");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*), ABISELECT(8,4), "S19897C3");
    check_base_class_offset(lv, (S731C17_nt*)(S19897C5*), 0, "S19897C3");
    check_base_class_offset(lv, (S19897C5*), 0, "S19897C3");
    /*is_ambiguous_... S19897C3::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(8,4), "S19897C3");
    test_class_info(&lv, &cd_S19897C3);
    dp->~S19897C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19897C3(Test_S19897C3, "S19897C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S19897C3C1Ev();
extern void _ZN8S19897C3D1Ev();
Name_Map name_map_S19897C3[] = {
  NSPAIR(_ZN8S19897C3C1Ev),
  NSPAIR(_ZN8S19897C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S19897C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19897C5,    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_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19897C3[];
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY vtc_S19897C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C3[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S19897C3[];
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__8S19897C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
static  VTT_ENTRY vtt_S19897C3[] = {
  {&(_ZTV8S19897C3[3]),  3,4},
  {&(_tg__ZTV8S19897C5__8S19897C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19897C3[];
extern  VTBL_ENTRY _ZTV8S19897C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C3[];
Class_Descriptor cd_S19897C3 = {  "S19897C3", // class name
  bases_S19897C3, 4,
  &(vtc_S19897C3[0]), // expected_vtbl_contents
  &(vtt_S19897C3[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S19897C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19897C3),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19897C3),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  S19897C8  : S3461C5_nt , virtual S19897C5 , S731C17_nt {
  virtual  ~S19897C8(); // _ZN8S19897C8D2Ev
  S19897C8(); // tgen
};
//SIG(-1 S19897C8) C1{ BC2{ m FL} VBC3{ VBC2 BC4{ m} v1} BC4 vd}


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

static void Test_S19897C8()
{
  extern Class_Descriptor cd_S19897C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S19897C8, buf);
    S19897C8 *dp, &lv = *(dp=new (buf) S19897C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S19897C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19897C8)");
    /*is_ambiguous_... S19897C8::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S19897C8");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*), ABISELECT(16,12), "S19897C8");
    check_base_class_offset(lv, (S731C17_nt*)(S19897C5*), 0, "S19897C8");
    check_base_class_offset(lv, (S19897C5*), 0, "S19897C8");
    /*is_ambiguous_... S19897C8::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(16,12), "S19897C8");
    test_class_info(&lv, &cd_S19897C8);
    dp->~S19897C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19897C8(Test_S19897C8, "S19897C8", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN8S19897C8C1Ev();
extern void _ZN8S19897C8D2Ev();
Name_Map name_map_S19897C8[] = {
  NSPAIR(_ZN8S19897C8C1Ev),
  NSPAIR(_ZN8S19897C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S19897C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19897C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19897C8[];
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C8D1Ev();
extern void _ZN8S19897C8D0Ev();
static  VTBL_ENTRY vtc_S19897C8[] = {
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C8[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D0Ev,
};
extern VTBL_ENTRY _ZTV8S19897C8[];
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__8S19897C8[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
static  VTT_ENTRY vtt_S19897C8[] = {
  {&(_ZTV8S19897C8[5]),  5,8},
  {&(_ZTV8S19897C8[5]),  5,8},
  {&(_tg__ZTV8S19897C5__8S19897C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19897C8[];
extern  VTBL_ENTRY _ZTV8S19897C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C8[];
Class_Descriptor cd_S19897C8 = {  "S19897C8", // class name
  bases_S19897C8, 5,
  &(vtc_S19897C8[0]), // expected_vtbl_contents
  &(vtt_S19897C8[0]), // expected_vtt_contents
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI8S19897C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19897C8),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19897C8),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  S19897C7  : S731C17_nt , virtual S19897C5 , S19897C8 , S3461C5_nt {
  __tsi64 s19897c7f0;
  virtual  ~S19897C7(); // _ZN8S19897C7D2Ev
  S19897C7(); // tgen
};
//SIG(-1 S19897C7) C1{ BC2{ m} VBC3{ VBC4{ m FL} BC2 v1} BC5{ BC4 VBC3 BC2 vd} BC4 vd FL}


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

static void Test_S19897C7()
{
  extern Class_Descriptor cd_S19897C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,11)];
    init_test(&cd_S19897C7, buf);
    S19897C7 *dp, &lv = *(dp=new (buf) S19897C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S19897C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19897C7)");
    /*is_ambiguous_... S19897C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(17,13), "S19897C7");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*), ABISELECT(40,32), "S19897C7");
    check_base_class_offset(lv, (S731C17_nt*)(S19897C5*), 0, "S19897C7");
    check_base_class_offset(lv, (S19897C5*), 0, "S19897C7");
    check_base_class_offset(lv, (S19897C5*)(S19897C8*), 0, "S19897C7");
    /*is_ambiguous_... S19897C8::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C8*), ABISELECT(8,4), "S19897C7");
    /*is_ambiguous_... S19897C8::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C8*), ABISELECT(16,12), "S19897C7");
    check_base_class_offset(lv, (S19897C8*), 0, "S19897C7");
    /*is_ambiguous_... S19897C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(24,16), "S19897C7");
    check_field_offset(lv, s19897c7f0, ABISELECT(32,24), "S19897C7.s19897c7f0");
    test_class_info(&lv, &cd_S19897C7);
    dp->~S19897C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19897C7(Test_S19897C7, "S19897C7", ABISELECT(48,40));

#else // __cplusplus

extern void _ZN8S19897C7C1Ev();
extern void _ZN8S19897C7D2Ev();
Name_Map name_map_S19897C7[] = {
  NSPAIR(_ZN8S19897C7C1Ev),
  NSPAIR(_ZN8S19897C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C8;
extern VTBL_ENTRY _ZTI8S19897C8[];
extern  VTBL_ENTRY _ZTV8S19897C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C8[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
static Base_Class bases_S19897C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    ABISELECT(17,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19897C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    6, //immediately_derived
  0, 0},
  {&cd_S19897C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19897C7[];
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C7D1Ev();
extern void _ZN8S19897C7D0Ev();
static  VTBL_ENTRY vtc_S19897C7[] = {
  0,
  0,
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C7[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C7D0Ev,
};
extern VTBL_ENTRY _ZTV8S19897C7[];
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C8D1Ev();
extern void _ZN8S19897C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C8__8S19897C7[] = {
  0,
  0,
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C8[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D0Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__8S19897C7[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
static  VTT_ENTRY vtt_S19897C7[] = {
  {&(_ZTV8S19897C7[5]),  5,8},
  {&(_tg__ZTV8S19897C8__8S19897C7[5]),  5,8},
  {&(_tg__ZTV8S19897C8__8S19897C7[5]),  5,8},
  {&(_ZTV8S19897C7[5]),  5,8},
  {&(_tg__ZTV8S19897C5__8S19897C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19897C7[];
extern  VTBL_ENTRY _ZTV8S19897C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C7[];
Class_Descriptor cd_S19897C7 = {  "S19897C7", // class name
  bases_S19897C7, 8,
  &(vtc_S19897C7[0]), // expected_vtbl_contents
  &(vtt_S19897C7[0]), // expected_vtt_contents
  ABISELECT(48,40), // object size
  NSPAIRA(_ZTI8S19897C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19897C7),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19897C7),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  S19897C11  : S19897C5 {
  ~S19897C11(); // tgen
  S19897C11(); // tgen
};
//SIG(-1 S19897C11) C1{ BC2{ VBC3{ m FL} BC4{ m} v1}}


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

static void Test_S19897C11()
{
  extern Class_Descriptor cd_S19897C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19897C11, buf);
    S19897C11 *dp, &lv = *(dp=new (buf) S19897C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19897C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19897C11)");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*), ABISELECT(8,4), "S19897C11");
    check_base_class_offset(lv, (S731C17_nt*)(S19897C5*), 0, "S19897C11");
    check_base_class_offset(lv, (S19897C5*), 0, "S19897C11");
    test_class_info(&lv, &cd_S19897C11);
    dp->~S19897C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19897C11(Test_S19897C11, "S19897C11", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN9S19897C11C1Ev();
extern void _ZN9S19897C11D1Ev();
Name_Map name_map_S19897C11[] = {
  NSPAIR(_ZN9S19897C11C1Ev),
  NSPAIR(_ZN9S19897C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
static Base_Class bases_S19897C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19897C5,    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 _ZTI9S19897C11[];
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY vtc_S19897C11[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C11[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern VTBL_ENTRY _ZTV9S19897C11[];
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__9S19897C11[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
static  VTT_ENTRY vtt_S19897C11[] = {
  {&(_ZTV9S19897C11[3]),  3,4},
  {&(_tg__ZTV8S19897C5__9S19897C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19897C11[];
extern  VTBL_ENTRY _ZTV9S19897C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C11[];
Class_Descriptor cd_S19897C11 = {  "S19897C11", // class name
  bases_S19897C11, 3,
  &(vtc_S19897C11[0]), // expected_vtbl_contents
  &(vtt_S19897C11[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI9S19897C11),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19897C11),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19897C11),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  S19897C10  : S3461C5_nt , virtual S731C17_nt , S19897C11 {
  virtual  ~S19897C10(); // _ZN9S19897C10D2Ev
  virtual void  v2(); // _ZN9S19897C102v2Ev
  S19897C10(); // tgen
};
//SIG(-1 S19897C10) C1{ BC2{ m FL} VBC3{ m} BC4{ BC5{ VBC2 BC3 v2}} vd v1}


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

static void Test_S19897C10()
{
  extern Class_Descriptor cd_S19897C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S19897C10, buf);
    S19897C10 *dp, &lv = *(dp=new (buf) S19897C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S19897C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19897C10)");
    /*is_ambiguous_... S19897C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S19897C10");
    /*is_ambiguous_... S19897C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(16,12), "S19897C10");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C11*), ABISELECT(16,12), "S19897C10");
    check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C11*), 0, "S19897C10");
    check_base_class_offset(lv, (S19897C5*)(S19897C11*), 0, "S19897C10");
    check_base_class_offset(lv, (S19897C11*), 0, "S19897C10");
    test_class_info(&lv, &cd_S19897C10);
    dp->~S19897C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19897C10(Test_S19897C10, "S19897C10", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN9S19897C10C1Ev();
extern void _ZN9S19897C10D2Ev();
Name_Map name_map_S19897C10[] = {
  NSPAIR(_ZN9S19897C10C1Ev),
  NSPAIR(_ZN9S19897C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S19897C11;
extern VTBL_ENTRY _ZTI9S19897C11[];
extern  VTBL_ENTRY _ZTV9S19897C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C11[];
static Base_Class bases_S19897C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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_S3461C5_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
    4, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19897C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19897C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19897C10[];
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C10D1Ev();
extern void _ZN9S19897C10D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY vtc_S19897C10[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C10[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern VTBL_ENTRY _ZTV9S19897C10[];
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C11__9S19897C10[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C11[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C59S19897C11__9S19897C10[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
static  VTT_ENTRY vtt_S19897C10[] = {
  {&(_ZTV9S19897C10[4]),  4,8},
  {&(_tg__ZTV9S19897C11__9S19897C10[3]),  3,4},
  {&(_tg__ZTV8S19897C59S19897C11__9S19897C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19897C10[];
extern  VTBL_ENTRY _ZTV9S19897C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C10[];
Class_Descriptor cd_S19897C10 = {  "S19897C10", // class name
  bases_S19897C10, 6,
  &(vtc_S19897C10[0]), // expected_vtbl_contents
  &(vtt_S19897C10[0]), // expected_vtt_contents
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI9S19897C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19897C10),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19897C10),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  S19897C14  : virtual S3461C5_nt , S19897C3 , virtual S19897C5 {
  virtual void  v4(); // _ZN9S19897C142v4Ev
  ~S19897C14(); // tgen
  S19897C14(); // tgen
};
//SIG(-1 S19897C14) C1{ VBC2{ m FL} BC3{ VBC2 BC4{ VBC2 BC5{ m} v2} BC5} VBC4 v1}


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

static void Test_S19897C14()
{
  extern Class_Descriptor cd_S19897C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19897C14, buf);
    S19897C14 *dp, &lv = *(dp=new (buf) S19897C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19897C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19897C14)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(16,8), "S19897C14");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C3*), ABISELECT(16,8), "S19897C14");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C3*), ABISELECT(16,8), "S19897C14");
    /*is_ambiguous_... S19897C14::S19897C5 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*), ABISELECT(16,8), "S19897C14");
    check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C3*), 0, "S19897C14");
    check_base_class_offset(lv, (S19897C5*)(S19897C3*), 0, "S19897C14");
    /*is_ambiguous_... S19897C3::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C3*), ABISELECT(8,4), "S19897C14");
    check_base_class_offset(lv, (S19897C3*), 0, "S19897C14");
    /*is_ambiguous_... S19897C14::S19897C5 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C5*), ABISELECT(24,16), "S19897C14");
    /*is_ambiguous_... S19897C14::S19897C5 */ AMB_check_base_class_offset(lv, (S19897C5*), ABISELECT(24,16), "S19897C14");
    test_class_info(&lv, &cd_S19897C14);
    dp->~S19897C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19897C14(Test_S19897C14, "S19897C14", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN9S19897C14C1Ev();
extern void _ZN9S19897C14D1Ev();
Name_Map name_map_S19897C14[] = {
  NSPAIR(_ZN9S19897C14C1Ev),
  NSPAIR(_ZN9S19897C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C3;
extern VTBL_ENTRY _ZTI8S19897C3[];
extern  VTBL_ENTRY _ZTV8S19897C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
static Base_Class bases_S19897C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19897C5,    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_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19897C3,    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_S731C17_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_S19897C5,    ABISELECT(24,16), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19897C14[];
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY vtc_S19897C14[] = {
  ABISELECT(24,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C14[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
  0,
  -8,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S19897C14[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern VTBL_ENTRY _ZTV9S19897C14[];
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C3__9S19897C14[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C3[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C58S19897C3__9S19897C14[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__A1__9S19897C14[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
static  VTT_ENTRY vtt_S19897C14[] = {
  {&(_ZTV9S19897C14[4]),  4,11},
  {&(_tg__ZTV8S19897C3__9S19897C14[3]),  3,4},
  {&(_tg__ZTV8S19897C58S19897C3__9S19897C14[3]),  3,4},
  {&(_ZTV9S19897C14[10]),  10,11},
  {&(_tg__ZTV8S19897C5__A1__9S19897C14[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19897C14[];
extern  VTBL_ENTRY _ZTV9S19897C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C14[];
Class_Descriptor cd_S19897C14 = {  "S19897C14", // class name
  bases_S19897C14, 7,
  &(vtc_S19897C14[0]), // expected_vtbl_contents
  &(vtt_S19897C14[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI9S19897C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19897C14),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19897C14),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  S19897C12  : S3461C5_nt , S19897C10 , S28C52_nt , virtual S19897C14 , virtual S19897C8 {
  virtual  ~S19897C12(); // _ZN9S19897C12D2Ev
  S19897C12(); // tgen
};
//SIG(-1 S19897C12) C1{ BC2{ m FL} BC3{ BC2 VBC4{ m} BC5{ BC6{ VBC2 BC4 v1}} vd v2} BC7{ m} VBC8{ VBC2 BC9{ VBC2 BC6 BC4} VBC6 v3} VBC10{ BC2 VBC6 BC4 vd} vd}


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

static void Test_S19897C12()
{
  extern Class_Descriptor cd_S19897C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,14)];
    init_test(&cd_S19897C12, buf);
    S19897C12 *dp, &lv = *(dp=new (buf) S19897C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S19897C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19897C12)");
    /*is_ambiguous_... S19897C12::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(16,12), "S19897C12");
    /*is_ambiguous_... S19897C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C10*), ABISELECT(8,4), "S19897C12");
    /*is_ambiguous_... S19897C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C10*), ABISELECT(24,20), "S19897C12");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C11*)(S19897C10*), ABISELECT(24,20), "S19897C12");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C14*), ABISELECT(24,20), "S19897C12");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C3*)(S19897C14*), ABISELECT(24,20), "S19897C12");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C3*)(S19897C14*), ABISELECT(24,20), "S19897C12");
    /*is_ambiguous_... S19897C12::S19897C5 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*), ABISELECT(24,20), "S19897C12");
    check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C11*)(S19897C10*), 0, "S19897C12");
    check_base_class_offset(lv, (S19897C5*)(S19897C11*)(S19897C10*), 0, "S19897C12");
    check_base_class_offset(lv, (S19897C11*)(S19897C10*), 0, "S19897C12");
    check_base_class_offset(lv, (S19897C10*), 0, "S19897C12");
    check_base_class_offset(lv, (S28C52_nt*), 0, "S19897C12");
    check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C3*)(S19897C14*), ABISELECT(32,28), "S19897C12");
    check_base_class_offset(lv, (S19897C5*)(S19897C3*)(S19897C14*), ABISELECT(32,28), "S19897C12");
    /*is_ambiguous_... S19897C3::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C3*)(S19897C14*), ABISELECT(40,32), "S19897C12");
    check_base_class_offset(lv, (S19897C3*)(S19897C14*), ABISELECT(32,28), "S19897C12");
    /*is_ambiguous_... S19897C12::S19897C5 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C5*), ABISELECT(48,36), "S19897C12");
    /*is_ambiguous_... S19897C14::S19897C5 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C14*), ABISELECT(48,36), "S19897C12");
    check_base_class_offset(lv, (S19897C5*)(S19897C8*), ABISELECT(48,36), "S19897C12");
    check_base_class_offset(lv, (S19897C14*), ABISELECT(32,28), "S19897C12");
    /*is_ambiguous_... S19897C8::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C8*), ABISELECT(56,40), "S19897C12");
    /*is_ambiguous_... S19897C8::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C8*), ABISELECT(64,48), "S19897C12");
    check_base_class_offset(lv, (S19897C8*), ABISELECT(48,36), "S19897C12");
    test_class_info(&lv, &cd_S19897C12);
    dp->~S19897C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19897C12(Test_S19897C12, "S19897C12", ABISELECT(72,52));

#else // __cplusplus

extern void _ZN9S19897C12C1Ev();
extern void _ZN9S19897C12D2Ev();
Name_Map name_map_S19897C12[] = {
  NSPAIR(_ZN9S19897C12C1Ev),
  NSPAIR(_ZN9S19897C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S19897C11;
extern VTBL_ENTRY _ZTI9S19897C11[];
extern  VTBL_ENTRY _ZTV9S19897C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C11[];
extern Class_Descriptor cd_S19897C10;
extern VTBL_ENTRY _ZTI9S19897C10[];
extern  VTBL_ENTRY _ZTV9S19897C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C10[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C3;
extern VTBL_ENTRY _ZTI8S19897C3[];
extern  VTBL_ENTRY _ZTV8S19897C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S19897C14;
extern VTBL_ENTRY _ZTI9S19897C14[];
extern  VTBL_ENTRY _ZTV9S19897C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C14[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C8;
extern VTBL_ENTRY _ZTI8S19897C8[];
extern  VTBL_ENTRY _ZTV8S19897C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C8[];
static Base_Class bases_S19897C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19897C5,    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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19897C11,    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_S19897C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S28C52_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(32,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19897C3,    ABISELECT(32,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
    3, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    14, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(48,36), //bcp->offset
    -1, //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
    1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19897C14,    ABISELECT(32,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_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
    18, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    18, //immediately_derived
  0, 0},
  {&cd_S19897C8,    ABISELECT(48,36), //bcp->offset
    19, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19897C12[];
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C12D1Ev();
extern void _ZN9S19897C12D0Ev();
extern void _ZN9S19897C102v2Ev();
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19897C12D1Ev,_ZTv0_n24_N9S19897C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S19897C12D1Ev,_ZThn36_N9S19897C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19897C12D0Ev,_ZTv0_n24_N9S19897C12D0Ev)();
extern void ABISELECT(_ZThn48_N9S19897C12D0Ev,_ZThn36_N9S19897C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19897C12[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C12D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
  ABISELECT(-48,-36),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C12D1Ev,_ZTv0_n24_N9S19897C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C12D0Ev,_ZTv0_n24_N9S19897C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S19897C12[];
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C10D1Ev();
extern void _ZN9S19897C10D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C10__9S19897C12[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C10[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C119S19897C10__9S19897C12[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C11[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C59S19897C119S19897C10__9S19897C12[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C14__9S19897C12[] = {
  ABISELECT(16,8),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C14[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C39S19897C14__9S19897C12[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C3[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C58S19897C39S19897C14__A1__9S19897C12[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__A1__9S19897C14__9S19897C12[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19897C14[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__A2__9S19897C12[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C8D1Ev();
extern void _ZN8S19897C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C8__9S19897C12[] = {
  0,
  0,
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C8[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D0Ev,
};
static  VTT_ENTRY vtt_S19897C12[] = {
  {&(_ZTV9S19897C12[7]),  7,28},
  {&(_tg__ZTV9S19897C10__9S19897C12[4]),  4,8},
  {&(_tg__ZTV9S19897C119S19897C10__9S19897C12[3]),  3,4},
  {&(_tg__ZTV8S19897C59S19897C119S19897C10__9S19897C12[3]),  3,4},
  {&(_ZTV9S19897C12[17]),  17,28},
  {&(_ZTV9S19897C12[25]),  25,28},
  {&(_ZTV9S19897C12[25]),  25,28},
  {&(_tg__ZTV9S19897C14__9S19897C12[4]),  4,6},
  {&(_tg__ZTV8S19897C39S19897C14__9S19897C12[3]),  3,4},
  {&(_tg__ZTV8S19897C58S19897C39S19897C14__A1__9S19897C12[3]),  3,4},
  {&(_tg__ZTV8S19897C5__A1__9S19897C14__9S19897C12[4]),  4,5},
  {&(_tg__ZTV8S19897C5__A2__9S19897C12[3]),  3,4},
  {&(_tg__ZTV8S19897C8__9S19897C12[5]),  5,8},
  {&(_tg__ZTV8S19897C8__9S19897C12[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19897C12[];
extern  VTBL_ENTRY _ZTV9S19897C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C12[];
static VTBL_ENTRY alt_thunk_names48[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19897C12D0Ev,_ZTv0_n24_N9S19897C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19897C12D0Ev,_ZThn36_N9S19897C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19897C12D1Ev,_ZTv0_n24_N9S19897C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19897C12D1Ev,_ZThn36_N9S19897C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19897C12 = {  "S19897C12", // class name
  bases_S19897C12, 19,
  &(vtc_S19897C12[0]), // expected_vtbl_contents
  &(vtt_S19897C12[0]), // expected_vtt_contents
  ABISELECT(72,52), // object size
  NSPAIRA(_ZTI9S19897C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19897C12),28, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19897C12),14, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names48,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19897C9  : virtual S3461C5_nt , virtual S19897C3 , S19897C8 , virtual S19897C10 , S19897C12 {
  ~S19897C9(); // tgen
  S19897C9(); // tgen
};
//SIG(-1 S19897C9) C1{ VBC2{ m FL} VBC3{ VBC2 BC4{ VBC2 BC5{ m} v1} BC5} BC6{ BC2 VBC4 BC5 vd} VBC7{ BC2 VBC5 BC8{ BC4} vd v2} BC9{ BC2 BC7 BC10{ m} VBC11{ VBC2 BC3 VBC4 v3} VBC6 vd}}


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

static void Test_S19897C9()
{
  extern Class_Descriptor cd_S19897C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,24)];
    init_test(&cd_S19897C9, buf);
    S19897C9 *dp, &lv = *(dp=new (buf) S19897C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S19897C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19897C9)");
    /*is_ambiguous_... S19897C9::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(48,36), "S19897C9");
    /*is_ambiguous_... S19897C9::S19897C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C3*), ABISELECT(48,36), "S19897C9");
    /*is_ambiguous_... S19897C9::S19897C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C3*), ABISELECT(48,36), "S19897C9");
    /*is_ambiguous_... S19897C9::S19897C5 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*), ABISELECT(48,36), "S19897C9");
    /*is_ambiguous_... S19897C9::S19897C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C11*)(S19897C10*), ABISELECT(48,36), "S19897C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C11*)(S19897C10*)(S19897C12*), ABISELECT(48,36), "S19897C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C14*), ABISELECT(48,36), "S19897C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C3*)(S19897C14*), ABISELECT(48,36), "S19897C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C3*)(S19897C14*), ABISELECT(48,36), "S19897C9");
    /*is_ambiguous_... S19897C9::S19897C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C3*), ABISELECT(56,44), "S19897C9");
    /*is_ambiguous_... S19897C9::S19897C3 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C3*), ABISELECT(56,44), "S19897C9");
    /*is_ambiguous_... S19897C9::S19897C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C3*), ABISELECT(64,48), "S19897C9");
    /*is_ambiguous_... S19897C9::S19897C3 */ AMB_check_base_class_offset(lv, (S19897C3*), ABISELECT(56,44), "S19897C9");
    /*is_ambiguous_... S19897C9::S19897C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C8*), ABISELECT(8,4), "S19897C9");
    /*is_ambiguous_... S19897C9::S19897C5 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C5*), 0, "S19897C9");
    /*is_ambiguous_... S19897C9::S19897C8 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C8*), 0, "S19897C9");
    /*is_ambiguous_... S19897C14::S19897C5 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C14*), 0, "S19897C9");
    /*is_ambiguous_... S19897C9::S19897C8 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C8*), 0, "S19897C9");
    /*is_ambiguous_... S19897C9::S19897C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C8*), ABISELECT(16,12), "S19897C9");
    /*is_ambiguous_... S19897C9::S19897C8 */ AMB_check_base_class_offset(lv, (S19897C8*), 0, "S19897C9");
    /*is_ambiguous_... S19897C9::S19897C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C10*), ABISELECT(80,56), "S19897C9");
    /*is_ambiguous_... S19897C9::S19897C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C10*), ABISELECT(88,64), "S19897C9");
    /*is_ambiguous_... S19897C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C10*)(S19897C12*), ABISELECT(88,64), "S19897C9");
    /*is_ambiguous_... S19897C9::S19897C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C11*)(S19897C10*), ABISELECT(72,52), "S19897C9");
    /*is_ambiguous_... S19897C9::S19897C10 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C11*)(S19897C10*), ABISELECT(72,52), "S19897C9");
    /*is_ambiguous_... S19897C9::S19897C10 */ AMB_check_base_class_offset(lv, (S19897C11*)(S19897C10*), ABISELECT(72,52), "S19897C9");
    /*is_ambiguous_... S19897C9::S19897C10 */ AMB_check_base_class_offset(lv, (S19897C10*), ABISELECT(72,52), "S19897C9");
    /*is_ambiguous_... S19897C12::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C12*), ABISELECT(40,28), "S19897C9");
    /*is_ambiguous_... S19897C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C10*)(S19897C12*), ABISELECT(32,20), "S19897C9");
    check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C11*)(S19897C10*)(S19897C12*), ABISELECT(24,16), "S19897C9");
    check_base_class_offset(lv, (S19897C5*)(S19897C11*)(S19897C10*)(S19897C12*), ABISELECT(24,16), "S19897C9");
    check_base_class_offset(lv, (S19897C11*)(S19897C10*)(S19897C12*), ABISELECT(24,16), "S19897C9");
    check_base_class_offset(lv, (S19897C10*)(S19897C12*), ABISELECT(24,16), "S19897C9");
    check_base_class_offset(lv, (S28C52_nt*)(S19897C12*), ABISELECT(24,16), "S19897C9");
    check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C3*)(S19897C14*), ABISELECT(96,68), "S19897C9");
    check_base_class_offset(lv, (S19897C5*)(S19897C3*)(S19897C14*), ABISELECT(96,68), "S19897C9");
    /*is_ambiguous_... S19897C3::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C3*)(S19897C14*), ABISELECT(104,72), "S19897C9");
    check_base_class_offset(lv, (S19897C3*)(S19897C14*), ABISELECT(96,68), "S19897C9");
    check_base_class_offset(lv, (S19897C14*)(S19897C12*), ABISELECT(96,68), "S19897C9");
    /*is_ambiguous_... S19897C9::S19897C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C8*), ABISELECT(120,80), "S19897C9");
    /*is_ambiguous_... S19897C9::S19897C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C8*), ABISELECT(128,88), "S19897C9");
    check_base_class_offset(lv, (S19897C8*)(S19897C12*), ABISELECT(112,76), "S19897C9");
    check_base_class_offset(lv, (S19897C12*), ABISELECT(24,16), "S19897C9");
    test_class_info(&lv, &cd_S19897C9);
    dp->~S19897C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19897C9(Test_S19897C9, "S19897C9", ABISELECT(136,92));

#else // __cplusplus

extern void _ZN8S19897C9C1Ev();
extern void _ZN8S19897C9D1Ev();
Name_Map name_map_S19897C9[] = {
  NSPAIR(_ZN8S19897C9C1Ev),
  NSPAIR(_ZN8S19897C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C3;
extern VTBL_ENTRY _ZTI8S19897C3[];
extern  VTBL_ENTRY _ZTV8S19897C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C8;
extern VTBL_ENTRY _ZTI8S19897C8[];
extern  VTBL_ENTRY _ZTV8S19897C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C8[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S19897C11;
extern VTBL_ENTRY _ZTI9S19897C11[];
extern  VTBL_ENTRY _ZTV9S19897C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C11[];
extern Class_Descriptor cd_S19897C10;
extern VTBL_ENTRY _ZTI9S19897C10[];
extern  VTBL_ENTRY _ZTV9S19897C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C10[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S19897C11;
extern VTBL_ENTRY _ZTI9S19897C11[];
extern  VTBL_ENTRY _ZTV9S19897C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C11[];
extern Class_Descriptor cd_S19897C10;
extern VTBL_ENTRY _ZTI9S19897C10[];
extern  VTBL_ENTRY _ZTV9S19897C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C10[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C3;
extern VTBL_ENTRY _ZTI8S19897C3[];
extern  VTBL_ENTRY _ZTV8S19897C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C3[];
extern Class_Descriptor cd_S19897C14;
extern VTBL_ENTRY _ZTI9S19897C14[];
extern  VTBL_ENTRY _ZTV9S19897C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C14[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C8;
extern VTBL_ENTRY _ZTI8S19897C8[];
extern  VTBL_ENTRY _ZTV8S19897C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C8[];
extern Class_Descriptor cd_S19897C12;
extern VTBL_ENTRY _ZTI9S19897C12[];
extern  VTBL_ENTRY _ZTV9S19897C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C12[];
static Base_Class bases_S19897C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(56,44), //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
    4, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(64,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19897C3,    ABISELECT(56,44), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19897C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19897C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(88,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_S731C17_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
    13, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(72,52), //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
    14, //immediately_derived
  0, 0},
  {&cd_S19897C11,    ABISELECT(72,52), //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
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19897C10,    ABISELECT(72,52), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_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
    31, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19897C5,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19897C11,    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
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19897C10,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(104,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19897C3,    ABISELECT(96,68), //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
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19897C14,    ABISELECT(96,68), //bcp->offset
    40, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(120,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(128,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19897C8,    ABISELECT(112,76), //bcp->offset
    48, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19897C12,    ABISELECT(24,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19897C9[];
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C9D1Ev();
extern void _ZN8S19897C9D0Ev();
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZThn24_N8S19897C9D1Ev,_ZThn16_N8S19897C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S19897C9D0Ev,_ZThn16_N8S19897C9D0Ev)();
extern void _ZN9S19897C102v2Ev();
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev)();
extern void ABISELECT(_ZThn72_N8S19897C9D1Ev,_ZThn52_N8S19897C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev)();
extern void ABISELECT(_ZThn72_N8S19897C9D0Ev,_ZThn52_N8S19897C9D0Ev)() __attribute__((weak));
extern void _ZN9S19897C102v2Ev();
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev)();
extern void ABISELECT(_ZThn112_N8S19897C9D1Ev,_ZThn76_N8S19897C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev)();
extern void ABISELECT(_ZThn112_N8S19897C9D0Ev,_ZThn76_N8S19897C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19897C9[] = {
  ABISELECT(112,76),
  ABISELECT(96,68),
  ABISELECT(88,64),
  ABISELECT(72,52),
  ABISELECT(56,44),
  0,
  0,
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C9D0Ev,
  ABISELECT(88,60),
  ABISELECT(-24,-16),
  ABISELECT(72,52),
  ABISELECT(64,48),
  ABISELECT(24,20),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19897C9D1Ev,_ZThn16_N8S19897C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19897C9D0Ev,_ZThn16_N8S19897C9D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  0,
  -8,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  0,
  0,
  ABISELECT(-96,-68),
  ABISELECT(-48,-32),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-64,-40),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19897C9[];
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C8D1Ev();
extern void _ZN8S19897C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C8__A__8S19897C9[] = {
  0,
  0,
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C8[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D0Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C12D1Ev();
extern void _ZN9S19897C12D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C12__8S19897C9[] = {
  ABISELECT(88,60),
  ABISELECT(-24,-16),
  ABISELECT(72,52),
  ABISELECT(64,48),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C12D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C10D1Ev();
extern void _ZN9S19897C10D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C109S19897C12__A1__8S19897C9[] = {
  ABISELECT(64,48),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C10[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C119S19897C109S19897C12__A1__8S19897C9[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C11[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C59S19897C119S19897C109S19897C12__A3__8S19897C9[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C14__9S19897C12__8S19897C9[] = {
  0,
  0,
  ABISELECT(-96,-68),
  ABISELECT(-48,-32),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__A2__9S19897C12__8S19897C9[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19897C12D1Ev,_ZTv0_n24_N9S19897C12D1Ev)();
extern void ABISELECT(_ZThn88_N9S19897C12D1Ev,_ZThn60_N9S19897C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19897C12D0Ev,_ZTv0_n24_N9S19897C12D0Ev)();
extern void ABISELECT(_ZThn88_N9S19897C12D0Ev,_ZThn60_N9S19897C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19897C8__9S19897C12__8S19897C9[] = {
  ABISELECT(-88,-60),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-64,-40),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C12D1Ev,_ZTv0_n24_N9S19897C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C12D0Ev,_ZTv0_n24_N9S19897C12D0Ev),
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C3__8S19897C9[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C3[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C58S19897C3__8S19897C9[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__A1__8S19897C9[] = {
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C10D1Ev();
extern void _ZN9S19897C10D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C10__8S19897C9[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C10[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C119S19897C10__8S19897C9[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C11[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C59S19897C119S19897C10__A2__8S19897C9[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C14__8S19897C9[] = {
  ABISELECT(-96,-68),
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C14[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C39S19897C14__A1__8S19897C9[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C3[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C58S19897C39S19897C14__A4__8S19897C9[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__A1__9S19897C14__8S19897C9[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S19897C14[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C8D1Ev();
extern void _ZN8S19897C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C8__A1__8S19897C9[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C8[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D0Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__8S19897C8__A1__8S19897C9[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(112,76),
  (VTBL_ENTRY)&(_ZTI8S19897C8[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
static  VTT_ENTRY vtt_S19897C9[] = {
  {&(_ZTV8S19897C9[10]),  10,57},
  {&(_tg__ZTV8S19897C8__A__8S19897C9[5]),  5,8},
  {&(_tg__ZTV8S19897C8__A__8S19897C9[5]),  5,8},
  {&(_tg__ZTV9S19897C12__8S19897C9[7]),  7,11},
  {&(_tg__ZTV9S19897C109S19897C12__A1__8S19897C9[4]),  4,8},
  {&(_tg__ZTV9S19897C119S19897C109S19897C12__A1__8S19897C9[3]),  3,4},
  {&(_tg__ZTV8S19897C59S19897C119S19897C109S19897C12__A3__8S19897C9[3]),  3,4},
  {&(_tg__ZTV9S19897C14__9S19897C12__8S19897C9[6]),  6,8},
  {&(_tg__ZTV8S19897C5__A2__9S19897C12__8S19897C9[4]),  4,5},
  {&(_tg__ZTV8S19897C8__9S19897C12__8S19897C9[6]),  6,9},
  {&(_ZTV8S19897C9[28]),  28,57},
  {&(_ZTV8S19897C9[10]),  10,57},
  {&(_ZTV8S19897C9[36]),  36,57},
  {&(_ZTV8S19897C9[20]),  20,57},
  {&(_ZTV8S19897C9[46]),  46,57},
  {&(_ZTV8S19897C9[54]),  54,57},
  {&(_tg__ZTV8S19897C3__8S19897C9[3]),  3,4},
  {&(_tg__ZTV8S19897C58S19897C3__8S19897C9[3]),  3,4},
  {&(_tg__ZTV8S19897C5__A1__8S19897C9[3]),  3,4},
  {&(_tg__ZTV9S19897C10__8S19897C9[4]),  4,8},
  {&(_tg__ZTV9S19897C119S19897C10__8S19897C9[3]),  3,4},
  {&(_tg__ZTV8S19897C59S19897C119S19897C10__A2__8S19897C9[3]),  3,4},
  {&(_tg__ZTV9S19897C14__8S19897C9[4]),  4,6},
  {&(_tg__ZTV8S19897C39S19897C14__A1__8S19897C9[3]),  3,4},
  {&(_tg__ZTV8S19897C58S19897C39S19897C14__A4__8S19897C9[3]),  3,4},
  {&(_tg__ZTV8S19897C5__A1__9S19897C14__8S19897C9[4]),  4,5},
  {&(_tg__ZTV8S19897C8__A1__8S19897C9[5]),  5,8},
  {&(_tg__ZTV8S19897C5__8S19897C8__A1__8S19897C9[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S19897C9[];
extern  VTBL_ENTRY _ZTV8S19897C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C9[];
static VTBL_ENTRY alt_thunk_names49[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19897C12D0Ev,_ZTv0_n24_N9S19897C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19897C12D0Ev,_ZThn60_N9S19897C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19897C12D1Ev,_ZTv0_n24_N9S19897C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19897C12D1Ev,_ZThn60_N9S19897C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19897C9D0Ev,_ZThn76_N8S19897C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19897C9D0Ev,_ZThn52_N8S19897C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19897C9D1Ev,_ZThn76_N8S19897C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19897C9D1Ev,_ZThn52_N8S19897C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19897C9 = {  "S19897C9", // class name
  bases_S19897C9, 32,
  &(vtc_S19897C9[0]), // expected_vtbl_contents
  &(vtt_S19897C9[0]), // expected_vtt_contents
  ABISELECT(136,92), // object size
  NSPAIRA(_ZTI8S19897C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19897C9),57, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19897C9),28, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names49,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19897C16  : virtual S19897C11 {
  int s19897c16f0;
  ~S19897C16(); // tgen
  S19897C16(); // tgen
};
//SIG(-1 S19897C16) C1{ VBC2{ BC3{ VBC4{ m FL} BC5{ m} v1}} Fi}


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

static void Test_S19897C16()
{
  extern Class_Descriptor cd_S19897C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19897C16, buf);
    S19897C16 *dp, &lv = *(dp=new (buf) S19897C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19897C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19897C16)");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C11*), ABISELECT(16,8), "S19897C16");
    check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C11*), 0, "S19897C16");
    check_base_class_offset(lv, (S19897C5*)(S19897C11*), 0, "S19897C16");
    check_base_class_offset(lv, (S19897C11*), 0, "S19897C16");
    check_field_offset(lv, s19897c16f0, ABISELECT(8,4), "S19897C16.s19897c16f0");
    test_class_info(&lv, &cd_S19897C16);
    dp->~S19897C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19897C16(Test_S19897C16, "S19897C16", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S19897C16C1Ev();
extern void _ZN9S19897C16D1Ev();
Name_Map name_map_S19897C16[] = {
  NSPAIR(_ZN9S19897C16C1Ev),
  NSPAIR(_ZN9S19897C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S19897C11;
extern VTBL_ENTRY _ZTI9S19897C11[];
extern  VTBL_ENTRY _ZTV9S19897C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C11[];
static Base_Class bases_S19897C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19897C5,    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
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19897C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19897C16[];
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY vtc_S19897C16[] = {
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C16[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern VTBL_ENTRY _ZTV9S19897C16[];
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C11__9S19897C16[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C11[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C59S19897C11__9S19897C16[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
static  VTT_ENTRY vtt_S19897C16[] = {
  {&(_ZTV9S19897C16[5]),  5,6},
  {&(_ZTV9S19897C16[5]),  5,6},
  {&(_tg__ZTV9S19897C11__9S19897C16[3]),  3,4},
  {&(_tg__ZTV8S19897C59S19897C11__9S19897C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19897C16[];
extern  VTBL_ENTRY _ZTV9S19897C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C16[];
Class_Descriptor cd_S19897C16 = {  "S19897C16", // class name
  bases_S19897C16, 4,
  &(vtc_S19897C16[0]), // expected_vtbl_contents
  &(vtt_S19897C16[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S19897C16),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19897C16),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19897C16),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  S19897C17  : virtual S19897C5 , S19897C10 {
  virtual  ~S19897C17(); // _ZN9S19897C17D2Ev
  virtual void  v3(); // _ZN9S19897C172v3Ev
  S19897C17(); // tgen
};
//SIG(-1 S19897C17) C1{ VBC2{ VBC3{ m FL} BC4{ m} v2} BC5{ BC3 VBC4 BC6{ BC2} vd v3} vd v1}


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

static void Test_S19897C17()
{
  extern Class_Descriptor cd_S19897C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S19897C17, buf);
    S19897C17 *dp, &lv = *(dp=new (buf) S19897C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S19897C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19897C17)");
    /*is_ambiguous_... S19897C17::S19897C5 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*), ABISELECT(24,16), "S19897C17");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C11*)(S19897C10*), ABISELECT(24,16), "S19897C17");
    /*is_ambiguous_... S19897C17::S19897C5 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C5*), ABISELECT(16,12), "S19897C17");
    /*is_ambiguous_... S19897C17::S19897C5 */ AMB_check_base_class_offset(lv, (S19897C5*), ABISELECT(16,12), "S19897C17");
    /*is_ambiguous_... S19897C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C10*), ABISELECT(8,4), "S19897C17");
    /*is_ambiguous_... S19897C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C10*), ABISELECT(32,24), "S19897C17");
    check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C11*)(S19897C10*), 0, "S19897C17");
    check_base_class_offset(lv, (S19897C5*)(S19897C11*)(S19897C10*), 0, "S19897C17");
    check_base_class_offset(lv, (S19897C11*)(S19897C10*), 0, "S19897C17");
    check_base_class_offset(lv, (S19897C10*), 0, "S19897C17");
    test_class_info(&lv, &cd_S19897C17);
    dp->~S19897C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19897C17(Test_S19897C17, "S19897C17", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN9S19897C17C1Ev();
extern void _ZN9S19897C17D2Ev();
Name_Map name_map_S19897C17[] = {
  NSPAIR(_ZN9S19897C17C1Ev),
  NSPAIR(_ZN9S19897C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S19897C11;
extern VTBL_ENTRY _ZTI9S19897C11[];
extern  VTBL_ENTRY _ZTV9S19897C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C11[];
extern Class_Descriptor cd_S19897C10;
extern VTBL_ENTRY _ZTI9S19897C10[];
extern  VTBL_ENTRY _ZTV9S19897C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C10[];
static Base_Class bases_S19897C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(16,12), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19897C5,    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
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19897C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19897C10,    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 _ZTI9S19897C17[];
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C17D1Ev();
extern void _ZN9S19897C17D0Ev();
extern void _ZN9S19897C102v2Ev();
extern void _ZN9S19897C172v3Ev();
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY vtc_S19897C17[] = {
  ABISELECT(16,12),
  ABISELECT(32,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C17[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  (VTBL_ENTRY)&_ZN9S19897C172v3Ev,
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19897C17[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern VTBL_ENTRY _ZTV9S19897C17[];
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C10D1Ev();
extern void _ZN9S19897C10D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C10__9S19897C17[] = {
  ABISELECT(32,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C10[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C119S19897C10__9S19897C17[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C11[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C59S19897C119S19897C10__A1__9S19897C17[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__9S19897C17[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
static  VTT_ENTRY vtt_S19897C17[] = {
  {&(_ZTV9S19897C17[5]),  5,15},
  {&(_tg__ZTV9S19897C10__9S19897C17[4]),  4,8},
  {&(_tg__ZTV9S19897C119S19897C10__9S19897C17[3]),  3,4},
  {&(_tg__ZTV8S19897C59S19897C119S19897C10__A1__9S19897C17[3]),  3,4},
  {&(_ZTV9S19897C17[14]),  14,15},
  {&(_tg__ZTV8S19897C5__9S19897C17[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19897C17[];
extern  VTBL_ENTRY _ZTV9S19897C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C17[];
Class_Descriptor cd_S19897C17 = {  "S19897C17", // class name
  bases_S19897C17, 9,
  &(vtc_S19897C17[0]), // expected_vtbl_contents
  &(vtt_S19897C17[0]), // expected_vtt_contents
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI9S19897C17),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19897C17),15, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19897C17),6, //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  S19897C15  : virtual S19897C16 , S19897C17 , virtual S19897C8 , virtual S19897C9 {
  void *s19897c15f0[9];
  virtual  ~S19897C15(); // _ZN9S19897C15D2Ev
  S19897C15(); // tgen
};
//SIG(-1 S19897C15) C1{ VBC2{ VBC3{ BC4{ VBC5{ m FL} BC6{ m} v1}} Fi} BC7{ VBC4 BC8{ BC5 VBC6 BC3 vd v2} vd v3} VBC9{ BC5 VBC4 BC6 vd} VBC10{ VBC5 VBC11{ VBC5 BC4 BC6} BC9 VBC8 BC12{ BC5 BC8 BC13{ m} VBC14{ VBC5 BC11 VBC4 v4} VBC9 vd}} vd Fp[9]}


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

static void Test_S19897C15()
{
  extern Class_Descriptor cd_S19897C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,38)];
    init_test(&cd_S19897C15, buf);
    S19897C15 *dp, &lv = *(dp=new (buf) S19897C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,148), "sizeof(S19897C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19897C15)");
    /*is_ambiguous_... S19897C15::S19897C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C11*), ABISELECT(104,56), "S19897C15");
    /*is_ambiguous_... S19897C15::S19897C5 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*), ABISELECT(104,56), "S19897C15");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C11*)(S19897C10*)(S19897C17*), ABISELECT(104,56), "S19897C15");
    /*is_ambiguous_... S19897C9::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C9*), ABISELECT(104,56), "S19897C15");
    /*is_ambiguous_... S19897C15::S19897C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C3*), ABISELECT(104,56), "S19897C15");
    /*is_ambiguous_... S19897C15::S19897C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C3*), ABISELECT(104,56), "S19897C15");
    /*is_ambiguous_... S19897C15::S19897C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C11*)(S19897C10*), ABISELECT(104,56), "S19897C15");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C11*)(S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(104,56), "S19897C15");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C14*), ABISELECT(104,56), "S19897C15");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C3*)(S19897C14*), ABISELECT(104,56), "S19897C15");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C3*)(S19897C14*), ABISELECT(104,56), "S19897C15");
    /*is_ambiguous_... S19897C15::S19897C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C11*), ABISELECT(88,48), "S19897C15");
    /*is_ambiguous_... S19897C15::S19897C11 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C11*), ABISELECT(88,48), "S19897C15");
    check_base_class_offset(lv, (S19897C11*)(S19897C16*), ABISELECT(88,48), "S19897C15");
    check_base_class_offset(lv, (S19897C16*), ABISELECT(88,48), "S19897C15");
    /*is_ambiguous_... S19897C15::S19897C5 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C5*), ABISELECT(120,68), "S19897C15");
    /*is_ambiguous_... S19897C17::S19897C5 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C17*), ABISELECT(120,68), "S19897C15");
    /*is_ambiguous_... S19897C15::S19897C8 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C8*), ABISELECT(120,68), "S19897C15");
    /*is_ambiguous_... S19897C9::S19897C8 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C8*)(S19897C9*), ABISELECT(120,68), "S19897C15");
    /*is_ambiguous_... S19897C14::S19897C5 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C14*), ABISELECT(120,68), "S19897C15");
    /*is_ambiguous_... S19897C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C10*)(S19897C17*), ABISELECT(8,4), "S19897C15");
    /*is_ambiguous_... S19897C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C10*)(S19897C17*), ABISELECT(112,64), "S19897C15");
    /*is_ambiguous_... S19897C15::S19897C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C10*), ABISELECT(112,64), "S19897C15");
    /*is_ambiguous_... S19897C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(112,64), "S19897C15");
    check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C11*)(S19897C10*)(S19897C17*), 0, "S19897C15");
    check_base_class_offset(lv, (S19897C5*)(S19897C11*)(S19897C10*)(S19897C17*), 0, "S19897C15");
    check_base_class_offset(lv, (S19897C11*)(S19897C10*)(S19897C17*), 0, "S19897C15");
    check_base_class_offset(lv, (S19897C10*)(S19897C17*), 0, "S19897C15");
    check_base_class_offset(lv, (S19897C17*), 0, "S19897C15");
    /*is_ambiguous_... S19897C15::S19897C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C8*), ABISELECT(128,72), "S19897C15");
    /*is_ambiguous_... S19897C15::S19897C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C8*), ABISELECT(136,80), "S19897C15");
    /*is_ambiguous_... S19897C15::S19897C8 */ AMB_check_base_class_offset(lv, (S19897C8*), ABISELECT(120,68), "S19897C15");
    check_base_class_offset(lv, (S19897C8*)(S19897C12*)(S19897C9*), ABISELECT(120,68), "S19897C15");
    /*is_ambiguous_... S19897C15::S19897C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C3*), ABISELECT(192,120), "S19897C15");
    /*is_ambiguous_... S19897C15::S19897C3 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C3*), ABISELECT(192,120), "S19897C15");
    /*is_ambiguous_... S19897C15::S19897C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C3*), ABISELECT(200,124), "S19897C15");
    /*is_ambiguous_... S19897C9::S19897C3 */ AMB_check_base_class_offset(lv, (S19897C3*)(S19897C9*), ABISELECT(192,120), "S19897C15");
    /*is_ambiguous_... S19897C9::S19897C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C8*)(S19897C9*), ABISELECT(152,88), "S19897C15");
    /*is_ambiguous_... S19897C9::S19897C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C8*)(S19897C9*), ABISELECT(160,96), "S19897C15");
    /*is_ambiguous_... S19897C9::S19897C8 */ AMB_check_base_class_offset(lv, (S19897C8*)(S19897C9*), ABISELECT(144,84), "S19897C15");
    /*is_ambiguous_... S19897C15::S19897C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C10*), ABISELECT(216,132), "S19897C15");
    /*is_ambiguous_... S19897C15::S19897C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C11*)(S19897C10*), ABISELECT(208,128), "S19897C15");
    /*is_ambiguous_... S19897C15::S19897C10 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C11*)(S19897C10*), ABISELECT(208,128), "S19897C15");
    /*is_ambiguous_... S19897C15::S19897C10 */ AMB_check_base_class_offset(lv, (S19897C11*)(S19897C10*), ABISELECT(208,128), "S19897C15");
    /*is_ambiguous_... S19897C9::S19897C10 */ AMB_check_base_class_offset(lv, (S19897C10*)(S19897C9*), ABISELECT(208,128), "S19897C15");
    /*is_ambiguous_... S19897C12::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C12*)(S19897C9*), ABISELECT(184,112), "S19897C15");
    /*is_ambiguous_... S19897C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(176,104), "S19897C15");
    check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C11*)(S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(168,100), "S19897C15");
    check_base_class_offset(lv, (S19897C5*)(S19897C11*)(S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(168,100), "S19897C15");
    check_base_class_offset(lv, (S19897C11*)(S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(168,100), "S19897C15");
    check_base_class_offset(lv, (S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(168,100), "S19897C15");
    check_base_class_offset(lv, (S28C52_nt*)(S19897C12*)(S19897C9*), ABISELECT(168,100), "S19897C15");
    check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C3*)(S19897C14*), ABISELECT(224,140), "S19897C15");
    check_base_class_offset(lv, (S19897C5*)(S19897C3*)(S19897C14*), ABISELECT(224,140), "S19897C15");
    /*is_ambiguous_... S19897C3::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C3*)(S19897C14*), ABISELECT(232,144), "S19897C15");
    check_base_class_offset(lv, (S19897C3*)(S19897C14*), ABISELECT(224,140), "S19897C15");
    check_base_class_offset(lv, (S19897C14*)(S19897C12*)(S19897C9*), ABISELECT(224,140), "S19897C15");
    check_base_class_offset(lv, (S19897C12*)(S19897C9*), ABISELECT(168,100), "S19897C15");
    check_base_class_offset(lv, (S19897C9*), ABISELECT(144,84), "S19897C15");
    check_field_offset(lv, s19897c15f0, ABISELECT(16,12), "S19897C15.s19897c15f0");
    test_class_info(&lv, &cd_S19897C15);
    dp->~S19897C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19897C15(Test_S19897C15, "S19897C15", ABISELECT(240,148));

#else // __cplusplus

extern void _ZN9S19897C15C1Ev();
extern void _ZN9S19897C15D2Ev();
Name_Map name_map_S19897C15[] = {
  NSPAIR(_ZN9S19897C15C1Ev),
  NSPAIR(_ZN9S19897C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S19897C11;
extern VTBL_ENTRY _ZTI9S19897C11[];
extern  VTBL_ENTRY _ZTV9S19897C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C11[];
extern Class_Descriptor cd_S19897C16;
extern VTBL_ENTRY _ZTI9S19897C16[];
extern  VTBL_ENTRY _ZTV9S19897C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C16[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S19897C11;
extern VTBL_ENTRY _ZTI9S19897C11[];
extern  VTBL_ENTRY _ZTV9S19897C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C11[];
extern Class_Descriptor cd_S19897C10;
extern VTBL_ENTRY _ZTI9S19897C10[];
extern  VTBL_ENTRY _ZTV9S19897C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C10[];
extern Class_Descriptor cd_S19897C17;
extern VTBL_ENTRY _ZTI9S19897C17[];
extern  VTBL_ENTRY _ZTV9S19897C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C17[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C8;
extern VTBL_ENTRY _ZTI8S19897C8[];
extern  VTBL_ENTRY _ZTV8S19897C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C8[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C3;
extern VTBL_ENTRY _ZTI8S19897C3[];
extern  VTBL_ENTRY _ZTV8S19897C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C8;
extern VTBL_ENTRY _ZTI8S19897C8[];
extern  VTBL_ENTRY _ZTV8S19897C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C8[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S19897C11;
extern VTBL_ENTRY _ZTI9S19897C11[];
extern  VTBL_ENTRY _ZTV9S19897C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C11[];
extern Class_Descriptor cd_S19897C10;
extern VTBL_ENTRY _ZTI9S19897C10[];
extern  VTBL_ENTRY _ZTV9S19897C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C10[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S19897C11;
extern VTBL_ENTRY _ZTI9S19897C11[];
extern  VTBL_ENTRY _ZTV9S19897C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C11[];
extern Class_Descriptor cd_S19897C10;
extern VTBL_ENTRY _ZTI9S19897C10[];
extern  VTBL_ENTRY _ZTV9S19897C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C10[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C3;
extern VTBL_ENTRY _ZTI8S19897C3[];
extern  VTBL_ENTRY _ZTV8S19897C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C3[];
extern Class_Descriptor cd_S19897C14;
extern VTBL_ENTRY _ZTI9S19897C14[];
extern  VTBL_ENTRY _ZTV9S19897C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C14[];
extern Class_Descriptor cd_S19897C12;
extern VTBL_ENTRY _ZTI9S19897C12[];
extern  VTBL_ENTRY _ZTV9S19897C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C12[];
extern Class_Descriptor cd_S19897C9;
extern VTBL_ENTRY _ZTI8S19897C9[];
extern  VTBL_ENTRY _ZTV8S19897C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C9[];
static Base_Class bases_S19897C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(88,48), //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_S19897C11,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19897C16,    ABISELECT(88,48), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19897C5,    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
    20, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19897C11,    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
    21, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19897C10,    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
    22, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19897C17,    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
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    16, //immediately_derived
  0, 0},
  {&cd_S19897C8,    ABISELECT(120,68), //bcp->offset
    23, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    20, //immediately_derived
  0, 0},
  {&cd_S19897C3,    ABISELECT(192,120), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(152,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    23, //immediately_derived
  0, 0},
  {&cd_S19897C8,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(216,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    26, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19897C11,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19897C10,    ABISELECT(208,128), //bcp->offset
    63, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S3461C5_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
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(176,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
    34, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    32, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19897C11,    ABISELECT(168,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19897C10,    ABISELECT(168,100), //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
    17, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    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
    41, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(232,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19897C3,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19897C14,    ABISELECT(224,140), //bcp->offset
    74, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S19897C12,    ABISELECT(168,100), //bcp->offset
    47, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19897C9,    ABISELECT(144,84), //bcp->offset
    32, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19897C15[];
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C15D1Ev();
extern void _ZN9S19897C15D0Ev();
extern void _ZN9S19897C102v2Ev();
extern void _ZN9S19897C172v3Ev();
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19897C15D1Ev,_ZTv0_n24_N9S19897C15D1Ev)();
extern void ABISELECT(_ZThn120_N9S19897C15D1Ev,_ZThn68_N9S19897C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19897C15D0Ev,_ZTv0_n24_N9S19897C15D0Ev)();
extern void ABISELECT(_ZThn120_N9S19897C15D0Ev,_ZThn68_N9S19897C15D0Ev)() __attribute__((weak));
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S19897C15D1Ev,_ZTv0_n44_N9S19897C15D1Ev)();
extern void ABISELECT(_ZThn144_N9S19897C15D1Ev,_ZThn84_N9S19897C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19897C15D0Ev,_ZTv0_n44_N9S19897C15D0Ev)();
extern void ABISELECT(_ZThn144_N9S19897C15D0Ev,_ZThn84_N9S19897C15D0Ev)() __attribute__((weak));
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTvn24_n88_N9S19897C15D1Ev,_ZTvn16_n44_N9S19897C15D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N9S19897C15D0Ev,_ZTvn16_n44_N9S19897C15D0Ev)();
extern void _ZN9S19897C102v2Ev();
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19897C15D1Ev,_ZTv0_n24_N9S19897C15D1Ev)();
extern void ABISELECT(_ZThn208_N9S19897C15D1Ev,_ZThn128_N9S19897C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19897C15D0Ev,_ZTv0_n24_N9S19897C15D0Ev)();
extern void ABISELECT(_ZThn208_N9S19897C15D0Ev,_ZThn128_N9S19897C15D0Ev)() __attribute__((weak));
extern void _ZN9S19897C102v2Ev();
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
static  VTBL_ENTRY vtc_S19897C15[] = {
  ABISELECT(224,140),
  ABISELECT(208,128),
  ABISELECT(192,120),
  ABISELECT(144,84),
  ABISELECT(120,68),
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(120,68),
  ABISELECT(112,64),
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C15D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  (VTBL_ENTRY)&_ZN9S19897C172v3Ev,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  ABISELECT(-120,-68),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C15D1Ev,_ZTv0_n24_N9S19897C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C15D0Ev,_ZTv0_n24_N9S19897C15D0Ev),
  ABISELECT(24,16),
  ABISELECT(-144,-84),
  ABISELECT(-24,-16),
  ABISELECT(80,56),
  ABISELECT(-32,-20),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-40,-28),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19897C15D1Ev,_ZTv0_n44_N9S19897C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19897C15D0Ev,_ZTv0_n44_N9S19897C15D0Ev),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(56,40),
  ABISELECT(-56,-36),
  ABISELECT(-64,-44),
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S19897C15D1Ev,_ZTvn16_n44_N9S19897C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S19897C15D0Ev,_ZTvn16_n44_N9S19897C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  0,
  ABISELECT(-88,-64),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  0,
  ABISELECT(-208,-128),
  0,
  ABISELECT(-96,-64),
  ABISELECT(-104,-72),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C15D1Ev,_ZTv0_n24_N9S19897C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C15D0Ev,_ZTv0_n24_N9S19897C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  0,
  0,
  ABISELECT(-104,-72),
  ABISELECT(-120,-84),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
};
extern VTBL_ENTRY _ZTV9S19897C15[];
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C17D1Ev();
extern void _ZN9S19897C17D0Ev();
extern void _ZN9S19897C102v2Ev();
extern void _ZN9S19897C172v3Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C17__9S19897C15[] = {
  ABISELECT(120,68),
  ABISELECT(112,64),
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C17[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  (VTBL_ENTRY)&_ZN9S19897C172v3Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C10D1Ev();
extern void _ZN9S19897C10D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C109S19897C17__9S19897C15[] = {
  ABISELECT(112,64),
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C10[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C119S19897C109S19897C17__A1__9S19897C15[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C11[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C59S19897C119S19897C109S19897C17__A2__9S19897C15[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__9S19897C17__9S19897C15[] = {
  0,
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S19897C17[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C16__9S19897C15[] = {
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C16[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C11__9S19897C15[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C11[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C59S19897C11__9S19897C15[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__A1__9S19897C15[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C8D1Ev();
extern void _ZN8S19897C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C8__9S19897C15[] = {
  0,
  0,
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C8[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D0Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C9D1Ev();
extern void _ZN8S19897C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C9__9S19897C15[] = {
  ABISELECT(-24,-16),
  ABISELECT(80,56),
  ABISELECT(-32,-20),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C9D0Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C8D1Ev();
extern void _ZN8S19897C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C88S19897C9__A1__9S19897C15[] = {
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C8[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D0Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__8S19897C88S19897C9__A1__9S19897C15[] = {
  0,
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S19897C8[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C12D1Ev();
extern void _ZN9S19897C12D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C128S19897C9__9S19897C15[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(56,40),
  ABISELECT(-56,-36),
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C12D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C10D1Ev();
extern void _ZN9S19897C10D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C109S19897C128S19897C9__A2__9S19897C15[] = {
  ABISELECT(-56,-36),
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C10[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C119S19897C109S19897C128S19897C9__A3__9S19897C15[] = {
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C11[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C59S19897C119S19897C109S19897C128S19897C9__A5__9S19897C15[] = {
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C14__9S19897C128S19897C9__9S19897C15[] = {
  0,
  0,
  ABISELECT(-104,-72),
  ABISELECT(-120,-84),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19897C12D1Ev,_ZTv0_n24_N9S19897C12D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19897C12D0Ev,_ZTv0_n24_N9S19897C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19897C8__9S19897C128S19897C9__9S19897C15[] = {
  ABISELECT(48,32),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C12D1Ev,_ZTv0_n24_N9S19897C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C12D0Ev,_ZTv0_n24_N9S19897C12D0Ev),
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C3__8S19897C9__9S19897C15[] = {
  0,
  ABISELECT(-88,-64),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19897C8__A1__8S19897C9__9S19897C15[] = {
  ABISELECT(24,16),
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev),
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19897C9D1Ev,_ZThn44_N8S19897C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S19897C9D0Ev,_ZThn44_N8S19897C9D0Ev)() __attribute__((weak));
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C10__8S19897C9__9S19897C15[] = {
  0,
  ABISELECT(-64,-44),
  0,
  ABISELECT(-96,-64),
  ABISELECT(-104,-72),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZThn24_N8S19897C9D1Ev,_ZThn16_N8S19897C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S19897C9D0Ev,_ZThn16_N8S19897C9D0Ev)();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C12__8S19897C9__9S19897C15[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(56,40),
  ABISELECT(-56,-36),
  ABISELECT(-64,-44),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19897C9D1Ev,_ZThn16_N8S19897C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19897C9D0Ev,_ZThn16_N8S19897C9D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C14__8S19897C9__9S19897C15[] = {
  0,
  0,
  ABISELECT(-104,-72),
  ABISELECT(-120,-84),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C3__9S19897C15[] = {
  ABISELECT(-88,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C3[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C58S19897C3__A3__9S19897C15[] = {
  ABISELECT(-88,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C10D1Ev();
extern void _ZN9S19897C10D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C10__A1__9S19897C15[] = {
  ABISELECT(-96,-64),
  ABISELECT(-104,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C10[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C119S19897C10__A2__9S19897C15[] = {
  ABISELECT(-104,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C11[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C59S19897C119S19897C10__A4__9S19897C15[] = {
  ABISELECT(-104,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C14__9S19897C15[] = {
  ABISELECT(-104,-72),
  ABISELECT(-120,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C14[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C39S19897C14__A1__9S19897C15[] = {
  ABISELECT(-120,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C3[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C58S19897C39S19897C14__A6__9S19897C15[] = {
  ABISELECT(-120,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__A1__9S19897C14__9S19897C15[] = {
  0,
  ABISELECT(-16,-12),
  ABISELECT(104,72),
  (VTBL_ENTRY)&(_ZTI9S19897C14[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
static  VTT_ENTRY vtt_S19897C15[] = {
  {&(_ZTV9S19897C15[12]),  12,82},
  {&(_tg__ZTV9S19897C17__9S19897C15[5]),  5,10},
  {&(_tg__ZTV9S19897C109S19897C17__9S19897C15[4]),  4,8},
  {&(_tg__ZTV9S19897C119S19897C109S19897C17__A1__9S19897C15[3]),  3,4},
  {&(_tg__ZTV8S19897C59S19897C119S19897C109S19897C17__A2__9S19897C15[3]),  3,4},
  {&(_tg__ZTV8S19897C5__9S19897C17__9S19897C15[4]),  4,5},
  {&(_ZTV9S19897C15[22]),  22,82},
  {&(_ZTV9S19897C15[22]),  22,82},
  {&(_ZTV9S19897C15[29]),  29,82},
  {&(_ZTV9S19897C15[29]),  29,82},
  {&(_ZTV9S19897C15[44]),  44,82},
  {&(_ZTV9S19897C15[62]),  62,82},
  {&(_ZTV9S19897C15[70]),  70,82},
  {&(_ZTV9S19897C15[54]),  54,82},
  {&(_ZTV9S19897C15[80]),  80,82},
  {&(_tg__ZTV9S19897C16__9S19897C15[5]),  5,6},
  {&(_tg__ZTV9S19897C16__9S19897C15[5]),  5,6},
  {&(_tg__ZTV9S19897C11__9S19897C15[3]),  3,4},
  {&(_tg__ZTV8S19897C59S19897C11__9S19897C15[3]),  3,4},
  {&(_tg__ZTV8S19897C5__A1__9S19897C15[3]),  3,4},
  {&(_tg__ZTV8S19897C8__9S19897C15[5]),  5,8},
  {&(_tg__ZTV8S19897C8__9S19897C15[5]),  5,8},
  {&(_tg__ZTV8S19897C9__9S19897C15[10]),  10,13},
  {&(_tg__ZTV8S19897C88S19897C9__A1__9S19897C15[5]),  5,8},
  {&(_tg__ZTV8S19897C5__8S19897C88S19897C9__A1__9S19897C15[4]),  4,5},
  {&(_tg__ZTV9S19897C128S19897C9__9S19897C15[7]),  7,11},
  {&(_tg__ZTV9S19897C109S19897C128S19897C9__A2__9S19897C15[4]),  4,8},
  {&(_tg__ZTV9S19897C119S19897C109S19897C128S19897C9__A3__9S19897C15[3]),  3,4},
  {&(_tg__ZTV8S19897C59S19897C119S19897C109S19897C128S19897C9__A5__9S19897C15[3]),  3,4},
  {&(_tg__ZTV9S19897C14__9S19897C128S19897C9__9S19897C15[6]),  6,8},
  {&(_tg__ZTV8S19897C8__9S19897C128S19897C9__9S19897C15[6]),  6,9},
  {&(_tg__ZTV8S19897C8__9S19897C128S19897C9__9S19897C15[6]),  6,9},
  {&(_tg__ZTV8S19897C3__8S19897C9__9S19897C15[4]),  4,5},
  {&(_tg__ZTV8S19897C8__A1__8S19897C9__9S19897C15[6]),  6,9},
  {&(_tg__ZTV9S19897C10__8S19897C9__9S19897C15[7]),  7,11},
  {&(_tg__ZTV9S19897C12__8S19897C9__9S19897C15[7]),  7,11},
  {&(_tg__ZTV9S19897C14__8S19897C9__9S19897C15[6]),  6,8},
  {&(_tg__ZTV8S19897C8__A1__8S19897C9__9S19897C15[6]),  6,9},
  {&(_tg__ZTV8S19897C3__9S19897C15[3]),  3,4},
  {&(_tg__ZTV8S19897C58S19897C3__A3__9S19897C15[3]),  3,4},
  {&(_tg__ZTV9S19897C10__A1__9S19897C15[4]),  4,8},
  {&(_tg__ZTV9S19897C119S19897C10__A2__9S19897C15[3]),  3,4},
  {&(_tg__ZTV8S19897C59S19897C119S19897C10__A4__9S19897C15[3]),  3,4},
  {&(_tg__ZTV9S19897C14__9S19897C15[4]),  4,6},
  {&(_tg__ZTV8S19897C39S19897C14__A1__9S19897C15[3]),  3,4},
  {&(_tg__ZTV8S19897C58S19897C39S19897C14__A6__9S19897C15[3]),  3,4},
  {&(_tg__ZTV8S19897C5__A1__9S19897C14__9S19897C15[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S19897C15[];
extern  VTBL_ENTRY _ZTV9S19897C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C15[];
static VTBL_ENTRY alt_thunk_names50[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19897C9D0Ev,_ZThn44_N8S19897C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19897C9D1Ev,_ZThn44_N8S19897C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19897C15D0Ev,_ZTv0_n44_N9S19897C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19897C15D0Ev,_ZThn84_N9S19897C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19897C15D1Ev,_ZTv0_n44_N9S19897C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19897C15D1Ev,_ZThn84_N9S19897C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19897C15D0Ev,_ZTv0_n24_N9S19897C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19897C15D0Ev,_ZThn128_N9S19897C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19897C15D0Ev,_ZThn68_N9S19897C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19897C15D1Ev,_ZTv0_n24_N9S19897C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19897C15D1Ev,_ZThn128_N9S19897C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19897C15D1Ev,_ZThn68_N9S19897C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19897C15 = {  "S19897C15", // class name
  bases_S19897C15, 43,
  &(vtc_S19897C15[0]), // expected_vtbl_contents
  &(vtt_S19897C15[0]), // expected_vtt_contents
  ABISELECT(240,148), // object size
  NSPAIRA(_ZTI9S19897C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19897C15),82, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19897C15),47, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names50,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19897C6  : virtual S19897C5 , virtual S19897C7 , virtual S19897C9 , S19897C15 {
  virtual  ~S19897C6(); // _ZN8S19897C6D2Ev
  S19897C6(); // tgen
};
//SIG(-1 S19897C6) C1{ VBC2{ VBC3{ m FL} BC4{ m} v1} VBC5{ BC4 VBC2 BC6{ BC3 VBC2 BC4 vd} BC3 vd FL} VBC7{ VBC3 VBC8{ VBC3 BC2 BC4} BC6 VBC9{ BC3 VBC4 BC10{ BC2} vd v2} BC11{ BC3 BC9 BC12{ m} VBC13{ VBC3 BC8 VBC2 v3} VBC6 vd}} BC14{ VBC15{ VBC10 Fi} BC16{ VBC2 BC9 vd v4} VBC6 VBC7 vd Fp[9]} vd}


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

static void Test_S19897C6()
{
  extern Class_Descriptor cd_S19897C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,46)];
    init_test(&cd_S19897C6, buf);
    S19897C6 *dp, &lv = *(dp=new (buf) S19897C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,180), "sizeof(S19897C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19897C6)");
    /*is_ambiguous_... S19897C6::S19897C5 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*), ABISELECT(88,48), "S19897C6");
    /*is_ambiguous_... S19897C9::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C9*), ABISELECT(88,48), "S19897C6");
    /*is_ambiguous_... S19897C6::S19897C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C3*), ABISELECT(88,48), "S19897C6");
    /*is_ambiguous_... S19897C6::S19897C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C3*), ABISELECT(88,48), "S19897C6");
    /*is_ambiguous_... S19897C6::S19897C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C11*)(S19897C10*), ABISELECT(88,48), "S19897C6");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C11*)(S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(88,48), "S19897C6");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C14*), ABISELECT(88,48), "S19897C6");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C3*)(S19897C14*), ABISELECT(88,48), "S19897C6");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C3*)(S19897C14*), ABISELECT(88,48), "S19897C6");
    /*is_ambiguous_... S19897C6::S19897C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C11*), ABISELECT(88,48), "S19897C6");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C11*)(S19897C10*)(S19897C17*)(S19897C15*), ABISELECT(88,48), "S19897C6");
    /*is_ambiguous_... S19897C6::S19897C5 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C5*), ABISELECT(96,56), "S19897C6");
    /*is_ambiguous_... S19897C6::S19897C5 */ AMB_check_base_class_offset(lv, (S19897C5*), ABISELECT(96,56), "S19897C6");
    check_base_class_offset(lv, (S19897C5*)(S19897C7*), ABISELECT(96,56), "S19897C6");
    check_base_class_offset(lv, (S19897C5*)(S19897C8*)(S19897C7*), ABISELECT(96,56), "S19897C6");
    /*is_ambiguous_... S19897C9::S19897C8 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C8*)(S19897C9*), ABISELECT(96,56), "S19897C6");
    /*is_ambiguous_... S19897C14::S19897C5 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C14*), ABISELECT(96,56), "S19897C6");
    /*is_ambiguous_... S19897C6::S19897C8 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C8*), ABISELECT(96,56), "S19897C6");
    /*is_ambiguous_... S19897C17::S19897C5 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C17*)(S19897C15*), ABISELECT(96,56), "S19897C6");
    /*is_ambiguous_... S19897C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C7*), ABISELECT(113,69), "S19897C6");
    /*is_ambiguous_... S19897C8::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C8*)(S19897C7*), ABISELECT(104,60), "S19897C6");
    /*is_ambiguous_... S19897C8::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C8*)(S19897C7*), ABISELECT(112,68), "S19897C6");
    check_base_class_offset(lv, (S19897C8*)(S19897C7*), ABISELECT(96,56), "S19897C6");
    /*is_ambiguous_... S19897C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C7*), ABISELECT(120,72), "S19897C6");
    check_base_class_offset(lv, (S19897C7*), ABISELECT(96,56), "S19897C6");
    /*is_ambiguous_... S19897C6::S19897C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C3*), ABISELECT(184,124), "S19897C6");
    /*is_ambiguous_... S19897C6::S19897C3 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C3*), ABISELECT(184,124), "S19897C6");
    /*is_ambiguous_... S19897C6::S19897C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C3*), ABISELECT(192,128), "S19897C6");
    /*is_ambiguous_... S19897C9::S19897C3 */ AMB_check_base_class_offset(lv, (S19897C3*)(S19897C9*), ABISELECT(184,124), "S19897C6");
    /*is_ambiguous_... S19897C9::S19897C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C8*)(S19897C9*), ABISELECT(144,92), "S19897C6");
    /*is_ambiguous_... S19897C9::S19897C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C8*)(S19897C9*), ABISELECT(152,100), "S19897C6");
    /*is_ambiguous_... S19897C9::S19897C8 */ AMB_check_base_class_offset(lv, (S19897C8*)(S19897C9*), ABISELECT(136,88), "S19897C6");
    /*is_ambiguous_... S19897C6::S19897C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C10*), ABISELECT(208,136), "S19897C6");
    /*is_ambiguous_... S19897C6::S19897C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C10*), ABISELECT(216,144), "S19897C6");
    /*is_ambiguous_... S19897C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(216,144), "S19897C6");
    /*is_ambiguous_... S19897C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C10*)(S19897C17*)(S19897C15*), ABISELECT(216,144), "S19897C6");
    /*is_ambiguous_... S19897C6::S19897C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C11*)(S19897C10*), ABISELECT(200,132), "S19897C6");
    /*is_ambiguous_... S19897C6::S19897C10 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C11*)(S19897C10*), ABISELECT(200,132), "S19897C6");
    /*is_ambiguous_... S19897C6::S19897C10 */ AMB_check_base_class_offset(lv, (S19897C11*)(S19897C10*), ABISELECT(200,132), "S19897C6");
    /*is_ambiguous_... S19897C9::S19897C10 */ AMB_check_base_class_offset(lv, (S19897C10*)(S19897C9*), ABISELECT(200,132), "S19897C6");
    /*is_ambiguous_... S19897C12::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C12*)(S19897C9*), ABISELECT(176,116), "S19897C6");
    /*is_ambiguous_... S19897C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(168,108), "S19897C6");
    check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C11*)(S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(160,104), "S19897C6");
    check_base_class_offset(lv, (S19897C5*)(S19897C11*)(S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(160,104), "S19897C6");
    check_base_class_offset(lv, (S19897C11*)(S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(160,104), "S19897C6");
    check_base_class_offset(lv, (S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(160,104), "S19897C6");
    check_base_class_offset(lv, (S28C52_nt*)(S19897C12*)(S19897C9*), ABISELECT(160,104), "S19897C6");
    check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C3*)(S19897C14*), ABISELECT(224,148), "S19897C6");
    check_base_class_offset(lv, (S19897C5*)(S19897C3*)(S19897C14*), ABISELECT(224,148), "S19897C6");
    /*is_ambiguous_... S19897C3::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C3*)(S19897C14*), ABISELECT(232,152), "S19897C6");
    check_base_class_offset(lv, (S19897C3*)(S19897C14*), ABISELECT(224,148), "S19897C6");
    check_base_class_offset(lv, (S19897C14*)(S19897C12*)(S19897C9*), ABISELECT(224,148), "S19897C6");
    /*is_ambiguous_... S19897C6::S19897C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C8*), ABISELECT(248,160), "S19897C6");
    /*is_ambiguous_... S19897C6::S19897C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C8*), ABISELECT(256,168), "S19897C6");
    check_base_class_offset(lv, (S19897C8*)(S19897C12*)(S19897C9*), ABISELECT(240,156), "S19897C6");
    /*is_ambiguous_... S19897C15::S19897C8 */ AMB_check_base_class_offset(lv, (S19897C8*)(S19897C15*), ABISELECT(240,156), "S19897C6");
    check_base_class_offset(lv, (S19897C12*)(S19897C9*), ABISELECT(160,104), "S19897C6");
    check_base_class_offset(lv, (S19897C9*), ABISELECT(136,88), "S19897C6");
    check_base_class_offset(lv, (S19897C9*)(S19897C15*), ABISELECT(136,88), "S19897C6");
    /*is_ambiguous_... S19897C6::S19897C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C11*), ABISELECT(264,172), "S19897C6");
    /*is_ambiguous_... S19897C6::S19897C11 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C11*), ABISELECT(264,172), "S19897C6");
    check_base_class_offset(lv, (S19897C11*)(S19897C16*), ABISELECT(264,172), "S19897C6");
    check_base_class_offset(lv, (S19897C16*)(S19897C15*), ABISELECT(264,172), "S19897C6");
    /*is_ambiguous_... S19897C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C10*)(S19897C17*)(S19897C15*), ABISELECT(8,4), "S19897C6");
    check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C11*)(S19897C10*)(S19897C17*)(S19897C15*), 0, "S19897C6");
    check_base_class_offset(lv, (S19897C5*)(S19897C11*)(S19897C10*)(S19897C17*)(S19897C15*), 0, "S19897C6");
    check_base_class_offset(lv, (S19897C11*)(S19897C10*)(S19897C17*)(S19897C15*), 0, "S19897C6");
    check_base_class_offset(lv, (S19897C10*)(S19897C17*)(S19897C15*), 0, "S19897C6");
    check_base_class_offset(lv, (S19897C17*)(S19897C15*), 0, "S19897C6");
    check_base_class_offset(lv, (S19897C15*), 0, "S19897C6");
    test_class_info(&lv, &cd_S19897C6);
    dp->~S19897C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19897C6(Test_S19897C6, "S19897C6", ABISELECT(280,180));

#else // __cplusplus

extern void _ZN8S19897C6C1Ev();
extern void _ZN8S19897C6D2Ev();
Name_Map name_map_S19897C6[] = {
  NSPAIR(_ZN8S19897C6C1Ev),
  NSPAIR(_ZN8S19897C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C8;
extern VTBL_ENTRY _ZTI8S19897C8[];
extern  VTBL_ENTRY _ZTV8S19897C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C8[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S19897C7;
extern VTBL_ENTRY _ZTI8S19897C7[];
extern  VTBL_ENTRY _ZTV8S19897C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C3;
extern VTBL_ENTRY _ZTI8S19897C3[];
extern  VTBL_ENTRY _ZTV8S19897C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C8;
extern VTBL_ENTRY _ZTI8S19897C8[];
extern  VTBL_ENTRY _ZTV8S19897C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C8[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S19897C11;
extern VTBL_ENTRY _ZTI9S19897C11[];
extern  VTBL_ENTRY _ZTV9S19897C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C11[];
extern Class_Descriptor cd_S19897C10;
extern VTBL_ENTRY _ZTI9S19897C10[];
extern  VTBL_ENTRY _ZTV9S19897C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C10[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S19897C11;
extern VTBL_ENTRY _ZTI9S19897C11[];
extern  VTBL_ENTRY _ZTV9S19897C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C11[];
extern Class_Descriptor cd_S19897C10;
extern VTBL_ENTRY _ZTI9S19897C10[];
extern  VTBL_ENTRY _ZTV9S19897C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C10[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C3;
extern VTBL_ENTRY _ZTI8S19897C3[];
extern  VTBL_ENTRY _ZTV8S19897C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C3[];
extern Class_Descriptor cd_S19897C14;
extern VTBL_ENTRY _ZTI9S19897C14[];
extern  VTBL_ENTRY _ZTV9S19897C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C14[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C8;
extern VTBL_ENTRY _ZTI8S19897C8[];
extern  VTBL_ENTRY _ZTV8S19897C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C8[];
extern Class_Descriptor cd_S19897C12;
extern VTBL_ENTRY _ZTI9S19897C12[];
extern  VTBL_ENTRY _ZTV9S19897C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C12[];
extern Class_Descriptor cd_S19897C9;
extern VTBL_ENTRY _ZTI8S19897C9[];
extern  VTBL_ENTRY _ZTV8S19897C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S19897C11;
extern VTBL_ENTRY _ZTI9S19897C11[];
extern  VTBL_ENTRY _ZTV9S19897C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C11[];
extern Class_Descriptor cd_S19897C16;
extern VTBL_ENTRY _ZTI9S19897C16[];
extern  VTBL_ENTRY _ZTV9S19897C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C16[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S19897C11;
extern VTBL_ENTRY _ZTI9S19897C11[];
extern  VTBL_ENTRY _ZTV9S19897C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C11[];
extern Class_Descriptor cd_S19897C10;
extern VTBL_ENTRY _ZTI9S19897C10[];
extern  VTBL_ENTRY _ZTV9S19897C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C10[];
extern Class_Descriptor cd_S19897C17;
extern VTBL_ENTRY _ZTI9S19897C17[];
extern  VTBL_ENTRY _ZTV9S19897C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C17[];
extern Class_Descriptor cd_S19897C15;
extern VTBL_ENTRY _ZTI9S19897C15[];
extern  VTBL_ENTRY _ZTV9S19897C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C15[];
static Base_Class bases_S19897C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    2, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(113,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
    8, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    6, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    6, //immediately_derived
  0, 0},
  {&cd_S19897C8,    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
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    8, //immediately_derived
  0, 0},
  {&cd_S19897C7,    ABISELECT(96,56), //bcp->offset
    18, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    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
    10, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(184,124), //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
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(192,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
    12, //immediately_derived
  0, 0},
  {&cd_S19897C3,    ABISELECT(184,124), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    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
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19897C8,    ABISELECT(136,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(208,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(216,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
    21, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    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
    19, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(200,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19897C11,    ABISELECT(200,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19897C10,    ABISELECT(200,132), //bcp->offset
    58, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(176,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
    37, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(168,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19897C11,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19897C10,    ABISELECT(160,104), //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
    16, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(160,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(232,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
    32, //immediately_derived
  0, 0},
  {&cd_S19897C3,    ABISELECT(224,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19897C14,    ABISELECT(224,148), //bcp->offset
    69, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(248,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(256,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
    36, //immediately_derived
  0, 0},
  {&cd_S19897C8,    ABISELECT(240,156), //bcp->offset
    77, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S19897C12,    ABISELECT(160,104), //bcp->offset
    42, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19897C9,    ABISELECT(136,88), //bcp->offset
    27, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(264,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
    40, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(264,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19897C11,    ABISELECT(264,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S19897C16,    ABISELECT(264,172), //bcp->offset
    86, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19897C5,    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
    22, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19897C11,    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
    23, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19897C10,    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
    24, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19897C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S19897C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19897C6[];
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C6D1Ev();
extern void _ZN8S19897C6D0Ev();
extern void _ZN9S19897C102v2Ev();
extern void _ZN9S19897C172v3Ev();
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19897C6D1Ev,_ZTv0_n24_N8S19897C6D1Ev)();
extern void ABISELECT(_ZThn96_N8S19897C6D1Ev,_ZThn56_N8S19897C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19897C6D0Ev,_ZTv0_n24_N8S19897C6D0Ev)();
extern void ABISELECT(_ZThn96_N8S19897C6D0Ev,_ZThn56_N8S19897C6D0Ev)() __attribute__((weak));
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S19897C6D1Ev,_ZTv0_n44_N8S19897C6D1Ev)();
extern void ABISELECT(_ZThn136_N8S19897C6D1Ev,_ZThn88_N8S19897C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19897C6D0Ev,_ZTv0_n44_N8S19897C6D0Ev)();
extern void ABISELECT(_ZThn136_N8S19897C6D0Ev,_ZThn88_N8S19897C6D0Ev)() __attribute__((weak));
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S19897C6D1Ev,_ZTvn16_n44_N8S19897C6D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S19897C6D0Ev,_ZTvn16_n44_N8S19897C6D0Ev)();
extern void _ZN9S19897C102v2Ev();
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19897C6D1Ev,_ZTv0_n24_N8S19897C6D1Ev)();
extern void ABISELECT(_ZThn200_N8S19897C6D1Ev,_ZThn132_N8S19897C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19897C6D0Ev,_ZTv0_n24_N8S19897C6D0Ev)();
extern void ABISELECT(_ZThn200_N8S19897C6D0Ev,_ZThn132_N8S19897C6D0Ev)() __attribute__((weak));
extern void _ZN9S19897C102v2Ev();
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19897C6D1Ev,_ZTv0_n24_N8S19897C6D1Ev)();
extern void ABISELECT(_ZThn240_N8S19897C6D1Ev,_ZThn156_N8S19897C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19897C6D0Ev,_ZTv0_n24_N8S19897C6D0Ev)();
extern void ABISELECT(_ZThn240_N8S19897C6D0Ev,_ZThn156_N8S19897C6D0Ev)() __attribute__((weak));
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY vtc_S19897C6[] = {
  ABISELECT(96,56),
  ABISELECT(224,148),
  ABISELECT(200,132),
  ABISELECT(184,124),
  ABISELECT(136,88),
  ABISELECT(240,156),
  ABISELECT(264,172),
  ABISELECT(264,172),
  ABISELECT(96,56),
  ABISELECT(216,144),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C6[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C6D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  (VTBL_ENTRY)&_ZN9S19897C172v3Ev,
  ABISELECT(-96,-56),
  0,
  0,
  -8,
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S19897C6[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C6D1Ev,_ZTv0_n24_N8S19897C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C6D0Ev,_ZTv0_n24_N8S19897C6D0Ev),
  ABISELECT(24,16),
  ABISELECT(-136,-88),
  ABISELECT(104,68),
  ABISELECT(88,60),
  ABISELECT(80,56),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-48,-40),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S19897C6[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19897C6D1Ev,_ZTv0_n44_N8S19897C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19897C6D0Ev,_ZTv0_n44_N8S19897C6D0Ev),
  ABISELECT(80,52),
  ABISELECT(-64,-48),
  ABISELECT(64,44),
  ABISELECT(56,40),
  ABISELECT(-72,-56),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI8S19897C6[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S19897C6D1Ev,_ZTvn16_n44_N8S19897C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S19897C6D0Ev,_ZTvn16_n44_N8S19897C6D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  0,
  ABISELECT(-96,-76),
  ABISELECT(-184,-124),
  (VTBL_ENTRY)&(_ZTI8S19897C6[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  0,
  ABISELECT(-200,-132),
  0,
  ABISELECT(16,12),
  ABISELECT(-112,-84),
  ABISELECT(-200,-132),
  (VTBL_ENTRY)&(_ZTI8S19897C6[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C6D1Ev,_ZTv0_n24_N8S19897C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C6D0Ev,_ZTv0_n24_N8S19897C6D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  0,
  0,
  ABISELECT(-128,-92),
  ABISELECT(-136,-100),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI8S19897C6[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
  ABISELECT(-240,-156),
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  ABISELECT(-152,-108),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI8S19897C6[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C6D1Ev,_ZTv0_n24_N8S19897C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C6D0Ev,_ZTv0_n24_N8S19897C6D0Ev),
  0,
  0,
  ABISELECT(-176,-124),
  ABISELECT(-264,-172),
  (VTBL_ENTRY)&(_ZTI8S19897C6[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S19897C6[];
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C15D1Ev();
extern void _ZN9S19897C15D0Ev();
extern void _ZN9S19897C102v2Ev();
extern void _ZN9S19897C172v3Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C15__8S19897C6[] = {
  ABISELECT(224,148),
  ABISELECT(200,132),
  ABISELECT(184,124),
  ABISELECT(136,88),
  ABISELECT(240,156),
  ABISELECT(264,172),
  ABISELECT(264,172),
  ABISELECT(96,56),
  ABISELECT(216,144),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C15D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  (VTBL_ENTRY)&_ZN9S19897C172v3Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C17D1Ev();
extern void _ZN9S19897C17D0Ev();
extern void _ZN9S19897C102v2Ev();
extern void _ZN9S19897C172v3Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C179S19897C15__8S19897C6[] = {
  ABISELECT(96,56),
  ABISELECT(216,144),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C17[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  (VTBL_ENTRY)&_ZN9S19897C172v3Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C10D1Ev();
extern void _ZN9S19897C10D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C109S19897C179S19897C15__A2__8S19897C6[] = {
  ABISELECT(216,144),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C10[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C119S19897C109S19897C179S19897C15__A3__8S19897C6[] = {
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C11[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C59S19897C119S19897C109S19897C179S19897C15__A6__8S19897C6[] = {
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__9S19897C179S19897C15__8S19897C6[] = {
  0,
  -8,
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19897C17[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C16__9S19897C15__8S19897C6[] = {
  0,
  0,
  ABISELECT(-176,-124),
  ABISELECT(-264,-172),
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__A1__9S19897C15__8S19897C6[] = {
  0,
  -8,
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19897C15D1Ev,_ZTv0_n24_N9S19897C15D1Ev)();
extern void ABISELECT(_ZThn240_N9S19897C15D1Ev,_ZThn156_N9S19897C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19897C15D0Ev,_ZTv0_n24_N9S19897C15D0Ev)();
extern void ABISELECT(_ZThn240_N9S19897C15D0Ev,_ZThn156_N9S19897C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19897C8__9S19897C15__8S19897C6[] = {
  ABISELECT(-240,-156),
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  ABISELECT(-152,-108),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C15D1Ev,_ZTv0_n24_N9S19897C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C15D0Ev,_ZTv0_n24_N9S19897C15D0Ev),
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S19897C15D1Ev,_ZTv0_n44_N9S19897C15D1Ev)();
extern void ABISELECT(_ZThn136_N9S19897C15D1Ev,_ZThn88_N9S19897C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19897C15D0Ev,_ZTv0_n44_N9S19897C15D0Ev)();
extern void ABISELECT(_ZThn136_N9S19897C15D0Ev,_ZThn88_N9S19897C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19897C9__9S19897C15__8S19897C6[] = {
  ABISELECT(24,16),
  ABISELECT(-136,-88),
  ABISELECT(104,68),
  ABISELECT(88,60),
  ABISELECT(80,56),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-48,-40),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19897C15D1Ev,_ZTv0_n44_N9S19897C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19897C15D0Ev,_ZTv0_n44_N9S19897C15D0Ev),
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C3__9S19897C15__8S19897C6[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-184,-124),
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19897C15D1Ev,_ZTv0_n24_N9S19897C15D1Ev)();
extern void ABISELECT(_ZThn200_N9S19897C15D1Ev,_ZThn132_N9S19897C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19897C15D0Ev,_ZTv0_n24_N9S19897C15D0Ev)();
extern void ABISELECT(_ZThn200_N9S19897C15D0Ev,_ZThn132_N9S19897C15D0Ev)() __attribute__((weak));
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C10__A1__9S19897C15__8S19897C6[] = {
  0,
  ABISELECT(-200,-132),
  0,
  ABISELECT(16,12),
  ABISELECT(-112,-84),
  ABISELECT(-200,-132),
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C15D1Ev,_ZTv0_n24_N9S19897C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C15D0Ev,_ZTv0_n24_N9S19897C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTvn24_n88_N9S19897C15D1Ev,_ZTvn16_n44_N9S19897C15D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N9S19897C15D0Ev,_ZTvn16_n44_N9S19897C15D0Ev)();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C128S19897C9__9S19897C15__8S19897C6[] = {
  ABISELECT(80,52),
  ABISELECT(-64,-48),
  ABISELECT(64,44),
  ABISELECT(56,40),
  ABISELECT(-72,-56),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S19897C15D1Ev,_ZTvn16_n44_N9S19897C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S19897C15D0Ev,_ZTvn16_n44_N9S19897C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C14__9S19897C15__8S19897C6[] = {
  0,
  0,
  ABISELECT(-128,-92),
  ABISELECT(-136,-100),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__8S19897C6[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C7D1Ev();
extern void _ZN8S19897C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C7__8S19897C6[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C7[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C7D0Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C8D1Ev();
extern void _ZN8S19897C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C88S19897C7__8S19897C6[] = {
  0,
  0,
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C8[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D0Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C9D1Ev();
extern void _ZN8S19897C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C9__8S19897C6[] = {
  ABISELECT(104,68),
  ABISELECT(88,60),
  ABISELECT(80,56),
  ABISELECT(64,44),
  ABISELECT(48,36),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-48,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C9D0Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C8D1Ev();
extern void _ZN8S19897C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C88S19897C9__A1__8S19897C6[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-48,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C8[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D0Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__8S19897C88S19897C9__A1__8S19897C6[] = {
  0,
  -8,
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI8S19897C8[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C12D1Ev();
extern void _ZN9S19897C12D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C128S19897C9__8S19897C6[] = {
  ABISELECT(80,52),
  ABISELECT(-64,-48),
  ABISELECT(64,44),
  ABISELECT(56,40),
  ABISELECT(-72,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C12D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C10D1Ev();
extern void _ZN9S19897C10D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C109S19897C128S19897C9__A1__8S19897C6[] = {
  ABISELECT(56,40),
  ABISELECT(-72,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C10[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C119S19897C109S19897C128S19897C9__A1__8S19897C6[] = {
  ABISELECT(-72,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C11[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C59S19897C119S19897C109S19897C128S19897C9__A3__8S19897C6[] = {
  ABISELECT(-72,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C14__9S19897C128S19897C9__8S19897C6[] = {
  0,
  0,
  ABISELECT(-128,-92),
  ABISELECT(-136,-100),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__A2__9S19897C128S19897C9__8S19897C6[] = {
  0,
  -8,
  ABISELECT(64,48),
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19897C12D1Ev,_ZTv0_n24_N9S19897C12D1Ev)();
extern void ABISELECT(_ZThn80_N9S19897C12D1Ev,_ZThn52_N9S19897C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19897C12D0Ev,_ZTv0_n24_N9S19897C12D0Ev)();
extern void ABISELECT(_ZThn80_N9S19897C12D0Ev,_ZThn52_N9S19897C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19897C8__9S19897C128S19897C9__8S19897C6[] = {
  ABISELECT(-80,-52),
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  ABISELECT(-152,-108),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C12D1Ev,_ZTv0_n24_N9S19897C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C12D0Ev,_ZTv0_n24_N9S19897C12D0Ev),
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C3__8S19897C9__8S19897C6[] = {
  0,
  ABISELECT(-96,-76),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__A1__8S19897C9__8S19897C6[] = {
  0,
  -8,
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19897C9D1Ev,_ZThn44_N8S19897C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S19897C9D0Ev,_ZThn44_N8S19897C9D0Ev)() __attribute__((weak));
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C10__8S19897C9__8S19897C6[] = {
  0,
  ABISELECT(-64,-44),
  0,
  ABISELECT(16,12),
  ABISELECT(-112,-84),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZThn24_N8S19897C9D1Ev,_ZThn16_N8S19897C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S19897C9D0Ev,_ZThn16_N8S19897C9D0Ev)();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C12__8S19897C9__8S19897C6[] = {
  ABISELECT(80,52),
  ABISELECT(-64,-48),
  ABISELECT(64,44),
  ABISELECT(56,40),
  ABISELECT(-72,-56),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19897C9D1Ev,_ZThn16_N8S19897C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19897C9D0Ev,_ZThn16_N8S19897C9D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C14__8S19897C9__8S19897C6[] = {
  0,
  0,
  ABISELECT(-128,-92),
  ABISELECT(-136,-100),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev)();
extern void ABISELECT(_ZThn104_N8S19897C9D1Ev,_ZThn68_N8S19897C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev)();
extern void ABISELECT(_ZThn104_N8S19897C9D0Ev,_ZThn68_N8S19897C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19897C8__A1__8S19897C9__8S19897C6[] = {
  ABISELECT(-104,-68),
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  ABISELECT(-152,-108),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev),
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C3__8S19897C6[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C3[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C58S19897C3__A1__8S19897C6[] = {
  ABISELECT(-96,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C10D1Ev();
extern void _ZN9S19897C10D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C10__8S19897C6[] = {
  ABISELECT(16,12),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C10[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C119S19897C10__8S19897C6[] = {
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C11[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C59S19897C119S19897C10__A2__8S19897C6[] = {
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C14__8S19897C6[] = {
  ABISELECT(-128,-92),
  ABISELECT(-136,-100),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C14[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C39S19897C14__A1__8S19897C6[] = {
  ABISELECT(-136,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C3[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C58S19897C39S19897C14__A4__8S19897C6[] = {
  ABISELECT(-136,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__A1__9S19897C14__8S19897C6[] = {
  0,
  -8,
  ABISELECT(128,92),
  (VTBL_ENTRY)&(_ZTI9S19897C14[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C8D1Ev();
extern void _ZN8S19897C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C8__A2__8S19897C6[] = {
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  ABISELECT(-152,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C8[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D0Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__8S19897C8__A2__8S19897C6[] = {
  0,
  -8,
  ABISELECT(144,100),
  (VTBL_ENTRY)&(_ZTI8S19897C8[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C16__8S19897C6[] = {
  0,
  0,
  ABISELECT(-176,-124),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C16[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C11__A2__8S19897C6[] = {
  ABISELECT(-176,-124),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C11[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C59S19897C11__A5__8S19897C6[] = {
  ABISELECT(-176,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
static  VTT_ENTRY vtt_S19897C6[] = {
  {&(_ZTV8S19897C6[13]),  13,92},
  {&(_tg__ZTV9S19897C15__8S19897C6[12]),  12,17},
  {&(_tg__ZTV9S19897C179S19897C15__8S19897C6[5]),  5,10},
  {&(_tg__ZTV9S19897C109S19897C179S19897C15__A2__8S19897C6[4]),  4,8},
  {&(_tg__ZTV9S19897C119S19897C109S19897C179S19897C15__A3__8S19897C6[3]),  3,4},
  {&(_tg__ZTV8S19897C59S19897C119S19897C109S19897C179S19897C15__A6__8S19897C6[3]),  3,4},
  {&(_tg__ZTV8S19897C5__9S19897C179S19897C15__8S19897C6[4]),  4,5},
  {&(_tg__ZTV9S19897C16__9S19897C15__8S19897C6[5]),  5,6},
  {&(_tg__ZTV9S19897C16__9S19897C15__8S19897C6[5]),  5,6},
  {&(_tg__ZTV8S19897C5__A1__9S19897C15__8S19897C6[4]),  4,5},
  {&(_tg__ZTV8S19897C8__9S19897C15__8S19897C6[6]),  6,9},
  {&(_tg__ZTV8S19897C9__9S19897C15__8S19897C6[12]),  12,15},
  {&(_tg__ZTV8S19897C3__9S19897C15__8S19897C6[4]),  4,5},
  {&(_tg__ZTV9S19897C10__A1__9S19897C15__8S19897C6[7]),  7,11},
  {&(_tg__ZTV9S19897C128S19897C9__9S19897C15__8S19897C6[7]),  7,11},
  {&(_tg__ZTV9S19897C14__9S19897C15__8S19897C6[6]),  6,8},
  {&(_ZTV8S19897C6[24]),  24,92},
  {&(_ZTV8S19897C6[24]),  24,92},
  {&(_ZTV8S19897C6[39]),  39,92},
  {&(_ZTV8S19897C6[57]),  57,92},
  {&(_ZTV8S19897C6[65]),  65,92},
  {&(_ZTV8S19897C6[49]),  49,92},
  {&(_ZTV8S19897C6[75]),  75,92},
  {&(_ZTV8S19897C6[83]),  83,92},
  {&(_ZTV8S19897C6[91]),  91,92},
  {&(_ZTV8S19897C6[91]),  91,92},
  {&(_tg__ZTV8S19897C5__8S19897C6[3]),  3,4},
  {&(_tg__ZTV8S19897C7__8S19897C6[5]),  5,8},
  {&(_tg__ZTV8S19897C88S19897C7__8S19897C6[5]),  5,8},
  {&(_tg__ZTV8S19897C88S19897C7__8S19897C6[5]),  5,8},
  {&(_tg__ZTV8S19897C7__8S19897C6[5]),  5,8},
  {&(_tg__ZTV8S19897C9__8S19897C6[10]),  10,13},
  {&(_tg__ZTV8S19897C88S19897C9__A1__8S19897C6[5]),  5,8},
  {&(_tg__ZTV8S19897C5__8S19897C88S19897C9__A1__8S19897C6[4]),  4,5},
  {&(_tg__ZTV9S19897C128S19897C9__8S19897C6[7]),  7,11},
  {&(_tg__ZTV9S19897C109S19897C128S19897C9__A1__8S19897C6[4]),  4,8},
  {&(_tg__ZTV9S19897C119S19897C109S19897C128S19897C9__A1__8S19897C6[3]),  3,4},
  {&(_tg__ZTV8S19897C59S19897C119S19897C109S19897C128S19897C9__A3__8S19897C6[3]),  3,4},
  {&(_tg__ZTV9S19897C14__9S19897C128S19897C9__8S19897C6[6]),  6,8},
  {&(_tg__ZTV8S19897C5__A2__9S19897C128S19897C9__8S19897C6[4]),  4,5},
  {&(_tg__ZTV8S19897C8__9S19897C128S19897C9__8S19897C6[6]),  6,9},
  {&(_tg__ZTV8S19897C3__8S19897C9__8S19897C6[4]),  4,5},
  {&(_tg__ZTV8S19897C5__A1__8S19897C9__8S19897C6[4]),  4,5},
  {&(_tg__ZTV9S19897C10__8S19897C9__8S19897C6[7]),  7,11},
  {&(_tg__ZTV9S19897C12__8S19897C9__8S19897C6[7]),  7,11},
  {&(_tg__ZTV9S19897C14__8S19897C9__8S19897C6[6]),  6,8},
  {&(_tg__ZTV8S19897C8__A1__8S19897C9__8S19897C6[6]),  6,9},
  {&(_tg__ZTV8S19897C3__8S19897C6[3]),  3,4},
  {&(_tg__ZTV8S19897C58S19897C3__A1__8S19897C6[3]),  3,4},
  {&(_tg__ZTV9S19897C10__8S19897C6[4]),  4,8},
  {&(_tg__ZTV9S19897C119S19897C10__8S19897C6[3]),  3,4},
  {&(_tg__ZTV8S19897C59S19897C119S19897C10__A2__8S19897C6[3]),  3,4},
  {&(_tg__ZTV9S19897C14__8S19897C6[4]),  4,6},
  {&(_tg__ZTV8S19897C39S19897C14__A1__8S19897C6[3]),  3,4},
  {&(_tg__ZTV8S19897C58S19897C39S19897C14__A4__8S19897C6[3]),  3,4},
  {&(_tg__ZTV8S19897C5__A1__9S19897C14__8S19897C6[4]),  4,5},
  {&(_tg__ZTV8S19897C8__A2__8S19897C6[5]),  5,8},
  {&(_tg__ZTV8S19897C5__8S19897C8__A2__8S19897C6[4]),  4,5},
  {&(_tg__ZTV9S19897C16__8S19897C6[5]),  5,6},
  {&(_tg__ZTV9S19897C16__8S19897C6[5]),  5,6},
  {&(_tg__ZTV9S19897C11__A2__8S19897C6[3]),  3,4},
  {&(_tg__ZTV8S19897C59S19897C11__A5__8S19897C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19897C6[];
extern  VTBL_ENTRY _ZTV8S19897C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C6[];
static VTBL_ENTRY alt_thunk_names51[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19897C9D0Ev,_ZThn68_N8S19897C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19897C9D0Ev,_ZThn44_N8S19897C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19897C9D1Ev,_ZThn68_N8S19897C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19897C9D1Ev,_ZThn44_N8S19897C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19897C12D0Ev,_ZTv0_n24_N9S19897C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19897C12D0Ev,_ZThn52_N9S19897C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19897C12D1Ev,_ZTv0_n24_N9S19897C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19897C12D1Ev,_ZThn52_N9S19897C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19897C15D0Ev,_ZTv0_n44_N9S19897C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19897C15D0Ev,_ZThn88_N9S19897C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19897C15D1Ev,_ZTv0_n44_N9S19897C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19897C15D1Ev,_ZThn88_N9S19897C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19897C15D0Ev,_ZTv0_n24_N9S19897C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S19897C15D0Ev,_ZThn132_N9S19897C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S19897C15D0Ev,_ZThn156_N9S19897C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19897C15D1Ev,_ZTv0_n24_N9S19897C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S19897C15D1Ev,_ZThn132_N9S19897C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S19897C15D1Ev,_ZThn156_N9S19897C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19897C6D0Ev,_ZTv0_n44_N8S19897C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19897C6D0Ev,_ZThn88_N8S19897C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19897C6D1Ev,_ZTv0_n44_N8S19897C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19897C6D1Ev,_ZThn88_N8S19897C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19897C6D0Ev,_ZTv0_n24_N8S19897C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19897C6D0Ev,_ZThn156_N8S19897C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S19897C6D0Ev,_ZThn132_N8S19897C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19897C6D0Ev,_ZThn56_N8S19897C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19897C6D1Ev,_ZTv0_n24_N8S19897C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19897C6D1Ev,_ZThn156_N8S19897C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S19897C6D1Ev,_ZThn132_N8S19897C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19897C6D1Ev,_ZThn56_N8S19897C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19897C6 = {  "S19897C6", // class name
  bases_S19897C6, 50,
  &(vtc_S19897C6[0]), // expected_vtbl_contents
  &(vtt_S19897C6[0]), // expected_vtt_contents
  ABISELECT(280,180), // object size
  NSPAIRA(_ZTI8S19897C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19897C6),92, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19897C6),62, //virtual table table var
  26, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names51,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19897C18  : virtual S19897C10 , S19897C9 , S19897C17 {
  int s19897c18f0;
  ~S19897C18(); // tgen
  S19897C18(); // tgen
};
//SIG(-1 S19897C18) C1{ VBC2{ BC3{ m FL} VBC4{ m} BC5{ BC6{ VBC3 BC4 v1}} vd v2} BC7{ VBC3 VBC8{ VBC3 BC6 BC4} BC9{ BC3 VBC6 BC4 vd} VBC2 BC10{ BC3 BC2 BC11{ m} VBC12{ VBC3 BC8 VBC6 v3} VBC9 vd}} BC13{ VBC6 BC2 vd v4} Fi}


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

static void Test_S19897C18()
{
  extern Class_Descriptor cd_S19897C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,27)];
    init_test(&cd_S19897C18, buf);
    S19897C18 *dp, &lv = *(dp=new (buf) S19897C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,104), "sizeof(S19897C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19897C18)");
    /*is_ambiguous_... S19897C18::S19897C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C10*), ABISELECT(80,56), "S19897C18");
    /*is_ambiguous_... S19897C18::S19897C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C10*), ABISELECT(88,64), "S19897C18");
    /*is_ambiguous_... S19897C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(88,64), "S19897C18");
    /*is_ambiguous_... S19897C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C10*)(S19897C17*), ABISELECT(88,64), "S19897C18");
    /*is_ambiguous_... S19897C18::S19897C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C11*)(S19897C10*), ABISELECT(88,64), "S19897C18");
    /*is_ambiguous_... S19897C9::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C9*), ABISELECT(88,64), "S19897C18");
    /*is_ambiguous_... S19897C18::S19897C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C3*), ABISELECT(88,64), "S19897C18");
    /*is_ambiguous_... S19897C18::S19897C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C3*), ABISELECT(88,64), "S19897C18");
    /*is_ambiguous_... S19897C18::S19897C5 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*), ABISELECT(88,64), "S19897C18");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C11*)(S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(88,64), "S19897C18");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C14*), ABISELECT(88,64), "S19897C18");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C3*)(S19897C14*), ABISELECT(88,64), "S19897C18");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C3*)(S19897C14*), ABISELECT(88,64), "S19897C18");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C11*)(S19897C10*)(S19897C17*), ABISELECT(88,64), "S19897C18");
    /*is_ambiguous_... S19897C18::S19897C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C11*)(S19897C10*), ABISELECT(72,52), "S19897C18");
    /*is_ambiguous_... S19897C18::S19897C10 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C11*)(S19897C10*), ABISELECT(72,52), "S19897C18");
    /*is_ambiguous_... S19897C18::S19897C10 */ AMB_check_base_class_offset(lv, (S19897C11*)(S19897C10*), ABISELECT(72,52), "S19897C18");
    /*is_ambiguous_... S19897C18::S19897C10 */ AMB_check_base_class_offset(lv, (S19897C10*), ABISELECT(72,52), "S19897C18");
    /*is_ambiguous_... S19897C9::S19897C10 */ AMB_check_base_class_offset(lv, (S19897C10*)(S19897C9*), ABISELECT(72,52), "S19897C18");
    /*is_ambiguous_... S19897C18::S19897C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C3*), ABISELECT(96,72), "S19897C18");
    /*is_ambiguous_... S19897C18::S19897C3 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C3*), ABISELECT(96,72), "S19897C18");
    /*is_ambiguous_... S19897C18::S19897C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C3*), ABISELECT(104,76), "S19897C18");
    /*is_ambiguous_... S19897C9::S19897C3 */ AMB_check_base_class_offset(lv, (S19897C3*)(S19897C9*), ABISELECT(96,72), "S19897C18");
    /*is_ambiguous_... S19897C9::S19897C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C8*)(S19897C9*), ABISELECT(8,4), "S19897C18");
    /*is_ambiguous_... S19897C18::S19897C5 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C5*), 0, "S19897C18");
    /*is_ambiguous_... S19897C9::S19897C8 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C8*)(S19897C9*), 0, "S19897C18");
    /*is_ambiguous_... S19897C14::S19897C5 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C14*), 0, "S19897C18");
    /*is_ambiguous_... S19897C18::S19897C8 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C8*), 0, "S19897C18");
    /*is_ambiguous_... S19897C17::S19897C5 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C17*), 0, "S19897C18");
    /*is_ambiguous_... S19897C9::S19897C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C8*)(S19897C9*), ABISELECT(16,12), "S19897C18");
    /*is_ambiguous_... S19897C9::S19897C8 */ AMB_check_base_class_offset(lv, (S19897C8*)(S19897C9*), 0, "S19897C18");
    /*is_ambiguous_... S19897C12::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C12*)(S19897C9*), ABISELECT(40,28), "S19897C18");
    /*is_ambiguous_... S19897C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(32,20), "S19897C18");
    check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C11*)(S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(24,16), "S19897C18");
    check_base_class_offset(lv, (S19897C5*)(S19897C11*)(S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(24,16), "S19897C18");
    check_base_class_offset(lv, (S19897C11*)(S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(24,16), "S19897C18");
    check_base_class_offset(lv, (S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(24,16), "S19897C18");
    check_base_class_offset(lv, (S28C52_nt*)(S19897C12*)(S19897C9*), ABISELECT(24,16), "S19897C18");
    check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C3*)(S19897C14*), ABISELECT(112,80), "S19897C18");
    check_base_class_offset(lv, (S19897C5*)(S19897C3*)(S19897C14*), ABISELECT(112,80), "S19897C18");
    /*is_ambiguous_... S19897C3::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C3*)(S19897C14*), ABISELECT(120,84), "S19897C18");
    check_base_class_offset(lv, (S19897C3*)(S19897C14*), ABISELECT(112,80), "S19897C18");
    check_base_class_offset(lv, (S19897C14*)(S19897C12*)(S19897C9*), ABISELECT(112,80), "S19897C18");
    /*is_ambiguous_... S19897C18::S19897C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C8*), ABISELECT(136,92), "S19897C18");
    /*is_ambiguous_... S19897C18::S19897C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C8*), ABISELECT(144,100), "S19897C18");
    check_base_class_offset(lv, (S19897C8*)(S19897C12*)(S19897C9*), ABISELECT(128,88), "S19897C18");
    check_base_class_offset(lv, (S19897C12*)(S19897C9*), ABISELECT(24,16), "S19897C18");
    check_base_class_offset(lv, (S19897C9*), 0, "S19897C18");
    /*is_ambiguous_... S19897C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C10*)(S19897C17*), ABISELECT(56,40), "S19897C18");
    check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C11*)(S19897C10*)(S19897C17*), ABISELECT(48,36), "S19897C18");
    check_base_class_offset(lv, (S19897C5*)(S19897C11*)(S19897C10*)(S19897C17*), ABISELECT(48,36), "S19897C18");
    check_base_class_offset(lv, (S19897C11*)(S19897C10*)(S19897C17*), ABISELECT(48,36), "S19897C18");
    check_base_class_offset(lv, (S19897C10*)(S19897C17*), ABISELECT(48,36), "S19897C18");
    check_base_class_offset(lv, (S19897C17*), ABISELECT(48,36), "S19897C18");
    check_field_offset(lv, s19897c18f0, ABISELECT(64,48), "S19897C18.s19897c18f0");
    test_class_info(&lv, &cd_S19897C18);
    dp->~S19897C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19897C18(Test_S19897C18, "S19897C18", ABISELECT(152,104));

#else // __cplusplus

extern void _ZN9S19897C18C1Ev();
extern void _ZN9S19897C18D1Ev();
Name_Map name_map_S19897C18[] = {
  NSPAIR(_ZN9S19897C18C1Ev),
  NSPAIR(_ZN9S19897C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S19897C11;
extern VTBL_ENTRY _ZTI9S19897C11[];
extern  VTBL_ENTRY _ZTV9S19897C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C11[];
extern Class_Descriptor cd_S19897C10;
extern VTBL_ENTRY _ZTI9S19897C10[];
extern  VTBL_ENTRY _ZTV9S19897C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C10[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C3;
extern VTBL_ENTRY _ZTI8S19897C3[];
extern  VTBL_ENTRY _ZTV8S19897C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C8;
extern VTBL_ENTRY _ZTI8S19897C8[];
extern  VTBL_ENTRY _ZTV8S19897C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C8[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S19897C11;
extern VTBL_ENTRY _ZTI9S19897C11[];
extern  VTBL_ENTRY _ZTV9S19897C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C11[];
extern Class_Descriptor cd_S19897C10;
extern VTBL_ENTRY _ZTI9S19897C10[];
extern  VTBL_ENTRY _ZTV9S19897C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C10[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C3;
extern VTBL_ENTRY _ZTI8S19897C3[];
extern  VTBL_ENTRY _ZTV8S19897C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C3[];
extern Class_Descriptor cd_S19897C14;
extern VTBL_ENTRY _ZTI9S19897C14[];
extern  VTBL_ENTRY _ZTV9S19897C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C14[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C8;
extern VTBL_ENTRY _ZTI8S19897C8[];
extern  VTBL_ENTRY _ZTV8S19897C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C8[];
extern Class_Descriptor cd_S19897C12;
extern VTBL_ENTRY _ZTI9S19897C12[];
extern  VTBL_ENTRY _ZTV9S19897C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C12[];
extern Class_Descriptor cd_S19897C9;
extern VTBL_ENTRY _ZTI8S19897C9[];
extern  VTBL_ENTRY _ZTV8S19897C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S19897C11;
extern VTBL_ENTRY _ZTI9S19897C11[];
extern  VTBL_ENTRY _ZTV9S19897C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C11[];
extern Class_Descriptor cd_S19897C10;
extern VTBL_ENTRY _ZTI9S19897C10[];
extern  VTBL_ENTRY _ZTV9S19897C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C10[];
extern Class_Descriptor cd_S19897C17;
extern VTBL_ENTRY _ZTI9S19897C17[];
extern  VTBL_ENTRY _ZTV9S19897C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C17[];
static Base_Class bases_S19897C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(88,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(88,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    4, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19897C11,    ABISELECT(72,52), //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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19897C10,    ABISELECT(72,52), //bcp->offset
    34, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(104,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19897C3,    ABISELECT(96,72), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19897C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    15, //immediately_derived
  0, 0},
  {&cd_S19897C8,    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
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    31, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19897C5,    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
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19897C11,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19897C10,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(112,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(112,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(120,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
    26, //immediately_derived
  0, 0},
  {&cd_S19897C3,    ABISELECT(112,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19897C14,    ABISELECT(112,80), //bcp->offset
    50, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(136,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(144,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19897C8,    ABISELECT(128,88), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19897C12,    ABISELECT(24,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19897C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_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
    37, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    35, //immediately_derived
  0, 0},
  {&cd_S19897C5,    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
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19897C11,    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
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19897C10,    ABISELECT(48,36), //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
    19, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19897C17,    ABISELECT(48,36), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19897C18[];
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C18D1Ev();
extern void _ZN9S19897C18D0Ev();
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZThn24_N9S19897C18D1Ev,_ZThn16_N9S19897C18D1Ev)();
extern void ABISELECT(_ZThn24_N9S19897C18D0Ev,_ZThn16_N9S19897C18D0Ev)();
extern void _ZN9S19897C102v2Ev();
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZThn48_N9S19897C18D1Ev,_ZThn36_N9S19897C18D1Ev)();
extern void ABISELECT(_ZThn48_N9S19897C18D0Ev,_ZThn36_N9S19897C18D0Ev)();
extern void _ZN9S19897C102v2Ev();
extern void _ZN9S19897C172v3Ev();
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19897C18D1Ev,_ZTv0_n24_N9S19897C18D1Ev)();
extern void ABISELECT(_ZThn72_N9S19897C18D1Ev,_ZThn52_N9S19897C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19897C18D0Ev,_ZTv0_n24_N9S19897C18D0Ev)();
extern void ABISELECT(_ZThn72_N9S19897C18D0Ev,_ZThn52_N9S19897C18D0Ev)() __attribute__((weak));
extern void _ZN9S19897C102v2Ev();
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19897C18D1Ev,_ZTv0_n24_N9S19897C18D1Ev)();
extern void ABISELECT(_ZThn128_N9S19897C18D1Ev,_ZThn88_N9S19897C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19897C18D0Ev,_ZTv0_n24_N9S19897C18D0Ev)();
extern void ABISELECT(_ZThn128_N9S19897C18D0Ev,_ZThn88_N9S19897C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19897C18[] = {
  ABISELECT(128,88),
  ABISELECT(112,80),
  ABISELECT(88,64),
  ABISELECT(72,52),
  ABISELECT(96,72),
  0,
  0,
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C18[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C18D0Ev,
  ABISELECT(104,72),
  ABISELECT(-24,-16),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(64,48),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S19897C18[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S19897C18D1Ev,_ZThn16_N9S19897C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S19897C18D0Ev,_ZThn16_N9S19897C18D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  ABISELECT(-48,-36),
  ABISELECT(40,28),
  ABISELECT(40,28),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S19897C18[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19897C18D1Ev,_ZThn36_N9S19897C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19897C18D0Ev,_ZThn36_N9S19897C18D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  (VTBL_ENTRY)&_ZN9S19897C172v3Ev,
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI9S19897C18[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C18D1Ev,_ZTv0_n24_N9S19897C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C18D0Ev,_ZTv0_n24_N9S19897C18D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  0,
  -8,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI9S19897C18[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  0,
  0,
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI9S19897C18[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI9S19897C18[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C18D1Ev,_ZTv0_n24_N9S19897C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C18D0Ev,_ZTv0_n24_N9S19897C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S19897C18[];
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C9D1Ev();
extern void _ZN8S19897C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C9__9S19897C18[] = {
  ABISELECT(128,88),
  ABISELECT(112,80),
  ABISELECT(88,64),
  ABISELECT(72,52),
  ABISELECT(96,72),
  0,
  0,
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C9D0Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C8D1Ev();
extern void _ZN8S19897C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C88S19897C9__9S19897C18[] = {
  0,
  0,
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C8[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D0Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C12D1Ev();
extern void _ZN9S19897C12D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C128S19897C9__9S19897C18[] = {
  ABISELECT(104,72),
  ABISELECT(-24,-16),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C12D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C10D1Ev();
extern void _ZN9S19897C10D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C109S19897C128S19897C9__A1__9S19897C18[] = {
  ABISELECT(64,48),
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C10[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C119S19897C109S19897C128S19897C9__A1__9S19897C18[] = {
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C11[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C59S19897C119S19897C109S19897C128S19897C9__A3__9S19897C18[] = {
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C14__9S19897C128S19897C9__9S19897C18[] = {
  0,
  0,
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__A2__9S19897C128S19897C9__9S19897C18[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19897C12D1Ev,_ZTv0_n24_N9S19897C12D1Ev)();
extern void ABISELECT(_ZThn104_N9S19897C12D1Ev,_ZThn72_N9S19897C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19897C12D0Ev,_ZTv0_n24_N9S19897C12D0Ev)();
extern void ABISELECT(_ZThn104_N9S19897C12D0Ev,_ZThn72_N9S19897C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19897C8__9S19897C128S19897C9__9S19897C18[] = {
  ABISELECT(-104,-72),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C12D1Ev,_ZTv0_n24_N9S19897C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C12D0Ev,_ZTv0_n24_N9S19897C12D0Ev),
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C3__8S19897C9__9S19897C18[] = {
  0,
  -8,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev)();
extern void ABISELECT(_ZThn72_N8S19897C9D1Ev,_ZThn52_N8S19897C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev)();
extern void ABISELECT(_ZThn72_N8S19897C9D0Ev,_ZThn52_N8S19897C9D0Ev)() __attribute__((weak));
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C10__8S19897C9__9S19897C18[] = {
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZThn24_N8S19897C9D1Ev,_ZThn16_N8S19897C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S19897C9D0Ev,_ZThn16_N8S19897C9D0Ev)();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C12__8S19897C9__9S19897C18[] = {
  ABISELECT(104,72),
  ABISELECT(-24,-16),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(64,48),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19897C9D1Ev,_ZThn16_N8S19897C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19897C9D0Ev,_ZThn16_N8S19897C9D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C14__8S19897C9__9S19897C18[] = {
  0,
  0,
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S19897C9D1Ev,_ZThn88_N8S19897C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S19897C9D0Ev,_ZThn88_N8S19897C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19897C8__A1__8S19897C9__9S19897C18[] = {
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev),
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C17D1Ev();
extern void _ZN9S19897C17D0Ev();
extern void _ZN9S19897C102v2Ev();
extern void _ZN9S19897C172v3Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C17__9S19897C18[] = {
  ABISELECT(-48,-36),
  ABISELECT(40,28),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C17[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  (VTBL_ENTRY)&_ZN9S19897C172v3Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C10D1Ev();
extern void _ZN9S19897C10D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C109S19897C17__A2__9S19897C18[] = {
  ABISELECT(40,28),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C10[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C119S19897C109S19897C17__A2__9S19897C18[] = {
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C11[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C59S19897C119S19897C109S19897C17__A5__9S19897C18[] = {
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__9S19897C17__9S19897C18[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI9S19897C17[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C10D1Ev();
extern void _ZN9S19897C10D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C10__9S19897C18[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C10[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C119S19897C10__9S19897C18[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C11[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C59S19897C119S19897C10__9S19897C18[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C3__9S19897C18[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C3[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C58S19897C3__A1__9S19897C18[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__A2__9S19897C18[] = {
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C14__9S19897C18[] = {
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C14[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C39S19897C14__A1__9S19897C18[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C3[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C58S19897C39S19897C14__A4__9S19897C18[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__A1__9S19897C14__9S19897C18[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(112,80),
  (VTBL_ENTRY)&(_ZTI9S19897C14[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C8D1Ev();
extern void _ZN8S19897C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C8__A1__9S19897C18[] = {
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C8[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D0Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__8S19897C8__A1__9S19897C18[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI8S19897C8[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
static  VTT_ENTRY vtt_S19897C18[] = {
  {&(_ZTV9S19897C18[10]),  10,67},
  {&(_tg__ZTV8S19897C9__9S19897C18[10]),  10,13},
  {&(_tg__ZTV8S19897C88S19897C9__9S19897C18[5]),  5,8},
  {&(_tg__ZTV8S19897C88S19897C9__9S19897C18[5]),  5,8},
  {&(_tg__ZTV9S19897C128S19897C9__9S19897C18[7]),  7,11},
  {&(_tg__ZTV9S19897C109S19897C128S19897C9__A1__9S19897C18[4]),  4,8},
  {&(_tg__ZTV9S19897C119S19897C109S19897C128S19897C9__A1__9S19897C18[3]),  3,4},
  {&(_tg__ZTV8S19897C59S19897C119S19897C109S19897C128S19897C9__A3__9S19897C18[3]),  3,4},
  {&(_tg__ZTV9S19897C14__9S19897C128S19897C9__9S19897C18[6]),  6,8},
  {&(_tg__ZTV8S19897C5__A2__9S19897C128S19897C9__9S19897C18[4]),  4,5},
  {&(_tg__ZTV8S19897C8__9S19897C128S19897C9__9S19897C18[6]),  6,9},
  {&(_tg__ZTV8S19897C3__8S19897C9__9S19897C18[4]),  4,5},
  {&(_tg__ZTV8S19897C9__9S19897C18[10]),  10,13},
  {&(_tg__ZTV9S19897C10__8S19897C9__9S19897C18[7]),  7,11},
  {&(_tg__ZTV9S19897C12__8S19897C9__9S19897C18[7]),  7,11},
  {&(_tg__ZTV9S19897C14__8S19897C9__9S19897C18[6]),  6,8},
  {&(_tg__ZTV8S19897C8__A1__8S19897C9__9S19897C18[6]),  6,9},
  {&(_tg__ZTV9S19897C17__9S19897C18[5]),  5,10},
  {&(_tg__ZTV9S19897C109S19897C17__A2__9S19897C18[4]),  4,8},
  {&(_tg__ZTV9S19897C119S19897C109S19897C17__A2__9S19897C18[3]),  3,4},
  {&(_tg__ZTV8S19897C59S19897C119S19897C109S19897C17__A5__9S19897C18[3]),  3,4},
  {&(_tg__ZTV8S19897C5__9S19897C17__9S19897C18[4]),  4,5},
  {&(_ZTV9S19897C18[41]),  41,67},
  {&(_ZTV9S19897C18[49]),  49,67},
  {&(_ZTV9S19897C18[10]),  10,67},
  {&(_ZTV9S19897C18[20]),  20,67},
  {&(_ZTV9S19897C18[56]),  56,67},
  {&(_ZTV9S19897C18[64]),  64,67},
  {&(_ZTV9S19897C18[29]),  29,67},
  {&(_tg__ZTV9S19897C10__9S19897C18[4]),  4,8},
  {&(_tg__ZTV9S19897C119S19897C10__9S19897C18[3]),  3,4},
  {&(_tg__ZTV8S19897C59S19897C119S19897C10__9S19897C18[3]),  3,4},
  {&(_tg__ZTV8S19897C3__9S19897C18[3]),  3,4},
  {&(_tg__ZTV8S19897C58S19897C3__A1__9S19897C18[3]),  3,4},
  {&(_tg__ZTV8S19897C5__A2__9S19897C18[3]),  3,4},
  {&(_tg__ZTV9S19897C14__9S19897C18[4]),  4,6},
  {&(_tg__ZTV8S19897C39S19897C14__A1__9S19897C18[3]),  3,4},
  {&(_tg__ZTV8S19897C58S19897C39S19897C14__A4__9S19897C18[3]),  3,4},
  {&(_tg__ZTV8S19897C5__A1__9S19897C14__9S19897C18[4]),  4,5},
  {&(_tg__ZTV8S19897C8__A1__9S19897C18[5]),  5,8},
  {&(_tg__ZTV8S19897C5__8S19897C8__A1__9S19897C18[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S19897C18[];
extern  VTBL_ENTRY _ZTV9S19897C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C18[];
static VTBL_ENTRY alt_thunk_names52[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19897C9D0Ev,_ZThn88_N8S19897C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19897C9D0Ev,_ZThn52_N8S19897C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19897C9D1Ev,_ZThn88_N8S19897C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19897C9D1Ev,_ZThn52_N8S19897C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19897C12D0Ev,_ZTv0_n24_N9S19897C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19897C12D0Ev,_ZThn72_N9S19897C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19897C12D1Ev,_ZTv0_n24_N9S19897C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19897C12D1Ev,_ZThn72_N9S19897C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19897C18D0Ev,_ZTv0_n24_N9S19897C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19897C18D0Ev,_ZThn88_N9S19897C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19897C18D0Ev,_ZThn52_N9S19897C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19897C18D1Ev,_ZTv0_n24_N9S19897C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19897C18D1Ev,_ZThn88_N9S19897C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19897C18D1Ev,_ZThn52_N9S19897C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19897C18 = {  "S19897C18", // class name
  bases_S19897C18, 39,
  &(vtc_S19897C18[0]), // expected_vtbl_contents
  &(vtt_S19897C18[0]), // expected_vtt_contents
  ABISELECT(152,104), // object size
  NSPAIRA(_ZTI9S19897C18),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19897C18),67, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19897C18),41, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names52,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19897C1  : virtual S731C17_nt , virtual S19897C3 , virtual S19897C6 , S19897C14 , virtual S19897C18 {
  ~S19897C1(); // tgen
  S19897C1(); // tgen
};
//SIG(1 S19897C1) C1{ VBC2{ m} VBC3{ VBC4{ m FL} BC5{ VBC4 BC2 v1} BC2} VBC6{ VBC5 VBC7{ BC2 VBC5 BC8{ BC4 VBC5 BC2 vd} BC4 vd FL} VBC9{ VBC4 VBC3 BC8 VBC10{ BC4 VBC2 BC11{ BC5} vd v2} BC12{ BC4 BC10 BC13{ m} VBC14{ VBC4 BC3 VBC5 v3} VBC8 vd}} BC15{ VBC16{ VBC11 Fi} BC17{ VBC5 BC10 vd v4} VBC8 VBC9 vd Fp[9]} vd} BC14 VBC18{ VBC10 BC9 BC17 Fi}}


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

static void Test_S19897C1()
{
  extern Class_Descriptor cd_S19897C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(46,60)];
    init_test(&cd_S19897C1, buf);
    S19897C1 *dp, &lv = *(dp=new (buf) S19897C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(360,236), "sizeof(S19897C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19897C1)");
    /*is_ambiguous_... S19897C1::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(9,5), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C10*), ABISELECT(9,5), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(9,5), "S19897C1");
    /*is_ambiguous_... S19897C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C10*)(S19897C17*)(S19897C15*)(S19897C6*), ABISELECT(9,5), "S19897C1");
    /*is_ambiguous_... S19897C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C10*)(S19897C12*)(S19897C9*)(S19897C18*), ABISELECT(9,5), "S19897C1");
    /*is_ambiguous_... S19897C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C10*)(S19897C17*)(S19897C18*), ABISELECT(9,5), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C3*), ABISELECT(32,16), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C3*), ABISELECT(32,16), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C5 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*), ABISELECT(32,16), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C9*), ABISELECT(32,16), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C11*)(S19897C10*), ABISELECT(32,16), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C11*)(S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(32,16), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C14 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C14*), ABISELECT(32,16), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C14 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C3*)(S19897C14*), ABISELECT(32,16), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C14 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C3*)(S19897C14*), ABISELECT(32,16), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C11*), ABISELECT(32,16), "S19897C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C11*)(S19897C10*)(S19897C17*)(S19897C15*)(S19897C6*), ABISELECT(32,16), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C14 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C14*), ABISELECT(32,16), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C14 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C3*)(S19897C14*), ABISELECT(32,16), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C14 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C3*)(S19897C14*), ABISELECT(32,16), "S19897C1");
    /*is_ambiguous_... S19897C9::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C9*)(S19897C18*), ABISELECT(32,16), "S19897C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C11*)(S19897C10*)(S19897C12*)(S19897C9*)(S19897C18*), ABISELECT(32,16), "S19897C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S19897C5*)(S19897C11*)(S19897C10*)(S19897C17*)(S19897C18*), ABISELECT(32,16), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C3*), ABISELECT(16,8), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C3 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C3*), ABISELECT(16,8), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C3*), ABISELECT(24,12), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C3 */ AMB_check_base_class_offset(lv, (S19897C3*), ABISELECT(16,8), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C9 */ AMB_check_base_class_offset(lv, (S19897C3*)(S19897C9*), ABISELECT(16,8), "S19897C1");
    /*is_ambiguous_... S19897C9::S19897C3 */ AMB_check_base_class_offset(lv, (S19897C3*)(S19897C9*)(S19897C18*), ABISELECT(16,8), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C5 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C5*), ABISELECT(128,72), "S19897C1");
    /*is_ambiguous_... S19897C6::S19897C5 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C6*), ABISELECT(128,72), "S19897C1");
    check_base_class_offset(lv, (S19897C5*)(S19897C7*), ABISELECT(128,72), "S19897C1");
    check_base_class_offset(lv, (S19897C5*)(S19897C8*)(S19897C7*), ABISELECT(128,72), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C9 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C8*)(S19897C9*), ABISELECT(128,72), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C14 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C14*), ABISELECT(128,72), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C8 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C8*), ABISELECT(128,72), "S19897C1");
    /*is_ambiguous_... S19897C17::S19897C5 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C17*)(S19897C15*)(S19897C6*), ABISELECT(128,72), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C14 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C14*), ABISELECT(128,72), "S19897C1");
    /*is_ambiguous_... S19897C9::S19897C8 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C8*)(S19897C9*)(S19897C18*), ABISELECT(128,72), "S19897C1");
    /*is_ambiguous_... S19897C17::S19897C5 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C17*)(S19897C18*), ABISELECT(128,72), "S19897C1");
    /*is_ambiguous_... S19897C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C7*), ABISELECT(145,85), "S19897C1");
    /*is_ambiguous_... S19897C8::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C8*)(S19897C7*), ABISELECT(136,76), "S19897C1");
    /*is_ambiguous_... S19897C8::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C8*)(S19897C7*), ABISELECT(144,84), "S19897C1");
    check_base_class_offset(lv, (S19897C8*)(S19897C7*), ABISELECT(128,72), "S19897C1");
    /*is_ambiguous_... S19897C7::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C7*), ABISELECT(152,88), "S19897C1");
    check_base_class_offset(lv, (S19897C7*)(S19897C6*), ABISELECT(128,72), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C8*)(S19897C9*), ABISELECT(176,108), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C8*)(S19897C9*), ABISELECT(184,116), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C9 */ AMB_check_base_class_offset(lv, (S19897C8*)(S19897C9*), ABISELECT(168,104), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C10*), ABISELECT(224,144), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C11*)(S19897C10*), ABISELECT(216,140), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C10 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C11*)(S19897C10*), ABISELECT(216,140), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C10 */ AMB_check_base_class_offset(lv, (S19897C11*)(S19897C10*), ABISELECT(216,140), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C9 */ AMB_check_base_class_offset(lv, (S19897C10*)(S19897C9*), ABISELECT(216,140), "S19897C1");
    /*is_ambiguous_... S19897C18::S19897C10 */ AMB_check_base_class_offset(lv, (S19897C10*)(S19897C18*), ABISELECT(216,140), "S19897C1");
    /*is_ambiguous_... S19897C9::S19897C10 */ AMB_check_base_class_offset(lv, (S19897C10*)(S19897C9*)(S19897C18*), ABISELECT(216,140), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C12*)(S19897C9*), ABISELECT(208,132), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(200,124), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C11*)(S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(192,120), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C9 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C11*)(S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(192,120), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C9 */ AMB_check_base_class_offset(lv, (S19897C11*)(S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(192,120), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C9 */ AMB_check_base_class_offset(lv, (S19897C10*)(S19897C12*)(S19897C9*), ABISELECT(192,120), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C9 */ AMB_check_base_class_offset(lv, (S28C52_nt*)(S19897C12*)(S19897C9*), ABISELECT(192,120), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C14 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C3*)(S19897C14*), ABISELECT(232,152), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C14 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C3*)(S19897C14*), ABISELECT(232,152), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C14 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C3*)(S19897C14*), ABISELECT(240,156), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C14 */ AMB_check_base_class_offset(lv, (S19897C3*)(S19897C14*), ABISELECT(232,152), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C9 */ AMB_check_base_class_offset(lv, (S19897C14*)(S19897C12*)(S19897C9*), ABISELECT(232,152), "S19897C1");
    check_base_class_offset(lv, (S19897C14*)(S19897C12*)(S19897C9*)(S19897C18*), ABISELECT(232,152), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C8*), ABISELECT(256,164), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C8*), ABISELECT(264,172), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C9 */ AMB_check_base_class_offset(lv, (S19897C8*)(S19897C12*)(S19897C9*), ABISELECT(248,160), "S19897C1");
    /*is_ambiguous_... S19897C15::S19897C8 */ AMB_check_base_class_offset(lv, (S19897C8*)(S19897C15*)(S19897C6*), ABISELECT(248,160), "S19897C1");
    check_base_class_offset(lv, (S19897C8*)(S19897C12*)(S19897C9*)(S19897C18*), ABISELECT(248,160), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C9 */ AMB_check_base_class_offset(lv, (S19897C12*)(S19897C9*), ABISELECT(192,120), "S19897C1");
    check_base_class_offset(lv, (S19897C9*)(S19897C6*), ABISELECT(168,104), "S19897C1");
    check_base_class_offset(lv, (S19897C9*)(S19897C15*)(S19897C6*), ABISELECT(168,104), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C11*), ABISELECT(272,176), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C11 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C11*), ABISELECT(272,176), "S19897C1");
    check_base_class_offset(lv, (S19897C11*)(S19897C16*), ABISELECT(272,176), "S19897C1");
    check_base_class_offset(lv, (S19897C16*)(S19897C15*)(S19897C6*), ABISELECT(272,176), "S19897C1");
    /*is_ambiguous_... S19897C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C10*)(S19897C17*)(S19897C15*)(S19897C6*), ABISELECT(48,28), "S19897C1");
    check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C11*)(S19897C10*)(S19897C17*)(S19897C15*)(S19897C6*), ABISELECT(40,24), "S19897C1");
    check_base_class_offset(lv, (S19897C5*)(S19897C11*)(S19897C10*)(S19897C17*)(S19897C15*)(S19897C6*), ABISELECT(40,24), "S19897C1");
    check_base_class_offset(lv, (S19897C11*)(S19897C10*)(S19897C17*)(S19897C15*)(S19897C6*), ABISELECT(40,24), "S19897C1");
    check_base_class_offset(lv, (S19897C10*)(S19897C17*)(S19897C15*)(S19897C6*), ABISELECT(40,24), "S19897C1");
    check_base_class_offset(lv, (S19897C17*)(S19897C15*)(S19897C6*), ABISELECT(40,24), "S19897C1");
    check_base_class_offset(lv, (S19897C15*)(S19897C6*), ABISELECT(40,24), "S19897C1");
    check_base_class_offset(lv, (S19897C6*), ABISELECT(40,24), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C14 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C3*)(S19897C14*), 0, "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C14 */ AMB_check_base_class_offset(lv, (S19897C5*)(S19897C3*)(S19897C14*), 0, "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C14 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C3*)(S19897C14*), ABISELECT(8,4), "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C14 */ AMB_check_base_class_offset(lv, (S19897C3*)(S19897C14*), 0, "S19897C1");
    /*is_ambiguous_... S19897C1::S19897C14 */ AMB_check_base_class_offset(lv, (S19897C14*), 0, "S19897C1");
    /*is_ambiguous_... S19897C9::S19897C8 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C8*)(S19897C9*)(S19897C18*), ABISELECT(296,188), "S19897C1");
    /*is_ambiguous_... S19897C9::S19897C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19897C8*)(S19897C9*)(S19897C18*), ABISELECT(304,196), "S19897C1");
    /*is_ambiguous_... S19897C9::S19897C8 */ AMB_check_base_class_offset(lv, (S19897C8*)(S19897C9*)(S19897C18*), ABISELECT(288,184), "S19897C1");
    /*is_ambiguous_... S19897C12::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C12*)(S19897C9*)(S19897C18*), ABISELECT(328,212), "S19897C1");
    /*is_ambiguous_... S19897C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C10*)(S19897C12*)(S19897C9*)(S19897C18*), ABISELECT(320,204), "S19897C1");
    check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C11*)(S19897C10*)(S19897C12*)(S19897C9*)(S19897C18*), ABISELECT(312,200), "S19897C1");
    check_base_class_offset(lv, (S19897C5*)(S19897C11*)(S19897C10*)(S19897C12*)(S19897C9*)(S19897C18*), ABISELECT(312,200), "S19897C1");
    check_base_class_offset(lv, (S19897C11*)(S19897C10*)(S19897C12*)(S19897C9*)(S19897C18*), ABISELECT(312,200), "S19897C1");
    check_base_class_offset(lv, (S19897C10*)(S19897C12*)(S19897C9*)(S19897C18*), ABISELECT(312,200), "S19897C1");
    check_base_class_offset(lv, (S28C52_nt*)(S19897C12*)(S19897C9*)(S19897C18*), ABISELECT(312,200), "S19897C1");
    check_base_class_offset(lv, (S19897C12*)(S19897C9*)(S19897C18*), ABISELECT(312,200), "S19897C1");
    check_base_class_offset(lv, (S19897C9*)(S19897C18*), ABISELECT(288,184), "S19897C1");
    /*is_ambiguous_... S19897C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S19897C10*)(S19897C17*)(S19897C18*), ABISELECT(344,224), "S19897C1");
    check_base_class_offset(lv, (S731C17_nt*)(S19897C5*)(S19897C11*)(S19897C10*)(S19897C17*)(S19897C18*), ABISELECT(336,220), "S19897C1");
    check_base_class_offset(lv, (S19897C5*)(S19897C11*)(S19897C10*)(S19897C17*)(S19897C18*), ABISELECT(336,220), "S19897C1");
    check_base_class_offset(lv, (S19897C11*)(S19897C10*)(S19897C17*)(S19897C18*), ABISELECT(336,220), "S19897C1");
    check_base_class_offset(lv, (S19897C10*)(S19897C17*)(S19897C18*), ABISELECT(336,220), "S19897C1");
    check_base_class_offset(lv, (S19897C17*)(S19897C18*), ABISELECT(336,220), "S19897C1");
    check_base_class_offset(lv, (S19897C18*), ABISELECT(288,184), "S19897C1");
    test_class_info(&lv, &cd_S19897C1);
    dp->~S19897C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19897C1(Test_S19897C1, "S19897C1", ABISELECT(360,236));

#else // __cplusplus

extern void _ZN8S19897C1C1Ev();
extern void _ZN8S19897C1D1Ev();
Name_Map name_map_S19897C1[] = {
  NSPAIR(_ZN8S19897C1C1Ev),
  NSPAIR(_ZN8S19897C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C3;
extern VTBL_ENTRY _ZTI8S19897C3[];
extern  VTBL_ENTRY _ZTV8S19897C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C8;
extern VTBL_ENTRY _ZTI8S19897C8[];
extern  VTBL_ENTRY _ZTV8S19897C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C8[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S19897C7;
extern VTBL_ENTRY _ZTI8S19897C7[];
extern  VTBL_ENTRY _ZTV8S19897C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C7[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C8;
extern VTBL_ENTRY _ZTI8S19897C8[];
extern  VTBL_ENTRY _ZTV8S19897C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C8[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S19897C11;
extern VTBL_ENTRY _ZTI9S19897C11[];
extern  VTBL_ENTRY _ZTV9S19897C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C11[];
extern Class_Descriptor cd_S19897C10;
extern VTBL_ENTRY _ZTI9S19897C10[];
extern  VTBL_ENTRY _ZTV9S19897C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C10[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S19897C11;
extern VTBL_ENTRY _ZTI9S19897C11[];
extern  VTBL_ENTRY _ZTV9S19897C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C11[];
extern Class_Descriptor cd_S19897C10;
extern VTBL_ENTRY _ZTI9S19897C10[];
extern  VTBL_ENTRY _ZTV9S19897C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C10[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C3;
extern VTBL_ENTRY _ZTI8S19897C3[];
extern  VTBL_ENTRY _ZTV8S19897C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C3[];
extern Class_Descriptor cd_S19897C14;
extern VTBL_ENTRY _ZTI9S19897C14[];
extern  VTBL_ENTRY _ZTV9S19897C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C14[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C8;
extern VTBL_ENTRY _ZTI8S19897C8[];
extern  VTBL_ENTRY _ZTV8S19897C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C8[];
extern Class_Descriptor cd_S19897C12;
extern VTBL_ENTRY _ZTI9S19897C12[];
extern  VTBL_ENTRY _ZTV9S19897C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C12[];
extern Class_Descriptor cd_S19897C9;
extern VTBL_ENTRY _ZTI8S19897C9[];
extern  VTBL_ENTRY _ZTV8S19897C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S19897C11;
extern VTBL_ENTRY _ZTI9S19897C11[];
extern  VTBL_ENTRY _ZTV9S19897C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C11[];
extern Class_Descriptor cd_S19897C16;
extern VTBL_ENTRY _ZTI9S19897C16[];
extern  VTBL_ENTRY _ZTV9S19897C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C16[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S19897C11;
extern VTBL_ENTRY _ZTI9S19897C11[];
extern  VTBL_ENTRY _ZTV9S19897C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C11[];
extern Class_Descriptor cd_S19897C10;
extern VTBL_ENTRY _ZTI9S19897C10[];
extern  VTBL_ENTRY _ZTV9S19897C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C10[];
extern Class_Descriptor cd_S19897C17;
extern VTBL_ENTRY _ZTI9S19897C17[];
extern  VTBL_ENTRY _ZTV9S19897C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C17[];
extern Class_Descriptor cd_S19897C15;
extern VTBL_ENTRY _ZTI9S19897C15[];
extern  VTBL_ENTRY _ZTV9S19897C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C15[];
extern Class_Descriptor cd_S19897C6;
extern VTBL_ENTRY _ZTI8S19897C6[];
extern  VTBL_ENTRY _ZTV8S19897C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C6[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C3;
extern VTBL_ENTRY _ZTI8S19897C3[];
extern  VTBL_ENTRY _ZTV8S19897C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C3[];
extern Class_Descriptor cd_S19897C14;
extern VTBL_ENTRY _ZTI9S19897C14[];
extern  VTBL_ENTRY _ZTV9S19897C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C14[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C8;
extern VTBL_ENTRY _ZTI8S19897C8[];
extern  VTBL_ENTRY _ZTV8S19897C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C8[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S19897C11;
extern VTBL_ENTRY _ZTI9S19897C11[];
extern  VTBL_ENTRY _ZTV9S19897C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C11[];
extern Class_Descriptor cd_S19897C10;
extern VTBL_ENTRY _ZTI9S19897C10[];
extern  VTBL_ENTRY _ZTV9S19897C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C10[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S19897C12;
extern VTBL_ENTRY _ZTI9S19897C12[];
extern  VTBL_ENTRY _ZTV9S19897C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C12[];
extern Class_Descriptor cd_S19897C9;
extern VTBL_ENTRY _ZTI8S19897C9[];
extern  VTBL_ENTRY _ZTV8S19897C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19897C5;
extern VTBL_ENTRY _ZTI8S19897C5[];
extern  VTBL_ENTRY _ZTV8S19897C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C5[];
extern Class_Descriptor cd_S19897C11;
extern VTBL_ENTRY _ZTI9S19897C11[];
extern  VTBL_ENTRY _ZTV9S19897C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C11[];
extern Class_Descriptor cd_S19897C10;
extern VTBL_ENTRY _ZTI9S19897C10[];
extern  VTBL_ENTRY _ZTV9S19897C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C10[];
extern Class_Descriptor cd_S19897C17;
extern VTBL_ENTRY _ZTI9S19897C17[];
extern  VTBL_ENTRY _ZTV9S19897C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C17[];
extern Class_Descriptor cd_S19897C18;
extern VTBL_ENTRY _ZTI9S19897C18[];
extern  VTBL_ENTRY _ZTV9S19897C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19897C18[];
static Base_Class bases_S19897C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    3, //immediately_derived
  0, 0},
  {&cd_S19897C5,    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
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19897C3,    ABISELECT(16,8), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(145,85), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(136,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19897C8,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(152,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19897C7,    ABISELECT(128,72), //bcp->offset
    46, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(176,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
    16, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(184,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
    16, //immediately_derived
  0, 0},
  {&cd_S19897C8,    ABISELECT(168,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(224,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(216,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_S19897C5,    ABISELECT(216,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19897C11,    ABISELECT(216,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19897C10,    ABISELECT(216,140), //bcp->offset
    81, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(208,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    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
    27, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19897C11,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19897C10,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(232,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
    30, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(232,152), //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
    9, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(240,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19897C3,    ABISELECT(232,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19897C14,    ABISELECT(232,152), //bcp->offset
    92, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(256,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
    36, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(264,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19897C8,    ABISELECT(248,160), //bcp->offset
    100, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S19897C12,    ABISELECT(192,120), //bcp->offset
    70, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19897C9,    ABISELECT(168,104), //bcp->offset
    55, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(272,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(272,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19897C11,    ABISELECT(272,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S19897C16,    ABISELECT(272,176), //bcp->offset
    109, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S3461C5_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
    47, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    45, //immediately_derived
  0, 0},
  {&cd_S19897C5,    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
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19897C11,    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
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19897C10,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19897C17,    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
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S19897C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S19897C6,    ABISELECT(40,24), //bcp->offset
    24, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S19897C5,    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
    39, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19897C3,    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
    40, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S19897C14,    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
    41, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(296,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
    58, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S19897C8,    ABISELECT(288,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(328,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
    66, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(320,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(312,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
    62, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(312,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S19897C11,    ABISELECT(312,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S19897C10,    ABISELECT(312,200), //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
    31, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(312,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
    66, //immediately_derived
  0, 0},
  {&cd_S19897C12,    ABISELECT(312,200), //bcp->offset
    131, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S19897C9,    ABISELECT(288,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    74, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(344,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
    72, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(336,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
    70, //immediately_derived
  0, 0},
  {&cd_S19897C5,    ABISELECT(336,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S19897C11,    ABISELECT(336,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    72, //immediately_derived
  0, 0},
  {&cd_S19897C10,    ABISELECT(336,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S19897C17,    ABISELECT(336,220), //bcp->offset
    142, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    74, //immediately_derived
  0, 0},
  {&cd_S19897C18,    ABISELECT(288,184), //bcp->offset
    115, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19897C1[];
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
extern void _ZN8S19897C1D1Ev();
extern void _ZN8S19897C1D0Ev();
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S19897C1D1Ev,_ZTv0_n60_N8S19897C1D1Ev)();
extern void ABISELECT(_ZThn40_N8S19897C1D1Ev,_ZThn24_N8S19897C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19897C1D0Ev,_ZTv0_n60_N8S19897C1D0Ev)();
extern void ABISELECT(_ZThn40_N8S19897C1D0Ev,_ZThn24_N8S19897C1D0Ev)() __attribute__((weak));
extern void _ZN9S19897C102v2Ev();
extern void _ZN9S19897C172v3Ev();
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19897C1D1Ev,_ZTv0_n24_N8S19897C1D1Ev)();
extern void ABISELECT(_ZThn128_N8S19897C1D1Ev,_ZThn72_N8S19897C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19897C1D0Ev,_ZTv0_n24_N8S19897C1D0Ev)();
extern void ABISELECT(_ZThn128_N8S19897C1D0Ev,_ZThn72_N8S19897C1D0Ev)() __attribute__((weak));
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S19897C1D1Ev,_ZTv0_n44_N8S19897C1D1Ev)();
extern void ABISELECT(_ZThn168_N8S19897C1D1Ev,_ZThn104_N8S19897C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19897C1D0Ev,_ZTv0_n44_N8S19897C1D0Ev)();
extern void ABISELECT(_ZThn168_N8S19897C1D0Ev,_ZThn104_N8S19897C1D0Ev)() __attribute__((weak));
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S19897C1D1Ev,_ZTvn16_n44_N8S19897C1D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S19897C1D0Ev,_ZTvn16_n44_N8S19897C1D0Ev)();
extern void _ZN9S19897C102v2Ev();
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19897C1D1Ev,_ZTv0_n24_N8S19897C1D1Ev)();
extern void ABISELECT(_ZThn216_N8S19897C1D1Ev,_ZThn140_N8S19897C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19897C1D0Ev,_ZTv0_n24_N8S19897C1D0Ev)();
extern void ABISELECT(_ZThn216_N8S19897C1D0Ev,_ZThn140_N8S19897C1D0Ev)() __attribute__((weak));
extern void _ZN9S19897C102v2Ev();
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19897C1D1Ev,_ZTv0_n24_N8S19897C1D1Ev)();
extern void ABISELECT(_ZThn248_N8S19897C1D1Ev,_ZThn160_N8S19897C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19897C1D0Ev,_ZTv0_n24_N8S19897C1D0Ev)();
extern void ABISELECT(_ZThn248_N8S19897C1D0Ev,_ZThn160_N8S19897C1D0Ev)() __attribute__((weak));
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S19897C1D1Ev,_ZTv0_n44_N8S19897C1D1Ev)();
extern void ABISELECT(_ZThn288_N8S19897C1D1Ev,_ZThn184_N8S19897C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19897C1D0Ev,_ZTv0_n44_N8S19897C1D0Ev)();
extern void ABISELECT(_ZThn288_N8S19897C1D0Ev,_ZThn184_N8S19897C1D0Ev)() __attribute__((weak));
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S19897C1D1Ev,_ZTvn16_n44_N8S19897C1D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S19897C1D0Ev,_ZTvn16_n44_N8S19897C1D0Ev)();
extern void _ZN9S19897C102v2Ev();
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTvn48_n88_N8S19897C1D1Ev,_ZTvn36_n44_N8S19897C1D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N8S19897C1D0Ev,_ZTvn36_n44_N8S19897C1D0Ev)();
extern void _ZN9S19897C102v2Ev();
extern void _ZN9S19897C172v3Ev();
static  VTBL_ENTRY vtc_S19897C1[] = {
  ABISELECT(288,184),
  ABISELECT(272,176),
  ABISELECT(272,176),
  ABISELECT(248,160),
  ABISELECT(232,152),
  ABISELECT(216,140),
  ABISELECT(168,104),
  ABISELECT(128,72),
  ABISELECT(40,24),
  ABISELECT(16,8),
  ABISELECT(9,5),
  ABISELECT(128,72),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C1[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
  (VTBL_ENTRY)&_ZN8S19897C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C1D0Ev,
  0,
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19897C1[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  0,
  0,
  ABISELECT(-40,-24),
  0,
  ABISELECT(88,48),
  ABISELECT(192,128),
  ABISELECT(176,116),
  ABISELECT(-24,-16),
  ABISELECT(128,80),
  ABISELECT(208,136),
  ABISELECT(232,152),
  ABISELECT(232,152),
  ABISELECT(88,48),
  ABISELECT(-31,-19),
  -8,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19897C1[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19897C1D1Ev,_ZTv0_n60_N8S19897C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19897C1D0Ev,_ZTv0_n60_N8S19897C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  (VTBL_ENTRY)&_ZN9S19897C172v3Ev,
  ABISELECT(-128,-72),
  0,
  0,
  ABISELECT(-96,-56),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S19897C1[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C1D1Ev,_ZTv0_n24_N8S19897C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C1D0Ev,_ZTv0_n24_N8S19897C1D0Ev),
  ABISELECT(24,16),
  ABISELECT(-168,-104),
  ABISELECT(80,56),
  ABISELECT(64,48),
  ABISELECT(-159,-99),
  ABISELECT(48,36),
  ABISELECT(-152,-96),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI8S19897C1[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19897C1D1Ev,_ZTv0_n44_N8S19897C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19897C1D0Ev,_ZTv0_n44_N8S19897C1D0Ev),
  ABISELECT(56,40),
  ABISELECT(-64,-48),
  ABISELECT(40,32),
  ABISELECT(-183,-115),
  ABISELECT(-160,-104),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI8S19897C1[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S19897C1D1Ev,_ZTvn16_n44_N8S19897C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S19897C1D0Ev,_ZTvn16_n44_N8S19897C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  0,
  ABISELECT(-216,-140),
  0,
  ABISELECT(-207,-135),
  ABISELECT(-184,-124),
  ABISELECT(-216,-140),
  (VTBL_ENTRY)&(_ZTI8S19897C1[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C1D1Ev,_ZTv0_n24_N8S19897C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C1D0Ev,_ZTv0_n24_N8S19897C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  0,
  0,
  ABISELECT(-104,-80),
  ABISELECT(-200,-136),
  ABISELECT(-232,-152),
  (VTBL_ENTRY)&(_ZTI8S19897C1[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
  ABISELECT(-248,-160),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI8S19897C1[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C1D1Ev,_ZTv0_n24_N8S19897C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C1D0Ev,_ZTv0_n24_N8S19897C1D0Ev),
  0,
  0,
  ABISELECT(-240,-160),
  ABISELECT(-272,-176),
  (VTBL_ENTRY)&(_ZTI8S19897C1[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  ABISELECT(48,36),
  ABISELECT(24,16),
  ABISELECT(-288,-184),
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(-279,-179),
  ABISELECT(-72,-44),
  ABISELECT(-272,-176),
  ABISELECT(-160,-112),
  ABISELECT(-160,-112),
  ABISELECT(-256,-168),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI8S19897C1[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19897C1D1Ev,_ZTv0_n44_N8S19897C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19897C1D0Ev,_ZTv0_n44_N8S19897C1D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-184,-128),
  ABISELECT(-80,-48),
  ABISELECT(-303,-195),
  ABISELECT(-280,-184),
  ABISELECT(-312,-200),
  (VTBL_ENTRY)&(_ZTI8S19897C1[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S19897C1D1Ev,_ZTvn16_n44_N8S19897C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S19897C1D0Ev,_ZTvn16_n44_N8S19897C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  ABISELECT(-208,-148),
  ABISELECT(-327,-215),
  ABISELECT(-304,-204),
  ABISELECT(-336,-220),
  (VTBL_ENTRY)&(_ZTI8S19897C1[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S19897C1D1Ev,_ZTvn36_n44_N8S19897C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S19897C1D0Ev,_ZTvn36_n44_N8S19897C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  (VTBL_ENTRY)&_ZN9S19897C172v3Ev,
};
extern VTBL_ENTRY _ZTV8S19897C1[];
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C14__A__8S19897C1[] = {
  ABISELECT(128,72),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C14[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C39S19897C14__A2__8S19897C1[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C3[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C58S19897C39S19897C14__A7__8S19897C1[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__A1__9S19897C14__A__8S19897C1[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S19897C14[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C3__8S19897C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C3[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C58S19897C3__8S19897C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C6D1Ev();
extern void _ZN8S19897C6D0Ev();
extern void _ZN9S19897C102v2Ev();
extern void _ZN9S19897C172v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C6__8S19897C1[] = {
  ABISELECT(88,48),
  ABISELECT(192,128),
  ABISELECT(176,116),
  ABISELECT(-24,-16),
  ABISELECT(128,80),
  ABISELECT(208,136),
  ABISELECT(232,152),
  ABISELECT(232,152),
  ABISELECT(88,48),
  ABISELECT(-31,-19),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C6[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C6D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  (VTBL_ENTRY)&_ZN9S19897C172v3Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C15D1Ev();
extern void _ZN9S19897C15D0Ev();
extern void _ZN9S19897C102v2Ev();
extern void _ZN9S19897C172v3Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C158S19897C6__8S19897C1[] = {
  ABISELECT(192,128),
  ABISELECT(176,116),
  ABISELECT(-24,-16),
  ABISELECT(128,80),
  ABISELECT(208,136),
  ABISELECT(232,152),
  ABISELECT(232,152),
  ABISELECT(88,48),
  ABISELECT(-31,-19),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C15D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  (VTBL_ENTRY)&_ZN9S19897C172v3Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C17D1Ev();
extern void _ZN9S19897C17D0Ev();
extern void _ZN9S19897C102v2Ev();
extern void _ZN9S19897C172v3Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C179S19897C158S19897C6__8S19897C1[] = {
  ABISELECT(88,48),
  ABISELECT(-31,-19),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C17[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  (VTBL_ENTRY)&_ZN9S19897C172v3Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C10D1Ev();
extern void _ZN9S19897C10D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C109S19897C179S19897C158S19897C6__A2__8S19897C1[] = {
  ABISELECT(-31,-19),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C10[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C119S19897C109S19897C179S19897C158S19897C6__A3__8S19897C1[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C11[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C59S19897C119S19897C109S19897C179S19897C158S19897C6__A6__8S19897C1[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__9S19897C179S19897C158S19897C6__8S19897C1[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19897C17[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C16__9S19897C158S19897C6__8S19897C1[] = {
  0,
  0,
  ABISELECT(-240,-160),
  ABISELECT(-232,-152),
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__A1__9S19897C158S19897C6__8S19897C1[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19897C15D1Ev,_ZTv0_n24_N9S19897C15D1Ev)();
extern void ABISELECT(_ZThn208_N9S19897C15D1Ev,_ZThn136_N9S19897C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19897C15D0Ev,_ZTv0_n24_N9S19897C15D0Ev)();
extern void ABISELECT(_ZThn208_N9S19897C15D0Ev,_ZThn136_N9S19897C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19897C8__9S19897C158S19897C6__8S19897C1[] = {
  ABISELECT(-208,-136),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C15D1Ev,_ZTv0_n24_N9S19897C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C15D0Ev,_ZTv0_n24_N9S19897C15D0Ev),
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n88_N9S19897C15D1Ev,_ZTv0_n44_N9S19897C15D1Ev)();
extern void ABISELECT(_ZThn128_N9S19897C15D1Ev,_ZThn80_N9S19897C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S19897C15D0Ev,_ZTv0_n44_N9S19897C15D0Ev)();
extern void ABISELECT(_ZThn128_N9S19897C15D0Ev,_ZThn80_N9S19897C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19897C9__9S19897C158S19897C6__8S19897C1[] = {
  ABISELECT(24,16),
  ABISELECT(-128,-80),
  ABISELECT(80,56),
  ABISELECT(64,48),
  ABISELECT(-159,-99),
  ABISELECT(48,36),
  ABISELECT(-152,-96),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19897C15D1Ev,_ZTv0_n44_N9S19897C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S19897C15D0Ev,_ZTv0_n44_N9S19897C15D0Ev),
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C3__9S19897C158S19897C6__8S19897C1[] = {
  0,
  ABISELECT(16,8),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19897C15D1Ev,_ZTv0_n24_N9S19897C15D1Ev)();
extern void ABISELECT(_ZThn176_N9S19897C15D1Ev,_ZThn116_N9S19897C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19897C15D0Ev,_ZTv0_n24_N9S19897C15D0Ev)();
extern void ABISELECT(_ZThn176_N9S19897C15D0Ev,_ZThn116_N9S19897C15D0Ev)() __attribute__((weak));
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C10__A1__9S19897C158S19897C6__8S19897C1[] = {
  0,
  ABISELECT(-176,-116),
  0,
  ABISELECT(-207,-135),
  ABISELECT(-184,-124),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C15D1Ev,_ZTv0_n24_N9S19897C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C15D0Ev,_ZTv0_n24_N9S19897C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTvn24_n88_N9S19897C15D1Ev,_ZTvn16_n44_N9S19897C15D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N9S19897C15D0Ev,_ZTvn16_n44_N9S19897C15D0Ev)();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C128S19897C9__9S19897C158S19897C6__8S19897C1[] = {
  ABISELECT(56,40),
  ABISELECT(-64,-48),
  ABISELECT(40,32),
  ABISELECT(-183,-115),
  ABISELECT(-160,-104),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S19897C15D1Ev,_ZTvn16_n44_N9S19897C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N9S19897C15D0Ev,_ZTvn16_n44_N9S19897C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C14__9S19897C158S19897C6__8S19897C1[] = {
  0,
  0,
  ABISELECT(-104,-80),
  ABISELECT(-200,-136),
  ABISELECT(-192,-128),
  (VTBL_ENTRY)&(_ZTI9S19897C15[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19897C6D1Ev,_ZTv0_n24_N8S19897C6D1Ev)();
extern void ABISELECT(_ZThn88_N8S19897C6D1Ev,_ZThn48_N8S19897C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19897C6D0Ev,_ZTv0_n24_N8S19897C6D0Ev)();
extern void ABISELECT(_ZThn88_N8S19897C6D0Ev,_ZThn48_N8S19897C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19897C7__8S19897C6__8S19897C1[] = {
  ABISELECT(-88,-48),
  0,
  0,
  ABISELECT(-96,-56),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S19897C6[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C6D1Ev,_ZTv0_n24_N8S19897C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C6D0Ev,_ZTv0_n24_N8S19897C6D0Ev),
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S19897C6D1Ev,_ZTv0_n44_N8S19897C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S19897C6D1Ev,_ZThn80_N8S19897C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19897C6D0Ev,_ZTv0_n44_N8S19897C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S19897C6D0Ev,_ZThn80_N8S19897C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19897C9__8S19897C6__8S19897C1[] = {
  ABISELECT(24,16),
  ABISELECT(-128,-80),
  ABISELECT(80,56),
  ABISELECT(64,48),
  ABISELECT(-159,-99),
  ABISELECT(48,36),
  ABISELECT(-152,-96),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S19897C6[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19897C6D1Ev,_ZTv0_n44_N8S19897C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19897C6D0Ev,_ZTv0_n44_N8S19897C6D0Ev),
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C3__8S19897C6__8S19897C1[] = {
  0,
  ABISELECT(16,8),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S19897C6[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19897C6D1Ev,_ZTv0_n24_N8S19897C6D1Ev)();
extern void ABISELECT(_ZThn176_N8S19897C6D1Ev,_ZThn116_N8S19897C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19897C6D0Ev,_ZTv0_n24_N8S19897C6D0Ev)();
extern void ABISELECT(_ZThn176_N8S19897C6D0Ev,_ZThn116_N8S19897C6D0Ev)() __attribute__((weak));
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C10__8S19897C6__8S19897C1[] = {
  0,
  ABISELECT(-176,-116),
  0,
  ABISELECT(-207,-135),
  ABISELECT(-184,-124),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI8S19897C6[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C6D1Ev,_ZTv0_n24_N8S19897C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C6D0Ev,_ZTv0_n24_N8S19897C6D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S19897C6D1Ev,_ZTvn16_n44_N8S19897C6D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S19897C6D0Ev,_ZTvn16_n44_N8S19897C6D0Ev)();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C128S19897C9__8S19897C6__8S19897C1[] = {
  ABISELECT(56,40),
  ABISELECT(-64,-48),
  ABISELECT(40,32),
  ABISELECT(-183,-115),
  ABISELECT(-160,-104),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S19897C6[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S19897C6D1Ev,_ZTvn16_n44_N8S19897C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S19897C6D0Ev,_ZTvn16_n44_N8S19897C6D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C14__8S19897C6__8S19897C1[] = {
  0,
  0,
  ABISELECT(-104,-80),
  ABISELECT(-200,-136),
  ABISELECT(-192,-128),
  (VTBL_ENTRY)&(_ZTI8S19897C6[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19897C6D1Ev,_ZTv0_n24_N8S19897C6D1Ev)();
extern void ABISELECT(_ZThn208_N8S19897C6D1Ev,_ZThn136_N8S19897C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19897C6D0Ev,_ZTv0_n24_N8S19897C6D0Ev)();
extern void ABISELECT(_ZThn208_N8S19897C6D0Ev,_ZThn136_N8S19897C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19897C8__A2__8S19897C6__8S19897C1[] = {
  ABISELECT(-208,-136),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S19897C6[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C6D1Ev,_ZTv0_n24_N8S19897C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C6D0Ev,_ZTv0_n24_N8S19897C6D0Ev),
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C16__8S19897C6__8S19897C1[] = {
  0,
  0,
  ABISELECT(-240,-160),
  ABISELECT(-232,-152),
  (VTBL_ENTRY)&(_ZTI8S19897C6[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__A1__8S19897C1[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C7D1Ev();
extern void _ZN8S19897C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C7__8S19897C1[] = {
  0,
  0,
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C7[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C7D0Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C8D1Ev();
extern void _ZN8S19897C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C88S19897C7__8S19897C1[] = {
  0,
  0,
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C8[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D0Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C9D1Ev();
extern void _ZN8S19897C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C9__8S19897C1[] = {
  ABISELECT(80,56),
  ABISELECT(64,48),
  ABISELECT(-159,-99),
  ABISELECT(48,36),
  ABISELECT(-152,-96),
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C9D0Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C8D1Ev();
extern void _ZN8S19897C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C88S19897C9__A1__8S19897C1[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C8[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D0Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__8S19897C88S19897C9__A1__8S19897C1[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI8S19897C8[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C12D1Ev();
extern void _ZN9S19897C12D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C128S19897C9__8S19897C1[] = {
  ABISELECT(56,40),
  ABISELECT(-64,-48),
  ABISELECT(40,32),
  ABISELECT(-183,-115),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C12D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C10D1Ev();
extern void _ZN9S19897C10D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C109S19897C128S19897C9__A1__8S19897C1[] = {
  ABISELECT(-183,-115),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C10[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C119S19897C109S19897C128S19897C9__A1__8S19897C1[] = {
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C11[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C59S19897C119S19897C109S19897C128S19897C9__A3__8S19897C1[] = {
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C14__9S19897C128S19897C9__8S19897C1[] = {
  0,
  0,
  ABISELECT(-104,-80),
  ABISELECT(-200,-136),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__A2__9S19897C128S19897C9__8S19897C1[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(64,48),
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19897C12D1Ev,_ZTv0_n24_N9S19897C12D1Ev)();
extern void ABISELECT(_ZThn56_N9S19897C12D1Ev,_ZThn40_N9S19897C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19897C12D0Ev,_ZTv0_n24_N9S19897C12D0Ev)();
extern void ABISELECT(_ZThn56_N9S19897C12D0Ev,_ZThn40_N9S19897C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19897C8__9S19897C128S19897C9__8S19897C1[] = {
  ABISELECT(-56,-40),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C12D1Ev,_ZTv0_n24_N9S19897C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C12D0Ev,_ZTv0_n24_N9S19897C12D0Ev),
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C3__8S19897C9__8S19897C1[] = {
  0,
  ABISELECT(16,8),
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__A1__8S19897C9__8S19897C1[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(40,32),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S19897C9D1Ev,_ZThn36_N8S19897C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev)();
extern void ABISELECT(_ZThn48_N8S19897C9D0Ev,_ZThn36_N8S19897C9D0Ev)() __attribute__((weak));
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C10__8S19897C9__8S19897C1[] = {
  0,
  ABISELECT(-48,-36),
  0,
  ABISELECT(-207,-135),
  ABISELECT(-184,-124),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZThn24_N8S19897C9D1Ev,_ZThn16_N8S19897C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S19897C9D0Ev,_ZThn16_N8S19897C9D0Ev)();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C12__8S19897C9__8S19897C1[] = {
  ABISELECT(56,40),
  ABISELECT(-64,-48),
  ABISELECT(40,32),
  ABISELECT(-183,-115),
  ABISELECT(-160,-104),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19897C9D1Ev,_ZThn16_N8S19897C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19897C9D0Ev,_ZThn16_N8S19897C9D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C14__8S19897C9__8S19897C1[] = {
  0,
  0,
  ABISELECT(-104,-80),
  ABISELECT(-200,-136),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev)();
extern void ABISELECT(_ZThn80_N8S19897C9D1Ev,_ZThn56_N8S19897C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev)();
extern void ABISELECT(_ZThn80_N8S19897C9D0Ev,_ZThn56_N8S19897C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19897C8__A1__8S19897C9__8S19897C1[] = {
  ABISELECT(-80,-56),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev),
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C10D1Ev();
extern void _ZN9S19897C10D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C10__8S19897C1[] = {
  ABISELECT(-207,-135),
  ABISELECT(-184,-124),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C10[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C119S19897C10__8S19897C1[] = {
  ABISELECT(-184,-124),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C11[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C59S19897C119S19897C10__A2__8S19897C1[] = {
  ABISELECT(-184,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C14__8S19897C1[] = {
  ABISELECT(-104,-80),
  ABISELECT(-200,-136),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C14[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C39S19897C14__A1__8S19897C1[] = {
  ABISELECT(-200,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C3[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C58S19897C39S19897C14__A4__8S19897C1[] = {
  ABISELECT(-200,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__A1__9S19897C14__8S19897C1[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(104,80),
  (VTBL_ENTRY)&(_ZTI9S19897C14[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C8D1Ev();
extern void _ZN8S19897C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C8__A2__8S19897C1[] = {
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C8[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D0Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__8S19897C8__A2__8S19897C1[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(120,88),
  (VTBL_ENTRY)&(_ZTI8S19897C8[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C16__8S19897C1[] = {
  0,
  0,
  ABISELECT(-240,-160),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C16[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C11__A2__8S19897C1[] = {
  ABISELECT(-240,-160),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C11[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C59S19897C11__A5__8S19897C1[] = {
  ABISELECT(-240,-160),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C18D1Ev();
extern void _ZN9S19897C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C18__8S19897C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(-279,-179),
  ABISELECT(-72,-44),
  ABISELECT(-272,-176),
  ABISELECT(-160,-112),
  ABISELECT(-160,-112),
  ABISELECT(-256,-168),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C18[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C18D0Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C9D1Ev();
extern void _ZN8S19897C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C99S19897C18__A1__8S19897C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-56,-32),
  ABISELECT(-279,-179),
  ABISELECT(-72,-44),
  ABISELECT(-272,-176),
  ABISELECT(-160,-112),
  ABISELECT(-160,-112),
  ABISELECT(-256,-168),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C9D0Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN8S19897C8D1Ev();
extern void _ZN8S19897C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C88S19897C99S19897C18__A3__8S19897C1[] = {
  ABISELECT(-160,-112),
  ABISELECT(-160,-112),
  ABISELECT(-256,-168),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C8[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19897C8D0Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__8S19897C88S19897C99S19897C18__A3__8S19897C1[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI8S19897C8[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C12D1Ev();
extern void _ZN9S19897C12D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C128S19897C99S19897C18__A1__8S19897C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-184,-128),
  ABISELECT(-80,-48),
  ABISELECT(-303,-195),
  ABISELECT(-280,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C12D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C10D1Ev();
extern void _ZN9S19897C10D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C109S19897C128S19897C99S19897C18__A3__8S19897C1[] = {
  ABISELECT(-303,-195),
  ABISELECT(-280,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C10[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C119S19897C109S19897C128S19897C99S19897C18__A4__8S19897C1[] = {
  ABISELECT(-280,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C11[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C59S19897C119S19897C109S19897C128S19897C99S19897C18__A8__8S19897C1[] = {
  ABISELECT(-280,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C14__9S19897C128S19897C99S19897C18__A1__8S19897C1[] = {
  0,
  0,
  ABISELECT(-104,-80),
  ABISELECT(-200,-136),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__A2__9S19897C128S19897C99S19897C18__A1__8S19897C1[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(184,128),
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19897C12D1Ev,_ZTv0_n24_N9S19897C12D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19897C12D0Ev,_ZTv0_n24_N9S19897C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19897C8__9S19897C128S19897C99S19897C18__A1__8S19897C1[] = {
  ABISELECT(64,40),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI9S19897C12[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C12D1Ev,_ZTv0_n24_N9S19897C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C12D0Ev,_ZTv0_n24_N9S19897C12D0Ev),
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C3__8S19897C99S19897C18__A1__8S19897C1[] = {
  0,
  ABISELECT(16,8),
  ABISELECT(272,176),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__A1__8S19897C99S19897C18__A1__8S19897C1[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev)();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C10__8S19897C99S19897C18__A1__8S19897C1[] = {
  0,
  ABISELECT(72,44),
  0,
  ABISELECT(-207,-135),
  ABISELECT(-184,-124),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZThn24_N8S19897C9D1Ev,_ZThn16_N8S19897C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S19897C9D0Ev,_ZThn16_N8S19897C9D0Ev)();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C12__8S19897C99S19897C18__A1__8S19897C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-184,-128),
  ABISELECT(-80,-48),
  ABISELECT(-303,-195),
  ABISELECT(-280,-184),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19897C9D1Ev,_ZThn16_N8S19897C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19897C9D0Ev,_ZThn16_N8S19897C9D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C14__8S19897C99S19897C18__A1__8S19897C1[] = {
  0,
  0,
  ABISELECT(-104,-80),
  ABISELECT(-200,-136),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19897C8__A1__8S19897C99S19897C18__A1__8S19897C1[] = {
  ABISELECT(40,24),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S19897C9[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev),
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C17D1Ev();
extern void _ZN9S19897C17D0Ev();
extern void _ZN9S19897C102v2Ev();
extern void _ZN9S19897C172v3Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C179S19897C18__A1__8S19897C1[] = {
  ABISELECT(-208,-148),
  ABISELECT(-327,-215),
  ABISELECT(-304,-204),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C17[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  (VTBL_ENTRY)&_ZN9S19897C172v3Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C10D1Ev();
extern void _ZN9S19897C10D0Ev();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C109S19897C179S19897C18__A4__8S19897C1[] = {
  ABISELECT(-327,-215),
  ABISELECT(-304,-204),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C10[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19897C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C119S19897C109S19897C179S19897C18__A5__8S19897C1[] = {
  ABISELECT(-304,-204),
  0,
  (VTBL_ENTRY)&(_ZTI9S19897C11[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C59S19897C119S19897C109S19897C179S19897C18__A9__8S19897C1[] = {
  ABISELECT(-304,-204),
  0,
  (VTBL_ENTRY)&(_ZTI8S19897C5[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__9S19897C179S19897C18__A1__8S19897C1[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(208,148),
  (VTBL_ENTRY)&(_ZTI9S19897C17[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19897C18D1Ev,_ZTv0_n24_N9S19897C18D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19897C18D0Ev,_ZTv0_n24_N9S19897C18D0Ev)();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C10__9S19897C18__8S19897C1[] = {
  0,
  ABISELECT(72,44),
  0,
  ABISELECT(-207,-135),
  ABISELECT(-184,-124),
  ABISELECT(72,44),
  (VTBL_ENTRY)&(_ZTI9S19897C18[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C18D1Ev,_ZTv0_n24_N9S19897C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C18D0Ev,_ZTv0_n24_N9S19897C18D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C3__9S19897C18__8S19897C1[] = {
  0,
  ABISELECT(16,8),
  ABISELECT(272,176),
  (VTBL_ENTRY)&(_ZTI9S19897C18[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19897C5__A2__9S19897C18__8S19897C1[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S19897C18[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZThn24_N9S19897C18D1Ev,_ZThn16_N9S19897C18D1Ev)();
extern void ABISELECT(_ZThn24_N9S19897C18D0Ev,_ZThn16_N9S19897C18D0Ev)();
extern void _ZN9S19897C102v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C128S19897C9__9S19897C18__8S19897C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-184,-128),
  ABISELECT(-80,-48),
  ABISELECT(-303,-195),
  ABISELECT(-280,-184),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S19897C18[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S19897C18D1Ev,_ZThn16_N9S19897C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S19897C18D0Ev,_ZThn16_N9S19897C18D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void _ZN9S19897C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C14__9S19897C18__8S19897C1[] = {
  0,
  0,
  ABISELECT(-104,-80),
  ABISELECT(-200,-136),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S19897C18[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19897C142v4Ev,
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19897C18D1Ev,_ZTv0_n24_N9S19897C18D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19897C18D0Ev,_ZTv0_n24_N9S19897C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19897C8__A1__9S19897C18__8S19897C1[] = {
  ABISELECT(40,24),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  ABISELECT(-216,-144),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S19897C18[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C18D1Ev,_ZTv0_n24_N9S19897C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19897C18D0Ev,_ZTv0_n24_N9S19897C18D0Ev),
};
extern void _ZN8S19897C52v1Ev();
extern void ABISELECT(_ZThn48_N9S19897C18D1Ev,_ZThn36_N9S19897C18D1Ev)();
extern void ABISELECT(_ZThn48_N9S19897C18D0Ev,_ZThn36_N9S19897C18D0Ev)();
extern void _ZN9S19897C102v2Ev();
extern void _ZN9S19897C172v3Ev();
static  VTBL_ENTRY _tg__ZTV9S19897C17__9S19897C18__8S19897C1[] = {
  ABISELECT(-208,-148),
  ABISELECT(-327,-215),
  ABISELECT(-304,-204),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S19897C18[0]),
  (VTBL_ENTRY)&_ZN8S19897C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19897C18D1Ev,_ZThn36_N9S19897C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19897C18D0Ev,_ZThn36_N9S19897C18D0Ev),
  (VTBL_ENTRY)&_ZN9S19897C102v2Ev,
  (VTBL_ENTRY)&_ZN9S19897C172v3Ev,
};
static  VTT_ENTRY vtt_S19897C1[] = {
  {&(_ZTV8S19897C1[15]),  15,152},
  {&(_tg__ZTV9S19897C14__A__8S19897C1[4]),  4,6},
  {&(_tg__ZTV8S19897C39S19897C14__A2__8S19897C1[3]),  3,4},
  {&(_tg__ZTV8S19897C58S19897C39S19897C14__A7__8S19897C1[3]),  3,4},
  {&(_tg__ZTV8S19897C5__A1__9S19897C14__A__8S19897C1[4]),  4,5},
  {&(_ZTV8S19897C1[23]),  23,152},
  {&(_ZTV8S19897C1[41]),  41,152},
  {&(_ZTV8S19897C1[52]),  52,152},
  {&(_ZTV8S19897C1[52]),  52,152},
  {&(_ZTV8S19897C1[67]),  67,152},
  {&(_ZTV8S19897C1[88]),  88,152},
  {&(_ZTV8S19897C1[77]),  77,152},
  {&(_ZTV8S19897C1[98]),  98,152},
  {&(_ZTV8S19897C1[106]),  106,152},
  {&(_ZTV8S19897C1[114]),  114,152},
  {&(_ZTV8S19897C1[114]),  114,152},
  {&(_ZTV8S19897C1[128]),  128,152},
  {&(_ZTV8S19897C1[138]),  138,152},
  {&(_ZTV8S19897C1[147]),  147,152},
  {&(_tg__ZTV8S19897C3__8S19897C1[3]),  3,4},
  {&(_tg__ZTV8S19897C58S19897C3__8S19897C1[3]),  3,4},
  {&(_tg__ZTV8S19897C6__8S19897C1[13]),  13,18},
  {&(_tg__ZTV9S19897C158S19897C6__8S19897C1[12]),  12,17},
  {&(_tg__ZTV9S19897C179S19897C158S19897C6__8S19897C1[5]),  5,10},
  {&(_tg__ZTV9S19897C109S19897C179S19897C158S19897C6__A2__8S19897C1[4]),  4,8},
  {&(_tg__ZTV9S19897C119S19897C109S19897C179S19897C158S19897C6__A3__8S19897C1[3]),  3,4},
  {&(_tg__ZTV8S19897C59S19897C119S19897C109S19897C179S19897C158S19897C6__A6__8S19897C1[3]),  3,4},
  {&(_tg__ZTV8S19897C5__9S19897C179S19897C158S19897C6__8S19897C1[4]),  4,5},
  {&(_tg__ZTV9S19897C16__9S19897C158S19897C6__8S19897C1[5]),  5,6},
  {&(_tg__ZTV9S19897C16__9S19897C158S19897C6__8S19897C1[5]),  5,6},
  {&(_tg__ZTV8S19897C5__A1__9S19897C158S19897C6__8S19897C1[4]),  4,5},
  {&(_tg__ZTV8S19897C8__9S19897C158S19897C6__8S19897C1[6]),  6,9},
  {&(_tg__ZTV8S19897C9__9S19897C158S19897C6__8S19897C1[12]),  12,15},
  {&(_tg__ZTV8S19897C3__9S19897C158S19897C6__8S19897C1[4]),  4,5},
  {&(_tg__ZTV9S19897C10__A1__9S19897C158S19897C6__8S19897C1[7]),  7,11},
  {&(_tg__ZTV9S19897C128S19897C9__9S19897C158S19897C6__8S19897C1[7]),  7,11},
  {&(_tg__ZTV9S19897C14__9S19897C158S19897C6__8S19897C1[6]),  6,8},
  {&(_tg__ZTV8S19897C7__8S19897C6__8S19897C1[6]),  6,9},
  {&(_tg__ZTV8S19897C7__8S19897C6__8S19897C1[6]),  6,9},
  {&(_tg__ZTV8S19897C9__8S19897C6__8S19897C1[12]),  12,15},
  {&(_tg__ZTV8S19897C3__8S19897C6__8S19897C1[4]),  4,5},
  {&(_tg__ZTV9S19897C10__8S19897C6__8S19897C1[7]),  7,11},
  {&(_tg__ZTV9S19897C128S19897C9__8S19897C6__8S19897C1[7]),  7,11},
  {&(_tg__ZTV9S19897C14__8S19897C6__8S19897C1[6]),  6,8},
  {&(_tg__ZTV8S19897C8__A2__8S19897C6__8S19897C1[6]),  6,9},
  {&(_tg__ZTV9S19897C16__8S19897C6__8S19897C1[5]),  5,6},
  {&(_tg__ZTV9S19897C16__8S19897C6__8S19897C1[5]),  5,6},
  {&(_tg__ZTV8S19897C5__A1__8S19897C1[3]),  3,4},
  {&(_tg__ZTV8S19897C7__8S19897C1[5]),  5,8},
  {&(_tg__ZTV8S19897C88S19897C7__8S19897C1[5]),  5,8},
  {&(_tg__ZTV8S19897C88S19897C7__8S19897C1[5]),  5,8},
  {&(_tg__ZTV8S19897C7__8S19897C1[5]),  5,8},
  {&(_tg__ZTV8S19897C9__8S19897C1[10]),  10,13},
  {&(_tg__ZTV8S19897C88S19897C9__A1__8S19897C1[5]),  5,8},
  {&(_tg__ZTV8S19897C5__8S19897C88S19897C9__A1__8S19897C1[4]),  4,5},
  {&(_tg__ZTV9S19897C128S19897C9__8S19897C1[7]),  7,11},
  {&(_tg__ZTV9S19897C109S19897C128S19897C9__A1__8S19897C1[4]),  4,8},
  {&(_tg__ZTV9S19897C119S19897C109S19897C128S19897C9__A1__8S19897C1[3]),  3,4},
  {&(_tg__ZTV8S19897C59S19897C119S19897C109S19897C128S19897C9__A3__8S19897C1[3]),  3,4},
  {&(_tg__ZTV9S19897C14__9S19897C128S19897C9__8S19897C1[6]),  6,8},
  {&(_tg__ZTV8S19897C5__A2__9S19897C128S19897C9__8S19897C1[4]),  4,5},
  {&(_tg__ZTV8S19897C8__9S19897C128S19897C9__8S19897C1[6]),  6,9},
  {&(_tg__ZTV8S19897C3__8S19897C9__8S19897C1[4]),  4,5},
  {&(_tg__ZTV8S19897C5__A1__8S19897C9__8S19897C1[4]),  4,5},
  {&(_tg__ZTV9S19897C10__8S19897C9__8S19897C1[7]),  7,11},
  {&(_tg__ZTV9S19897C12__8S19897C9__8S19897C1[7]),  7,11},
  {&(_tg__ZTV9S19897C14__8S19897C9__8S19897C1[6]),  6,8},
  {&(_tg__ZTV8S19897C8__A1__8S19897C9__8S19897C1[6]),  6,9},
  {&(_tg__ZTV9S19897C10__8S19897C1[4]),  4,8},
  {&(_tg__ZTV9S19897C119S19897C10__8S19897C1[3]),  3,4},
  {&(_tg__ZTV8S19897C59S19897C119S19897C10__A2__8S19897C1[3]),  3,4},
  {&(_tg__ZTV9S19897C14__8S19897C1[4]),  4,6},
  {&(_tg__ZTV8S19897C39S19897C14__A1__8S19897C1[3]),  3,4},
  {&(_tg__ZTV8S19897C58S19897C39S19897C14__A4__8S19897C1[3]),  3,4},
  {&(_tg__ZTV8S19897C5__A1__9S19897C14__8S19897C1[4]),  4,5},
  {&(_tg__ZTV8S19897C8__A2__8S19897C1[5]),  5,8},
  {&(_tg__ZTV8S19897C5__8S19897C8__A2__8S19897C1[4]),  4,5},
  {&(_tg__ZTV9S19897C16__8S19897C1[5]),  5,6},
  {&(_tg__ZTV9S19897C16__8S19897C1[5]),  5,6},
  {&(_tg__ZTV9S19897C11__A2__8S19897C1[3]),  3,4},
  {&(_tg__ZTV8S19897C59S19897C11__A5__8S19897C1[3]),  3,4},
  {&(_tg__ZTV9S19897C18__8S19897C1[10]),  10,13},
  {&(_tg__ZTV8S19897C99S19897C18__A1__8S19897C1[10]),  10,13},
  {&(_tg__ZTV8S19897C88S19897C99S19897C18__A3__8S19897C1[5]),  5,8},
  {&(_tg__ZTV8S19897C5__8S19897C88S19897C99S19897C18__A3__8S19897C1[4]),  4,5},
  {&(_tg__ZTV9S19897C128S19897C99S19897C18__A1__8S19897C1[7]),  7,11},
  {&(_tg__ZTV9S19897C109S19897C128S19897C99S19897C18__A3__8S19897C1[4]),  4,8},
  {&(_tg__ZTV9S19897C119S19897C109S19897C128S19897C99S19897C18__A4__8S19897C1[3]),  3,4},
  {&(_tg__ZTV8S19897C59S19897C119S19897C109S19897C128S19897C99S19897C18__A8__8S19897C1[3]),  3,4},
  {&(_tg__ZTV9S19897C14__9S19897C128S19897C99S19897C18__A1__8S19897C1[6]),  6,8},
  {&(_tg__ZTV8S19897C5__A2__9S19897C128S19897C99S19897C18__A1__8S19897C1[4]),  4,5},
  {&(_tg__ZTV8S19897C8__9S19897C128S19897C99S19897C18__A1__8S19897C1[6]),  6,9},
  {&(_tg__ZTV8S19897C3__8S19897C99S19897C18__A1__8S19897C1[4]),  4,5},
  {&(_tg__ZTV8S19897C5__A1__8S19897C99S19897C18__A1__8S19897C1[4]),  4,5},
  {&(_tg__ZTV9S19897C10__8S19897C99S19897C18__A1__8S19897C1[7]),  7,11},
  {&(_tg__ZTV9S19897C12__8S19897C99S19897C18__A1__8S19897C1[7]),  7,11},
  {&(_tg__ZTV9S19897C14__8S19897C99S19897C18__A1__8S19897C1[6]),  6,8},
  {&(_tg__ZTV8S19897C8__A1__8S19897C99S19897C18__A1__8S19897C1[6]),  6,9},
  {&(_tg__ZTV9S19897C179S19897C18__A1__8S19897C1[5]),  5,10},
  {&(_tg__ZTV9S19897C109S19897C179S19897C18__A4__8S19897C1[4]),  4,8},
  {&(_tg__ZTV9S19897C119S19897C109S19897C179S19897C18__A5__8S19897C1[3]),  3,4},
  {&(_tg__ZTV8S19897C59S19897C119S19897C109S19897C179S19897C18__A9__8S19897C1[3]),  3,4},
  {&(_tg__ZTV8S19897C5__9S19897C179S19897C18__A1__8S19897C1[4]),  4,5},
  {&(_tg__ZTV9S19897C10__9S19897C18__8S19897C1[7]),  7,11},
  {&(_tg__ZTV8S19897C3__9S19897C18__8S19897C1[4]),  4,5},
  {&(_tg__ZTV8S19897C5__A2__9S19897C18__8S19897C1[4]),  4,5},
  {&(_tg__ZTV9S19897C128S19897C9__9S19897C18__8S19897C1[7]),  7,11},
  {&(_tg__ZTV9S19897C14__9S19897C18__8S19897C1[6]),  6,8},
  {&(_tg__ZTV8S19897C8__A1__9S19897C18__8S19897C1[6]),  6,9},
  {&(_tg__ZTV9S19897C17__9S19897C18__8S19897C1[5]),  5,10},
};
extern VTBL_ENTRY _ZTI8S19897C1[];
extern  VTBL_ENTRY _ZTV8S19897C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19897C1[];
static VTBL_ENTRY alt_thunk_names53[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19897C9D0Ev,_ZTv0_n24_N8S19897C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19897C9D0Ev,_ZThn56_N8S19897C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19897C9D0Ev,_ZThn36_N8S19897C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19897C9D1Ev,_ZTv0_n24_N8S19897C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19897C9D1Ev,_ZThn56_N8S19897C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19897C9D1Ev,_ZThn36_N8S19897C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19897C12D0Ev,_ZTv0_n24_N9S19897C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19897C12D0Ev,_ZThn40_N9S19897C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19897C12D1Ev,_ZTv0_n24_N9S19897C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19897C12D1Ev,_ZThn40_N9S19897C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19897C6D0Ev,_ZTv0_n44_N8S19897C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19897C6D0Ev,_ZThn80_N8S19897C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19897C6D1Ev,_ZTv0_n44_N8S19897C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19897C6D1Ev,_ZThn80_N8S19897C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19897C6D0Ev,_ZTv0_n24_N8S19897C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19897C6D0Ev,_ZThn136_N8S19897C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19897C6D0Ev,_ZThn116_N8S19897C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19897C6D0Ev,_ZThn48_N8S19897C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19897C6D1Ev,_ZTv0_n24_N8S19897C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19897C6D1Ev,_ZThn136_N8S19897C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19897C6D1Ev,_ZThn116_N8S19897C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19897C6D1Ev,_ZThn48_N8S19897C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19897C15D0Ev,_ZTv0_n44_N9S19897C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19897C15D0Ev,_ZThn80_N9S19897C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S19897C15D1Ev,_ZTv0_n44_N9S19897C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19897C15D1Ev,_ZThn80_N9S19897C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19897C15D0Ev,_ZTv0_n24_N9S19897C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19897C15D0Ev,_ZThn116_N9S19897C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19897C15D0Ev,_ZThn136_N9S19897C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19897C15D1Ev,_ZTv0_n24_N9S19897C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19897C15D1Ev,_ZThn116_N9S19897C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19897C15D1Ev,_ZThn136_N9S19897C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19897C1D0Ev,_ZTv0_n44_N8S19897C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S19897C1D0Ev,_ZThn184_N8S19897C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19897C1D0Ev,_ZThn104_N8S19897C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19897C1D1Ev,_ZTv0_n44_N8S19897C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S19897C1D1Ev,_ZThn184_N8S19897C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19897C1D1Ev,_ZThn104_N8S19897C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19897C1D0Ev,_ZTv0_n24_N8S19897C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19897C1D0Ev,_ZThn160_N8S19897C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S19897C1D0Ev,_ZThn140_N8S19897C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19897C1D0Ev,_ZThn72_N8S19897C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19897C1D1Ev,_ZTv0_n24_N8S19897C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19897C1D1Ev,_ZThn160_N8S19897C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S19897C1D1Ev,_ZThn140_N8S19897C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19897C1D1Ev,_ZThn72_N8S19897C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19897C1D0Ev,_ZTv0_n60_N8S19897C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19897C1D0Ev,_ZThn24_N8S19897C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19897C1D1Ev,_ZTv0_n60_N8S19897C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19897C1D1Ev,_ZThn24_N8S19897C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19897C1 = {  "S19897C1", // class name
  bases_S19897C1, 75,
  &(vtc_S19897C1[0]), // expected_vtbl_contents
  &(vtt_S19897C1[0]), // expected_vtt_contents
  ABISELECT(360,236), // object size
  NSPAIRA(_ZTI8S19897C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19897C1),152, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19897C1),110, //virtual table table var
  41, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names53,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7166C2  {
  void *s7166c2f0;
  ::S3027C4_nt s7166c2f1;
  virtual  ~S7166C2(); // _ZN7S7166C2D1Ev
  virtual void  v8(); // _ZN7S7166C22v8Ev
  virtual void  v9(); // _ZN7S7166C22v9Ev
  virtual void  v10(); // _ZN7S7166C23v10Ev
  virtual void  v11(); // _ZN7S7166C23v11Ev
  virtual void  v12(); // _ZN7S7166C23v12Ev
  virtual void  v13(); // _ZN7S7166C23v13Ev
  virtual void  v14(); // _ZN7S7166C23v14Ev
  virtual void  v15(); // _ZN7S7166C23v15Ev
  virtual void  v16(); // _ZN7S7166C23v16Ev
  virtual void  v17(); // _ZN7S7166C23v17Ev
  virtual void  v18(); // _ZN7S7166C23v18Ev
  virtual void  v19(); // _ZN7S7166C23v19Ev
  virtual void  v20(); // _ZN7S7166C23v20Ev
  virtual void  v21(); // _ZN7S7166C23v21Ev
  virtual void  v22(); // _ZN7S7166C23v22Ev
  S7166C2(); // tgen
};
//SIG(-1 S7166C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp FC2{ BC3{ m Fp Fi FC4{ m} FC5{ m}}}}


 S7166C2 ::~S7166C2(){ note_dtor("S7166C2", this);}
void  S7166C2 ::v8(){vfunc_called(this, "_ZN7S7166C22v8Ev");}
void  S7166C2 ::v9(){vfunc_called(this, "_ZN7S7166C22v9Ev");}
void  S7166C2 ::v10(){vfunc_called(this, "_ZN7S7166C23v10Ev");}
void  S7166C2 ::v11(){vfunc_called(this, "_ZN7S7166C23v11Ev");}
void  S7166C2 ::v12(){vfunc_called(this, "_ZN7S7166C23v12Ev");}
void  S7166C2 ::v13(){vfunc_called(this, "_ZN7S7166C23v13Ev");}
void  S7166C2 ::v14(){vfunc_called(this, "_ZN7S7166C23v14Ev");}
void  S7166C2 ::v15(){vfunc_called(this, "_ZN7S7166C23v15Ev");}
void  S7166C2 ::v16(){vfunc_called(this, "_ZN7S7166C23v16Ev");}
void  S7166C2 ::v17(){vfunc_called(this, "_ZN7S7166C23v17Ev");}
void  S7166C2 ::v18(){vfunc_called(this, "_ZN7S7166C23v18Ev");}
void  S7166C2 ::v19(){vfunc_called(this, "_ZN7S7166C23v19Ev");}
void  S7166C2 ::v20(){vfunc_called(this, "_ZN7S7166C23v20Ev");}
void  S7166C2 ::v21(){vfunc_called(this, "_ZN7S7166C23v21Ev");}
void  S7166C2 ::v22(){vfunc_called(this, "_ZN7S7166C23v22Ev");}
S7166C2 ::S7166C2(){ note_ctor("S7166C2", this);} // tgen

static void Test_S7166C2()
{
  extern Class_Descriptor cd_S7166C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7166C2, buf);
    S7166C2 *dp, &lv = *(dp=new (buf) S7166C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7166C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7166C2)");
    check_field_offset(lv, s7166c2f0, ABISELECT(8,4), "S7166C2.s7166c2f0");
    check_field_offset(lv, s7166c2f1, ABISELECT(16,8), "S7166C2.s7166c2f1");
    test_class_info(&lv, &cd_S7166C2);
    dp->~S7166C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7166C2(Test_S7166C2, "S7166C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S7166C2C1Ev();
extern void _ZN7S7166C2D1Ev();
Name_Map name_map_S7166C2[] = {
  NSPAIR(_ZN7S7166C2C1Ev),
  NSPAIR(_ZN7S7166C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7166C2[];
extern void _ZN7S7166C2D1Ev();
extern void _ZN7S7166C2D0Ev();
extern void _ZN7S7166C22v8Ev();
extern void _ZN7S7166C22v9Ev();
extern void _ZN7S7166C23v10Ev();
extern void _ZN7S7166C23v11Ev();
extern void _ZN7S7166C23v12Ev();
extern void _ZN7S7166C23v13Ev();
extern void _ZN7S7166C23v14Ev();
extern void _ZN7S7166C23v15Ev();
extern void _ZN7S7166C23v16Ev();
extern void _ZN7S7166C23v17Ev();
extern void _ZN7S7166C23v18Ev();
extern void _ZN7S7166C23v19Ev();
extern void _ZN7S7166C23v20Ev();
extern void _ZN7S7166C23v21Ev();
extern void _ZN7S7166C23v22Ev();
static  VTBL_ENTRY vtc_S7166C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7166C2[0]),
  (VTBL_ENTRY)&_ZN7S7166C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7166C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7166C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7166C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v22Ev,
};
extern VTBL_ENTRY _ZTI7S7166C2[];
extern  VTBL_ENTRY _ZTV7S7166C2[];
Class_Descriptor cd_S7166C2 = {  "S7166C2", // class name
  0,0,//no base classes
  &(vtc_S7166C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S7166C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7166C2),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7166C9  {
  virtual  ~S7166C9(); // _ZN7S7166C9D1Ev
  virtual void  v23(); // _ZN7S7166C93v23Ev
  virtual void  v24(); // _ZN7S7166C93v24Ev
  virtual void  v25(); // _ZN7S7166C93v25Ev
  S7166C9(); // tgen
};
//SIG(-1 S7166C9) C1{ vd v1 v2 v3}


 S7166C9 ::~S7166C9(){ note_dtor("S7166C9", this);}
void  S7166C9 ::v23(){vfunc_called(this, "_ZN7S7166C93v23Ev");}
void  S7166C9 ::v24(){vfunc_called(this, "_ZN7S7166C93v24Ev");}
void  S7166C9 ::v25(){vfunc_called(this, "_ZN7S7166C93v25Ev");}
S7166C9 ::S7166C9(){ note_ctor("S7166C9", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7166C9C1Ev();
extern void _ZN7S7166C9D1Ev();
Name_Map name_map_S7166C9[] = {
  NSPAIR(_ZN7S7166C9C1Ev),
  NSPAIR(_ZN7S7166C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7166C9[];
extern void _ZN7S7166C9D1Ev();
extern void _ZN7S7166C9D0Ev();
extern void _ZN7S7166C93v23Ev();
extern void _ZN7S7166C93v24Ev();
extern void _ZN7S7166C93v25Ev();
static  VTBL_ENTRY vtc_S7166C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7166C9[0]),
  (VTBL_ENTRY)&_ZN7S7166C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7166C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7166C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7166C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7166C93v25Ev,
};
extern VTBL_ENTRY _ZTI7S7166C9[];
extern  VTBL_ENTRY _ZTV7S7166C9[];
Class_Descriptor cd_S7166C9 = {  "S7166C9", // class name
  0,0,//no base classes
  &(vtc_S7166C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7166C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7166C9),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  S7166C8  : S7166C9 {
  virtual  ~S7166C8(); // _ZN7S7166C8D1Ev
  virtual void  v26(); // _ZN7S7166C83v26Ev
  virtual void  v27(); // _ZN7S7166C83v27Ev
  virtual void  v28(); // _ZN7S7166C83v28Ev
  virtual void  v29(); // _ZN7S7166C83v29Ev
  virtual void  v30(); // _ZN7S7166C83v30Ev
  virtual void  v31(); // _ZN7S7166C83v31Ev
  S7166C8(); // tgen
};
//SIG(-1 S7166C8) C1{ BC2{ vd v7 v8 v9} vd v1 v2 v3 v4 v5 v6}


 S7166C8 ::~S7166C8(){ note_dtor("S7166C8", this);}
void  S7166C8 ::v26(){vfunc_called(this, "_ZN7S7166C83v26Ev");}
void  S7166C8 ::v27(){vfunc_called(this, "_ZN7S7166C83v27Ev");}
void  S7166C8 ::v28(){vfunc_called(this, "_ZN7S7166C83v28Ev");}
void  S7166C8 ::v29(){vfunc_called(this, "_ZN7S7166C83v29Ev");}
void  S7166C8 ::v30(){vfunc_called(this, "_ZN7S7166C83v30Ev");}
void  S7166C8 ::v31(){vfunc_called(this, "_ZN7S7166C83v31Ev");}
S7166C8 ::S7166C8(){ note_ctor("S7166C8", this);} // tgen

static void Test_S7166C8()
{
  extern Class_Descriptor cd_S7166C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7166C8, buf);
    S7166C8 *dp, &lv = *(dp=new (buf) S7166C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7166C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7166C8)");
    check_base_class_offset(lv, (S7166C9*), 0, "S7166C8");
    test_class_info(&lv, &cd_S7166C8);
    dp->~S7166C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7166C8(Test_S7166C8, "S7166C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7166C8C1Ev();
extern void _ZN7S7166C8D1Ev();
Name_Map name_map_S7166C8[] = {
  NSPAIR(_ZN7S7166C8C1Ev),
  NSPAIR(_ZN7S7166C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7166C9;
extern VTBL_ENTRY _ZTI7S7166C9[];
extern  VTBL_ENTRY _ZTV7S7166C9[];
static Base_Class bases_S7166C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7166C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7166C8[];
extern void _ZN7S7166C8D1Ev();
extern void _ZN7S7166C8D0Ev();
extern void _ZN7S7166C93v23Ev();
extern void _ZN7S7166C93v24Ev();
extern void _ZN7S7166C93v25Ev();
extern void _ZN7S7166C83v26Ev();
extern void _ZN7S7166C83v27Ev();
extern void _ZN7S7166C83v28Ev();
extern void _ZN7S7166C83v29Ev();
extern void _ZN7S7166C83v30Ev();
extern void _ZN7S7166C83v31Ev();
static  VTBL_ENTRY vtc_S7166C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7166C8[0]),
  (VTBL_ENTRY)&_ZN7S7166C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7166C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7166C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7166C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7166C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7166C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7166C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7166C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7166C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7166C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7166C83v31Ev,
};
extern VTBL_ENTRY _ZTI7S7166C8[];
extern  VTBL_ENTRY _ZTV7S7166C8[];
Class_Descriptor cd_S7166C8 = {  "S7166C8", // class name
  bases_S7166C8, 1,
  &(vtc_S7166C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7166C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7166C8),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  S7166C7  : S7166C8 {
  ::S731C20 s7166c7f0;
  ::S3027C15_nt s7166c7f1;
  char s7166c7f2;
  virtual  ~S7166C7(); // _ZN7S7166C7D1Ev
  virtual void  v32(); // _ZN7S7166C73v32Ev
  virtual void  v33(); // _ZN7S7166C73v33Ev
  virtual void  v34(); // _ZN7S7166C73v34Ev
  S7166C7(); // tgen
};
//SIG(-1 S7166C7) C1{ BC2{ BC3{ vd v4 v5 v6} vd v7 v8 v9 v10 v11 v12} vd v1 v2 v3 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FC7{ Fl[4]}} Fc}


 S7166C7 ::~S7166C7(){ note_dtor("S7166C7", this);}
void  S7166C7 ::v32(){vfunc_called(this, "_ZN7S7166C73v32Ev");}
void  S7166C7 ::v33(){vfunc_called(this, "_ZN7S7166C73v33Ev");}
void  S7166C7 ::v34(){vfunc_called(this, "_ZN7S7166C73v34Ev");}
S7166C7 ::S7166C7(){ note_ctor("S7166C7", this);} // tgen

static void Test_S7166C7()
{
  extern Class_Descriptor cd_S7166C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S7166C7, buf);
    S7166C7 *dp, &lv = *(dp=new (buf) S7166C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S7166C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7166C7)");
    check_base_class_offset(lv, (S7166C9*)(S7166C8*), 0, "S7166C7");
    check_base_class_offset(lv, (S7166C8*), 0, "S7166C7");
    check_field_offset(lv, s7166c7f0, ABISELECT(8,4), "S7166C7.s7166c7f0");
    check_field_offset(lv, s7166c7f1, ABISELECT(32,20), "S7166C7.s7166c7f1");
    check_field_offset(lv, s7166c7f2, ABISELECT(64,36), "S7166C7.s7166c7f2");
    test_class_info(&lv, &cd_S7166C7);
    dp->~S7166C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7166C7(Test_S7166C7, "S7166C7", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN7S7166C7C1Ev();
extern void _ZN7S7166C7D1Ev();
Name_Map name_map_S7166C7[] = {
  NSPAIR(_ZN7S7166C7C1Ev),
  NSPAIR(_ZN7S7166C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7166C9;
extern VTBL_ENTRY _ZTI7S7166C9[];
extern  VTBL_ENTRY _ZTV7S7166C9[];
extern Class_Descriptor cd_S7166C8;
extern VTBL_ENTRY _ZTI7S7166C8[];
extern  VTBL_ENTRY _ZTV7S7166C8[];
static Base_Class bases_S7166C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7166C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7166C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S7166C7[];
extern void _ZN7S7166C7D1Ev();
extern void _ZN7S7166C7D0Ev();
extern void _ZN7S7166C93v23Ev();
extern void _ZN7S7166C93v24Ev();
extern void _ZN7S7166C93v25Ev();
extern void _ZN7S7166C83v26Ev();
extern void _ZN7S7166C83v27Ev();
extern void _ZN7S7166C83v28Ev();
extern void _ZN7S7166C83v29Ev();
extern void _ZN7S7166C83v30Ev();
extern void _ZN7S7166C83v31Ev();
extern void _ZN7S7166C73v32Ev();
extern void _ZN7S7166C73v33Ev();
extern void _ZN7S7166C73v34Ev();
static  VTBL_ENTRY vtc_S7166C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7166C7[0]),
  (VTBL_ENTRY)&_ZN7S7166C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7166C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7166C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7166C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7166C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7166C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7166C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7166C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7166C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7166C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7166C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7166C73v32Ev,
  (VTBL_ENTRY)&_ZN7S7166C73v33Ev,
  (VTBL_ENTRY)&_ZN7S7166C73v34Ev,
};
extern VTBL_ENTRY _ZTI7S7166C7[];
extern  VTBL_ENTRY _ZTV7S7166C7[];
Class_Descriptor cd_S7166C7 = {  "S7166C7", // class name
  bases_S7166C7, 2,
  &(vtc_S7166C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI7S7166C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7166C7),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  S7166C14  {
  virtual  ~S7166C14(); // _ZN8S7166C14D1Ev
  virtual void  v35(); // _ZN8S7166C143v35Ev
  S7166C14(); // tgen
};
//SIG(-1 S7166C14) C1{ vd v1}


 S7166C14 ::~S7166C14(){ note_dtor("S7166C14", this);}
void  S7166C14 ::v35(){vfunc_called(this, "_ZN8S7166C143v35Ev");}
S7166C14 ::S7166C14(){ note_ctor("S7166C14", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S7166C14C1Ev();
extern void _ZN8S7166C14D1Ev();
Name_Map name_map_S7166C14[] = {
  NSPAIR(_ZN8S7166C14C1Ev),
  NSPAIR(_ZN8S7166C14D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7166C14[];
extern void _ZN8S7166C14D1Ev();
extern void _ZN8S7166C14D0Ev();
extern void _ZN8S7166C143v35Ev();
static  VTBL_ENTRY vtc_S7166C14[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7166C14[0]),
  (VTBL_ENTRY)&_ZN8S7166C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7166C14D0Ev,
  (VTBL_ENTRY)&_ZN8S7166C143v35Ev,
};
extern VTBL_ENTRY _ZTI8S7166C14[];
extern  VTBL_ENTRY _ZTV8S7166C14[];
Class_Descriptor cd_S7166C14 = {  "S7166C14", // class name
  0,0,//no base classes
  &(vtc_S7166C14[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7166C14),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7166C14),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  S7166C16_nt  {
};
//SIG(-1 S7166C16_nt) C1{}



//skip512 S7166C16_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S7166C16_nt[];
VTBL_ENTRY *P__ZTI11S7166C16_nt = _ZTI11S7166C16_nt; 
Class_Descriptor cd_S7166C16_nt = {  "S7166C16_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI11S7166C16_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  S7166C17_nt  {
  int s7166c17f0;
};
//SIG(-1 S7166C17_nt) C1{ Fi}



//skip512 S7166C17_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7166C15_nt  : S7166C16_nt {
  ::S7166C17_nt s7166c15f0;
  ::S7166C17_nt s7166c15f1;
};
//SIG(-1 S7166C15_nt) C1{ BC2{} FC3{ Fi} FC3}



//skip512 S7166C15_nt

#else // __cplusplus

extern Class_Descriptor cd_S7166C16_nt;
extern VTBL_ENTRY _ZTI11S7166C16_nt[];
static Base_Class bases_S7166C15_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7166C16_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S7166C1  : S7166C2 , S7166C7 , S7166C14 {
  ::S7166C15_nt s7166c1f0;
  int s7166c1f1;
  void *s7166c1f2;
  virtual  ~S7166C1(); // _ZN7S7166C1D1Ev
  virtual void  v1(); // _ZN7S7166C12v1Ev
  virtual void  v2(); // _ZN7S7166C12v2Ev
  virtual void  v3(); // _ZN7S7166C12v3Ev
  virtual void  v4(); // _ZN7S7166C12v4Ev
  virtual void  v5(); // _ZN7S7166C12v5Ev
  virtual void  v6(); // _ZN7S7166C12v6Ev
  virtual void  v7(); // _ZN7S7166C12v7Ev
  S7166C1(); // tgen
};
//SIG(1 S7166C1) C1{ BC2{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fp FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}} BC7{ BC8{ BC9{ vd v23 v24 v25} vd v26 v27 v28 v29 v30 v31} vd v32 v33 v34 FC10{ m Fp Fi[2] FC5} FC11{ m FC12{ Fl[4]}} Fc} BC13{ vd v35} vd v1 v2 v3 v4 v5 v6 v7 FC14{ BC15{} FC16{ Fi} FC16} Fi Fp}


 S7166C1 ::~S7166C1(){ note_dtor("S7166C1", this);}
void  S7166C1 ::v1(){vfunc_called(this, "_ZN7S7166C12v1Ev");}
void  S7166C1 ::v2(){vfunc_called(this, "_ZN7S7166C12v2Ev");}
void  S7166C1 ::v3(){vfunc_called(this, "_ZN7S7166C12v3Ev");}
void  S7166C1 ::v4(){vfunc_called(this, "_ZN7S7166C12v4Ev");}
void  S7166C1 ::v5(){vfunc_called(this, "_ZN7S7166C12v5Ev");}
void  S7166C1 ::v6(){vfunc_called(this, "_ZN7S7166C12v6Ev");}
void  S7166C1 ::v7(){vfunc_called(this, "_ZN7S7166C12v7Ev");}
S7166C1 ::S7166C1(){ note_ctor("S7166C1", this);} // tgen

static void Test_S7166C1()
{
  extern Class_Descriptor cd_S7166C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,21)];
    init_test(&cd_S7166C1, buf);
    S7166C1 *dp, &lv = *(dp=new (buf) S7166C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,80), "sizeof(S7166C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7166C1)");
    check_base_class_offset(lv, (S7166C2*), 0, "S7166C1");
    check_base_class_offset(lv, (S7166C9*)(S7166C8*)(S7166C7*), ABISELECT(32,20), "S7166C1");
    check_base_class_offset(lv, (S7166C8*)(S7166C7*), ABISELECT(32,20), "S7166C1");
    check_base_class_offset(lv, (S7166C7*), ABISELECT(32,20), "S7166C1");
    check_base_class_offset(lv, (S7166C14*), ABISELECT(104,60), "S7166C1");
    check_field_offset(lv, s7166c1f0, ABISELECT(112,64), "S7166C1.s7166c1f0");
    check_field_offset(lv, s7166c1f1, ABISELECT(120,72), "S7166C1.s7166c1f1");
    check_field_offset(lv, s7166c1f2, ABISELECT(128,76), "S7166C1.s7166c1f2");
    test_class_info(&lv, &cd_S7166C1);
    dp->~S7166C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7166C1(Test_S7166C1, "S7166C1", ABISELECT(136,80));

#else // __cplusplus

extern void _ZN7S7166C1C1Ev();
extern void _ZN7S7166C1D1Ev();
Name_Map name_map_S7166C1[] = {
  NSPAIR(_ZN7S7166C1C1Ev),
  NSPAIR(_ZN7S7166C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7166C2;
extern VTBL_ENTRY _ZTI7S7166C2[];
extern  VTBL_ENTRY _ZTV7S7166C2[];
extern Class_Descriptor cd_S7166C9;
extern VTBL_ENTRY _ZTI7S7166C9[];
extern  VTBL_ENTRY _ZTV7S7166C9[];
extern Class_Descriptor cd_S7166C8;
extern VTBL_ENTRY _ZTI7S7166C8[];
extern  VTBL_ENTRY _ZTV7S7166C8[];
extern Class_Descriptor cd_S7166C7;
extern VTBL_ENTRY _ZTI7S7166C7[];
extern  VTBL_ENTRY _ZTV7S7166C7[];
extern Class_Descriptor cd_S7166C14;
extern VTBL_ENTRY _ZTI8S7166C14[];
extern  VTBL_ENTRY _ZTV8S7166C14[];
static Base_Class bases_S7166C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7166C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7166C9,    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_S7166C8,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7166C7,    ABISELECT(32,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7166C14,    ABISELECT(104,60), //bcp->offset
    42, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7166C1[];
extern void _ZN7S7166C1D1Ev();
extern void _ZN7S7166C1D0Ev();
extern void _ZN7S7166C22v8Ev();
extern void _ZN7S7166C22v9Ev();
extern void _ZN7S7166C23v10Ev();
extern void _ZN7S7166C23v11Ev();
extern void _ZN7S7166C23v12Ev();
extern void _ZN7S7166C23v13Ev();
extern void _ZN7S7166C23v14Ev();
extern void _ZN7S7166C23v15Ev();
extern void _ZN7S7166C23v16Ev();
extern void _ZN7S7166C23v17Ev();
extern void _ZN7S7166C23v18Ev();
extern void _ZN7S7166C23v19Ev();
extern void _ZN7S7166C23v20Ev();
extern void _ZN7S7166C23v21Ev();
extern void _ZN7S7166C23v22Ev();
extern void _ZN7S7166C12v1Ev();
extern void _ZN7S7166C12v2Ev();
extern void _ZN7S7166C12v3Ev();
extern void _ZN7S7166C12v4Ev();
extern void _ZN7S7166C12v5Ev();
extern void _ZN7S7166C12v6Ev();
extern void _ZN7S7166C12v7Ev();
extern void ABISELECT(_ZThn32_N7S7166C1D1Ev,_ZThn20_N7S7166C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S7166C1D0Ev,_ZThn20_N7S7166C1D0Ev)();
extern void _ZN7S7166C93v23Ev();
extern void _ZN7S7166C93v24Ev();
extern void _ZN7S7166C93v25Ev();
extern void _ZN7S7166C83v26Ev();
extern void _ZN7S7166C83v27Ev();
extern void _ZN7S7166C83v28Ev();
extern void _ZN7S7166C83v29Ev();
extern void _ZN7S7166C83v30Ev();
extern void _ZN7S7166C83v31Ev();
extern void _ZN7S7166C73v32Ev();
extern void _ZN7S7166C73v33Ev();
extern void _ZN7S7166C73v34Ev();
extern void ABISELECT(_ZThn104_N7S7166C1D1Ev,_ZThn60_N7S7166C1D1Ev)();
extern void ABISELECT(_ZThn104_N7S7166C1D0Ev,_ZThn60_N7S7166C1D0Ev)();
extern void _ZN8S7166C143v35Ev();
static  VTBL_ENTRY vtc_S7166C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7166C1[0]),
  (VTBL_ENTRY)&_ZN7S7166C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7166C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7166C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7166C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7166C23v22Ev,
  (VTBL_ENTRY)&_ZN7S7166C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7166C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7166C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7166C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7166C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7166C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7166C12v7Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7166C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7166C1D1Ev,_ZThn20_N7S7166C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7166C1D0Ev,_ZThn20_N7S7166C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7166C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7166C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7166C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7166C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7166C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7166C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7166C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7166C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7166C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7166C73v32Ev,
  (VTBL_ENTRY)&_ZN7S7166C73v33Ev,
  (VTBL_ENTRY)&_ZN7S7166C73v34Ev,
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S7166C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S7166C1D1Ev,_ZThn60_N7S7166C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S7166C1D0Ev,_ZThn60_N7S7166C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7166C143v35Ev,
};
extern VTBL_ENTRY _ZTI7S7166C1[];
extern  VTBL_ENTRY _ZTV7S7166C1[];
Class_Descriptor cd_S7166C1 = {  "S7166C1", // class name
  bases_S7166C1, 5,
  &(vtc_S7166C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,80), // object size
  NSPAIRA(_ZTI7S7166C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7166C1),47, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7170C2  {
  void *s7170c2f0;
  ::S3027C4_nt s7170c2f1;
  virtual  ~S7170C2(); // _ZN7S7170C2D1Ev
  virtual void  v8(); // _ZN7S7170C22v8Ev
  virtual void  v9(); // _ZN7S7170C22v9Ev
  virtual void  v10(); // _ZN7S7170C23v10Ev
  virtual void  v11(); // _ZN7S7170C23v11Ev
  virtual void  v12(); // _ZN7S7170C23v12Ev
  virtual void  v13(); // _ZN7S7170C23v13Ev
  virtual void  v14(); // _ZN7S7170C23v14Ev
  virtual void  v15(); // _ZN7S7170C23v15Ev
  virtual void  v16(); // _ZN7S7170C23v16Ev
  virtual void  v17(); // _ZN7S7170C23v17Ev
  virtual void  v18(); // _ZN7S7170C23v18Ev
  virtual void  v19(); // _ZN7S7170C23v19Ev
  virtual void  v20(); // _ZN7S7170C23v20Ev
  virtual void  v21(); // _ZN7S7170C23v21Ev
  virtual void  v22(); // _ZN7S7170C23v22Ev
  S7170C2(); // tgen
};
//SIG(-1 S7170C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp FC2{ BC3{ m Fp Fi FC4{ m} FC5{ m}}}}


 S7170C2 ::~S7170C2(){ note_dtor("S7170C2", this);}
void  S7170C2 ::v8(){vfunc_called(this, "_ZN7S7170C22v8Ev");}
void  S7170C2 ::v9(){vfunc_called(this, "_ZN7S7170C22v9Ev");}
void  S7170C2 ::v10(){vfunc_called(this, "_ZN7S7170C23v10Ev");}
void  S7170C2 ::v11(){vfunc_called(this, "_ZN7S7170C23v11Ev");}
void  S7170C2 ::v12(){vfunc_called(this, "_ZN7S7170C23v12Ev");}
void  S7170C2 ::v13(){vfunc_called(this, "_ZN7S7170C23v13Ev");}
void  S7170C2 ::v14(){vfunc_called(this, "_ZN7S7170C23v14Ev");}
void  S7170C2 ::v15(){vfunc_called(this, "_ZN7S7170C23v15Ev");}
void  S7170C2 ::v16(){vfunc_called(this, "_ZN7S7170C23v16Ev");}
void  S7170C2 ::v17(){vfunc_called(this, "_ZN7S7170C23v17Ev");}
void  S7170C2 ::v18(){vfunc_called(this, "_ZN7S7170C23v18Ev");}
void  S7170C2 ::v19(){vfunc_called(this, "_ZN7S7170C23v19Ev");}
void  S7170C2 ::v20(){vfunc_called(this, "_ZN7S7170C23v20Ev");}
void  S7170C2 ::v21(){vfunc_called(this, "_ZN7S7170C23v21Ev");}
void  S7170C2 ::v22(){vfunc_called(this, "_ZN7S7170C23v22Ev");}
S7170C2 ::S7170C2(){ note_ctor("S7170C2", this);} // tgen

static void Test_S7170C2()
{
  extern Class_Descriptor cd_S7170C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7170C2, buf);
    S7170C2 *dp, &lv = *(dp=new (buf) S7170C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7170C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7170C2)");
    check_field_offset(lv, s7170c2f0, ABISELECT(8,4), "S7170C2.s7170c2f0");
    check_field_offset(lv, s7170c2f1, ABISELECT(16,8), "S7170C2.s7170c2f1");
    test_class_info(&lv, &cd_S7170C2);
    dp->~S7170C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7170C2(Test_S7170C2, "S7170C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S7170C2C1Ev();
extern void _ZN7S7170C2D1Ev();
Name_Map name_map_S7170C2[] = {
  NSPAIR(_ZN7S7170C2C1Ev),
  NSPAIR(_ZN7S7170C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7170C2[];
extern void _ZN7S7170C2D1Ev();
extern void _ZN7S7170C2D0Ev();
extern void _ZN7S7170C22v8Ev();
extern void _ZN7S7170C22v9Ev();
extern void _ZN7S7170C23v10Ev();
extern void _ZN7S7170C23v11Ev();
extern void _ZN7S7170C23v12Ev();
extern void _ZN7S7170C23v13Ev();
extern void _ZN7S7170C23v14Ev();
extern void _ZN7S7170C23v15Ev();
extern void _ZN7S7170C23v16Ev();
extern void _ZN7S7170C23v17Ev();
extern void _ZN7S7170C23v18Ev();
extern void _ZN7S7170C23v19Ev();
extern void _ZN7S7170C23v20Ev();
extern void _ZN7S7170C23v21Ev();
extern void _ZN7S7170C23v22Ev();
static  VTBL_ENTRY vtc_S7170C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7170C2[0]),
  (VTBL_ENTRY)&_ZN7S7170C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7170C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7170C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7170C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v22Ev,
};
extern VTBL_ENTRY _ZTI7S7170C2[];
extern  VTBL_ENTRY _ZTV7S7170C2[];
Class_Descriptor cd_S7170C2 = {  "S7170C2", // class name
  0,0,//no base classes
  &(vtc_S7170C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S7170C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7170C2),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7170C9  {
  virtual  ~S7170C9(); // _ZN7S7170C9D1Ev
  virtual void  v23(); // _ZN7S7170C93v23Ev
  virtual void  v24(); // _ZN7S7170C93v24Ev
  virtual void  v25(); // _ZN7S7170C93v25Ev
  S7170C9(); // tgen
};
//SIG(-1 S7170C9) C1{ vd v1 v2 v3}


 S7170C9 ::~S7170C9(){ note_dtor("S7170C9", this);}
void  S7170C9 ::v23(){vfunc_called(this, "_ZN7S7170C93v23Ev");}
void  S7170C9 ::v24(){vfunc_called(this, "_ZN7S7170C93v24Ev");}
void  S7170C9 ::v25(){vfunc_called(this, "_ZN7S7170C93v25Ev");}
S7170C9 ::S7170C9(){ note_ctor("S7170C9", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7170C9C1Ev();
extern void _ZN7S7170C9D1Ev();
Name_Map name_map_S7170C9[] = {
  NSPAIR(_ZN7S7170C9C1Ev),
  NSPAIR(_ZN7S7170C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7170C9[];
extern void _ZN7S7170C9D1Ev();
extern void _ZN7S7170C9D0Ev();
extern void _ZN7S7170C93v23Ev();
extern void _ZN7S7170C93v24Ev();
extern void _ZN7S7170C93v25Ev();
static  VTBL_ENTRY vtc_S7170C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7170C9[0]),
  (VTBL_ENTRY)&_ZN7S7170C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7170C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7170C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7170C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7170C93v25Ev,
};
extern VTBL_ENTRY _ZTI7S7170C9[];
extern  VTBL_ENTRY _ZTV7S7170C9[];
Class_Descriptor cd_S7170C9 = {  "S7170C9", // class name
  0,0,//no base classes
  &(vtc_S7170C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7170C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7170C9),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  S7170C8  : S7170C9 {
  virtual  ~S7170C8(); // _ZN7S7170C8D1Ev
  virtual void  v26(); // _ZN7S7170C83v26Ev
  virtual void  v27(); // _ZN7S7170C83v27Ev
  virtual void  v28(); // _ZN7S7170C83v28Ev
  virtual void  v29(); // _ZN7S7170C83v29Ev
  virtual void  v30(); // _ZN7S7170C83v30Ev
  virtual void  v31(); // _ZN7S7170C83v31Ev
  S7170C8(); // tgen
};
//SIG(-1 S7170C8) C1{ BC2{ vd v7 v8 v9} vd v1 v2 v3 v4 v5 v6}


 S7170C8 ::~S7170C8(){ note_dtor("S7170C8", this);}
void  S7170C8 ::v26(){vfunc_called(this, "_ZN7S7170C83v26Ev");}
void  S7170C8 ::v27(){vfunc_called(this, "_ZN7S7170C83v27Ev");}
void  S7170C8 ::v28(){vfunc_called(this, "_ZN7S7170C83v28Ev");}
void  S7170C8 ::v29(){vfunc_called(this, "_ZN7S7170C83v29Ev");}
void  S7170C8 ::v30(){vfunc_called(this, "_ZN7S7170C83v30Ev");}
void  S7170C8 ::v31(){vfunc_called(this, "_ZN7S7170C83v31Ev");}
S7170C8 ::S7170C8(){ note_ctor("S7170C8", this);} // tgen

static void Test_S7170C8()
{
  extern Class_Descriptor cd_S7170C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7170C8, buf);
    S7170C8 *dp, &lv = *(dp=new (buf) S7170C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7170C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7170C8)");
    check_base_class_offset(lv, (S7170C9*), 0, "S7170C8");
    test_class_info(&lv, &cd_S7170C8);
    dp->~S7170C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7170C8(Test_S7170C8, "S7170C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7170C8C1Ev();
extern void _ZN7S7170C8D1Ev();
Name_Map name_map_S7170C8[] = {
  NSPAIR(_ZN7S7170C8C1Ev),
  NSPAIR(_ZN7S7170C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7170C9;
extern VTBL_ENTRY _ZTI7S7170C9[];
extern  VTBL_ENTRY _ZTV7S7170C9[];
static Base_Class bases_S7170C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7170C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7170C8[];
extern void _ZN7S7170C8D1Ev();
extern void _ZN7S7170C8D0Ev();
extern void _ZN7S7170C93v23Ev();
extern void _ZN7S7170C93v24Ev();
extern void _ZN7S7170C93v25Ev();
extern void _ZN7S7170C83v26Ev();
extern void _ZN7S7170C83v27Ev();
extern void _ZN7S7170C83v28Ev();
extern void _ZN7S7170C83v29Ev();
extern void _ZN7S7170C83v30Ev();
extern void _ZN7S7170C83v31Ev();
static  VTBL_ENTRY vtc_S7170C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7170C8[0]),
  (VTBL_ENTRY)&_ZN7S7170C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7170C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7170C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7170C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7170C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7170C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7170C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7170C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7170C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7170C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7170C83v31Ev,
};
extern VTBL_ENTRY _ZTI7S7170C8[];
extern  VTBL_ENTRY _ZTV7S7170C8[];
Class_Descriptor cd_S7170C8 = {  "S7170C8", // class name
  bases_S7170C8, 1,
  &(vtc_S7170C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7170C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7170C8),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  S7170C7  : S7170C8 {
  ::S731C20 s7170c7f0;
  ::S3029C15_nt s7170c7f1;
  char s7170c7f2;
  virtual  ~S7170C7(); // _ZN7S7170C7D1Ev
  virtual void  v32(); // _ZN7S7170C73v32Ev
  virtual void  v33(); // _ZN7S7170C73v33Ev
  virtual void  v34(); // _ZN7S7170C73v34Ev
  S7170C7(); // tgen
};
//SIG(-1 S7170C7) C1{ BC2{ BC3{ vd v4 v5 v6} vd v7 v8 v9 v10 v11 v12} vd v1 v2 v3 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FL[4]} Fc}


 S7170C7 ::~S7170C7(){ note_dtor("S7170C7", this);}
void  S7170C7 ::v32(){vfunc_called(this, "_ZN7S7170C73v32Ev");}
void  S7170C7 ::v33(){vfunc_called(this, "_ZN7S7170C73v33Ev");}
void  S7170C7 ::v34(){vfunc_called(this, "_ZN7S7170C73v34Ev");}
S7170C7 ::S7170C7(){ note_ctor("S7170C7", this);} // tgen

static void Test_S7170C7()
{
  extern Class_Descriptor cd_S7170C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S7170C7, buf);
    S7170C7 *dp, &lv = *(dp=new (buf) S7170C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S7170C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7170C7)");
    check_base_class_offset(lv, (S7170C9*)(S7170C8*), 0, "S7170C7");
    check_base_class_offset(lv, (S7170C8*), 0, "S7170C7");
    check_field_offset(lv, s7170c7f0, ABISELECT(8,4), "S7170C7.s7170c7f0");
    check_field_offset(lv, s7170c7f1, ABISELECT(32,20), "S7170C7.s7170c7f1");
    check_field_offset(lv, s7170c7f2, ABISELECT(64,52), "S7170C7.s7170c7f2");
    test_class_info(&lv, &cd_S7170C7);
    dp->~S7170C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7170C7(Test_S7170C7, "S7170C7", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S7170C7C1Ev();
extern void _ZN7S7170C7D1Ev();
Name_Map name_map_S7170C7[] = {
  NSPAIR(_ZN7S7170C7C1Ev),
  NSPAIR(_ZN7S7170C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7170C9;
extern VTBL_ENTRY _ZTI7S7170C9[];
extern  VTBL_ENTRY _ZTV7S7170C9[];
extern Class_Descriptor cd_S7170C8;
extern VTBL_ENTRY _ZTI7S7170C8[];
extern  VTBL_ENTRY _ZTV7S7170C8[];
static Base_Class bases_S7170C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7170C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7170C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S7170C7[];
extern void _ZN7S7170C7D1Ev();
extern void _ZN7S7170C7D0Ev();
extern void _ZN7S7170C93v23Ev();
extern void _ZN7S7170C93v24Ev();
extern void _ZN7S7170C93v25Ev();
extern void _ZN7S7170C83v26Ev();
extern void _ZN7S7170C83v27Ev();
extern void _ZN7S7170C83v28Ev();
extern void _ZN7S7170C83v29Ev();
extern void _ZN7S7170C83v30Ev();
extern void _ZN7S7170C83v31Ev();
extern void _ZN7S7170C73v32Ev();
extern void _ZN7S7170C73v33Ev();
extern void _ZN7S7170C73v34Ev();
static  VTBL_ENTRY vtc_S7170C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7170C7[0]),
  (VTBL_ENTRY)&_ZN7S7170C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7170C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7170C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7170C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7170C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7170C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7170C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7170C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7170C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7170C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7170C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7170C73v32Ev,
  (VTBL_ENTRY)&_ZN7S7170C73v33Ev,
  (VTBL_ENTRY)&_ZN7S7170C73v34Ev,
};
extern VTBL_ENTRY _ZTI7S7170C7[];
extern  VTBL_ENTRY _ZTV7S7170C7[];
Class_Descriptor cd_S7170C7 = {  "S7170C7", // class name
  bases_S7170C7, 2,
  &(vtc_S7170C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S7170C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7170C7),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  S7170C13  {
  virtual  ~S7170C13(); // _ZN8S7170C13D1Ev
  virtual void  v35(); // _ZN8S7170C133v35Ev
  S7170C13(); // tgen
};
//SIG(-1 S7170C13) C1{ vd v1}


 S7170C13 ::~S7170C13(){ note_dtor("S7170C13", this);}
void  S7170C13 ::v35(){vfunc_called(this, "_ZN8S7170C133v35Ev");}
S7170C13 ::S7170C13(){ note_ctor("S7170C13", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S7170C13C1Ev();
extern void _ZN8S7170C13D1Ev();
Name_Map name_map_S7170C13[] = {
  NSPAIR(_ZN8S7170C13C1Ev),
  NSPAIR(_ZN8S7170C13D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7170C13[];
extern void _ZN8S7170C13D1Ev();
extern void _ZN8S7170C13D0Ev();
extern void _ZN8S7170C133v35Ev();
static  VTBL_ENTRY vtc_S7170C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7170C13[0]),
  (VTBL_ENTRY)&_ZN8S7170C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7170C13D0Ev,
  (VTBL_ENTRY)&_ZN8S7170C133v35Ev,
};
extern VTBL_ENTRY _ZTI8S7170C13[];
extern  VTBL_ENTRY _ZTV8S7170C13[];
Class_Descriptor cd_S7170C13 = {  "S7170C13", // class name
  0,0,//no base classes
  &(vtc_S7170C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7170C13),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7170C13),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  S7170C1  : S7170C2 , S7170C7 , S7170C13 {
  ::S7166C15_nt s7170c1f0;
  int s7170c1f1;
  void *s7170c1f2;
  virtual  ~S7170C1(); // _ZN7S7170C1D1Ev
  virtual void  v1(); // _ZN7S7170C12v1Ev
  virtual void  v2(); // _ZN7S7170C12v2Ev
  virtual void  v3(); // _ZN7S7170C12v3Ev
  virtual void  v4(); // _ZN7S7170C12v4Ev
  virtual void  v5(); // _ZN7S7170C12v5Ev
  virtual void  v6(); // _ZN7S7170C12v6Ev
  virtual void  v7(); // _ZN7S7170C12v7Ev
  S7170C1(); // tgen
};
//SIG(1 S7170C1) C1{ BC2{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fp FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}} BC7{ BC8{ BC9{ vd v23 v24 v25} vd v26 v27 v28 v29 v30 v31} vd v32 v33 v34 FC10{ m Fp Fi[2] FC5} FC11{ m FL[4]} Fc} BC12{ vd v35} vd v1 v2 v3 v4 v5 v6 v7 FC13{ BC14{} FC15{ Fi} FC15} Fi Fp}


 S7170C1 ::~S7170C1(){ note_dtor("S7170C1", this);}
void  S7170C1 ::v1(){vfunc_called(this, "_ZN7S7170C12v1Ev");}
void  S7170C1 ::v2(){vfunc_called(this, "_ZN7S7170C12v2Ev");}
void  S7170C1 ::v3(){vfunc_called(this, "_ZN7S7170C12v3Ev");}
void  S7170C1 ::v4(){vfunc_called(this, "_ZN7S7170C12v4Ev");}
void  S7170C1 ::v5(){vfunc_called(this, "_ZN7S7170C12v5Ev");}
void  S7170C1 ::v6(){vfunc_called(this, "_ZN7S7170C12v6Ev");}
void  S7170C1 ::v7(){vfunc_called(this, "_ZN7S7170C12v7Ev");}
S7170C1 ::S7170C1(){ note_ctor("S7170C1", this);} // tgen

static void Test_S7170C1()
{
  extern Class_Descriptor cd_S7170C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,25)];
    init_test(&cd_S7170C1, buf);
    S7170C1 *dp, &lv = *(dp=new (buf) S7170C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,96), "sizeof(S7170C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7170C1)");
    check_base_class_offset(lv, (S7170C2*), 0, "S7170C1");
    check_base_class_offset(lv, (S7170C9*)(S7170C8*)(S7170C7*), ABISELECT(32,20), "S7170C1");
    check_base_class_offset(lv, (S7170C8*)(S7170C7*), ABISELECT(32,20), "S7170C1");
    check_base_class_offset(lv, (S7170C7*), ABISELECT(32,20), "S7170C1");
    check_base_class_offset(lv, (S7170C13*), ABISELECT(104,76), "S7170C1");
    check_field_offset(lv, s7170c1f0, ABISELECT(112,80), "S7170C1.s7170c1f0");
    check_field_offset(lv, s7170c1f1, ABISELECT(120,88), "S7170C1.s7170c1f1");
    check_field_offset(lv, s7170c1f2, ABISELECT(128,92), "S7170C1.s7170c1f2");
    test_class_info(&lv, &cd_S7170C1);
    dp->~S7170C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7170C1(Test_S7170C1, "S7170C1", ABISELECT(136,96));

#else // __cplusplus

extern void _ZN7S7170C1C1Ev();
extern void _ZN7S7170C1D1Ev();
Name_Map name_map_S7170C1[] = {
  NSPAIR(_ZN7S7170C1C1Ev),
  NSPAIR(_ZN7S7170C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7170C2;
extern VTBL_ENTRY _ZTI7S7170C2[];
extern  VTBL_ENTRY _ZTV7S7170C2[];
extern Class_Descriptor cd_S7170C9;
extern VTBL_ENTRY _ZTI7S7170C9[];
extern  VTBL_ENTRY _ZTV7S7170C9[];
extern Class_Descriptor cd_S7170C8;
extern VTBL_ENTRY _ZTI7S7170C8[];
extern  VTBL_ENTRY _ZTV7S7170C8[];
extern Class_Descriptor cd_S7170C7;
extern VTBL_ENTRY _ZTI7S7170C7[];
extern  VTBL_ENTRY _ZTV7S7170C7[];
extern Class_Descriptor cd_S7170C13;
extern VTBL_ENTRY _ZTI8S7170C13[];
extern  VTBL_ENTRY _ZTV8S7170C13[];
static Base_Class bases_S7170C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7170C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7170C9,    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_S7170C8,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7170C7,    ABISELECT(32,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7170C13,    ABISELECT(104,76), //bcp->offset
    42, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7170C1[];
extern void _ZN7S7170C1D1Ev();
extern void _ZN7S7170C1D0Ev();
extern void _ZN7S7170C22v8Ev();
extern void _ZN7S7170C22v9Ev();
extern void _ZN7S7170C23v10Ev();
extern void _ZN7S7170C23v11Ev();
extern void _ZN7S7170C23v12Ev();
extern void _ZN7S7170C23v13Ev();
extern void _ZN7S7170C23v14Ev();
extern void _ZN7S7170C23v15Ev();
extern void _ZN7S7170C23v16Ev();
extern void _ZN7S7170C23v17Ev();
extern void _ZN7S7170C23v18Ev();
extern void _ZN7S7170C23v19Ev();
extern void _ZN7S7170C23v20Ev();
extern void _ZN7S7170C23v21Ev();
extern void _ZN7S7170C23v22Ev();
extern void _ZN7S7170C12v1Ev();
extern void _ZN7S7170C12v2Ev();
extern void _ZN7S7170C12v3Ev();
extern void _ZN7S7170C12v4Ev();
extern void _ZN7S7170C12v5Ev();
extern void _ZN7S7170C12v6Ev();
extern void _ZN7S7170C12v7Ev();
extern void ABISELECT(_ZThn32_N7S7170C1D1Ev,_ZThn20_N7S7170C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S7170C1D0Ev,_ZThn20_N7S7170C1D0Ev)();
extern void _ZN7S7170C93v23Ev();
extern void _ZN7S7170C93v24Ev();
extern void _ZN7S7170C93v25Ev();
extern void _ZN7S7170C83v26Ev();
extern void _ZN7S7170C83v27Ev();
extern void _ZN7S7170C83v28Ev();
extern void _ZN7S7170C83v29Ev();
extern void _ZN7S7170C83v30Ev();
extern void _ZN7S7170C83v31Ev();
extern void _ZN7S7170C73v32Ev();
extern void _ZN7S7170C73v33Ev();
extern void _ZN7S7170C73v34Ev();
extern void ABISELECT(_ZThn104_N7S7170C1D1Ev,_ZThn76_N7S7170C1D1Ev)();
extern void ABISELECT(_ZThn104_N7S7170C1D0Ev,_ZThn76_N7S7170C1D0Ev)();
extern void _ZN8S7170C133v35Ev();
static  VTBL_ENTRY vtc_S7170C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7170C1[0]),
  (VTBL_ENTRY)&_ZN7S7170C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7170C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7170C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7170C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7170C23v22Ev,
  (VTBL_ENTRY)&_ZN7S7170C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7170C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7170C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7170C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7170C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7170C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7170C12v7Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7170C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7170C1D1Ev,_ZThn20_N7S7170C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7170C1D0Ev,_ZThn20_N7S7170C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7170C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7170C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7170C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7170C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7170C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7170C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7170C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7170C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7170C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7170C73v32Ev,
  (VTBL_ENTRY)&_ZN7S7170C73v33Ev,
  (VTBL_ENTRY)&_ZN7S7170C73v34Ev,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI7S7170C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S7170C1D1Ev,_ZThn76_N7S7170C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S7170C1D0Ev,_ZThn76_N7S7170C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7170C133v35Ev,
};
extern VTBL_ENTRY _ZTI7S7170C1[];
extern  VTBL_ENTRY _ZTV7S7170C1[];
Class_Descriptor cd_S7170C1 = {  "S7170C1", // class name
  bases_S7170C1, 5,
  &(vtc_S7170C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,96), // object size
  NSPAIRA(_ZTI7S7170C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7170C1),47, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6470C2  {
  void *s6470c2f0;
  ::S3027C4_nt s6470c2f1;
  virtual  ~S6470C2(); // _ZN7S6470C2D1Ev
  virtual void  v13(); // _ZN7S6470C23v13Ev
  virtual void  v14(); // _ZN7S6470C23v14Ev
  virtual void  v15(); // _ZN7S6470C23v15Ev
  virtual void  v16(); // _ZN7S6470C23v16Ev
  virtual void  v17(); // _ZN7S6470C23v17Ev
  virtual void  v18(); // _ZN7S6470C23v18Ev
  virtual void  v19(); // _ZN7S6470C23v19Ev
  virtual void  v20(); // _ZN7S6470C23v20Ev
  virtual void  v21(); // _ZN7S6470C23v21Ev
  virtual void  v22(); // _ZN7S6470C23v22Ev
  virtual void  v23(); // _ZN7S6470C23v23Ev
  virtual void  v24(); // _ZN7S6470C23v24Ev
  virtual void  v25(); // _ZN7S6470C23v25Ev
  virtual void  v26(); // _ZN7S6470C23v26Ev
  virtual void  v27(); // _ZN7S6470C23v27Ev
  S6470C2(); // tgen
};
//SIG(-1 S6470C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp FC2{ BC3{ m Fp Fi FC4{ m} FC5{ m}}}}


 S6470C2 ::~S6470C2(){ note_dtor("S6470C2", this);}
void  S6470C2 ::v13(){vfunc_called(this, "_ZN7S6470C23v13Ev");}
void  S6470C2 ::v14(){vfunc_called(this, "_ZN7S6470C23v14Ev");}
void  S6470C2 ::v15(){vfunc_called(this, "_ZN7S6470C23v15Ev");}
void  S6470C2 ::v16(){vfunc_called(this, "_ZN7S6470C23v16Ev");}
void  S6470C2 ::v17(){vfunc_called(this, "_ZN7S6470C23v17Ev");}
void  S6470C2 ::v18(){vfunc_called(this, "_ZN7S6470C23v18Ev");}
void  S6470C2 ::v19(){vfunc_called(this, "_ZN7S6470C23v19Ev");}
void  S6470C2 ::v20(){vfunc_called(this, "_ZN7S6470C23v20Ev");}
void  S6470C2 ::v21(){vfunc_called(this, "_ZN7S6470C23v21Ev");}
void  S6470C2 ::v22(){vfunc_called(this, "_ZN7S6470C23v22Ev");}
void  S6470C2 ::v23(){vfunc_called(this, "_ZN7S6470C23v23Ev");}
void  S6470C2 ::v24(){vfunc_called(this, "_ZN7S6470C23v24Ev");}
void  S6470C2 ::v25(){vfunc_called(this, "_ZN7S6470C23v25Ev");}
void  S6470C2 ::v26(){vfunc_called(this, "_ZN7S6470C23v26Ev");}
void  S6470C2 ::v27(){vfunc_called(this, "_ZN7S6470C23v27Ev");}
S6470C2 ::S6470C2(){ note_ctor("S6470C2", this);} // tgen

static void Test_S6470C2()
{
  extern Class_Descriptor cd_S6470C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S6470C2, buf);
    S6470C2 *dp, &lv = *(dp=new (buf) S6470C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S6470C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6470C2)");
    check_field_offset(lv, s6470c2f0, ABISELECT(8,4), "S6470C2.s6470c2f0");
    check_field_offset(lv, s6470c2f1, ABISELECT(16,8), "S6470C2.s6470c2f1");
    test_class_info(&lv, &cd_S6470C2);
    dp->~S6470C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6470C2(Test_S6470C2, "S6470C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S6470C2C1Ev();
extern void _ZN7S6470C2D1Ev();
Name_Map name_map_S6470C2[] = {
  NSPAIR(_ZN7S6470C2C1Ev),
  NSPAIR(_ZN7S6470C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6470C2[];
extern void _ZN7S6470C2D1Ev();
extern void _ZN7S6470C2D0Ev();
extern void _ZN7S6470C23v13Ev();
extern void _ZN7S6470C23v14Ev();
extern void _ZN7S6470C23v15Ev();
extern void _ZN7S6470C23v16Ev();
extern void _ZN7S6470C23v17Ev();
extern void _ZN7S6470C23v18Ev();
extern void _ZN7S6470C23v19Ev();
extern void _ZN7S6470C23v20Ev();
extern void _ZN7S6470C23v21Ev();
extern void _ZN7S6470C23v22Ev();
extern void _ZN7S6470C23v23Ev();
extern void _ZN7S6470C23v24Ev();
extern void _ZN7S6470C23v25Ev();
extern void _ZN7S6470C23v26Ev();
extern void _ZN7S6470C23v27Ev();
static  VTBL_ENTRY vtc_S6470C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6470C2[0]),
  (VTBL_ENTRY)&_ZN7S6470C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6470C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v27Ev,
};
extern VTBL_ENTRY _ZTI7S6470C2[];
extern  VTBL_ENTRY _ZTV7S6470C2[];
Class_Descriptor cd_S6470C2 = {  "S6470C2", // class name
  0,0,//no base classes
  &(vtc_S6470C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S6470C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6470C2),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6470C9  {
  virtual  ~S6470C9(); // _ZN7S6470C9D1Ev
  virtual void  v28(); // _ZN7S6470C93v28Ev
  virtual void  v29(); // _ZN7S6470C93v29Ev
  virtual void  v30(); // _ZN7S6470C93v30Ev
  S6470C9(); // tgen
};
//SIG(-1 S6470C9) C1{ vd v1 v2 v3}


 S6470C9 ::~S6470C9(){ note_dtor("S6470C9", this);}
void  S6470C9 ::v28(){vfunc_called(this, "_ZN7S6470C93v28Ev");}
void  S6470C9 ::v29(){vfunc_called(this, "_ZN7S6470C93v29Ev");}
void  S6470C9 ::v30(){vfunc_called(this, "_ZN7S6470C93v30Ev");}
S6470C9 ::S6470C9(){ note_ctor("S6470C9", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6470C9C1Ev();
extern void _ZN7S6470C9D1Ev();
Name_Map name_map_S6470C9[] = {
  NSPAIR(_ZN7S6470C9C1Ev),
  NSPAIR(_ZN7S6470C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6470C9[];
extern void _ZN7S6470C9D1Ev();
extern void _ZN7S6470C9D0Ev();
extern void _ZN7S6470C93v28Ev();
extern void _ZN7S6470C93v29Ev();
extern void _ZN7S6470C93v30Ev();
static  VTBL_ENTRY vtc_S6470C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6470C9[0]),
  (VTBL_ENTRY)&_ZN7S6470C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6470C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6470C93v28Ev,
  (VTBL_ENTRY)&_ZN7S6470C93v29Ev,
  (VTBL_ENTRY)&_ZN7S6470C93v30Ev,
};
extern VTBL_ENTRY _ZTI7S6470C9[];
extern  VTBL_ENTRY _ZTV7S6470C9[];
Class_Descriptor cd_S6470C9 = {  "S6470C9", // class name
  0,0,//no base classes
  &(vtc_S6470C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6470C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6470C9),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  S6470C8  : S6470C9 {
  virtual  ~S6470C8(); // _ZN7S6470C8D1Ev
  virtual void  v31(); // _ZN7S6470C83v31Ev
  virtual void  v32(); // _ZN7S6470C83v32Ev
  virtual void  v33(); // _ZN7S6470C83v33Ev
  virtual void  v34(); // _ZN7S6470C83v34Ev
  virtual void  v35(); // _ZN7S6470C83v35Ev
  virtual void  v36(); // _ZN7S6470C83v36Ev
  S6470C8(); // tgen
};
//SIG(-1 S6470C8) C1{ BC2{ vd v7 v8 v9} vd v1 v2 v3 v4 v5 v6}


 S6470C8 ::~S6470C8(){ note_dtor("S6470C8", this);}
void  S6470C8 ::v31(){vfunc_called(this, "_ZN7S6470C83v31Ev");}
void  S6470C8 ::v32(){vfunc_called(this, "_ZN7S6470C83v32Ev");}
void  S6470C8 ::v33(){vfunc_called(this, "_ZN7S6470C83v33Ev");}
void  S6470C8 ::v34(){vfunc_called(this, "_ZN7S6470C83v34Ev");}
void  S6470C8 ::v35(){vfunc_called(this, "_ZN7S6470C83v35Ev");}
void  S6470C8 ::v36(){vfunc_called(this, "_ZN7S6470C83v36Ev");}
S6470C8 ::S6470C8(){ note_ctor("S6470C8", this);} // tgen

static void Test_S6470C8()
{
  extern Class_Descriptor cd_S6470C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6470C8, buf);
    S6470C8 *dp, &lv = *(dp=new (buf) S6470C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6470C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6470C8)");
    check_base_class_offset(lv, (S6470C9*), 0, "S6470C8");
    test_class_info(&lv, &cd_S6470C8);
    dp->~S6470C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6470C8(Test_S6470C8, "S6470C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6470C8C1Ev();
extern void _ZN7S6470C8D1Ev();
Name_Map name_map_S6470C8[] = {
  NSPAIR(_ZN7S6470C8C1Ev),
  NSPAIR(_ZN7S6470C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6470C9;
extern VTBL_ENTRY _ZTI7S6470C9[];
extern  VTBL_ENTRY _ZTV7S6470C9[];
static Base_Class bases_S6470C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6470C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6470C8[];
extern void _ZN7S6470C8D1Ev();
extern void _ZN7S6470C8D0Ev();
extern void _ZN7S6470C93v28Ev();
extern void _ZN7S6470C93v29Ev();
extern void _ZN7S6470C93v30Ev();
extern void _ZN7S6470C83v31Ev();
extern void _ZN7S6470C83v32Ev();
extern void _ZN7S6470C83v33Ev();
extern void _ZN7S6470C83v34Ev();
extern void _ZN7S6470C83v35Ev();
extern void _ZN7S6470C83v36Ev();
static  VTBL_ENTRY vtc_S6470C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6470C8[0]),
  (VTBL_ENTRY)&_ZN7S6470C8D1Ev,
  (VTBL_ENTRY)&_ZN7S6470C8D0Ev,
  (VTBL_ENTRY)&_ZN7S6470C93v28Ev,
  (VTBL_ENTRY)&_ZN7S6470C93v29Ev,
  (VTBL_ENTRY)&_ZN7S6470C93v30Ev,
  (VTBL_ENTRY)&_ZN7S6470C83v31Ev,
  (VTBL_ENTRY)&_ZN7S6470C83v32Ev,
  (VTBL_ENTRY)&_ZN7S6470C83v33Ev,
  (VTBL_ENTRY)&_ZN7S6470C83v34Ev,
  (VTBL_ENTRY)&_ZN7S6470C83v35Ev,
  (VTBL_ENTRY)&_ZN7S6470C83v36Ev,
};
extern VTBL_ENTRY _ZTI7S6470C8[];
extern  VTBL_ENTRY _ZTV7S6470C8[];
Class_Descriptor cd_S6470C8 = {  "S6470C8", // class name
  bases_S6470C8, 1,
  &(vtc_S6470C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6470C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6470C8),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  S6470C7  : S6470C8 {
  ::S731C20 s6470c7f0;
  ::S3027C15_nt s6470c7f1;
  char s6470c7f2;
  virtual  ~S6470C7(); // _ZN7S6470C7D1Ev
  virtual void  v37(); // _ZN7S6470C73v37Ev
  virtual void  v38(); // _ZN7S6470C73v38Ev
  virtual void  v39(); // _ZN7S6470C73v39Ev
  S6470C7(); // tgen
};
//SIG(-1 S6470C7) C1{ BC2{ BC3{ vd v4 v5 v6} vd v7 v8 v9 v10 v11 v12} vd v1 v2 v3 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FC7{ Fl[4]}} Fc}


 S6470C7 ::~S6470C7(){ note_dtor("S6470C7", this);}
void  S6470C7 ::v37(){vfunc_called(this, "_ZN7S6470C73v37Ev");}
void  S6470C7 ::v38(){vfunc_called(this, "_ZN7S6470C73v38Ev");}
void  S6470C7 ::v39(){vfunc_called(this, "_ZN7S6470C73v39Ev");}
S6470C7 ::S6470C7(){ note_ctor("S6470C7", this);} // tgen

static void Test_S6470C7()
{
  extern Class_Descriptor cd_S6470C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S6470C7, buf);
    S6470C7 *dp, &lv = *(dp=new (buf) S6470C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S6470C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6470C7)");
    check_base_class_offset(lv, (S6470C9*)(S6470C8*), 0, "S6470C7");
    check_base_class_offset(lv, (S6470C8*), 0, "S6470C7");
    check_field_offset(lv, s6470c7f0, ABISELECT(8,4), "S6470C7.s6470c7f0");
    check_field_offset(lv, s6470c7f1, ABISELECT(32,20), "S6470C7.s6470c7f1");
    check_field_offset(lv, s6470c7f2, ABISELECT(64,36), "S6470C7.s6470c7f2");
    test_class_info(&lv, &cd_S6470C7);
    dp->~S6470C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6470C7(Test_S6470C7, "S6470C7", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN7S6470C7C1Ev();
extern void _ZN7S6470C7D1Ev();
Name_Map name_map_S6470C7[] = {
  NSPAIR(_ZN7S6470C7C1Ev),
  NSPAIR(_ZN7S6470C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6470C9;
extern VTBL_ENTRY _ZTI7S6470C9[];
extern  VTBL_ENTRY _ZTV7S6470C9[];
extern Class_Descriptor cd_S6470C8;
extern VTBL_ENTRY _ZTI7S6470C8[];
extern  VTBL_ENTRY _ZTV7S6470C8[];
static Base_Class bases_S6470C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6470C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S6470C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S6470C7[];
extern void _ZN7S6470C7D1Ev();
extern void _ZN7S6470C7D0Ev();
extern void _ZN7S6470C93v28Ev();
extern void _ZN7S6470C93v29Ev();
extern void _ZN7S6470C93v30Ev();
extern void _ZN7S6470C83v31Ev();
extern void _ZN7S6470C83v32Ev();
extern void _ZN7S6470C83v33Ev();
extern void _ZN7S6470C83v34Ev();
extern void _ZN7S6470C83v35Ev();
extern void _ZN7S6470C83v36Ev();
extern void _ZN7S6470C73v37Ev();
extern void _ZN7S6470C73v38Ev();
extern void _ZN7S6470C73v39Ev();
static  VTBL_ENTRY vtc_S6470C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6470C7[0]),
  (VTBL_ENTRY)&_ZN7S6470C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6470C7D0Ev,
  (VTBL_ENTRY)&_ZN7S6470C93v28Ev,
  (VTBL_ENTRY)&_ZN7S6470C93v29Ev,
  (VTBL_ENTRY)&_ZN7S6470C93v30Ev,
  (VTBL_ENTRY)&_ZN7S6470C83v31Ev,
  (VTBL_ENTRY)&_ZN7S6470C83v32Ev,
  (VTBL_ENTRY)&_ZN7S6470C83v33Ev,
  (VTBL_ENTRY)&_ZN7S6470C83v34Ev,
  (VTBL_ENTRY)&_ZN7S6470C83v35Ev,
  (VTBL_ENTRY)&_ZN7S6470C83v36Ev,
  (VTBL_ENTRY)&_ZN7S6470C73v37Ev,
  (VTBL_ENTRY)&_ZN7S6470C73v38Ev,
  (VTBL_ENTRY)&_ZN7S6470C73v39Ev,
};
extern VTBL_ENTRY _ZTI7S6470C7[];
extern  VTBL_ENTRY _ZTV7S6470C7[];
Class_Descriptor cd_S6470C7 = {  "S6470C7", // class name
  bases_S6470C7, 2,
  &(vtc_S6470C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI7S6470C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6470C7),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  S6470C14_nt  : S7166C16_nt {
  char s6470c14f0;
};
//SIG(-1 S6470C14_nt) C1{ BC2{} Fc}



//skip512 S6470C14_nt

#else // __cplusplus

extern Class_Descriptor cd_S7166C16_nt;
extern VTBL_ENTRY _ZTI11S7166C16_nt[];
static Base_Class bases_S6470C14_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7166C16_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S6470C1  : S6470C2 , S6470C7 {
  void *s6470c1f0;
  ::S6470C14_nt s6470c1f1;
  virtual  ~S6470C1(); // _ZN7S6470C1D1Ev
  virtual void  v1(); // _ZN7S6470C12v1Ev
  virtual void  v2(); // _ZN7S6470C12v2Ev
  virtual void  v3(); // _ZN7S6470C12v3Ev
  virtual void  v4(); // _ZN7S6470C12v4Ev
  virtual void  v5(); // _ZN7S6470C12v5Ev
  virtual void  v6(); // _ZN7S6470C12v6Ev
  virtual void  v7(); // _ZN7S6470C12v7Ev
  virtual void  v8(); // _ZN7S6470C12v8Ev
  virtual void  v9(); // _ZN7S6470C12v9Ev
  virtual void  v10(); // _ZN7S6470C13v10Ev
  virtual void  v11(); // _ZN7S6470C13v11Ev
  virtual void  v12(); // _ZN7S6470C13v12Ev
  S6470C1(); // tgen
};
//SIG(1 S6470C1) C1{ BC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 Fp FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}} BC7{ BC8{ BC9{ vd v28 v29 v30} vd v31 v32 v33 v34 v35 v36} vd v37 v38 v39 FC10{ m Fp Fi[2] FC5} FC11{ m FC12{ Fl[4]}} Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 Fp FC13{ BC14{} Fc}}


 S6470C1 ::~S6470C1(){ note_dtor("S6470C1", this);}
void  S6470C1 ::v1(){vfunc_called(this, "_ZN7S6470C12v1Ev");}
void  S6470C1 ::v2(){vfunc_called(this, "_ZN7S6470C12v2Ev");}
void  S6470C1 ::v3(){vfunc_called(this, "_ZN7S6470C12v3Ev");}
void  S6470C1 ::v4(){vfunc_called(this, "_ZN7S6470C12v4Ev");}
void  S6470C1 ::v5(){vfunc_called(this, "_ZN7S6470C12v5Ev");}
void  S6470C1 ::v6(){vfunc_called(this, "_ZN7S6470C12v6Ev");}
void  S6470C1 ::v7(){vfunc_called(this, "_ZN7S6470C12v7Ev");}
void  S6470C1 ::v8(){vfunc_called(this, "_ZN7S6470C12v8Ev");}
void  S6470C1 ::v9(){vfunc_called(this, "_ZN7S6470C12v9Ev");}
void  S6470C1 ::v10(){vfunc_called(this, "_ZN7S6470C13v10Ev");}
void  S6470C1 ::v11(){vfunc_called(this, "_ZN7S6470C13v11Ev");}
void  S6470C1 ::v12(){vfunc_called(this, "_ZN7S6470C13v12Ev");}
S6470C1 ::S6470C1(){ note_ctor("S6470C1", this);} // tgen

static void Test_S6470C1()
{
  extern Class_Descriptor cd_S6470C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,18)];
    init_test(&cd_S6470C1, buf);
    S6470C1 *dp, &lv = *(dp=new (buf) S6470C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,68), "sizeof(S6470C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6470C1)");
    check_base_class_offset(lv, (S6470C2*), 0, "S6470C1");
    check_base_class_offset(lv, (S6470C9*)(S6470C8*)(S6470C7*), ABISELECT(32,20), "S6470C1");
    check_base_class_offset(lv, (S6470C8*)(S6470C7*), ABISELECT(32,20), "S6470C1");
    check_base_class_offset(lv, (S6470C7*), ABISELECT(32,20), "S6470C1");
    check_field_offset(lv, s6470c1f0, ABISELECT(104,60), "S6470C1.s6470c1f0");
    check_field_offset(lv, s6470c1f1, ABISELECT(112,64), "S6470C1.s6470c1f1");
    test_class_info(&lv, &cd_S6470C1);
    dp->~S6470C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6470C1(Test_S6470C1, "S6470C1", ABISELECT(120,68));

#else // __cplusplus

extern void _ZN7S6470C1C1Ev();
extern void _ZN7S6470C1D1Ev();
Name_Map name_map_S6470C1[] = {
  NSPAIR(_ZN7S6470C1C1Ev),
  NSPAIR(_ZN7S6470C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6470C2;
extern VTBL_ENTRY _ZTI7S6470C2[];
extern  VTBL_ENTRY _ZTV7S6470C2[];
extern Class_Descriptor cd_S6470C9;
extern VTBL_ENTRY _ZTI7S6470C9[];
extern  VTBL_ENTRY _ZTV7S6470C9[];
extern Class_Descriptor cd_S6470C8;
extern VTBL_ENTRY _ZTI7S6470C8[];
extern  VTBL_ENTRY _ZTV7S6470C8[];
extern Class_Descriptor cd_S6470C7;
extern VTBL_ENTRY _ZTI7S6470C7[];
extern  VTBL_ENTRY _ZTV7S6470C7[];
static Base_Class bases_S6470C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6470C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6470C9,    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_S6470C8,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6470C7,    ABISELECT(32,20), //bcp->offset
    31, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6470C1[];
extern void _ZN7S6470C1D1Ev();
extern void _ZN7S6470C1D0Ev();
extern void _ZN7S6470C23v13Ev();
extern void _ZN7S6470C23v14Ev();
extern void _ZN7S6470C23v15Ev();
extern void _ZN7S6470C23v16Ev();
extern void _ZN7S6470C23v17Ev();
extern void _ZN7S6470C23v18Ev();
extern void _ZN7S6470C23v19Ev();
extern void _ZN7S6470C23v20Ev();
extern void _ZN7S6470C23v21Ev();
extern void _ZN7S6470C23v22Ev();
extern void _ZN7S6470C23v23Ev();
extern void _ZN7S6470C23v24Ev();
extern void _ZN7S6470C23v25Ev();
extern void _ZN7S6470C23v26Ev();
extern void _ZN7S6470C23v27Ev();
extern void _ZN7S6470C12v1Ev();
extern void _ZN7S6470C12v2Ev();
extern void _ZN7S6470C12v3Ev();
extern void _ZN7S6470C12v4Ev();
extern void _ZN7S6470C12v5Ev();
extern void _ZN7S6470C12v6Ev();
extern void _ZN7S6470C12v7Ev();
extern void _ZN7S6470C12v8Ev();
extern void _ZN7S6470C12v9Ev();
extern void _ZN7S6470C13v10Ev();
extern void _ZN7S6470C13v11Ev();
extern void _ZN7S6470C13v12Ev();
extern void ABISELECT(_ZThn32_N7S6470C1D1Ev,_ZThn20_N7S6470C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S6470C1D0Ev,_ZThn20_N7S6470C1D0Ev)();
extern void _ZN7S6470C93v28Ev();
extern void _ZN7S6470C93v29Ev();
extern void _ZN7S6470C93v30Ev();
extern void _ZN7S6470C83v31Ev();
extern void _ZN7S6470C83v32Ev();
extern void _ZN7S6470C83v33Ev();
extern void _ZN7S6470C83v34Ev();
extern void _ZN7S6470C83v35Ev();
extern void _ZN7S6470C83v36Ev();
extern void _ZN7S6470C73v37Ev();
extern void _ZN7S6470C73v38Ev();
extern void _ZN7S6470C73v39Ev();
static  VTBL_ENTRY vtc_S6470C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6470C1[0]),
  (VTBL_ENTRY)&_ZN7S6470C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6470C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6470C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6470C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6470C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6470C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6470C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6470C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6470C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6470C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6470C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6470C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6470C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6470C13v11Ev,
  (VTBL_ENTRY)&_ZN7S6470C13v12Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S6470C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S6470C1D1Ev,_ZThn20_N7S6470C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S6470C1D0Ev,_ZThn20_N7S6470C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6470C93v28Ev,
  (VTBL_ENTRY)&_ZN7S6470C93v29Ev,
  (VTBL_ENTRY)&_ZN7S6470C93v30Ev,
  (VTBL_ENTRY)&_ZN7S6470C83v31Ev,
  (VTBL_ENTRY)&_ZN7S6470C83v32Ev,
  (VTBL_ENTRY)&_ZN7S6470C83v33Ev,
  (VTBL_ENTRY)&_ZN7S6470C83v34Ev,
  (VTBL_ENTRY)&_ZN7S6470C83v35Ev,
  (VTBL_ENTRY)&_ZN7S6470C83v36Ev,
  (VTBL_ENTRY)&_ZN7S6470C73v37Ev,
  (VTBL_ENTRY)&_ZN7S6470C73v38Ev,
  (VTBL_ENTRY)&_ZN7S6470C73v39Ev,
};
extern VTBL_ENTRY _ZTI7S6470C1[];
extern  VTBL_ENTRY _ZTV7S6470C1[];
Class_Descriptor cd_S6470C1 = {  "S6470C1", // class name
  bases_S6470C1, 4,
  &(vtc_S6470C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,68), // object size
  NSPAIRA(_ZTI7S6470C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6470C1),47, //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  S6502C2  {
  void *s6502c2f0;
  ::S3027C4_nt s6502c2f1;
  virtual  ~S6502C2(); // _ZN7S6502C2D1Ev
  virtual void  v15(); // _ZN7S6502C23v15Ev
  virtual void  v16(); // _ZN7S6502C23v16Ev
  virtual void  v17(); // _ZN7S6502C23v17Ev
  virtual void  v18(); // _ZN7S6502C23v18Ev
  virtual void  v19(); // _ZN7S6502C23v19Ev
  virtual void  v20(); // _ZN7S6502C23v20Ev
  virtual void  v21(); // _ZN7S6502C23v21Ev
  virtual void  v22(); // _ZN7S6502C23v22Ev
  virtual void  v23(); // _ZN7S6502C23v23Ev
  virtual void  v24(); // _ZN7S6502C23v24Ev
  virtual void  v25(); // _ZN7S6502C23v25Ev
  virtual void  v26(); // _ZN7S6502C23v26Ev
  virtual void  v27(); // _ZN7S6502C23v27Ev
  virtual void  v28(); // _ZN7S6502C23v28Ev
  virtual void  v29(); // _ZN7S6502C23v29Ev
  S6502C2(); // tgen
};
//SIG(-1 S6502C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp FC2{ BC3{ m Fp Fi FC4{ m} FC5{ m}}}}


 S6502C2 ::~S6502C2(){ note_dtor("S6502C2", this);}
void  S6502C2 ::v15(){vfunc_called(this, "_ZN7S6502C23v15Ev");}
void  S6502C2 ::v16(){vfunc_called(this, "_ZN7S6502C23v16Ev");}
void  S6502C2 ::v17(){vfunc_called(this, "_ZN7S6502C23v17Ev");}
void  S6502C2 ::v18(){vfunc_called(this, "_ZN7S6502C23v18Ev");}
void  S6502C2 ::v19(){vfunc_called(this, "_ZN7S6502C23v19Ev");}
void  S6502C2 ::v20(){vfunc_called(this, "_ZN7S6502C23v20Ev");}
void  S6502C2 ::v21(){vfunc_called(this, "_ZN7S6502C23v21Ev");}
void  S6502C2 ::v22(){vfunc_called(this, "_ZN7S6502C23v22Ev");}
void  S6502C2 ::v23(){vfunc_called(this, "_ZN7S6502C23v23Ev");}
void  S6502C2 ::v24(){vfunc_called(this, "_ZN7S6502C23v24Ev");}
void  S6502C2 ::v25(){vfunc_called(this, "_ZN7S6502C23v25Ev");}
void  S6502C2 ::v26(){vfunc_called(this, "_ZN7S6502C23v26Ev");}
void  S6502C2 ::v27(){vfunc_called(this, "_ZN7S6502C23v27Ev");}
void  S6502C2 ::v28(){vfunc_called(this, "_ZN7S6502C23v28Ev");}
void  S6502C2 ::v29(){vfunc_called(this, "_ZN7S6502C23v29Ev");}
S6502C2 ::S6502C2(){ note_ctor("S6502C2", this);} // tgen

static void Test_S6502C2()
{
  extern Class_Descriptor cd_S6502C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S6502C2, buf);
    S6502C2 *dp, &lv = *(dp=new (buf) S6502C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S6502C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6502C2)");
    check_field_offset(lv, s6502c2f0, ABISELECT(8,4), "S6502C2.s6502c2f0");
    check_field_offset(lv, s6502c2f1, ABISELECT(16,8), "S6502C2.s6502c2f1");
    test_class_info(&lv, &cd_S6502C2);
    dp->~S6502C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6502C2(Test_S6502C2, "S6502C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S6502C2C1Ev();
extern void _ZN7S6502C2D1Ev();
Name_Map name_map_S6502C2[] = {
  NSPAIR(_ZN7S6502C2C1Ev),
  NSPAIR(_ZN7S6502C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6502C2[];
extern void _ZN7S6502C2D1Ev();
extern void _ZN7S6502C2D0Ev();
extern void _ZN7S6502C23v15Ev();
extern void _ZN7S6502C23v16Ev();
extern void _ZN7S6502C23v17Ev();
extern void _ZN7S6502C23v18Ev();
extern void _ZN7S6502C23v19Ev();
extern void _ZN7S6502C23v20Ev();
extern void _ZN7S6502C23v21Ev();
extern void _ZN7S6502C23v22Ev();
extern void _ZN7S6502C23v23Ev();
extern void _ZN7S6502C23v24Ev();
extern void _ZN7S6502C23v25Ev();
extern void _ZN7S6502C23v26Ev();
extern void _ZN7S6502C23v27Ev();
extern void _ZN7S6502C23v28Ev();
extern void _ZN7S6502C23v29Ev();
static  VTBL_ENTRY vtc_S6502C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6502C2[0]),
  (VTBL_ENTRY)&_ZN7S6502C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6502C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v29Ev,
};
extern VTBL_ENTRY _ZTI7S6502C2[];
extern  VTBL_ENTRY _ZTV7S6502C2[];
Class_Descriptor cd_S6502C2 = {  "S6502C2", // class name
  0,0,//no base classes
  &(vtc_S6502C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S6502C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6502C2),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6502C9  {
  virtual  ~S6502C9(); // _ZN7S6502C9D1Ev
  virtual void  v30(); // _ZN7S6502C93v30Ev
  virtual void  v31(); // _ZN7S6502C93v31Ev
  virtual void  v32(); // _ZN7S6502C93v32Ev
  S6502C9(); // tgen
};
//SIG(-1 S6502C9) C1{ vd v1 v2 v3}


 S6502C9 ::~S6502C9(){ note_dtor("S6502C9", this);}
void  S6502C9 ::v30(){vfunc_called(this, "_ZN7S6502C93v30Ev");}
void  S6502C9 ::v31(){vfunc_called(this, "_ZN7S6502C93v31Ev");}
void  S6502C9 ::v32(){vfunc_called(this, "_ZN7S6502C93v32Ev");}
S6502C9 ::S6502C9(){ note_ctor("S6502C9", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6502C9C1Ev();
extern void _ZN7S6502C9D1Ev();
Name_Map name_map_S6502C9[] = {
  NSPAIR(_ZN7S6502C9C1Ev),
  NSPAIR(_ZN7S6502C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6502C9[];
extern void _ZN7S6502C9D1Ev();
extern void _ZN7S6502C9D0Ev();
extern void _ZN7S6502C93v30Ev();
extern void _ZN7S6502C93v31Ev();
extern void _ZN7S6502C93v32Ev();
static  VTBL_ENTRY vtc_S6502C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6502C9[0]),
  (VTBL_ENTRY)&_ZN7S6502C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6502C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6502C93v30Ev,
  (VTBL_ENTRY)&_ZN7S6502C93v31Ev,
  (VTBL_ENTRY)&_ZN7S6502C93v32Ev,
};
extern VTBL_ENTRY _ZTI7S6502C9[];
extern  VTBL_ENTRY _ZTV7S6502C9[];
Class_Descriptor cd_S6502C9 = {  "S6502C9", // class name
  0,0,//no base classes
  &(vtc_S6502C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6502C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6502C9),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  S6502C8  : S6502C9 {
  virtual  ~S6502C8(); // _ZN7S6502C8D1Ev
  virtual void  v33(); // _ZN7S6502C83v33Ev
  virtual void  v34(); // _ZN7S6502C83v34Ev
  virtual void  v35(); // _ZN7S6502C83v35Ev
  virtual void  v36(); // _ZN7S6502C83v36Ev
  virtual void  v37(); // _ZN7S6502C83v37Ev
  virtual void  v38(); // _ZN7S6502C83v38Ev
  S6502C8(); // tgen
};
//SIG(-1 S6502C8) C1{ BC2{ vd v7 v8 v9} vd v1 v2 v3 v4 v5 v6}


 S6502C8 ::~S6502C8(){ note_dtor("S6502C8", this);}
void  S6502C8 ::v33(){vfunc_called(this, "_ZN7S6502C83v33Ev");}
void  S6502C8 ::v34(){vfunc_called(this, "_ZN7S6502C83v34Ev");}
void  S6502C8 ::v35(){vfunc_called(this, "_ZN7S6502C83v35Ev");}
void  S6502C8 ::v36(){vfunc_called(this, "_ZN7S6502C83v36Ev");}
void  S6502C8 ::v37(){vfunc_called(this, "_ZN7S6502C83v37Ev");}
void  S6502C8 ::v38(){vfunc_called(this, "_ZN7S6502C83v38Ev");}
S6502C8 ::S6502C8(){ note_ctor("S6502C8", this);} // tgen

static void Test_S6502C8()
{
  extern Class_Descriptor cd_S6502C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6502C8, buf);
    S6502C8 *dp, &lv = *(dp=new (buf) S6502C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6502C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6502C8)");
    check_base_class_offset(lv, (S6502C9*), 0, "S6502C8");
    test_class_info(&lv, &cd_S6502C8);
    dp->~S6502C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6502C8(Test_S6502C8, "S6502C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6502C8C1Ev();
extern void _ZN7S6502C8D1Ev();
Name_Map name_map_S6502C8[] = {
  NSPAIR(_ZN7S6502C8C1Ev),
  NSPAIR(_ZN7S6502C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6502C9;
extern VTBL_ENTRY _ZTI7S6502C9[];
extern  VTBL_ENTRY _ZTV7S6502C9[];
static Base_Class bases_S6502C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6502C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6502C8[];
extern void _ZN7S6502C8D1Ev();
extern void _ZN7S6502C8D0Ev();
extern void _ZN7S6502C93v30Ev();
extern void _ZN7S6502C93v31Ev();
extern void _ZN7S6502C93v32Ev();
extern void _ZN7S6502C83v33Ev();
extern void _ZN7S6502C83v34Ev();
extern void _ZN7S6502C83v35Ev();
extern void _ZN7S6502C83v36Ev();
extern void _ZN7S6502C83v37Ev();
extern void _ZN7S6502C83v38Ev();
static  VTBL_ENTRY vtc_S6502C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6502C8[0]),
  (VTBL_ENTRY)&_ZN7S6502C8D1Ev,
  (VTBL_ENTRY)&_ZN7S6502C8D0Ev,
  (VTBL_ENTRY)&_ZN7S6502C93v30Ev,
  (VTBL_ENTRY)&_ZN7S6502C93v31Ev,
  (VTBL_ENTRY)&_ZN7S6502C93v32Ev,
  (VTBL_ENTRY)&_ZN7S6502C83v33Ev,
  (VTBL_ENTRY)&_ZN7S6502C83v34Ev,
  (VTBL_ENTRY)&_ZN7S6502C83v35Ev,
  (VTBL_ENTRY)&_ZN7S6502C83v36Ev,
  (VTBL_ENTRY)&_ZN7S6502C83v37Ev,
  (VTBL_ENTRY)&_ZN7S6502C83v38Ev,
};
extern VTBL_ENTRY _ZTI7S6502C8[];
extern  VTBL_ENTRY _ZTV7S6502C8[];
Class_Descriptor cd_S6502C8 = {  "S6502C8", // class name
  bases_S6502C8, 1,
  &(vtc_S6502C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6502C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6502C8),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  S6502C7  : S6502C8 {
  ::S731C20 s6502c7f0;
  ::S3027C15_nt s6502c7f1;
  char s6502c7f2;
  virtual  ~S6502C7(); // _ZN7S6502C7D1Ev
  virtual void  v39(); // _ZN7S6502C73v39Ev
  virtual void  v40(); // _ZN7S6502C73v40Ev
  virtual void  v41(); // _ZN7S6502C73v41Ev
  S6502C7(); // tgen
};
//SIG(-1 S6502C7) C1{ BC2{ BC3{ vd v4 v5 v6} vd v7 v8 v9 v10 v11 v12} vd v1 v2 v3 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FC7{ Fl[4]}} Fc}


 S6502C7 ::~S6502C7(){ note_dtor("S6502C7", this);}
void  S6502C7 ::v39(){vfunc_called(this, "_ZN7S6502C73v39Ev");}
void  S6502C7 ::v40(){vfunc_called(this, "_ZN7S6502C73v40Ev");}
void  S6502C7 ::v41(){vfunc_called(this, "_ZN7S6502C73v41Ev");}
S6502C7 ::S6502C7(){ note_ctor("S6502C7", this);} // tgen

static void Test_S6502C7()
{
  extern Class_Descriptor cd_S6502C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S6502C7, buf);
    S6502C7 *dp, &lv = *(dp=new (buf) S6502C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S6502C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6502C7)");
    check_base_class_offset(lv, (S6502C9*)(S6502C8*), 0, "S6502C7");
    check_base_class_offset(lv, (S6502C8*), 0, "S6502C7");
    check_field_offset(lv, s6502c7f0, ABISELECT(8,4), "S6502C7.s6502c7f0");
    check_field_offset(lv, s6502c7f1, ABISELECT(32,20), "S6502C7.s6502c7f1");
    check_field_offset(lv, s6502c7f2, ABISELECT(64,36), "S6502C7.s6502c7f2");
    test_class_info(&lv, &cd_S6502C7);
    dp->~S6502C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6502C7(Test_S6502C7, "S6502C7", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN7S6502C7C1Ev();
extern void _ZN7S6502C7D1Ev();
Name_Map name_map_S6502C7[] = {
  NSPAIR(_ZN7S6502C7C1Ev),
  NSPAIR(_ZN7S6502C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6502C9;
extern VTBL_ENTRY _ZTI7S6502C9[];
extern  VTBL_ENTRY _ZTV7S6502C9[];
extern Class_Descriptor cd_S6502C8;
extern VTBL_ENTRY _ZTI7S6502C8[];
extern  VTBL_ENTRY _ZTV7S6502C8[];
static Base_Class bases_S6502C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6502C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S6502C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S6502C7[];
extern void _ZN7S6502C7D1Ev();
extern void _ZN7S6502C7D0Ev();
extern void _ZN7S6502C93v30Ev();
extern void _ZN7S6502C93v31Ev();
extern void _ZN7S6502C93v32Ev();
extern void _ZN7S6502C83v33Ev();
extern void _ZN7S6502C83v34Ev();
extern void _ZN7S6502C83v35Ev();
extern void _ZN7S6502C83v36Ev();
extern void _ZN7S6502C83v37Ev();
extern void _ZN7S6502C83v38Ev();
extern void _ZN7S6502C73v39Ev();
extern void _ZN7S6502C73v40Ev();
extern void _ZN7S6502C73v41Ev();
static  VTBL_ENTRY vtc_S6502C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6502C7[0]),
  (VTBL_ENTRY)&_ZN7S6502C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6502C7D0Ev,
  (VTBL_ENTRY)&_ZN7S6502C93v30Ev,
  (VTBL_ENTRY)&_ZN7S6502C93v31Ev,
  (VTBL_ENTRY)&_ZN7S6502C93v32Ev,
  (VTBL_ENTRY)&_ZN7S6502C83v33Ev,
  (VTBL_ENTRY)&_ZN7S6502C83v34Ev,
  (VTBL_ENTRY)&_ZN7S6502C83v35Ev,
  (VTBL_ENTRY)&_ZN7S6502C83v36Ev,
  (VTBL_ENTRY)&_ZN7S6502C83v37Ev,
  (VTBL_ENTRY)&_ZN7S6502C83v38Ev,
  (VTBL_ENTRY)&_ZN7S6502C73v39Ev,
  (VTBL_ENTRY)&_ZN7S6502C73v40Ev,
  (VTBL_ENTRY)&_ZN7S6502C73v41Ev,
};
extern VTBL_ENTRY _ZTI7S6502C7[];
extern  VTBL_ENTRY _ZTV7S6502C7[];
Class_Descriptor cd_S6502C7 = {  "S6502C7", // class name
  bases_S6502C7, 2,
  &(vtc_S6502C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI7S6502C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6502C7),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  S6502C1  : S6502C2 , S6502C7 {
  void *s6502c1f0;
  char s6502c1f1[2];
  virtual  ~S6502C1(); // _ZN7S6502C1D1Ev
  virtual void  v1(); // _ZN7S6502C12v1Ev
  virtual void  v2(); // _ZN7S6502C12v2Ev
  virtual void  v3(); // _ZN7S6502C12v3Ev
  virtual void  v4(); // _ZN7S6502C12v4Ev
  virtual void  v5(); // _ZN7S6502C12v5Ev
  virtual void  v6(); // _ZN7S6502C12v6Ev
  virtual void  v7(); // _ZN7S6502C12v7Ev
  virtual void  v8(); // _ZN7S6502C12v8Ev
  virtual void  v9(); // _ZN7S6502C12v9Ev
  virtual void  v10(); // _ZN7S6502C13v10Ev
  virtual void  v11(); // _ZN7S6502C13v11Ev
  virtual void  v12(); // _ZN7S6502C13v12Ev
  virtual void  v13(); // _ZN7S6502C13v13Ev
  virtual void  v14(); // _ZN7S6502C13v14Ev
  S6502C1(); // tgen
};
//SIG(1 S6502C1) C1{ BC2{ vd v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 Fp FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}} BC7{ BC8{ BC9{ vd v30 v31 v32} vd v33 v34 v35 v36 v37 v38} vd v39 v40 v41 FC10{ m Fp Fi[2] FC5} FC11{ m FC12{ Fl[4]}} Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp Fc[2]}


 S6502C1 ::~S6502C1(){ note_dtor("S6502C1", this);}
void  S6502C1 ::v1(){vfunc_called(this, "_ZN7S6502C12v1Ev");}
void  S6502C1 ::v2(){vfunc_called(this, "_ZN7S6502C12v2Ev");}
void  S6502C1 ::v3(){vfunc_called(this, "_ZN7S6502C12v3Ev");}
void  S6502C1 ::v4(){vfunc_called(this, "_ZN7S6502C12v4Ev");}
void  S6502C1 ::v5(){vfunc_called(this, "_ZN7S6502C12v5Ev");}
void  S6502C1 ::v6(){vfunc_called(this, "_ZN7S6502C12v6Ev");}
void  S6502C1 ::v7(){vfunc_called(this, "_ZN7S6502C12v7Ev");}
void  S6502C1 ::v8(){vfunc_called(this, "_ZN7S6502C12v8Ev");}
void  S6502C1 ::v9(){vfunc_called(this, "_ZN7S6502C12v9Ev");}
void  S6502C1 ::v10(){vfunc_called(this, "_ZN7S6502C13v10Ev");}
void  S6502C1 ::v11(){vfunc_called(this, "_ZN7S6502C13v11Ev");}
void  S6502C1 ::v12(){vfunc_called(this, "_ZN7S6502C13v12Ev");}
void  S6502C1 ::v13(){vfunc_called(this, "_ZN7S6502C13v13Ev");}
void  S6502C1 ::v14(){vfunc_called(this, "_ZN7S6502C13v14Ev");}
S6502C1 ::S6502C1(){ note_ctor("S6502C1", this);} // tgen

static void Test_S6502C1()
{
  extern Class_Descriptor cd_S6502C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,18)];
    init_test(&cd_S6502C1, buf);
    S6502C1 *dp, &lv = *(dp=new (buf) S6502C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,68), "sizeof(S6502C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6502C1)");
    check_base_class_offset(lv, (S6502C2*), 0, "S6502C1");
    check_base_class_offset(lv, (S6502C9*)(S6502C8*)(S6502C7*), ABISELECT(32,20), "S6502C1");
    check_base_class_offset(lv, (S6502C8*)(S6502C7*), ABISELECT(32,20), "S6502C1");
    check_base_class_offset(lv, (S6502C7*), ABISELECT(32,20), "S6502C1");
    check_field_offset(lv, s6502c1f0, ABISELECT(104,60), "S6502C1.s6502c1f0");
    check_field_offset(lv, s6502c1f1, ABISELECT(112,64), "S6502C1.s6502c1f1");
    test_class_info(&lv, &cd_S6502C1);
    dp->~S6502C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6502C1(Test_S6502C1, "S6502C1", ABISELECT(120,68));

#else // __cplusplus

extern void _ZN7S6502C1C1Ev();
extern void _ZN7S6502C1D1Ev();
Name_Map name_map_S6502C1[] = {
  NSPAIR(_ZN7S6502C1C1Ev),
  NSPAIR(_ZN7S6502C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6502C2;
extern VTBL_ENTRY _ZTI7S6502C2[];
extern  VTBL_ENTRY _ZTV7S6502C2[];
extern Class_Descriptor cd_S6502C9;
extern VTBL_ENTRY _ZTI7S6502C9[];
extern  VTBL_ENTRY _ZTV7S6502C9[];
extern Class_Descriptor cd_S6502C8;
extern VTBL_ENTRY _ZTI7S6502C8[];
extern  VTBL_ENTRY _ZTV7S6502C8[];
extern Class_Descriptor cd_S6502C7;
extern VTBL_ENTRY _ZTI7S6502C7[];
extern  VTBL_ENTRY _ZTV7S6502C7[];
static Base_Class bases_S6502C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6502C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6502C9,    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_S6502C8,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6502C7,    ABISELECT(32,20), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6502C1[];
extern void _ZN7S6502C1D1Ev();
extern void _ZN7S6502C1D0Ev();
extern void _ZN7S6502C23v15Ev();
extern void _ZN7S6502C23v16Ev();
extern void _ZN7S6502C23v17Ev();
extern void _ZN7S6502C23v18Ev();
extern void _ZN7S6502C23v19Ev();
extern void _ZN7S6502C23v20Ev();
extern void _ZN7S6502C23v21Ev();
extern void _ZN7S6502C23v22Ev();
extern void _ZN7S6502C23v23Ev();
extern void _ZN7S6502C23v24Ev();
extern void _ZN7S6502C23v25Ev();
extern void _ZN7S6502C23v26Ev();
extern void _ZN7S6502C23v27Ev();
extern void _ZN7S6502C23v28Ev();
extern void _ZN7S6502C23v29Ev();
extern void _ZN7S6502C12v1Ev();
extern void _ZN7S6502C12v2Ev();
extern void _ZN7S6502C12v3Ev();
extern void _ZN7S6502C12v4Ev();
extern void _ZN7S6502C12v5Ev();
extern void _ZN7S6502C12v6Ev();
extern void _ZN7S6502C12v7Ev();
extern void _ZN7S6502C12v8Ev();
extern void _ZN7S6502C12v9Ev();
extern void _ZN7S6502C13v10Ev();
extern void _ZN7S6502C13v11Ev();
extern void _ZN7S6502C13v12Ev();
extern void _ZN7S6502C13v13Ev();
extern void _ZN7S6502C13v14Ev();
extern void ABISELECT(_ZThn32_N7S6502C1D1Ev,_ZThn20_N7S6502C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S6502C1D0Ev,_ZThn20_N7S6502C1D0Ev)();
extern void _ZN7S6502C93v30Ev();
extern void _ZN7S6502C93v31Ev();
extern void _ZN7S6502C93v32Ev();
extern void _ZN7S6502C83v33Ev();
extern void _ZN7S6502C83v34Ev();
extern void _ZN7S6502C83v35Ev();
extern void _ZN7S6502C83v36Ev();
extern void _ZN7S6502C83v37Ev();
extern void _ZN7S6502C83v38Ev();
extern void _ZN7S6502C73v39Ev();
extern void _ZN7S6502C73v40Ev();
extern void _ZN7S6502C73v41Ev();
static  VTBL_ENTRY vtc_S6502C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6502C1[0]),
  (VTBL_ENTRY)&_ZN7S6502C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6502C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6502C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6502C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6502C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6502C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6502C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6502C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6502C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6502C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6502C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6502C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6502C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6502C13v11Ev,
  (VTBL_ENTRY)&_ZN7S6502C13v12Ev,
  (VTBL_ENTRY)&_ZN7S6502C13v13Ev,
  (VTBL_ENTRY)&_ZN7S6502C13v14Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S6502C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S6502C1D1Ev,_ZThn20_N7S6502C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S6502C1D0Ev,_ZThn20_N7S6502C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6502C93v30Ev,
  (VTBL_ENTRY)&_ZN7S6502C93v31Ev,
  (VTBL_ENTRY)&_ZN7S6502C93v32Ev,
  (VTBL_ENTRY)&_ZN7S6502C83v33Ev,
  (VTBL_ENTRY)&_ZN7S6502C83v34Ev,
  (VTBL_ENTRY)&_ZN7S6502C83v35Ev,
  (VTBL_ENTRY)&_ZN7S6502C83v36Ev,
  (VTBL_ENTRY)&_ZN7S6502C83v37Ev,
  (VTBL_ENTRY)&_ZN7S6502C83v38Ev,
  (VTBL_ENTRY)&_ZN7S6502C73v39Ev,
  (VTBL_ENTRY)&_ZN7S6502C73v40Ev,
  (VTBL_ENTRY)&_ZN7S6502C73v41Ev,
};
extern VTBL_ENTRY _ZTI7S6502C1[];
extern  VTBL_ENTRY _ZTV7S6502C1[];
Class_Descriptor cd_S6502C1 = {  "S6502C1", // class name
  bases_S6502C1, 4,
  &(vtc_S6502C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,68), // object size
  NSPAIRA(_ZTI7S6502C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6502C1),49, //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  S7168C2  {
  void *s7168c2f0;
  ::S3027C4_nt s7168c2f1;
  virtual  ~S7168C2(); // _ZN7S7168C2D1Ev
  virtual void  v8(); // _ZN7S7168C22v8Ev
  virtual void  v9(); // _ZN7S7168C22v9Ev
  virtual void  v10(); // _ZN7S7168C23v10Ev
  virtual void  v11(); // _ZN7S7168C23v11Ev
  virtual void  v12(); // _ZN7S7168C23v12Ev
  virtual void  v13(); // _ZN7S7168C23v13Ev
  virtual void  v14(); // _ZN7S7168C23v14Ev
  virtual void  v15(); // _ZN7S7168C23v15Ev
  virtual void  v16(); // _ZN7S7168C23v16Ev
  virtual void  v17(); // _ZN7S7168C23v17Ev
  virtual void  v18(); // _ZN7S7168C23v18Ev
  virtual void  v19(); // _ZN7S7168C23v19Ev
  virtual void  v20(); // _ZN7S7168C23v20Ev
  virtual void  v21(); // _ZN7S7168C23v21Ev
  virtual void  v22(); // _ZN7S7168C23v22Ev
  S7168C2(); // tgen
};
//SIG(-1 S7168C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp FC2{ BC3{ m Fp Fi FC4{ m} FC5{ m}}}}


 S7168C2 ::~S7168C2(){ note_dtor("S7168C2", this);}
void  S7168C2 ::v8(){vfunc_called(this, "_ZN7S7168C22v8Ev");}
void  S7168C2 ::v9(){vfunc_called(this, "_ZN7S7168C22v9Ev");}
void  S7168C2 ::v10(){vfunc_called(this, "_ZN7S7168C23v10Ev");}
void  S7168C2 ::v11(){vfunc_called(this, "_ZN7S7168C23v11Ev");}
void  S7168C2 ::v12(){vfunc_called(this, "_ZN7S7168C23v12Ev");}
void  S7168C2 ::v13(){vfunc_called(this, "_ZN7S7168C23v13Ev");}
void  S7168C2 ::v14(){vfunc_called(this, "_ZN7S7168C23v14Ev");}
void  S7168C2 ::v15(){vfunc_called(this, "_ZN7S7168C23v15Ev");}
void  S7168C2 ::v16(){vfunc_called(this, "_ZN7S7168C23v16Ev");}
void  S7168C2 ::v17(){vfunc_called(this, "_ZN7S7168C23v17Ev");}
void  S7168C2 ::v18(){vfunc_called(this, "_ZN7S7168C23v18Ev");}
void  S7168C2 ::v19(){vfunc_called(this, "_ZN7S7168C23v19Ev");}
void  S7168C2 ::v20(){vfunc_called(this, "_ZN7S7168C23v20Ev");}
void  S7168C2 ::v21(){vfunc_called(this, "_ZN7S7168C23v21Ev");}
void  S7168C2 ::v22(){vfunc_called(this, "_ZN7S7168C23v22Ev");}
S7168C2 ::S7168C2(){ note_ctor("S7168C2", this);} // tgen

static void Test_S7168C2()
{
  extern Class_Descriptor cd_S7168C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7168C2, buf);
    S7168C2 *dp, &lv = *(dp=new (buf) S7168C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7168C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7168C2)");
    check_field_offset(lv, s7168c2f0, ABISELECT(8,4), "S7168C2.s7168c2f0");
    check_field_offset(lv, s7168c2f1, ABISELECT(16,8), "S7168C2.s7168c2f1");
    test_class_info(&lv, &cd_S7168C2);
    dp->~S7168C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7168C2(Test_S7168C2, "S7168C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S7168C2C1Ev();
extern void _ZN7S7168C2D1Ev();
Name_Map name_map_S7168C2[] = {
  NSPAIR(_ZN7S7168C2C1Ev),
  NSPAIR(_ZN7S7168C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7168C2[];
extern void _ZN7S7168C2D1Ev();
extern void _ZN7S7168C2D0Ev();
extern void _ZN7S7168C22v8Ev();
extern void _ZN7S7168C22v9Ev();
extern void _ZN7S7168C23v10Ev();
extern void _ZN7S7168C23v11Ev();
extern void _ZN7S7168C23v12Ev();
extern void _ZN7S7168C23v13Ev();
extern void _ZN7S7168C23v14Ev();
extern void _ZN7S7168C23v15Ev();
extern void _ZN7S7168C23v16Ev();
extern void _ZN7S7168C23v17Ev();
extern void _ZN7S7168C23v18Ev();
extern void _ZN7S7168C23v19Ev();
extern void _ZN7S7168C23v20Ev();
extern void _ZN7S7168C23v21Ev();
extern void _ZN7S7168C23v22Ev();
static  VTBL_ENTRY vtc_S7168C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7168C2[0]),
  (VTBL_ENTRY)&_ZN7S7168C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7168C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7168C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7168C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v22Ev,
};
extern VTBL_ENTRY _ZTI7S7168C2[];
extern  VTBL_ENTRY _ZTV7S7168C2[];
Class_Descriptor cd_S7168C2 = {  "S7168C2", // class name
  0,0,//no base classes
  &(vtc_S7168C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S7168C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7168C2),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7168C9  {
  virtual  ~S7168C9(); // _ZN7S7168C9D1Ev
  virtual void  v23(); // _ZN7S7168C93v23Ev
  virtual void  v24(); // _ZN7S7168C93v24Ev
  virtual void  v25(); // _ZN7S7168C93v25Ev
  S7168C9(); // tgen
};
//SIG(-1 S7168C9) C1{ vd v1 v2 v3}


 S7168C9 ::~S7168C9(){ note_dtor("S7168C9", this);}
void  S7168C9 ::v23(){vfunc_called(this, "_ZN7S7168C93v23Ev");}
void  S7168C9 ::v24(){vfunc_called(this, "_ZN7S7168C93v24Ev");}
void  S7168C9 ::v25(){vfunc_called(this, "_ZN7S7168C93v25Ev");}
S7168C9 ::S7168C9(){ note_ctor("S7168C9", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7168C9C1Ev();
extern void _ZN7S7168C9D1Ev();
Name_Map name_map_S7168C9[] = {
  NSPAIR(_ZN7S7168C9C1Ev),
  NSPAIR(_ZN7S7168C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7168C9[];
extern void _ZN7S7168C9D1Ev();
extern void _ZN7S7168C9D0Ev();
extern void _ZN7S7168C93v23Ev();
extern void _ZN7S7168C93v24Ev();
extern void _ZN7S7168C93v25Ev();
static  VTBL_ENTRY vtc_S7168C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7168C9[0]),
  (VTBL_ENTRY)&_ZN7S7168C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7168C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7168C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7168C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7168C93v25Ev,
};
extern VTBL_ENTRY _ZTI7S7168C9[];
extern  VTBL_ENTRY _ZTV7S7168C9[];
Class_Descriptor cd_S7168C9 = {  "S7168C9", // class name
  0,0,//no base classes
  &(vtc_S7168C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7168C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7168C9),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  S7168C8  : S7168C9 {
  virtual  ~S7168C8(); // _ZN7S7168C8D1Ev
  virtual void  v26(); // _ZN7S7168C83v26Ev
  virtual void  v27(); // _ZN7S7168C83v27Ev
  virtual void  v28(); // _ZN7S7168C83v28Ev
  virtual void  v29(); // _ZN7S7168C83v29Ev
  virtual void  v30(); // _ZN7S7168C83v30Ev
  virtual void  v31(); // _ZN7S7168C83v31Ev
  S7168C8(); // tgen
};
//SIG(-1 S7168C8) C1{ BC2{ vd v7 v8 v9} vd v1 v2 v3 v4 v5 v6}


 S7168C8 ::~S7168C8(){ note_dtor("S7168C8", this);}
void  S7168C8 ::v26(){vfunc_called(this, "_ZN7S7168C83v26Ev");}
void  S7168C8 ::v27(){vfunc_called(this, "_ZN7S7168C83v27Ev");}
void  S7168C8 ::v28(){vfunc_called(this, "_ZN7S7168C83v28Ev");}
void  S7168C8 ::v29(){vfunc_called(this, "_ZN7S7168C83v29Ev");}
void  S7168C8 ::v30(){vfunc_called(this, "_ZN7S7168C83v30Ev");}
void  S7168C8 ::v31(){vfunc_called(this, "_ZN7S7168C83v31Ev");}
S7168C8 ::S7168C8(){ note_ctor("S7168C8", this);} // tgen

static void Test_S7168C8()
{
  extern Class_Descriptor cd_S7168C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7168C8, buf);
    S7168C8 *dp, &lv = *(dp=new (buf) S7168C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7168C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7168C8)");
    check_base_class_offset(lv, (S7168C9*), 0, "S7168C8");
    test_class_info(&lv, &cd_S7168C8);
    dp->~S7168C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7168C8(Test_S7168C8, "S7168C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7168C8C1Ev();
extern void _ZN7S7168C8D1Ev();
Name_Map name_map_S7168C8[] = {
  NSPAIR(_ZN7S7168C8C1Ev),
  NSPAIR(_ZN7S7168C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7168C9;
extern VTBL_ENTRY _ZTI7S7168C9[];
extern  VTBL_ENTRY _ZTV7S7168C9[];
static Base_Class bases_S7168C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7168C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7168C8[];
extern void _ZN7S7168C8D1Ev();
extern void _ZN7S7168C8D0Ev();
extern void _ZN7S7168C93v23Ev();
extern void _ZN7S7168C93v24Ev();
extern void _ZN7S7168C93v25Ev();
extern void _ZN7S7168C83v26Ev();
extern void _ZN7S7168C83v27Ev();
extern void _ZN7S7168C83v28Ev();
extern void _ZN7S7168C83v29Ev();
extern void _ZN7S7168C83v30Ev();
extern void _ZN7S7168C83v31Ev();
static  VTBL_ENTRY vtc_S7168C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7168C8[0]),
  (VTBL_ENTRY)&_ZN7S7168C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7168C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7168C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7168C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7168C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7168C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7168C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7168C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7168C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7168C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7168C83v31Ev,
};
extern VTBL_ENTRY _ZTI7S7168C8[];
extern  VTBL_ENTRY _ZTV7S7168C8[];
Class_Descriptor cd_S7168C8 = {  "S7168C8", // class name
  bases_S7168C8, 1,
  &(vtc_S7168C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7168C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7168C8),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  S7168C7  : S7168C8 {
  ::S731C20 s7168c7f0;
  ::S3027C15_nt s7168c7f1;
  char s7168c7f2;
  virtual  ~S7168C7(); // _ZN7S7168C7D1Ev
  virtual void  v32(); // _ZN7S7168C73v32Ev
  virtual void  v33(); // _ZN7S7168C73v33Ev
  virtual void  v34(); // _ZN7S7168C73v34Ev
  S7168C7(); // tgen
};
//SIG(-1 S7168C7) C1{ BC2{ BC3{ vd v4 v5 v6} vd v7 v8 v9 v10 v11 v12} vd v1 v2 v3 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FC7{ Fl[4]}} Fc}


 S7168C7 ::~S7168C7(){ note_dtor("S7168C7", this);}
void  S7168C7 ::v32(){vfunc_called(this, "_ZN7S7168C73v32Ev");}
void  S7168C7 ::v33(){vfunc_called(this, "_ZN7S7168C73v33Ev");}
void  S7168C7 ::v34(){vfunc_called(this, "_ZN7S7168C73v34Ev");}
S7168C7 ::S7168C7(){ note_ctor("S7168C7", this);} // tgen

static void Test_S7168C7()
{
  extern Class_Descriptor cd_S7168C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S7168C7, buf);
    S7168C7 *dp, &lv = *(dp=new (buf) S7168C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S7168C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7168C7)");
    check_base_class_offset(lv, (S7168C9*)(S7168C8*), 0, "S7168C7");
    check_base_class_offset(lv, (S7168C8*), 0, "S7168C7");
    check_field_offset(lv, s7168c7f0, ABISELECT(8,4), "S7168C7.s7168c7f0");
    check_field_offset(lv, s7168c7f1, ABISELECT(32,20), "S7168C7.s7168c7f1");
    check_field_offset(lv, s7168c7f2, ABISELECT(64,36), "S7168C7.s7168c7f2");
    test_class_info(&lv, &cd_S7168C7);
    dp->~S7168C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7168C7(Test_S7168C7, "S7168C7", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN7S7168C7C1Ev();
extern void _ZN7S7168C7D1Ev();
Name_Map name_map_S7168C7[] = {
  NSPAIR(_ZN7S7168C7C1Ev),
  NSPAIR(_ZN7S7168C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7168C9;
extern VTBL_ENTRY _ZTI7S7168C9[];
extern  VTBL_ENTRY _ZTV7S7168C9[];
extern Class_Descriptor cd_S7168C8;
extern VTBL_ENTRY _ZTI7S7168C8[];
extern  VTBL_ENTRY _ZTV7S7168C8[];
static Base_Class bases_S7168C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7168C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7168C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S7168C7[];
extern void _ZN7S7168C7D1Ev();
extern void _ZN7S7168C7D0Ev();
extern void _ZN7S7168C93v23Ev();
extern void _ZN7S7168C93v24Ev();
extern void _ZN7S7168C93v25Ev();
extern void _ZN7S7168C83v26Ev();
extern void _ZN7S7168C83v27Ev();
extern void _ZN7S7168C83v28Ev();
extern void _ZN7S7168C83v29Ev();
extern void _ZN7S7168C83v30Ev();
extern void _ZN7S7168C83v31Ev();
extern void _ZN7S7168C73v32Ev();
extern void _ZN7S7168C73v33Ev();
extern void _ZN7S7168C73v34Ev();
static  VTBL_ENTRY vtc_S7168C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7168C7[0]),
  (VTBL_ENTRY)&_ZN7S7168C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7168C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7168C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7168C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7168C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7168C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7168C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7168C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7168C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7168C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7168C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7168C73v32Ev,
  (VTBL_ENTRY)&_ZN7S7168C73v33Ev,
  (VTBL_ENTRY)&_ZN7S7168C73v34Ev,
};
extern VTBL_ENTRY _ZTI7S7168C7[];
extern  VTBL_ENTRY _ZTV7S7168C7[];
Class_Descriptor cd_S7168C7 = {  "S7168C7", // class name
  bases_S7168C7, 2,
  &(vtc_S7168C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI7S7168C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7168C7),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  S7168C14  {
  virtual  ~S7168C14(); // _ZN8S7168C14D1Ev
  virtual void  v35(); // _ZN8S7168C143v35Ev
  S7168C14(); // tgen
};
//SIG(-1 S7168C14) C1{ vd v1}


 S7168C14 ::~S7168C14(){ note_dtor("S7168C14", this);}
void  S7168C14 ::v35(){vfunc_called(this, "_ZN8S7168C143v35Ev");}
S7168C14 ::S7168C14(){ note_ctor("S7168C14", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S7168C14C1Ev();
extern void _ZN8S7168C14D1Ev();
Name_Map name_map_S7168C14[] = {
  NSPAIR(_ZN8S7168C14C1Ev),
  NSPAIR(_ZN8S7168C14D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7168C14[];
extern void _ZN8S7168C14D1Ev();
extern void _ZN8S7168C14D0Ev();
extern void _ZN8S7168C143v35Ev();
static  VTBL_ENTRY vtc_S7168C14[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7168C14[0]),
  (VTBL_ENTRY)&_ZN8S7168C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7168C14D0Ev,
  (VTBL_ENTRY)&_ZN8S7168C143v35Ev,
};
extern VTBL_ENTRY _ZTI8S7168C14[];
extern  VTBL_ENTRY _ZTV8S7168C14[];
Class_Descriptor cd_S7168C14 = {  "S7168C14", // class name
  0,0,//no base classes
  &(vtc_S7168C14[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7168C14),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7168C14),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  S7168C15_nt  : S7166C16_nt {
  int s7168c15f0[3];
  virtual  ~S7168C15_nt(); // _ZN11S7168C15_ntD1Ev
  S7168C15_nt(); // tgen
};
//SIG(-1 S7168C15_nt) C1{ BC2{} vd Fi[3]}


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

//skip512 S7168C15_nt

#else // __cplusplus

extern void _ZN11S7168C15_ntC1Ev();
extern void _ZN11S7168C15_ntD1Ev();
Name_Map name_map_S7168C15_nt[] = {
  NSPAIR(_ZN11S7168C15_ntC1Ev),
  NSPAIR(_ZN11S7168C15_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7166C16_nt;
extern VTBL_ENTRY _ZTI11S7166C16_nt[];
static Base_Class bases_S7168C15_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7166C16_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S7168C15_nt[];
extern void _ZN11S7168C15_ntD1Ev();
extern void _ZN11S7168C15_ntD0Ev();
static  VTBL_ENTRY vtc_S7168C15_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S7168C15_nt[0]),
  (VTBL_ENTRY)&_ZN11S7168C15_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S7168C15_ntD0Ev,
};
extern VTBL_ENTRY _ZTI11S7168C15_nt[];
VTBL_ENTRY *P__ZTI11S7168C15_nt = _ZTI11S7168C15_nt; 
extern  VTBL_ENTRY _ZTV11S7168C15_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7168C1  : S7168C2 , S7168C7 , S7168C14 {
  ::S7168C15_nt s7168c1f0;
  int s7168c1f1;
  virtual  ~S7168C1(); // _ZN7S7168C1D1Ev
  virtual void  v1(); // _ZN7S7168C12v1Ev
  virtual void  v2(); // _ZN7S7168C12v2Ev
  virtual void  v3(); // _ZN7S7168C12v3Ev
  virtual void  v4(); // _ZN7S7168C12v4Ev
  virtual void  v5(); // _ZN7S7168C12v5Ev
  virtual void  v6(); // _ZN7S7168C12v6Ev
  virtual void  v7(); // _ZN7S7168C12v7Ev
  S7168C1(); // tgen
};
//SIG(1 S7168C1) C1{ BC2{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fp FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}} BC7{ BC8{ BC9{ vd v23 v24 v25} vd v26 v27 v28 v29 v30 v31} vd v32 v33 v34 FC10{ m Fp Fi[2] FC5} FC11{ m FC12{ Fl[4]}} Fc} BC13{ vd v35} vd v1 v2 v3 v4 v5 v6 v7 FC14{ BC15{} vd Fi[3]} Fi}


 S7168C1 ::~S7168C1(){ note_dtor("S7168C1", this);}
void  S7168C1 ::v1(){vfunc_called(this, "_ZN7S7168C12v1Ev");}
void  S7168C1 ::v2(){vfunc_called(this, "_ZN7S7168C12v2Ev");}
void  S7168C1 ::v3(){vfunc_called(this, "_ZN7S7168C12v3Ev");}
void  S7168C1 ::v4(){vfunc_called(this, "_ZN7S7168C12v4Ev");}
void  S7168C1 ::v5(){vfunc_called(this, "_ZN7S7168C12v5Ev");}
void  S7168C1 ::v6(){vfunc_called(this, "_ZN7S7168C12v6Ev");}
void  S7168C1 ::v7(){vfunc_called(this, "_ZN7S7168C12v7Ev");}
S7168C1 ::S7168C1(){ note_ctor("S7168C1", this);} // tgen

static void Test_S7168C1()
{
  extern Class_Descriptor cd_S7168C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,22)];
    init_test(&cd_S7168C1, buf);
    S7168C1 *dp, &lv = *(dp=new (buf) S7168C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,84), "sizeof(S7168C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7168C1)");
    check_base_class_offset(lv, (S7168C2*), 0, "S7168C1");
    check_base_class_offset(lv, (S7168C9*)(S7168C8*)(S7168C7*), ABISELECT(32,20), "S7168C1");
    check_base_class_offset(lv, (S7168C8*)(S7168C7*), ABISELECT(32,20), "S7168C1");
    check_base_class_offset(lv, (S7168C7*), ABISELECT(32,20), "S7168C1");
    check_base_class_offset(lv, (S7168C14*), ABISELECT(104,60), "S7168C1");
    check_field_offset(lv, s7168c1f0, ABISELECT(112,64), "S7168C1.s7168c1f0");
    check_field_offset(lv, s7168c1f1, ABISELECT(136,80), "S7168C1.s7168c1f1");
    test_class_info(&lv, &cd_S7168C1);
    dp->~S7168C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7168C1(Test_S7168C1, "S7168C1", ABISELECT(144,84));

#else // __cplusplus

extern void _ZN7S7168C1C1Ev();
extern void _ZN7S7168C1D1Ev();
Name_Map name_map_S7168C1[] = {
  NSPAIR(_ZN7S7168C1C1Ev),
  NSPAIR(_ZN7S7168C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7168C2;
extern VTBL_ENTRY _ZTI7S7168C2[];
extern  VTBL_ENTRY _ZTV7S7168C2[];
extern Class_Descriptor cd_S7168C9;
extern VTBL_ENTRY _ZTI7S7168C9[];
extern  VTBL_ENTRY _ZTV7S7168C9[];
extern Class_Descriptor cd_S7168C8;
extern VTBL_ENTRY _ZTI7S7168C8[];
extern  VTBL_ENTRY _ZTV7S7168C8[];
extern Class_Descriptor cd_S7168C7;
extern VTBL_ENTRY _ZTI7S7168C7[];
extern  VTBL_ENTRY _ZTV7S7168C7[];
extern Class_Descriptor cd_S7168C14;
extern VTBL_ENTRY _ZTI8S7168C14[];
extern  VTBL_ENTRY _ZTV8S7168C14[];
static Base_Class bases_S7168C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7168C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7168C9,    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_S7168C8,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7168C7,    ABISELECT(32,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7168C14,    ABISELECT(104,60), //bcp->offset
    42, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7168C1[];
extern void _ZN7S7168C1D1Ev();
extern void _ZN7S7168C1D0Ev();
extern void _ZN7S7168C22v8Ev();
extern void _ZN7S7168C22v9Ev();
extern void _ZN7S7168C23v10Ev();
extern void _ZN7S7168C23v11Ev();
extern void _ZN7S7168C23v12Ev();
extern void _ZN7S7168C23v13Ev();
extern void _ZN7S7168C23v14Ev();
extern void _ZN7S7168C23v15Ev();
extern void _ZN7S7168C23v16Ev();
extern void _ZN7S7168C23v17Ev();
extern void _ZN7S7168C23v18Ev();
extern void _ZN7S7168C23v19Ev();
extern void _ZN7S7168C23v20Ev();
extern void _ZN7S7168C23v21Ev();
extern void _ZN7S7168C23v22Ev();
extern void _ZN7S7168C12v1Ev();
extern void _ZN7S7168C12v2Ev();
extern void _ZN7S7168C12v3Ev();
extern void _ZN7S7168C12v4Ev();
extern void _ZN7S7168C12v5Ev();
extern void _ZN7S7168C12v6Ev();
extern void _ZN7S7168C12v7Ev();
extern void ABISELECT(_ZThn32_N7S7168C1D1Ev,_ZThn20_N7S7168C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S7168C1D0Ev,_ZThn20_N7S7168C1D0Ev)();
extern void _ZN7S7168C93v23Ev();
extern void _ZN7S7168C93v24Ev();
extern void _ZN7S7168C93v25Ev();
extern void _ZN7S7168C83v26Ev();
extern void _ZN7S7168C83v27Ev();
extern void _ZN7S7168C83v28Ev();
extern void _ZN7S7168C83v29Ev();
extern void _ZN7S7168C83v30Ev();
extern void _ZN7S7168C83v31Ev();
extern void _ZN7S7168C73v32Ev();
extern void _ZN7S7168C73v33Ev();
extern void _ZN7S7168C73v34Ev();
extern void ABISELECT(_ZThn104_N7S7168C1D1Ev,_ZThn60_N7S7168C1D1Ev)();
extern void ABISELECT(_ZThn104_N7S7168C1D0Ev,_ZThn60_N7S7168C1D0Ev)();
extern void _ZN8S7168C143v35Ev();
static  VTBL_ENTRY vtc_S7168C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7168C1[0]),
  (VTBL_ENTRY)&_ZN7S7168C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7168C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7168C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7168C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7168C23v22Ev,
  (VTBL_ENTRY)&_ZN7S7168C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7168C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7168C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7168C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7168C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7168C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7168C12v7Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7168C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7168C1D1Ev,_ZThn20_N7S7168C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7168C1D0Ev,_ZThn20_N7S7168C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7168C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7168C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7168C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7168C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7168C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7168C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7168C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7168C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7168C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7168C73v32Ev,
  (VTBL_ENTRY)&_ZN7S7168C73v33Ev,
  (VTBL_ENTRY)&_ZN7S7168C73v34Ev,
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI7S7168C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S7168C1D1Ev,_ZThn60_N7S7168C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S7168C1D0Ev,_ZThn60_N7S7168C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7168C143v35Ev,
};
extern VTBL_ENTRY _ZTI7S7168C1[];
extern  VTBL_ENTRY _ZTV7S7168C1[];
Class_Descriptor cd_S7168C1 = {  "S7168C1", // class name
  bases_S7168C1, 5,
  &(vtc_S7168C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,84), // object size
  NSPAIRA(_ZTI7S7168C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7168C1),47, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6472C2  {
  void *s6472c2f0;
  ::S3027C4_nt s6472c2f1;
  virtual  ~S6472C2(); // _ZN7S6472C2D1Ev
  virtual void  v13(); // _ZN7S6472C23v13Ev
  virtual void  v14(); // _ZN7S6472C23v14Ev
  virtual void  v15(); // _ZN7S6472C23v15Ev
  virtual void  v16(); // _ZN7S6472C23v16Ev
  virtual void  v17(); // _ZN7S6472C23v17Ev
  virtual void  v18(); // _ZN7S6472C23v18Ev
  virtual void  v19(); // _ZN7S6472C23v19Ev
  virtual void  v20(); // _ZN7S6472C23v20Ev
  virtual void  v21(); // _ZN7S6472C23v21Ev
  virtual void  v22(); // _ZN7S6472C23v22Ev
  virtual void  v23(); // _ZN7S6472C23v23Ev
  virtual void  v24(); // _ZN7S6472C23v24Ev
  virtual void  v25(); // _ZN7S6472C23v25Ev
  virtual void  v26(); // _ZN7S6472C23v26Ev
  virtual void  v27(); // _ZN7S6472C23v27Ev
  S6472C2(); // tgen
};
//SIG(-1 S6472C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp FC2{ BC3{ m Fp Fi FC4{ m} FC5{ m}}}}


 S6472C2 ::~S6472C2(){ note_dtor("S6472C2", this);}
void  S6472C2 ::v13(){vfunc_called(this, "_ZN7S6472C23v13Ev");}
void  S6472C2 ::v14(){vfunc_called(this, "_ZN7S6472C23v14Ev");}
void  S6472C2 ::v15(){vfunc_called(this, "_ZN7S6472C23v15Ev");}
void  S6472C2 ::v16(){vfunc_called(this, "_ZN7S6472C23v16Ev");}
void  S6472C2 ::v17(){vfunc_called(this, "_ZN7S6472C23v17Ev");}
void  S6472C2 ::v18(){vfunc_called(this, "_ZN7S6472C23v18Ev");}
void  S6472C2 ::v19(){vfunc_called(this, "_ZN7S6472C23v19Ev");}
void  S6472C2 ::v20(){vfunc_called(this, "_ZN7S6472C23v20Ev");}
void  S6472C2 ::v21(){vfunc_called(this, "_ZN7S6472C23v21Ev");}
void  S6472C2 ::v22(){vfunc_called(this, "_ZN7S6472C23v22Ev");}
void  S6472C2 ::v23(){vfunc_called(this, "_ZN7S6472C23v23Ev");}
void  S6472C2 ::v24(){vfunc_called(this, "_ZN7S6472C23v24Ev");}
void  S6472C2 ::v25(){vfunc_called(this, "_ZN7S6472C23v25Ev");}
void  S6472C2 ::v26(){vfunc_called(this, "_ZN7S6472C23v26Ev");}
void  S6472C2 ::v27(){vfunc_called(this, "_ZN7S6472C23v27Ev");}
S6472C2 ::S6472C2(){ note_ctor("S6472C2", this);} // tgen

static void Test_S6472C2()
{
  extern Class_Descriptor cd_S6472C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S6472C2, buf);
    S6472C2 *dp, &lv = *(dp=new (buf) S6472C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S6472C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6472C2)");
    check_field_offset(lv, s6472c2f0, ABISELECT(8,4), "S6472C2.s6472c2f0");
    check_field_offset(lv, s6472c2f1, ABISELECT(16,8), "S6472C2.s6472c2f1");
    test_class_info(&lv, &cd_S6472C2);
    dp->~S6472C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6472C2(Test_S6472C2, "S6472C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S6472C2C1Ev();
extern void _ZN7S6472C2D1Ev();
Name_Map name_map_S6472C2[] = {
  NSPAIR(_ZN7S6472C2C1Ev),
  NSPAIR(_ZN7S6472C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6472C2[];
extern void _ZN7S6472C2D1Ev();
extern void _ZN7S6472C2D0Ev();
extern void _ZN7S6472C23v13Ev();
extern void _ZN7S6472C23v14Ev();
extern void _ZN7S6472C23v15Ev();
extern void _ZN7S6472C23v16Ev();
extern void _ZN7S6472C23v17Ev();
extern void _ZN7S6472C23v18Ev();
extern void _ZN7S6472C23v19Ev();
extern void _ZN7S6472C23v20Ev();
extern void _ZN7S6472C23v21Ev();
extern void _ZN7S6472C23v22Ev();
extern void _ZN7S6472C23v23Ev();
extern void _ZN7S6472C23v24Ev();
extern void _ZN7S6472C23v25Ev();
extern void _ZN7S6472C23v26Ev();
extern void _ZN7S6472C23v27Ev();
static  VTBL_ENTRY vtc_S6472C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6472C2[0]),
  (VTBL_ENTRY)&_ZN7S6472C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6472C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v27Ev,
};
extern VTBL_ENTRY _ZTI7S6472C2[];
extern  VTBL_ENTRY _ZTV7S6472C2[];
Class_Descriptor cd_S6472C2 = {  "S6472C2", // class name
  0,0,//no base classes
  &(vtc_S6472C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S6472C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6472C2),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6472C9  {
  virtual  ~S6472C9(); // _ZN7S6472C9D1Ev
  virtual void  v28(); // _ZN7S6472C93v28Ev
  virtual void  v29(); // _ZN7S6472C93v29Ev
  virtual void  v30(); // _ZN7S6472C93v30Ev
  S6472C9(); // tgen
};
//SIG(-1 S6472C9) C1{ vd v1 v2 v3}


 S6472C9 ::~S6472C9(){ note_dtor("S6472C9", this);}
void  S6472C9 ::v28(){vfunc_called(this, "_ZN7S6472C93v28Ev");}
void  S6472C9 ::v29(){vfunc_called(this, "_ZN7S6472C93v29Ev");}
void  S6472C9 ::v30(){vfunc_called(this, "_ZN7S6472C93v30Ev");}
S6472C9 ::S6472C9(){ note_ctor("S6472C9", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6472C9C1Ev();
extern void _ZN7S6472C9D1Ev();
Name_Map name_map_S6472C9[] = {
  NSPAIR(_ZN7S6472C9C1Ev),
  NSPAIR(_ZN7S6472C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6472C9[];
extern void _ZN7S6472C9D1Ev();
extern void _ZN7S6472C9D0Ev();
extern void _ZN7S6472C93v28Ev();
extern void _ZN7S6472C93v29Ev();
extern void _ZN7S6472C93v30Ev();
static  VTBL_ENTRY vtc_S6472C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6472C9[0]),
  (VTBL_ENTRY)&_ZN7S6472C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6472C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6472C93v28Ev,
  (VTBL_ENTRY)&_ZN7S6472C93v29Ev,
  (VTBL_ENTRY)&_ZN7S6472C93v30Ev,
};
extern VTBL_ENTRY _ZTI7S6472C9[];
extern  VTBL_ENTRY _ZTV7S6472C9[];
Class_Descriptor cd_S6472C9 = {  "S6472C9", // class name
  0,0,//no base classes
  &(vtc_S6472C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6472C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6472C9),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  S6472C8  : S6472C9 {
  virtual  ~S6472C8(); // _ZN7S6472C8D1Ev
  virtual void  v31(); // _ZN7S6472C83v31Ev
  virtual void  v32(); // _ZN7S6472C83v32Ev
  virtual void  v33(); // _ZN7S6472C83v33Ev
  virtual void  v34(); // _ZN7S6472C83v34Ev
  virtual void  v35(); // _ZN7S6472C83v35Ev
  virtual void  v36(); // _ZN7S6472C83v36Ev
  S6472C8(); // tgen
};
//SIG(-1 S6472C8) C1{ BC2{ vd v7 v8 v9} vd v1 v2 v3 v4 v5 v6}


 S6472C8 ::~S6472C8(){ note_dtor("S6472C8", this);}
void  S6472C8 ::v31(){vfunc_called(this, "_ZN7S6472C83v31Ev");}
void  S6472C8 ::v32(){vfunc_called(this, "_ZN7S6472C83v32Ev");}
void  S6472C8 ::v33(){vfunc_called(this, "_ZN7S6472C83v33Ev");}
void  S6472C8 ::v34(){vfunc_called(this, "_ZN7S6472C83v34Ev");}
void  S6472C8 ::v35(){vfunc_called(this, "_ZN7S6472C83v35Ev");}
void  S6472C8 ::v36(){vfunc_called(this, "_ZN7S6472C83v36Ev");}
S6472C8 ::S6472C8(){ note_ctor("S6472C8", this);} // tgen

static void Test_S6472C8()
{
  extern Class_Descriptor cd_S6472C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6472C8, buf);
    S6472C8 *dp, &lv = *(dp=new (buf) S6472C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6472C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6472C8)");
    check_base_class_offset(lv, (S6472C9*), 0, "S6472C8");
    test_class_info(&lv, &cd_S6472C8);
    dp->~S6472C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6472C8(Test_S6472C8, "S6472C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6472C8C1Ev();
extern void _ZN7S6472C8D1Ev();
Name_Map name_map_S6472C8[] = {
  NSPAIR(_ZN7S6472C8C1Ev),
  NSPAIR(_ZN7S6472C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6472C9;
extern VTBL_ENTRY _ZTI7S6472C9[];
extern  VTBL_ENTRY _ZTV7S6472C9[];
static Base_Class bases_S6472C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6472C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6472C8[];
extern void _ZN7S6472C8D1Ev();
extern void _ZN7S6472C8D0Ev();
extern void _ZN7S6472C93v28Ev();
extern void _ZN7S6472C93v29Ev();
extern void _ZN7S6472C93v30Ev();
extern void _ZN7S6472C83v31Ev();
extern void _ZN7S6472C83v32Ev();
extern void _ZN7S6472C83v33Ev();
extern void _ZN7S6472C83v34Ev();
extern void _ZN7S6472C83v35Ev();
extern void _ZN7S6472C83v36Ev();
static  VTBL_ENTRY vtc_S6472C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6472C8[0]),
  (VTBL_ENTRY)&_ZN7S6472C8D1Ev,
  (VTBL_ENTRY)&_ZN7S6472C8D0Ev,
  (VTBL_ENTRY)&_ZN7S6472C93v28Ev,
  (VTBL_ENTRY)&_ZN7S6472C93v29Ev,
  (VTBL_ENTRY)&_ZN7S6472C93v30Ev,
  (VTBL_ENTRY)&_ZN7S6472C83v31Ev,
  (VTBL_ENTRY)&_ZN7S6472C83v32Ev,
  (VTBL_ENTRY)&_ZN7S6472C83v33Ev,
  (VTBL_ENTRY)&_ZN7S6472C83v34Ev,
  (VTBL_ENTRY)&_ZN7S6472C83v35Ev,
  (VTBL_ENTRY)&_ZN7S6472C83v36Ev,
};
extern VTBL_ENTRY _ZTI7S6472C8[];
extern  VTBL_ENTRY _ZTV7S6472C8[];
Class_Descriptor cd_S6472C8 = {  "S6472C8", // class name
  bases_S6472C8, 1,
  &(vtc_S6472C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6472C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6472C8),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  S6472C7  : S6472C8 {
  ::S731C20 s6472c7f0;
  ::S3029C15_nt s6472c7f1;
  char s6472c7f2;
  virtual  ~S6472C7(); // _ZN7S6472C7D1Ev
  virtual void  v37(); // _ZN7S6472C73v37Ev
  virtual void  v38(); // _ZN7S6472C73v38Ev
  virtual void  v39(); // _ZN7S6472C73v39Ev
  S6472C7(); // tgen
};
//SIG(-1 S6472C7) C1{ BC2{ BC3{ vd v4 v5 v6} vd v7 v8 v9 v10 v11 v12} vd v1 v2 v3 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FL[4]} Fc}


 S6472C7 ::~S6472C7(){ note_dtor("S6472C7", this);}
void  S6472C7 ::v37(){vfunc_called(this, "_ZN7S6472C73v37Ev");}
void  S6472C7 ::v38(){vfunc_called(this, "_ZN7S6472C73v38Ev");}
void  S6472C7 ::v39(){vfunc_called(this, "_ZN7S6472C73v39Ev");}
S6472C7 ::S6472C7(){ note_ctor("S6472C7", this);} // tgen

static void Test_S6472C7()
{
  extern Class_Descriptor cd_S6472C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S6472C7, buf);
    S6472C7 *dp, &lv = *(dp=new (buf) S6472C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S6472C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6472C7)");
    check_base_class_offset(lv, (S6472C9*)(S6472C8*), 0, "S6472C7");
    check_base_class_offset(lv, (S6472C8*), 0, "S6472C7");
    check_field_offset(lv, s6472c7f0, ABISELECT(8,4), "S6472C7.s6472c7f0");
    check_field_offset(lv, s6472c7f1, ABISELECT(32,20), "S6472C7.s6472c7f1");
    check_field_offset(lv, s6472c7f2, ABISELECT(64,52), "S6472C7.s6472c7f2");
    test_class_info(&lv, &cd_S6472C7);
    dp->~S6472C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6472C7(Test_S6472C7, "S6472C7", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S6472C7C1Ev();
extern void _ZN7S6472C7D1Ev();
Name_Map name_map_S6472C7[] = {
  NSPAIR(_ZN7S6472C7C1Ev),
  NSPAIR(_ZN7S6472C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6472C9;
extern VTBL_ENTRY _ZTI7S6472C9[];
extern  VTBL_ENTRY _ZTV7S6472C9[];
extern Class_Descriptor cd_S6472C8;
extern VTBL_ENTRY _ZTI7S6472C8[];
extern  VTBL_ENTRY _ZTV7S6472C8[];
static Base_Class bases_S6472C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6472C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S6472C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S6472C7[];
extern void _ZN7S6472C7D1Ev();
extern void _ZN7S6472C7D0Ev();
extern void _ZN7S6472C93v28Ev();
extern void _ZN7S6472C93v29Ev();
extern void _ZN7S6472C93v30Ev();
extern void _ZN7S6472C83v31Ev();
extern void _ZN7S6472C83v32Ev();
extern void _ZN7S6472C83v33Ev();
extern void _ZN7S6472C83v34Ev();
extern void _ZN7S6472C83v35Ev();
extern void _ZN7S6472C83v36Ev();
extern void _ZN7S6472C73v37Ev();
extern void _ZN7S6472C73v38Ev();
extern void _ZN7S6472C73v39Ev();
static  VTBL_ENTRY vtc_S6472C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6472C7[0]),
  (VTBL_ENTRY)&_ZN7S6472C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6472C7D0Ev,
  (VTBL_ENTRY)&_ZN7S6472C93v28Ev,
  (VTBL_ENTRY)&_ZN7S6472C93v29Ev,
  (VTBL_ENTRY)&_ZN7S6472C93v30Ev,
  (VTBL_ENTRY)&_ZN7S6472C83v31Ev,
  (VTBL_ENTRY)&_ZN7S6472C83v32Ev,
  (VTBL_ENTRY)&_ZN7S6472C83v33Ev,
  (VTBL_ENTRY)&_ZN7S6472C83v34Ev,
  (VTBL_ENTRY)&_ZN7S6472C83v35Ev,
  (VTBL_ENTRY)&_ZN7S6472C83v36Ev,
  (VTBL_ENTRY)&_ZN7S6472C73v37Ev,
  (VTBL_ENTRY)&_ZN7S6472C73v38Ev,
  (VTBL_ENTRY)&_ZN7S6472C73v39Ev,
};
extern VTBL_ENTRY _ZTI7S6472C7[];
extern  VTBL_ENTRY _ZTV7S6472C7[];
Class_Descriptor cd_S6472C7 = {  "S6472C7", // class name
  bases_S6472C7, 2,
  &(vtc_S6472C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S6472C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6472C7),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  S6472C1  : S6472C2 , S6472C7 {
  void *s6472c1f0;
  ::S6470C14_nt s6472c1f1;
  virtual  ~S6472C1(); // _ZN7S6472C1D1Ev
  virtual void  v1(); // _ZN7S6472C12v1Ev
  virtual void  v2(); // _ZN7S6472C12v2Ev
  virtual void  v3(); // _ZN7S6472C12v3Ev
  virtual void  v4(); // _ZN7S6472C12v4Ev
  virtual void  v5(); // _ZN7S6472C12v5Ev
  virtual void  v6(); // _ZN7S6472C12v6Ev
  virtual void  v7(); // _ZN7S6472C12v7Ev
  virtual void  v8(); // _ZN7S6472C12v8Ev
  virtual void  v9(); // _ZN7S6472C12v9Ev
  virtual void  v10(); // _ZN7S6472C13v10Ev
  virtual void  v11(); // _ZN7S6472C13v11Ev
  virtual void  v12(); // _ZN7S6472C13v12Ev
  S6472C1(); // tgen
};
//SIG(1 S6472C1) C1{ BC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 Fp FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}} BC7{ BC8{ BC9{ vd v28 v29 v30} vd v31 v32 v33 v34 v35 v36} vd v37 v38 v39 FC10{ m Fp Fi[2] FC5} FC11{ m FL[4]} Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 Fp FC12{ BC13{} Fc}}


 S6472C1 ::~S6472C1(){ note_dtor("S6472C1", this);}
void  S6472C1 ::v1(){vfunc_called(this, "_ZN7S6472C12v1Ev");}
void  S6472C1 ::v2(){vfunc_called(this, "_ZN7S6472C12v2Ev");}
void  S6472C1 ::v3(){vfunc_called(this, "_ZN7S6472C12v3Ev");}
void  S6472C1 ::v4(){vfunc_called(this, "_ZN7S6472C12v4Ev");}
void  S6472C1 ::v5(){vfunc_called(this, "_ZN7S6472C12v5Ev");}
void  S6472C1 ::v6(){vfunc_called(this, "_ZN7S6472C12v6Ev");}
void  S6472C1 ::v7(){vfunc_called(this, "_ZN7S6472C12v7Ev");}
void  S6472C1 ::v8(){vfunc_called(this, "_ZN7S6472C12v8Ev");}
void  S6472C1 ::v9(){vfunc_called(this, "_ZN7S6472C12v9Ev");}
void  S6472C1 ::v10(){vfunc_called(this, "_ZN7S6472C13v10Ev");}
void  S6472C1 ::v11(){vfunc_called(this, "_ZN7S6472C13v11Ev");}
void  S6472C1 ::v12(){vfunc_called(this, "_ZN7S6472C13v12Ev");}
S6472C1 ::S6472C1(){ note_ctor("S6472C1", this);} // tgen

static void Test_S6472C1()
{
  extern Class_Descriptor cd_S6472C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,22)];
    init_test(&cd_S6472C1, buf);
    S6472C1 *dp, &lv = *(dp=new (buf) S6472C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,84), "sizeof(S6472C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6472C1)");
    check_base_class_offset(lv, (S6472C2*), 0, "S6472C1");
    check_base_class_offset(lv, (S6472C9*)(S6472C8*)(S6472C7*), ABISELECT(32,20), "S6472C1");
    check_base_class_offset(lv, (S6472C8*)(S6472C7*), ABISELECT(32,20), "S6472C1");
    check_base_class_offset(lv, (S6472C7*), ABISELECT(32,20), "S6472C1");
    check_field_offset(lv, s6472c1f0, ABISELECT(104,76), "S6472C1.s6472c1f0");
    check_field_offset(lv, s6472c1f1, ABISELECT(112,80), "S6472C1.s6472c1f1");
    test_class_info(&lv, &cd_S6472C1);
    dp->~S6472C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6472C1(Test_S6472C1, "S6472C1", ABISELECT(120,84));

#else // __cplusplus

extern void _ZN7S6472C1C1Ev();
extern void _ZN7S6472C1D1Ev();
Name_Map name_map_S6472C1[] = {
  NSPAIR(_ZN7S6472C1C1Ev),
  NSPAIR(_ZN7S6472C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6472C2;
extern VTBL_ENTRY _ZTI7S6472C2[];
extern  VTBL_ENTRY _ZTV7S6472C2[];
extern Class_Descriptor cd_S6472C9;
extern VTBL_ENTRY _ZTI7S6472C9[];
extern  VTBL_ENTRY _ZTV7S6472C9[];
extern Class_Descriptor cd_S6472C8;
extern VTBL_ENTRY _ZTI7S6472C8[];
extern  VTBL_ENTRY _ZTV7S6472C8[];
extern Class_Descriptor cd_S6472C7;
extern VTBL_ENTRY _ZTI7S6472C7[];
extern  VTBL_ENTRY _ZTV7S6472C7[];
static Base_Class bases_S6472C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6472C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6472C9,    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_S6472C8,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6472C7,    ABISELECT(32,20), //bcp->offset
    31, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6472C1[];
extern void _ZN7S6472C1D1Ev();
extern void _ZN7S6472C1D0Ev();
extern void _ZN7S6472C23v13Ev();
extern void _ZN7S6472C23v14Ev();
extern void _ZN7S6472C23v15Ev();
extern void _ZN7S6472C23v16Ev();
extern void _ZN7S6472C23v17Ev();
extern void _ZN7S6472C23v18Ev();
extern void _ZN7S6472C23v19Ev();
extern void _ZN7S6472C23v20Ev();
extern void _ZN7S6472C23v21Ev();
extern void _ZN7S6472C23v22Ev();
extern void _ZN7S6472C23v23Ev();
extern void _ZN7S6472C23v24Ev();
extern void _ZN7S6472C23v25Ev();
extern void _ZN7S6472C23v26Ev();
extern void _ZN7S6472C23v27Ev();
extern void _ZN7S6472C12v1Ev();
extern void _ZN7S6472C12v2Ev();
extern void _ZN7S6472C12v3Ev();
extern void _ZN7S6472C12v4Ev();
extern void _ZN7S6472C12v5Ev();
extern void _ZN7S6472C12v6Ev();
extern void _ZN7S6472C12v7Ev();
extern void _ZN7S6472C12v8Ev();
extern void _ZN7S6472C12v9Ev();
extern void _ZN7S6472C13v10Ev();
extern void _ZN7S6472C13v11Ev();
extern void _ZN7S6472C13v12Ev();
extern void ABISELECT(_ZThn32_N7S6472C1D1Ev,_ZThn20_N7S6472C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S6472C1D0Ev,_ZThn20_N7S6472C1D0Ev)();
extern void _ZN7S6472C93v28Ev();
extern void _ZN7S6472C93v29Ev();
extern void _ZN7S6472C93v30Ev();
extern void _ZN7S6472C83v31Ev();
extern void _ZN7S6472C83v32Ev();
extern void _ZN7S6472C83v33Ev();
extern void _ZN7S6472C83v34Ev();
extern void _ZN7S6472C83v35Ev();
extern void _ZN7S6472C83v36Ev();
extern void _ZN7S6472C73v37Ev();
extern void _ZN7S6472C73v38Ev();
extern void _ZN7S6472C73v39Ev();
static  VTBL_ENTRY vtc_S6472C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6472C1[0]),
  (VTBL_ENTRY)&_ZN7S6472C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6472C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6472C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6472C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6472C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6472C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6472C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6472C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6472C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6472C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6472C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6472C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6472C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6472C13v11Ev,
  (VTBL_ENTRY)&_ZN7S6472C13v12Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S6472C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S6472C1D1Ev,_ZThn20_N7S6472C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S6472C1D0Ev,_ZThn20_N7S6472C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6472C93v28Ev,
  (VTBL_ENTRY)&_ZN7S6472C93v29Ev,
  (VTBL_ENTRY)&_ZN7S6472C93v30Ev,
  (VTBL_ENTRY)&_ZN7S6472C83v31Ev,
  (VTBL_ENTRY)&_ZN7S6472C83v32Ev,
  (VTBL_ENTRY)&_ZN7S6472C83v33Ev,
  (VTBL_ENTRY)&_ZN7S6472C83v34Ev,
  (VTBL_ENTRY)&_ZN7S6472C83v35Ev,
  (VTBL_ENTRY)&_ZN7S6472C83v36Ev,
  (VTBL_ENTRY)&_ZN7S6472C73v37Ev,
  (VTBL_ENTRY)&_ZN7S6472C73v38Ev,
  (VTBL_ENTRY)&_ZN7S6472C73v39Ev,
};
extern VTBL_ENTRY _ZTI7S6472C1[];
extern  VTBL_ENTRY _ZTV7S6472C1[];
Class_Descriptor cd_S6472C1 = {  "S6472C1", // class name
  bases_S6472C1, 4,
  &(vtc_S6472C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,84), // object size
  NSPAIRA(_ZTI7S6472C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6472C1),47, //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  S6504C2  {
  void *s6504c2f0;
  ::S3027C4_nt s6504c2f1;
  virtual  ~S6504C2(); // _ZN7S6504C2D1Ev
  virtual void  v15(); // _ZN7S6504C23v15Ev
  virtual void  v16(); // _ZN7S6504C23v16Ev
  virtual void  v17(); // _ZN7S6504C23v17Ev
  virtual void  v18(); // _ZN7S6504C23v18Ev
  virtual void  v19(); // _ZN7S6504C23v19Ev
  virtual void  v20(); // _ZN7S6504C23v20Ev
  virtual void  v21(); // _ZN7S6504C23v21Ev
  virtual void  v22(); // _ZN7S6504C23v22Ev
  virtual void  v23(); // _ZN7S6504C23v23Ev
  virtual void  v24(); // _ZN7S6504C23v24Ev
  virtual void  v25(); // _ZN7S6504C23v25Ev
  virtual void  v26(); // _ZN7S6504C23v26Ev
  virtual void  v27(); // _ZN7S6504C23v27Ev
  virtual void  v28(); // _ZN7S6504C23v28Ev
  virtual void  v29(); // _ZN7S6504C23v29Ev
  S6504C2(); // tgen
};
//SIG(-1 S6504C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp FC2{ BC3{ m Fp Fi FC4{ m} FC5{ m}}}}


 S6504C2 ::~S6504C2(){ note_dtor("S6504C2", this);}
void  S6504C2 ::v15(){vfunc_called(this, "_ZN7S6504C23v15Ev");}
void  S6504C2 ::v16(){vfunc_called(this, "_ZN7S6504C23v16Ev");}
void  S6504C2 ::v17(){vfunc_called(this, "_ZN7S6504C23v17Ev");}
void  S6504C2 ::v18(){vfunc_called(this, "_ZN7S6504C23v18Ev");}
void  S6504C2 ::v19(){vfunc_called(this, "_ZN7S6504C23v19Ev");}
void  S6504C2 ::v20(){vfunc_called(this, "_ZN7S6504C23v20Ev");}
void  S6504C2 ::v21(){vfunc_called(this, "_ZN7S6504C23v21Ev");}
void  S6504C2 ::v22(){vfunc_called(this, "_ZN7S6504C23v22Ev");}
void  S6504C2 ::v23(){vfunc_called(this, "_ZN7S6504C23v23Ev");}
void  S6504C2 ::v24(){vfunc_called(this, "_ZN7S6504C23v24Ev");}
void  S6504C2 ::v25(){vfunc_called(this, "_ZN7S6504C23v25Ev");}
void  S6504C2 ::v26(){vfunc_called(this, "_ZN7S6504C23v26Ev");}
void  S6504C2 ::v27(){vfunc_called(this, "_ZN7S6504C23v27Ev");}
void  S6504C2 ::v28(){vfunc_called(this, "_ZN7S6504C23v28Ev");}
void  S6504C2 ::v29(){vfunc_called(this, "_ZN7S6504C23v29Ev");}
S6504C2 ::S6504C2(){ note_ctor("S6504C2", this);} // tgen

static void Test_S6504C2()
{
  extern Class_Descriptor cd_S6504C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S6504C2, buf);
    S6504C2 *dp, &lv = *(dp=new (buf) S6504C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S6504C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6504C2)");
    check_field_offset(lv, s6504c2f0, ABISELECT(8,4), "S6504C2.s6504c2f0");
    check_field_offset(lv, s6504c2f1, ABISELECT(16,8), "S6504C2.s6504c2f1");
    test_class_info(&lv, &cd_S6504C2);
    dp->~S6504C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6504C2(Test_S6504C2, "S6504C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S6504C2C1Ev();
extern void _ZN7S6504C2D1Ev();
Name_Map name_map_S6504C2[] = {
  NSPAIR(_ZN7S6504C2C1Ev),
  NSPAIR(_ZN7S6504C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6504C2[];
extern void _ZN7S6504C2D1Ev();
extern void _ZN7S6504C2D0Ev();
extern void _ZN7S6504C23v15Ev();
extern void _ZN7S6504C23v16Ev();
extern void _ZN7S6504C23v17Ev();
extern void _ZN7S6504C23v18Ev();
extern void _ZN7S6504C23v19Ev();
extern void _ZN7S6504C23v20Ev();
extern void _ZN7S6504C23v21Ev();
extern void _ZN7S6504C23v22Ev();
extern void _ZN7S6504C23v23Ev();
extern void _ZN7S6504C23v24Ev();
extern void _ZN7S6504C23v25Ev();
extern void _ZN7S6504C23v26Ev();
extern void _ZN7S6504C23v27Ev();
extern void _ZN7S6504C23v28Ev();
extern void _ZN7S6504C23v29Ev();
static  VTBL_ENTRY vtc_S6504C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6504C2[0]),
  (VTBL_ENTRY)&_ZN7S6504C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6504C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v29Ev,
};
extern VTBL_ENTRY _ZTI7S6504C2[];
extern  VTBL_ENTRY _ZTV7S6504C2[];
Class_Descriptor cd_S6504C2 = {  "S6504C2", // class name
  0,0,//no base classes
  &(vtc_S6504C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S6504C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6504C2),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6504C9  {
  virtual  ~S6504C9(); // _ZN7S6504C9D1Ev
  virtual void  v30(); // _ZN7S6504C93v30Ev
  virtual void  v31(); // _ZN7S6504C93v31Ev
  virtual void  v32(); // _ZN7S6504C93v32Ev
  S6504C9(); // tgen
};
//SIG(-1 S6504C9) C1{ vd v1 v2 v3}


 S6504C9 ::~S6504C9(){ note_dtor("S6504C9", this);}
void  S6504C9 ::v30(){vfunc_called(this, "_ZN7S6504C93v30Ev");}
void  S6504C9 ::v31(){vfunc_called(this, "_ZN7S6504C93v31Ev");}
void  S6504C9 ::v32(){vfunc_called(this, "_ZN7S6504C93v32Ev");}
S6504C9 ::S6504C9(){ note_ctor("S6504C9", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6504C9C1Ev();
extern void _ZN7S6504C9D1Ev();
Name_Map name_map_S6504C9[] = {
  NSPAIR(_ZN7S6504C9C1Ev),
  NSPAIR(_ZN7S6504C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6504C9[];
extern void _ZN7S6504C9D1Ev();
extern void _ZN7S6504C9D0Ev();
extern void _ZN7S6504C93v30Ev();
extern void _ZN7S6504C93v31Ev();
extern void _ZN7S6504C93v32Ev();
static  VTBL_ENTRY vtc_S6504C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6504C9[0]),
  (VTBL_ENTRY)&_ZN7S6504C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6504C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6504C93v30Ev,
  (VTBL_ENTRY)&_ZN7S6504C93v31Ev,
  (VTBL_ENTRY)&_ZN7S6504C93v32Ev,
};
extern VTBL_ENTRY _ZTI7S6504C9[];
extern  VTBL_ENTRY _ZTV7S6504C9[];
Class_Descriptor cd_S6504C9 = {  "S6504C9", // class name
  0,0,//no base classes
  &(vtc_S6504C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6504C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6504C9),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  S6504C8  : S6504C9 {
  virtual  ~S6504C8(); // _ZN7S6504C8D1Ev
  virtual void  v33(); // _ZN7S6504C83v33Ev
  virtual void  v34(); // _ZN7S6504C83v34Ev
  virtual void  v35(); // _ZN7S6504C83v35Ev
  virtual void  v36(); // _ZN7S6504C83v36Ev
  virtual void  v37(); // _ZN7S6504C83v37Ev
  virtual void  v38(); // _ZN7S6504C83v38Ev
  S6504C8(); // tgen
};
//SIG(-1 S6504C8) C1{ BC2{ vd v7 v8 v9} vd v1 v2 v3 v4 v5 v6}


 S6504C8 ::~S6504C8(){ note_dtor("S6504C8", this);}
void  S6504C8 ::v33(){vfunc_called(this, "_ZN7S6504C83v33Ev");}
void  S6504C8 ::v34(){vfunc_called(this, "_ZN7S6504C83v34Ev");}
void  S6504C8 ::v35(){vfunc_called(this, "_ZN7S6504C83v35Ev");}
void  S6504C8 ::v36(){vfunc_called(this, "_ZN7S6504C83v36Ev");}
void  S6504C8 ::v37(){vfunc_called(this, "_ZN7S6504C83v37Ev");}
void  S6504C8 ::v38(){vfunc_called(this, "_ZN7S6504C83v38Ev");}
S6504C8 ::S6504C8(){ note_ctor("S6504C8", this);} // tgen

static void Test_S6504C8()
{
  extern Class_Descriptor cd_S6504C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6504C8, buf);
    S6504C8 *dp, &lv = *(dp=new (buf) S6504C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6504C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6504C8)");
    check_base_class_offset(lv, (S6504C9*), 0, "S6504C8");
    test_class_info(&lv, &cd_S6504C8);
    dp->~S6504C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6504C8(Test_S6504C8, "S6504C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6504C8C1Ev();
extern void _ZN7S6504C8D1Ev();
Name_Map name_map_S6504C8[] = {
  NSPAIR(_ZN7S6504C8C1Ev),
  NSPAIR(_ZN7S6504C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6504C9;
extern VTBL_ENTRY _ZTI7S6504C9[];
extern  VTBL_ENTRY _ZTV7S6504C9[];
static Base_Class bases_S6504C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6504C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6504C8[];
extern void _ZN7S6504C8D1Ev();
extern void _ZN7S6504C8D0Ev();
extern void _ZN7S6504C93v30Ev();
extern void _ZN7S6504C93v31Ev();
extern void _ZN7S6504C93v32Ev();
extern void _ZN7S6504C83v33Ev();
extern void _ZN7S6504C83v34Ev();
extern void _ZN7S6504C83v35Ev();
extern void _ZN7S6504C83v36Ev();
extern void _ZN7S6504C83v37Ev();
extern void _ZN7S6504C83v38Ev();
static  VTBL_ENTRY vtc_S6504C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6504C8[0]),
  (VTBL_ENTRY)&_ZN7S6504C8D1Ev,
  (VTBL_ENTRY)&_ZN7S6504C8D0Ev,
  (VTBL_ENTRY)&_ZN7S6504C93v30Ev,
  (VTBL_ENTRY)&_ZN7S6504C93v31Ev,
  (VTBL_ENTRY)&_ZN7S6504C93v32Ev,
  (VTBL_ENTRY)&_ZN7S6504C83v33Ev,
  (VTBL_ENTRY)&_ZN7S6504C83v34Ev,
  (VTBL_ENTRY)&_ZN7S6504C83v35Ev,
  (VTBL_ENTRY)&_ZN7S6504C83v36Ev,
  (VTBL_ENTRY)&_ZN7S6504C83v37Ev,
  (VTBL_ENTRY)&_ZN7S6504C83v38Ev,
};
extern VTBL_ENTRY _ZTI7S6504C8[];
extern  VTBL_ENTRY _ZTV7S6504C8[];
Class_Descriptor cd_S6504C8 = {  "S6504C8", // class name
  bases_S6504C8, 1,
  &(vtc_S6504C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6504C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6504C8),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  S6504C7  : S6504C8 {
  ::S731C20 s6504c7f0;
  ::S3029C15_nt s6504c7f1;
  char s6504c7f2;
  virtual  ~S6504C7(); // _ZN7S6504C7D1Ev
  virtual void  v39(); // _ZN7S6504C73v39Ev
  virtual void  v40(); // _ZN7S6504C73v40Ev
  virtual void  v41(); // _ZN7S6504C73v41Ev
  S6504C7(); // tgen
};
//SIG(-1 S6504C7) C1{ BC2{ BC3{ vd v4 v5 v6} vd v7 v8 v9 v10 v11 v12} vd v1 v2 v3 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FL[4]} Fc}


 S6504C7 ::~S6504C7(){ note_dtor("S6504C7", this);}
void  S6504C7 ::v39(){vfunc_called(this, "_ZN7S6504C73v39Ev");}
void  S6504C7 ::v40(){vfunc_called(this, "_ZN7S6504C73v40Ev");}
void  S6504C7 ::v41(){vfunc_called(this, "_ZN7S6504C73v41Ev");}
S6504C7 ::S6504C7(){ note_ctor("S6504C7", this);} // tgen

static void Test_S6504C7()
{
  extern Class_Descriptor cd_S6504C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S6504C7, buf);
    S6504C7 *dp, &lv = *(dp=new (buf) S6504C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S6504C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6504C7)");
    check_base_class_offset(lv, (S6504C9*)(S6504C8*), 0, "S6504C7");
    check_base_class_offset(lv, (S6504C8*), 0, "S6504C7");
    check_field_offset(lv, s6504c7f0, ABISELECT(8,4), "S6504C7.s6504c7f0");
    check_field_offset(lv, s6504c7f1, ABISELECT(32,20), "S6504C7.s6504c7f1");
    check_field_offset(lv, s6504c7f2, ABISELECT(64,52), "S6504C7.s6504c7f2");
    test_class_info(&lv, &cd_S6504C7);
    dp->~S6504C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6504C7(Test_S6504C7, "S6504C7", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S6504C7C1Ev();
extern void _ZN7S6504C7D1Ev();
Name_Map name_map_S6504C7[] = {
  NSPAIR(_ZN7S6504C7C1Ev),
  NSPAIR(_ZN7S6504C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6504C9;
extern VTBL_ENTRY _ZTI7S6504C9[];
extern  VTBL_ENTRY _ZTV7S6504C9[];
extern Class_Descriptor cd_S6504C8;
extern VTBL_ENTRY _ZTI7S6504C8[];
extern  VTBL_ENTRY _ZTV7S6504C8[];
static Base_Class bases_S6504C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6504C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S6504C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S6504C7[];
extern void _ZN7S6504C7D1Ev();
extern void _ZN7S6504C7D0Ev();
extern void _ZN7S6504C93v30Ev();
extern void _ZN7S6504C93v31Ev();
extern void _ZN7S6504C93v32Ev();
extern void _ZN7S6504C83v33Ev();
extern void _ZN7S6504C83v34Ev();
extern void _ZN7S6504C83v35Ev();
extern void _ZN7S6504C83v36Ev();
extern void _ZN7S6504C83v37Ev();
extern void _ZN7S6504C83v38Ev();
extern void _ZN7S6504C73v39Ev();
extern void _ZN7S6504C73v40Ev();
extern void _ZN7S6504C73v41Ev();
static  VTBL_ENTRY vtc_S6504C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6504C7[0]),
  (VTBL_ENTRY)&_ZN7S6504C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6504C7D0Ev,
  (VTBL_ENTRY)&_ZN7S6504C93v30Ev,
  (VTBL_ENTRY)&_ZN7S6504C93v31Ev,
  (VTBL_ENTRY)&_ZN7S6504C93v32Ev,
  (VTBL_ENTRY)&_ZN7S6504C83v33Ev,
  (VTBL_ENTRY)&_ZN7S6504C83v34Ev,
  (VTBL_ENTRY)&_ZN7S6504C83v35Ev,
  (VTBL_ENTRY)&_ZN7S6504C83v36Ev,
  (VTBL_ENTRY)&_ZN7S6504C83v37Ev,
  (VTBL_ENTRY)&_ZN7S6504C83v38Ev,
  (VTBL_ENTRY)&_ZN7S6504C73v39Ev,
  (VTBL_ENTRY)&_ZN7S6504C73v40Ev,
  (VTBL_ENTRY)&_ZN7S6504C73v41Ev,
};
extern VTBL_ENTRY _ZTI7S6504C7[];
extern  VTBL_ENTRY _ZTV7S6504C7[];
Class_Descriptor cd_S6504C7 = {  "S6504C7", // class name
  bases_S6504C7, 2,
  &(vtc_S6504C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S6504C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6504C7),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  S6504C1  : S6504C2 , S6504C7 {
  void *s6504c1f0;
  char s6504c1f1[2];
  virtual  ~S6504C1(); // _ZN7S6504C1D1Ev
  virtual void  v1(); // _ZN7S6504C12v1Ev
  virtual void  v2(); // _ZN7S6504C12v2Ev
  virtual void  v3(); // _ZN7S6504C12v3Ev
  virtual void  v4(); // _ZN7S6504C12v4Ev
  virtual void  v5(); // _ZN7S6504C12v5Ev
  virtual void  v6(); // _ZN7S6504C12v6Ev
  virtual void  v7(); // _ZN7S6504C12v7Ev
  virtual void  v8(); // _ZN7S6504C12v8Ev
  virtual void  v9(); // _ZN7S6504C12v9Ev
  virtual void  v10(); // _ZN7S6504C13v10Ev
  virtual void  v11(); // _ZN7S6504C13v11Ev
  virtual void  v12(); // _ZN7S6504C13v12Ev
  virtual void  v13(); // _ZN7S6504C13v13Ev
  virtual void  v14(); // _ZN7S6504C13v14Ev
  S6504C1(); // tgen
};
//SIG(1 S6504C1) C1{ BC2{ vd v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 Fp FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}} BC7{ BC8{ BC9{ vd v30 v31 v32} vd v33 v34 v35 v36 v37 v38} vd v39 v40 v41 FC10{ m Fp Fi[2] FC5} FC11{ m FL[4]} Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp Fc[2]}


 S6504C1 ::~S6504C1(){ note_dtor("S6504C1", this);}
void  S6504C1 ::v1(){vfunc_called(this, "_ZN7S6504C12v1Ev");}
void  S6504C1 ::v2(){vfunc_called(this, "_ZN7S6504C12v2Ev");}
void  S6504C1 ::v3(){vfunc_called(this, "_ZN7S6504C12v3Ev");}
void  S6504C1 ::v4(){vfunc_called(this, "_ZN7S6504C12v4Ev");}
void  S6504C1 ::v5(){vfunc_called(this, "_ZN7S6504C12v5Ev");}
void  S6504C1 ::v6(){vfunc_called(this, "_ZN7S6504C12v6Ev");}
void  S6504C1 ::v7(){vfunc_called(this, "_ZN7S6504C12v7Ev");}
void  S6504C1 ::v8(){vfunc_called(this, "_ZN7S6504C12v8Ev");}
void  S6504C1 ::v9(){vfunc_called(this, "_ZN7S6504C12v9Ev");}
void  S6504C1 ::v10(){vfunc_called(this, "_ZN7S6504C13v10Ev");}
void  S6504C1 ::v11(){vfunc_called(this, "_ZN7S6504C13v11Ev");}
void  S6504C1 ::v12(){vfunc_called(this, "_ZN7S6504C13v12Ev");}
void  S6504C1 ::v13(){vfunc_called(this, "_ZN7S6504C13v13Ev");}
void  S6504C1 ::v14(){vfunc_called(this, "_ZN7S6504C13v14Ev");}
S6504C1 ::S6504C1(){ note_ctor("S6504C1", this);} // tgen

static void Test_S6504C1()
{
  extern Class_Descriptor cd_S6504C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,22)];
    init_test(&cd_S6504C1, buf);
    S6504C1 *dp, &lv = *(dp=new (buf) S6504C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,84), "sizeof(S6504C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6504C1)");
    check_base_class_offset(lv, (S6504C2*), 0, "S6504C1");
    check_base_class_offset(lv, (S6504C9*)(S6504C8*)(S6504C7*), ABISELECT(32,20), "S6504C1");
    check_base_class_offset(lv, (S6504C8*)(S6504C7*), ABISELECT(32,20), "S6504C1");
    check_base_class_offset(lv, (S6504C7*), ABISELECT(32,20), "S6504C1");
    check_field_offset(lv, s6504c1f0, ABISELECT(104,76), "S6504C1.s6504c1f0");
    check_field_offset(lv, s6504c1f1, ABISELECT(112,80), "S6504C1.s6504c1f1");
    test_class_info(&lv, &cd_S6504C1);
    dp->~S6504C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6504C1(Test_S6504C1, "S6504C1", ABISELECT(120,84));

#else // __cplusplus

extern void _ZN7S6504C1C1Ev();
extern void _ZN7S6504C1D1Ev();
Name_Map name_map_S6504C1[] = {
  NSPAIR(_ZN7S6504C1C1Ev),
  NSPAIR(_ZN7S6504C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6504C2;
extern VTBL_ENTRY _ZTI7S6504C2[];
extern  VTBL_ENTRY _ZTV7S6504C2[];
extern Class_Descriptor cd_S6504C9;
extern VTBL_ENTRY _ZTI7S6504C9[];
extern  VTBL_ENTRY _ZTV7S6504C9[];
extern Class_Descriptor cd_S6504C8;
extern VTBL_ENTRY _ZTI7S6504C8[];
extern  VTBL_ENTRY _ZTV7S6504C8[];
extern Class_Descriptor cd_S6504C7;
extern VTBL_ENTRY _ZTI7S6504C7[];
extern  VTBL_ENTRY _ZTV7S6504C7[];
static Base_Class bases_S6504C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6504C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6504C9,    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_S6504C8,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6504C7,    ABISELECT(32,20), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6504C1[];
extern void _ZN7S6504C1D1Ev();
extern void _ZN7S6504C1D0Ev();
extern void _ZN7S6504C23v15Ev();
extern void _ZN7S6504C23v16Ev();
extern void _ZN7S6504C23v17Ev();
extern void _ZN7S6504C23v18Ev();
extern void _ZN7S6504C23v19Ev();
extern void _ZN7S6504C23v20Ev();
extern void _ZN7S6504C23v21Ev();
extern void _ZN7S6504C23v22Ev();
extern void _ZN7S6504C23v23Ev();
extern void _ZN7S6504C23v24Ev();
extern void _ZN7S6504C23v25Ev();
extern void _ZN7S6504C23v26Ev();
extern void _ZN7S6504C23v27Ev();
extern void _ZN7S6504C23v28Ev();
extern void _ZN7S6504C23v29Ev();
extern void _ZN7S6504C12v1Ev();
extern void _ZN7S6504C12v2Ev();
extern void _ZN7S6504C12v3Ev();
extern void _ZN7S6504C12v4Ev();
extern void _ZN7S6504C12v5Ev();
extern void _ZN7S6504C12v6Ev();
extern void _ZN7S6504C12v7Ev();
extern void _ZN7S6504C12v8Ev();
extern void _ZN7S6504C12v9Ev();
extern void _ZN7S6504C13v10Ev();
extern void _ZN7S6504C13v11Ev();
extern void _ZN7S6504C13v12Ev();
extern void _ZN7S6504C13v13Ev();
extern void _ZN7S6504C13v14Ev();
extern void ABISELECT(_ZThn32_N7S6504C1D1Ev,_ZThn20_N7S6504C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S6504C1D0Ev,_ZThn20_N7S6504C1D0Ev)();
extern void _ZN7S6504C93v30Ev();
extern void _ZN7S6504C93v31Ev();
extern void _ZN7S6504C93v32Ev();
extern void _ZN7S6504C83v33Ev();
extern void _ZN7S6504C83v34Ev();
extern void _ZN7S6504C83v35Ev();
extern void _ZN7S6504C83v36Ev();
extern void _ZN7S6504C83v37Ev();
extern void _ZN7S6504C83v38Ev();
extern void _ZN7S6504C73v39Ev();
extern void _ZN7S6504C73v40Ev();
extern void _ZN7S6504C73v41Ev();
static  VTBL_ENTRY vtc_S6504C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6504C1[0]),
  (VTBL_ENTRY)&_ZN7S6504C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6504C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6504C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6504C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6504C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6504C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6504C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6504C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6504C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6504C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6504C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6504C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6504C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6504C13v11Ev,
  (VTBL_ENTRY)&_ZN7S6504C13v12Ev,
  (VTBL_ENTRY)&_ZN7S6504C13v13Ev,
  (VTBL_ENTRY)&_ZN7S6504C13v14Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S6504C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S6504C1D1Ev,_ZThn20_N7S6504C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S6504C1D0Ev,_ZThn20_N7S6504C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6504C93v30Ev,
  (VTBL_ENTRY)&_ZN7S6504C93v31Ev,
  (VTBL_ENTRY)&_ZN7S6504C93v32Ev,
  (VTBL_ENTRY)&_ZN7S6504C83v33Ev,
  (VTBL_ENTRY)&_ZN7S6504C83v34Ev,
  (VTBL_ENTRY)&_ZN7S6504C83v35Ev,
  (VTBL_ENTRY)&_ZN7S6504C83v36Ev,
  (VTBL_ENTRY)&_ZN7S6504C83v37Ev,
  (VTBL_ENTRY)&_ZN7S6504C83v38Ev,
  (VTBL_ENTRY)&_ZN7S6504C73v39Ev,
  (VTBL_ENTRY)&_ZN7S6504C73v40Ev,
  (VTBL_ENTRY)&_ZN7S6504C73v41Ev,
};
extern VTBL_ENTRY _ZTI7S6504C1[];
extern  VTBL_ENTRY _ZTV7S6504C1[];
Class_Descriptor cd_S6504C1 = {  "S6504C1", // class name
  bases_S6504C1, 4,
  &(vtc_S6504C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,84), // object size
  NSPAIRA(_ZTI7S6504C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6504C1),49, //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  S7171C2  {
  void *s7171c2f0;
  ::S3027C4_nt s7171c2f1;
  virtual  ~S7171C2(); // _ZN7S7171C2D1Ev
  virtual void  v8(); // _ZN7S7171C22v8Ev
  virtual void  v9(); // _ZN7S7171C22v9Ev
  virtual void  v10(); // _ZN7S7171C23v10Ev
  virtual void  v11(); // _ZN7S7171C23v11Ev
  virtual void  v12(); // _ZN7S7171C23v12Ev
  virtual void  v13(); // _ZN7S7171C23v13Ev
  virtual void  v14(); // _ZN7S7171C23v14Ev
  virtual void  v15(); // _ZN7S7171C23v15Ev
  virtual void  v16(); // _ZN7S7171C23v16Ev
  virtual void  v17(); // _ZN7S7171C23v17Ev
  virtual void  v18(); // _ZN7S7171C23v18Ev
  virtual void  v19(); // _ZN7S7171C23v19Ev
  virtual void  v20(); // _ZN7S7171C23v20Ev
  virtual void  v21(); // _ZN7S7171C23v21Ev
  virtual void  v22(); // _ZN7S7171C23v22Ev
  S7171C2(); // tgen
};
//SIG(-1 S7171C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp FC2{ BC3{ m Fp Fi FC4{ m} FC5{ m}}}}


 S7171C2 ::~S7171C2(){ note_dtor("S7171C2", this);}
void  S7171C2 ::v8(){vfunc_called(this, "_ZN7S7171C22v8Ev");}
void  S7171C2 ::v9(){vfunc_called(this, "_ZN7S7171C22v9Ev");}
void  S7171C2 ::v10(){vfunc_called(this, "_ZN7S7171C23v10Ev");}
void  S7171C2 ::v11(){vfunc_called(this, "_ZN7S7171C23v11Ev");}
void  S7171C2 ::v12(){vfunc_called(this, "_ZN7S7171C23v12Ev");}
void  S7171C2 ::v13(){vfunc_called(this, "_ZN7S7171C23v13Ev");}
void  S7171C2 ::v14(){vfunc_called(this, "_ZN7S7171C23v14Ev");}
void  S7171C2 ::v15(){vfunc_called(this, "_ZN7S7171C23v15Ev");}
void  S7171C2 ::v16(){vfunc_called(this, "_ZN7S7171C23v16Ev");}
void  S7171C2 ::v17(){vfunc_called(this, "_ZN7S7171C23v17Ev");}
void  S7171C2 ::v18(){vfunc_called(this, "_ZN7S7171C23v18Ev");}
void  S7171C2 ::v19(){vfunc_called(this, "_ZN7S7171C23v19Ev");}
void  S7171C2 ::v20(){vfunc_called(this, "_ZN7S7171C23v20Ev");}
void  S7171C2 ::v21(){vfunc_called(this, "_ZN7S7171C23v21Ev");}
void  S7171C2 ::v22(){vfunc_called(this, "_ZN7S7171C23v22Ev");}
S7171C2 ::S7171C2(){ note_ctor("S7171C2", this);} // tgen

static void Test_S7171C2()
{
  extern Class_Descriptor cd_S7171C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7171C2, buf);
    S7171C2 *dp, &lv = *(dp=new (buf) S7171C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7171C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7171C2)");
    check_field_offset(lv, s7171c2f0, ABISELECT(8,4), "S7171C2.s7171c2f0");
    check_field_offset(lv, s7171c2f1, ABISELECT(16,8), "S7171C2.s7171c2f1");
    test_class_info(&lv, &cd_S7171C2);
    dp->~S7171C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7171C2(Test_S7171C2, "S7171C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S7171C2C1Ev();
extern void _ZN7S7171C2D1Ev();
Name_Map name_map_S7171C2[] = {
  NSPAIR(_ZN7S7171C2C1Ev),
  NSPAIR(_ZN7S7171C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7171C2[];
extern void _ZN7S7171C2D1Ev();
extern void _ZN7S7171C2D0Ev();
extern void _ZN7S7171C22v8Ev();
extern void _ZN7S7171C22v9Ev();
extern void _ZN7S7171C23v10Ev();
extern void _ZN7S7171C23v11Ev();
extern void _ZN7S7171C23v12Ev();
extern void _ZN7S7171C23v13Ev();
extern void _ZN7S7171C23v14Ev();
extern void _ZN7S7171C23v15Ev();
extern void _ZN7S7171C23v16Ev();
extern void _ZN7S7171C23v17Ev();
extern void _ZN7S7171C23v18Ev();
extern void _ZN7S7171C23v19Ev();
extern void _ZN7S7171C23v20Ev();
extern void _ZN7S7171C23v21Ev();
extern void _ZN7S7171C23v22Ev();
static  VTBL_ENTRY vtc_S7171C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7171C2[0]),
  (VTBL_ENTRY)&_ZN7S7171C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7171C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7171C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7171C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v22Ev,
};
extern VTBL_ENTRY _ZTI7S7171C2[];
extern  VTBL_ENTRY _ZTV7S7171C2[];
Class_Descriptor cd_S7171C2 = {  "S7171C2", // class name
  0,0,//no base classes
  &(vtc_S7171C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S7171C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7171C2),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7171C9  {
  virtual  ~S7171C9(); // _ZN7S7171C9D1Ev
  virtual void  v23(); // _ZN7S7171C93v23Ev
  virtual void  v24(); // _ZN7S7171C93v24Ev
  virtual void  v25(); // _ZN7S7171C93v25Ev
  S7171C9(); // tgen
};
//SIG(-1 S7171C9) C1{ vd v1 v2 v3}


 S7171C9 ::~S7171C9(){ note_dtor("S7171C9", this);}
void  S7171C9 ::v23(){vfunc_called(this, "_ZN7S7171C93v23Ev");}
void  S7171C9 ::v24(){vfunc_called(this, "_ZN7S7171C93v24Ev");}
void  S7171C9 ::v25(){vfunc_called(this, "_ZN7S7171C93v25Ev");}
S7171C9 ::S7171C9(){ note_ctor("S7171C9", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7171C9C1Ev();
extern void _ZN7S7171C9D1Ev();
Name_Map name_map_S7171C9[] = {
  NSPAIR(_ZN7S7171C9C1Ev),
  NSPAIR(_ZN7S7171C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7171C9[];
extern void _ZN7S7171C9D1Ev();
extern void _ZN7S7171C9D0Ev();
extern void _ZN7S7171C93v23Ev();
extern void _ZN7S7171C93v24Ev();
extern void _ZN7S7171C93v25Ev();
static  VTBL_ENTRY vtc_S7171C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7171C9[0]),
  (VTBL_ENTRY)&_ZN7S7171C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7171C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7171C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7171C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7171C93v25Ev,
};
extern VTBL_ENTRY _ZTI7S7171C9[];
extern  VTBL_ENTRY _ZTV7S7171C9[];
Class_Descriptor cd_S7171C9 = {  "S7171C9", // class name
  0,0,//no base classes
  &(vtc_S7171C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7171C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7171C9),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  S7171C8  : S7171C9 {
  virtual  ~S7171C8(); // _ZN7S7171C8D1Ev
  virtual void  v26(); // _ZN7S7171C83v26Ev
  virtual void  v27(); // _ZN7S7171C83v27Ev
  virtual void  v28(); // _ZN7S7171C83v28Ev
  virtual void  v29(); // _ZN7S7171C83v29Ev
  virtual void  v30(); // _ZN7S7171C83v30Ev
  virtual void  v31(); // _ZN7S7171C83v31Ev
  S7171C8(); // tgen
};
//SIG(-1 S7171C8) C1{ BC2{ vd v7 v8 v9} vd v1 v2 v3 v4 v5 v6}


 S7171C8 ::~S7171C8(){ note_dtor("S7171C8", this);}
void  S7171C8 ::v26(){vfunc_called(this, "_ZN7S7171C83v26Ev");}
void  S7171C8 ::v27(){vfunc_called(this, "_ZN7S7171C83v27Ev");}
void  S7171C8 ::v28(){vfunc_called(this, "_ZN7S7171C83v28Ev");}
void  S7171C8 ::v29(){vfunc_called(this, "_ZN7S7171C83v29Ev");}
void  S7171C8 ::v30(){vfunc_called(this, "_ZN7S7171C83v30Ev");}
void  S7171C8 ::v31(){vfunc_called(this, "_ZN7S7171C83v31Ev");}
S7171C8 ::S7171C8(){ note_ctor("S7171C8", this);} // tgen

static void Test_S7171C8()
{
  extern Class_Descriptor cd_S7171C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7171C8, buf);
    S7171C8 *dp, &lv = *(dp=new (buf) S7171C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7171C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7171C8)");
    check_base_class_offset(lv, (S7171C9*), 0, "S7171C8");
    test_class_info(&lv, &cd_S7171C8);
    dp->~S7171C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7171C8(Test_S7171C8, "S7171C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7171C8C1Ev();
extern void _ZN7S7171C8D1Ev();
Name_Map name_map_S7171C8[] = {
  NSPAIR(_ZN7S7171C8C1Ev),
  NSPAIR(_ZN7S7171C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7171C9;
extern VTBL_ENTRY _ZTI7S7171C9[];
extern  VTBL_ENTRY _ZTV7S7171C9[];
static Base_Class bases_S7171C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7171C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7171C8[];
extern void _ZN7S7171C8D1Ev();
extern void _ZN7S7171C8D0Ev();
extern void _ZN7S7171C93v23Ev();
extern void _ZN7S7171C93v24Ev();
extern void _ZN7S7171C93v25Ev();
extern void _ZN7S7171C83v26Ev();
extern void _ZN7S7171C83v27Ev();
extern void _ZN7S7171C83v28Ev();
extern void _ZN7S7171C83v29Ev();
extern void _ZN7S7171C83v30Ev();
extern void _ZN7S7171C83v31Ev();
static  VTBL_ENTRY vtc_S7171C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7171C8[0]),
  (VTBL_ENTRY)&_ZN7S7171C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7171C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7171C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7171C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7171C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7171C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7171C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7171C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7171C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7171C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7171C83v31Ev,
};
extern VTBL_ENTRY _ZTI7S7171C8[];
extern  VTBL_ENTRY _ZTV7S7171C8[];
Class_Descriptor cd_S7171C8 = {  "S7171C8", // class name
  bases_S7171C8, 1,
  &(vtc_S7171C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7171C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7171C8),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  S7171C7  : S7171C8 {
  ::S731C20 s7171c7f0;
  ::S3029C15_nt s7171c7f1;
  char s7171c7f2;
  virtual  ~S7171C7(); // _ZN7S7171C7D1Ev
  virtual void  v32(); // _ZN7S7171C73v32Ev
  virtual void  v33(); // _ZN7S7171C73v33Ev
  virtual void  v34(); // _ZN7S7171C73v34Ev
  S7171C7(); // tgen
};
//SIG(-1 S7171C7) C1{ BC2{ BC3{ vd v4 v5 v6} vd v7 v8 v9 v10 v11 v12} vd v1 v2 v3 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FL[4]} Fc}


 S7171C7 ::~S7171C7(){ note_dtor("S7171C7", this);}
void  S7171C7 ::v32(){vfunc_called(this, "_ZN7S7171C73v32Ev");}
void  S7171C7 ::v33(){vfunc_called(this, "_ZN7S7171C73v33Ev");}
void  S7171C7 ::v34(){vfunc_called(this, "_ZN7S7171C73v34Ev");}
S7171C7 ::S7171C7(){ note_ctor("S7171C7", this);} // tgen

static void Test_S7171C7()
{
  extern Class_Descriptor cd_S7171C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S7171C7, buf);
    S7171C7 *dp, &lv = *(dp=new (buf) S7171C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S7171C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7171C7)");
    check_base_class_offset(lv, (S7171C9*)(S7171C8*), 0, "S7171C7");
    check_base_class_offset(lv, (S7171C8*), 0, "S7171C7");
    check_field_offset(lv, s7171c7f0, ABISELECT(8,4), "S7171C7.s7171c7f0");
    check_field_offset(lv, s7171c7f1, ABISELECT(32,20), "S7171C7.s7171c7f1");
    check_field_offset(lv, s7171c7f2, ABISELECT(64,52), "S7171C7.s7171c7f2");
    test_class_info(&lv, &cd_S7171C7);
    dp->~S7171C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7171C7(Test_S7171C7, "S7171C7", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S7171C7C1Ev();
extern void _ZN7S7171C7D1Ev();
Name_Map name_map_S7171C7[] = {
  NSPAIR(_ZN7S7171C7C1Ev),
  NSPAIR(_ZN7S7171C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7171C9;
extern VTBL_ENTRY _ZTI7S7171C9[];
extern  VTBL_ENTRY _ZTV7S7171C9[];
extern Class_Descriptor cd_S7171C8;
extern VTBL_ENTRY _ZTI7S7171C8[];
extern  VTBL_ENTRY _ZTV7S7171C8[];
static Base_Class bases_S7171C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7171C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7171C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S7171C7[];
extern void _ZN7S7171C7D1Ev();
extern void _ZN7S7171C7D0Ev();
extern void _ZN7S7171C93v23Ev();
extern void _ZN7S7171C93v24Ev();
extern void _ZN7S7171C93v25Ev();
extern void _ZN7S7171C83v26Ev();
extern void _ZN7S7171C83v27Ev();
extern void _ZN7S7171C83v28Ev();
extern void _ZN7S7171C83v29Ev();
extern void _ZN7S7171C83v30Ev();
extern void _ZN7S7171C83v31Ev();
extern void _ZN7S7171C73v32Ev();
extern void _ZN7S7171C73v33Ev();
extern void _ZN7S7171C73v34Ev();
static  VTBL_ENTRY vtc_S7171C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7171C7[0]),
  (VTBL_ENTRY)&_ZN7S7171C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7171C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7171C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7171C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7171C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7171C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7171C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7171C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7171C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7171C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7171C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7171C73v32Ev,
  (VTBL_ENTRY)&_ZN7S7171C73v33Ev,
  (VTBL_ENTRY)&_ZN7S7171C73v34Ev,
};
extern VTBL_ENTRY _ZTI7S7171C7[];
extern  VTBL_ENTRY _ZTV7S7171C7[];
Class_Descriptor cd_S7171C7 = {  "S7171C7", // class name
  bases_S7171C7, 2,
  &(vtc_S7171C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S7171C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7171C7),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  S7171C13  {
  virtual  ~S7171C13(); // _ZN8S7171C13D1Ev
  virtual void  v35(); // _ZN8S7171C133v35Ev
  S7171C13(); // tgen
};
//SIG(-1 S7171C13) C1{ vd v1}


 S7171C13 ::~S7171C13(){ note_dtor("S7171C13", this);}
void  S7171C13 ::v35(){vfunc_called(this, "_ZN8S7171C133v35Ev");}
S7171C13 ::S7171C13(){ note_ctor("S7171C13", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S7171C13C1Ev();
extern void _ZN8S7171C13D1Ev();
Name_Map name_map_S7171C13[] = {
  NSPAIR(_ZN8S7171C13C1Ev),
  NSPAIR(_ZN8S7171C13D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7171C13[];
extern void _ZN8S7171C13D1Ev();
extern void _ZN8S7171C13D0Ev();
extern void _ZN8S7171C133v35Ev();
static  VTBL_ENTRY vtc_S7171C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7171C13[0]),
  (VTBL_ENTRY)&_ZN8S7171C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7171C13D0Ev,
  (VTBL_ENTRY)&_ZN8S7171C133v35Ev,
};
extern VTBL_ENTRY _ZTI8S7171C13[];
extern  VTBL_ENTRY _ZTV8S7171C13[];
Class_Descriptor cd_S7171C13 = {  "S7171C13", // class name
  0,0,//no base classes
  &(vtc_S7171C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7171C13),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7171C13),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  S7171C1  : S7171C2 , S7171C7 , S7171C13 {
  ::S7168C15_nt s7171c1f0;
  int s7171c1f1;
  virtual  ~S7171C1(); // _ZN7S7171C1D1Ev
  virtual void  v1(); // _ZN7S7171C12v1Ev
  virtual void  v2(); // _ZN7S7171C12v2Ev
  virtual void  v3(); // _ZN7S7171C12v3Ev
  virtual void  v4(); // _ZN7S7171C12v4Ev
  virtual void  v5(); // _ZN7S7171C12v5Ev
  virtual void  v6(); // _ZN7S7171C12v6Ev
  virtual void  v7(); // _ZN7S7171C12v7Ev
  S7171C1(); // tgen
};
//SIG(1 S7171C1) C1{ BC2{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fp FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}} BC7{ BC8{ BC9{ vd v23 v24 v25} vd v26 v27 v28 v29 v30 v31} vd v32 v33 v34 FC10{ m Fp Fi[2] FC5} FC11{ m FL[4]} Fc} BC12{ vd v35} vd v1 v2 v3 v4 v5 v6 v7 FC13{ BC14{} vd Fi[3]} Fi}


 S7171C1 ::~S7171C1(){ note_dtor("S7171C1", this);}
void  S7171C1 ::v1(){vfunc_called(this, "_ZN7S7171C12v1Ev");}
void  S7171C1 ::v2(){vfunc_called(this, "_ZN7S7171C12v2Ev");}
void  S7171C1 ::v3(){vfunc_called(this, "_ZN7S7171C12v3Ev");}
void  S7171C1 ::v4(){vfunc_called(this, "_ZN7S7171C12v4Ev");}
void  S7171C1 ::v5(){vfunc_called(this, "_ZN7S7171C12v5Ev");}
void  S7171C1 ::v6(){vfunc_called(this, "_ZN7S7171C12v6Ev");}
void  S7171C1 ::v7(){vfunc_called(this, "_ZN7S7171C12v7Ev");}
S7171C1 ::S7171C1(){ note_ctor("S7171C1", this);} // tgen

static void Test_S7171C1()
{
  extern Class_Descriptor cd_S7171C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,26)];
    init_test(&cd_S7171C1, buf);
    S7171C1 *dp, &lv = *(dp=new (buf) S7171C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S7171C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7171C1)");
    check_base_class_offset(lv, (S7171C2*), 0, "S7171C1");
    check_base_class_offset(lv, (S7171C9*)(S7171C8*)(S7171C7*), ABISELECT(32,20), "S7171C1");
    check_base_class_offset(lv, (S7171C8*)(S7171C7*), ABISELECT(32,20), "S7171C1");
    check_base_class_offset(lv, (S7171C7*), ABISELECT(32,20), "S7171C1");
    check_base_class_offset(lv, (S7171C13*), ABISELECT(104,76), "S7171C1");
    check_field_offset(lv, s7171c1f0, ABISELECT(112,80), "S7171C1.s7171c1f0");
    check_field_offset(lv, s7171c1f1, ABISELECT(136,96), "S7171C1.s7171c1f1");
    test_class_info(&lv, &cd_S7171C1);
    dp->~S7171C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7171C1(Test_S7171C1, "S7171C1", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN7S7171C1C1Ev();
extern void _ZN7S7171C1D1Ev();
Name_Map name_map_S7171C1[] = {
  NSPAIR(_ZN7S7171C1C1Ev),
  NSPAIR(_ZN7S7171C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7171C2;
extern VTBL_ENTRY _ZTI7S7171C2[];
extern  VTBL_ENTRY _ZTV7S7171C2[];
extern Class_Descriptor cd_S7171C9;
extern VTBL_ENTRY _ZTI7S7171C9[];
extern  VTBL_ENTRY _ZTV7S7171C9[];
extern Class_Descriptor cd_S7171C8;
extern VTBL_ENTRY _ZTI7S7171C8[];
extern  VTBL_ENTRY _ZTV7S7171C8[];
extern Class_Descriptor cd_S7171C7;
extern VTBL_ENTRY _ZTI7S7171C7[];
extern  VTBL_ENTRY _ZTV7S7171C7[];
extern Class_Descriptor cd_S7171C13;
extern VTBL_ENTRY _ZTI8S7171C13[];
extern  VTBL_ENTRY _ZTV8S7171C13[];
static Base_Class bases_S7171C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7171C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7171C9,    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_S7171C8,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7171C7,    ABISELECT(32,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7171C13,    ABISELECT(104,76), //bcp->offset
    42, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7171C1[];
extern void _ZN7S7171C1D1Ev();
extern void _ZN7S7171C1D0Ev();
extern void _ZN7S7171C22v8Ev();
extern void _ZN7S7171C22v9Ev();
extern void _ZN7S7171C23v10Ev();
extern void _ZN7S7171C23v11Ev();
extern void _ZN7S7171C23v12Ev();
extern void _ZN7S7171C23v13Ev();
extern void _ZN7S7171C23v14Ev();
extern void _ZN7S7171C23v15Ev();
extern void _ZN7S7171C23v16Ev();
extern void _ZN7S7171C23v17Ev();
extern void _ZN7S7171C23v18Ev();
extern void _ZN7S7171C23v19Ev();
extern void _ZN7S7171C23v20Ev();
extern void _ZN7S7171C23v21Ev();
extern void _ZN7S7171C23v22Ev();
extern void _ZN7S7171C12v1Ev();
extern void _ZN7S7171C12v2Ev();
extern void _ZN7S7171C12v3Ev();
extern void _ZN7S7171C12v4Ev();
extern void _ZN7S7171C12v5Ev();
extern void _ZN7S7171C12v6Ev();
extern void _ZN7S7171C12v7Ev();
extern void ABISELECT(_ZThn32_N7S7171C1D1Ev,_ZThn20_N7S7171C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S7171C1D0Ev,_ZThn20_N7S7171C1D0Ev)();
extern void _ZN7S7171C93v23Ev();
extern void _ZN7S7171C93v24Ev();
extern void _ZN7S7171C93v25Ev();
extern void _ZN7S7171C83v26Ev();
extern void _ZN7S7171C83v27Ev();
extern void _ZN7S7171C83v28Ev();
extern void _ZN7S7171C83v29Ev();
extern void _ZN7S7171C83v30Ev();
extern void _ZN7S7171C83v31Ev();
extern void _ZN7S7171C73v32Ev();
extern void _ZN7S7171C73v33Ev();
extern void _ZN7S7171C73v34Ev();
extern void ABISELECT(_ZThn104_N7S7171C1D1Ev,_ZThn76_N7S7171C1D1Ev)();
extern void ABISELECT(_ZThn104_N7S7171C1D0Ev,_ZThn76_N7S7171C1D0Ev)();
extern void _ZN8S7171C133v35Ev();
static  VTBL_ENTRY vtc_S7171C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7171C1[0]),
  (VTBL_ENTRY)&_ZN7S7171C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7171C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7171C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7171C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7171C23v22Ev,
  (VTBL_ENTRY)&_ZN7S7171C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7171C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7171C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7171C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7171C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7171C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7171C12v7Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7171C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7171C1D1Ev,_ZThn20_N7S7171C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7171C1D0Ev,_ZThn20_N7S7171C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7171C93v23Ev,
  (VTBL_ENTRY)&_ZN7S7171C93v24Ev,
  (VTBL_ENTRY)&_ZN7S7171C93v25Ev,
  (VTBL_ENTRY)&_ZN7S7171C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7171C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7171C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7171C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7171C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7171C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7171C73v32Ev,
  (VTBL_ENTRY)&_ZN7S7171C73v33Ev,
  (VTBL_ENTRY)&_ZN7S7171C73v34Ev,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI7S7171C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S7171C1D1Ev,_ZThn76_N7S7171C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S7171C1D0Ev,_ZThn76_N7S7171C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7171C133v35Ev,
};
extern VTBL_ENTRY _ZTI7S7171C1[];
extern  VTBL_ENTRY _ZTV7S7171C1[];
Class_Descriptor cd_S7171C1 = {  "S7171C1", // class name
  bases_S7171C1, 5,
  &(vtc_S7171C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI7S7171C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7171C1),47, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6461C2  {
  void *s6461c2f0;
  ::S3027C4_nt s6461c2f1;
  virtual  ~S6461C2(); // _ZN7S6461C2D1Ev
  virtual void  v12(); // _ZN7S6461C23v12Ev
  virtual void  v13(); // _ZN7S6461C23v13Ev
  virtual void  v14(); // _ZN7S6461C23v14Ev
  virtual void  v15(); // _ZN7S6461C23v15Ev
  virtual void  v16(); // _ZN7S6461C23v16Ev
  virtual void  v17(); // _ZN7S6461C23v17Ev
  virtual void  v18(); // _ZN7S6461C23v18Ev
  virtual void  v19(); // _ZN7S6461C23v19Ev
  virtual void  v20(); // _ZN7S6461C23v20Ev
  virtual void  v21(); // _ZN7S6461C23v21Ev
  virtual void  v22(); // _ZN7S6461C23v22Ev
  virtual void  v23(); // _ZN7S6461C23v23Ev
  virtual void  v24(); // _ZN7S6461C23v24Ev
  virtual void  v25(); // _ZN7S6461C23v25Ev
  virtual void  v26(); // _ZN7S6461C23v26Ev
  S6461C2(); // tgen
};
//SIG(-1 S6461C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp FC2{ BC3{ m Fp Fi FC4{ m} FC5{ m}}}}


 S6461C2 ::~S6461C2(){ note_dtor("S6461C2", this);}
void  S6461C2 ::v12(){vfunc_called(this, "_ZN7S6461C23v12Ev");}
void  S6461C2 ::v13(){vfunc_called(this, "_ZN7S6461C23v13Ev");}
void  S6461C2 ::v14(){vfunc_called(this, "_ZN7S6461C23v14Ev");}
void  S6461C2 ::v15(){vfunc_called(this, "_ZN7S6461C23v15Ev");}
void  S6461C2 ::v16(){vfunc_called(this, "_ZN7S6461C23v16Ev");}
void  S6461C2 ::v17(){vfunc_called(this, "_ZN7S6461C23v17Ev");}
void  S6461C2 ::v18(){vfunc_called(this, "_ZN7S6461C23v18Ev");}
void  S6461C2 ::v19(){vfunc_called(this, "_ZN7S6461C23v19Ev");}
void  S6461C2 ::v20(){vfunc_called(this, "_ZN7S6461C23v20Ev");}
void  S6461C2 ::v21(){vfunc_called(this, "_ZN7S6461C23v21Ev");}
void  S6461C2 ::v22(){vfunc_called(this, "_ZN7S6461C23v22Ev");}
void  S6461C2 ::v23(){vfunc_called(this, "_ZN7S6461C23v23Ev");}
void  S6461C2 ::v24(){vfunc_called(this, "_ZN7S6461C23v24Ev");}
void  S6461C2 ::v25(){vfunc_called(this, "_ZN7S6461C23v25Ev");}
void  S6461C2 ::v26(){vfunc_called(this, "_ZN7S6461C23v26Ev");}
S6461C2 ::S6461C2(){ note_ctor("S6461C2", this);} // tgen

static void Test_S6461C2()
{
  extern Class_Descriptor cd_S6461C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S6461C2, buf);
    S6461C2 *dp, &lv = *(dp=new (buf) S6461C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S6461C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6461C2)");
    check_field_offset(lv, s6461c2f0, ABISELECT(8,4), "S6461C2.s6461c2f0");
    check_field_offset(lv, s6461c2f1, ABISELECT(16,8), "S6461C2.s6461c2f1");
    test_class_info(&lv, &cd_S6461C2);
    dp->~S6461C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6461C2(Test_S6461C2, "S6461C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S6461C2C1Ev();
extern void _ZN7S6461C2D1Ev();
Name_Map name_map_S6461C2[] = {
  NSPAIR(_ZN7S6461C2C1Ev),
  NSPAIR(_ZN7S6461C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6461C2[];
extern void _ZN7S6461C2D1Ev();
extern void _ZN7S6461C2D0Ev();
extern void _ZN7S6461C23v12Ev();
extern void _ZN7S6461C23v13Ev();
extern void _ZN7S6461C23v14Ev();
extern void _ZN7S6461C23v15Ev();
extern void _ZN7S6461C23v16Ev();
extern void _ZN7S6461C23v17Ev();
extern void _ZN7S6461C23v18Ev();
extern void _ZN7S6461C23v19Ev();
extern void _ZN7S6461C23v20Ev();
extern void _ZN7S6461C23v21Ev();
extern void _ZN7S6461C23v22Ev();
extern void _ZN7S6461C23v23Ev();
extern void _ZN7S6461C23v24Ev();
extern void _ZN7S6461C23v25Ev();
extern void _ZN7S6461C23v26Ev();
static  VTBL_ENTRY vtc_S6461C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6461C2[0]),
  (VTBL_ENTRY)&_ZN7S6461C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6461C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v26Ev,
};
extern VTBL_ENTRY _ZTI7S6461C2[];
extern  VTBL_ENTRY _ZTV7S6461C2[];
Class_Descriptor cd_S6461C2 = {  "S6461C2", // class name
  0,0,//no base classes
  &(vtc_S6461C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S6461C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6461C2),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6461C9  {
  virtual  ~S6461C9(); // _ZN7S6461C9D1Ev
  virtual void  v27(); // _ZN7S6461C93v27Ev
  virtual void  v28(); // _ZN7S6461C93v28Ev
  virtual void  v29(); // _ZN7S6461C93v29Ev
  S6461C9(); // tgen
};
//SIG(-1 S6461C9) C1{ vd v1 v2 v3}


 S6461C9 ::~S6461C9(){ note_dtor("S6461C9", this);}
void  S6461C9 ::v27(){vfunc_called(this, "_ZN7S6461C93v27Ev");}
void  S6461C9 ::v28(){vfunc_called(this, "_ZN7S6461C93v28Ev");}
void  S6461C9 ::v29(){vfunc_called(this, "_ZN7S6461C93v29Ev");}
S6461C9 ::S6461C9(){ note_ctor("S6461C9", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6461C9C1Ev();
extern void _ZN7S6461C9D1Ev();
Name_Map name_map_S6461C9[] = {
  NSPAIR(_ZN7S6461C9C1Ev),
  NSPAIR(_ZN7S6461C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6461C9[];
extern void _ZN7S6461C9D1Ev();
extern void _ZN7S6461C9D0Ev();
extern void _ZN7S6461C93v27Ev();
extern void _ZN7S6461C93v28Ev();
extern void _ZN7S6461C93v29Ev();
static  VTBL_ENTRY vtc_S6461C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6461C9[0]),
  (VTBL_ENTRY)&_ZN7S6461C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6461C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6461C93v27Ev,
  (VTBL_ENTRY)&_ZN7S6461C93v28Ev,
  (VTBL_ENTRY)&_ZN7S6461C93v29Ev,
};
extern VTBL_ENTRY _ZTI7S6461C9[];
extern  VTBL_ENTRY _ZTV7S6461C9[];
Class_Descriptor cd_S6461C9 = {  "S6461C9", // class name
  0,0,//no base classes
  &(vtc_S6461C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6461C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6461C9),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  S6461C8  : S6461C9 {
  virtual  ~S6461C8(); // _ZN7S6461C8D1Ev
  virtual void  v30(); // _ZN7S6461C83v30Ev
  virtual void  v31(); // _ZN7S6461C83v31Ev
  virtual void  v32(); // _ZN7S6461C83v32Ev
  virtual void  v33(); // _ZN7S6461C83v33Ev
  virtual void  v34(); // _ZN7S6461C83v34Ev
  virtual void  v35(); // _ZN7S6461C83v35Ev
  S6461C8(); // tgen
};
//SIG(-1 S6461C8) C1{ BC2{ vd v7 v8 v9} vd v1 v2 v3 v4 v5 v6}


 S6461C8 ::~S6461C8(){ note_dtor("S6461C8", this);}
void  S6461C8 ::v30(){vfunc_called(this, "_ZN7S6461C83v30Ev");}
void  S6461C8 ::v31(){vfunc_called(this, "_ZN7S6461C83v31Ev");}
void  S6461C8 ::v32(){vfunc_called(this, "_ZN7S6461C83v32Ev");}
void  S6461C8 ::v33(){vfunc_called(this, "_ZN7S6461C83v33Ev");}
void  S6461C8 ::v34(){vfunc_called(this, "_ZN7S6461C83v34Ev");}
void  S6461C8 ::v35(){vfunc_called(this, "_ZN7S6461C83v35Ev");}
S6461C8 ::S6461C8(){ note_ctor("S6461C8", this);} // tgen

static void Test_S6461C8()
{
  extern Class_Descriptor cd_S6461C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6461C8, buf);
    S6461C8 *dp, &lv = *(dp=new (buf) S6461C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6461C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6461C8)");
    check_base_class_offset(lv, (S6461C9*), 0, "S6461C8");
    test_class_info(&lv, &cd_S6461C8);
    dp->~S6461C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6461C8(Test_S6461C8, "S6461C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6461C8C1Ev();
extern void _ZN7S6461C8D1Ev();
Name_Map name_map_S6461C8[] = {
  NSPAIR(_ZN7S6461C8C1Ev),
  NSPAIR(_ZN7S6461C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6461C9;
extern VTBL_ENTRY _ZTI7S6461C9[];
extern  VTBL_ENTRY _ZTV7S6461C9[];
static Base_Class bases_S6461C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6461C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6461C8[];
extern void _ZN7S6461C8D1Ev();
extern void _ZN7S6461C8D0Ev();
extern void _ZN7S6461C93v27Ev();
extern void _ZN7S6461C93v28Ev();
extern void _ZN7S6461C93v29Ev();
extern void _ZN7S6461C83v30Ev();
extern void _ZN7S6461C83v31Ev();
extern void _ZN7S6461C83v32Ev();
extern void _ZN7S6461C83v33Ev();
extern void _ZN7S6461C83v34Ev();
extern void _ZN7S6461C83v35Ev();
static  VTBL_ENTRY vtc_S6461C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6461C8[0]),
  (VTBL_ENTRY)&_ZN7S6461C8D1Ev,
  (VTBL_ENTRY)&_ZN7S6461C8D0Ev,
  (VTBL_ENTRY)&_ZN7S6461C93v27Ev,
  (VTBL_ENTRY)&_ZN7S6461C93v28Ev,
  (VTBL_ENTRY)&_ZN7S6461C93v29Ev,
  (VTBL_ENTRY)&_ZN7S6461C83v30Ev,
  (VTBL_ENTRY)&_ZN7S6461C83v31Ev,
  (VTBL_ENTRY)&_ZN7S6461C83v32Ev,
  (VTBL_ENTRY)&_ZN7S6461C83v33Ev,
  (VTBL_ENTRY)&_ZN7S6461C83v34Ev,
  (VTBL_ENTRY)&_ZN7S6461C83v35Ev,
};
extern VTBL_ENTRY _ZTI7S6461C8[];
extern  VTBL_ENTRY _ZTV7S6461C8[];
Class_Descriptor cd_S6461C8 = {  "S6461C8", // class name
  bases_S6461C8, 1,
  &(vtc_S6461C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6461C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6461C8),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  S6461C7  : S6461C8 {
  ::S731C20 s6461c7f0;
  ::S3027C15_nt s6461c7f1;
  char s6461c7f2;
  virtual  ~S6461C7(); // _ZN7S6461C7D1Ev
  virtual void  v36(); // _ZN7S6461C73v36Ev
  virtual void  v37(); // _ZN7S6461C73v37Ev
  virtual void  v38(); // _ZN7S6461C73v38Ev
  S6461C7(); // tgen
};
//SIG(-1 S6461C7) C1{ BC2{ BC3{ vd v4 v5 v6} vd v7 v8 v9 v10 v11 v12} vd v1 v2 v3 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FC7{ Fl[4]}} Fc}


 S6461C7 ::~S6461C7(){ note_dtor("S6461C7", this);}
void  S6461C7 ::v36(){vfunc_called(this, "_ZN7S6461C73v36Ev");}
void  S6461C7 ::v37(){vfunc_called(this, "_ZN7S6461C73v37Ev");}
void  S6461C7 ::v38(){vfunc_called(this, "_ZN7S6461C73v38Ev");}
S6461C7 ::S6461C7(){ note_ctor("S6461C7", this);} // tgen

static void Test_S6461C7()
{
  extern Class_Descriptor cd_S6461C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S6461C7, buf);
    S6461C7 *dp, &lv = *(dp=new (buf) S6461C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S6461C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6461C7)");
    check_base_class_offset(lv, (S6461C9*)(S6461C8*), 0, "S6461C7");
    check_base_class_offset(lv, (S6461C8*), 0, "S6461C7");
    check_field_offset(lv, s6461c7f0, ABISELECT(8,4), "S6461C7.s6461c7f0");
    check_field_offset(lv, s6461c7f1, ABISELECT(32,20), "S6461C7.s6461c7f1");
    check_field_offset(lv, s6461c7f2, ABISELECT(64,36), "S6461C7.s6461c7f2");
    test_class_info(&lv, &cd_S6461C7);
    dp->~S6461C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6461C7(Test_S6461C7, "S6461C7", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN7S6461C7C1Ev();
extern void _ZN7S6461C7D1Ev();
Name_Map name_map_S6461C7[] = {
  NSPAIR(_ZN7S6461C7C1Ev),
  NSPAIR(_ZN7S6461C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6461C9;
extern VTBL_ENTRY _ZTI7S6461C9[];
extern  VTBL_ENTRY _ZTV7S6461C9[];
extern Class_Descriptor cd_S6461C8;
extern VTBL_ENTRY _ZTI7S6461C8[];
extern  VTBL_ENTRY _ZTV7S6461C8[];
static Base_Class bases_S6461C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6461C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S6461C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S6461C7[];
extern void _ZN7S6461C7D1Ev();
extern void _ZN7S6461C7D0Ev();
extern void _ZN7S6461C93v27Ev();
extern void _ZN7S6461C93v28Ev();
extern void _ZN7S6461C93v29Ev();
extern void _ZN7S6461C83v30Ev();
extern void _ZN7S6461C83v31Ev();
extern void _ZN7S6461C83v32Ev();
extern void _ZN7S6461C83v33Ev();
extern void _ZN7S6461C83v34Ev();
extern void _ZN7S6461C83v35Ev();
extern void _ZN7S6461C73v36Ev();
extern void _ZN7S6461C73v37Ev();
extern void _ZN7S6461C73v38Ev();
static  VTBL_ENTRY vtc_S6461C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6461C7[0]),
  (VTBL_ENTRY)&_ZN7S6461C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6461C7D0Ev,
  (VTBL_ENTRY)&_ZN7S6461C93v27Ev,
  (VTBL_ENTRY)&_ZN7S6461C93v28Ev,
  (VTBL_ENTRY)&_ZN7S6461C93v29Ev,
  (VTBL_ENTRY)&_ZN7S6461C83v30Ev,
  (VTBL_ENTRY)&_ZN7S6461C83v31Ev,
  (VTBL_ENTRY)&_ZN7S6461C83v32Ev,
  (VTBL_ENTRY)&_ZN7S6461C83v33Ev,
  (VTBL_ENTRY)&_ZN7S6461C83v34Ev,
  (VTBL_ENTRY)&_ZN7S6461C83v35Ev,
  (VTBL_ENTRY)&_ZN7S6461C73v36Ev,
  (VTBL_ENTRY)&_ZN7S6461C73v37Ev,
  (VTBL_ENTRY)&_ZN7S6461C73v38Ev,
};
extern VTBL_ENTRY _ZTI7S6461C7[];
extern  VTBL_ENTRY _ZTV7S6461C7[];
Class_Descriptor cd_S6461C7 = {  "S6461C7", // class name
  bases_S6461C7, 2,
  &(vtc_S6461C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI7S6461C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6461C7),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  S6461C1  : S6461C2 , S6461C7 {
  char s6461c1f0;
  void *s6461c1f1;
  virtual  ~S6461C1(); // _ZN7S6461C1D1Ev
  virtual void  v1(); // _ZN7S6461C12v1Ev
  virtual void  v2(); // _ZN7S6461C12v2Ev
  virtual void  v3(); // _ZN7S6461C12v3Ev
  virtual void  v4(); // _ZN7S6461C12v4Ev
  virtual void  v5(); // _ZN7S6461C12v5Ev
  virtual void  v6(); // _ZN7S6461C12v6Ev
  virtual void  v7(); // _ZN7S6461C12v7Ev
  virtual void  v8(); // _ZN7S6461C12v8Ev
  virtual void  v9(); // _ZN7S6461C12v9Ev
  virtual void  v10(); // _ZN7S6461C13v10Ev
  virtual void  v11(); // _ZN7S6461C13v11Ev
  S6461C1(); // tgen
};
//SIG(1 S6461C1) C1{ BC2{ vd v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 Fp FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}} BC7{ BC8{ BC9{ vd v27 v28 v29} vd v30 v31 v32 v33 v34 v35} vd v36 v37 v38 FC10{ m Fp Fi[2] FC5} FC11{ m FC12{ Fl[4]}} Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 Fc Fp}


 S6461C1 ::~S6461C1(){ note_dtor("S6461C1", this);}
void  S6461C1 ::v1(){vfunc_called(this, "_ZN7S6461C12v1Ev");}
void  S6461C1 ::v2(){vfunc_called(this, "_ZN7S6461C12v2Ev");}
void  S6461C1 ::v3(){vfunc_called(this, "_ZN7S6461C12v3Ev");}
void  S6461C1 ::v4(){vfunc_called(this, "_ZN7S6461C12v4Ev");}
void  S6461C1 ::v5(){vfunc_called(this, "_ZN7S6461C12v5Ev");}
void  S6461C1 ::v6(){vfunc_called(this, "_ZN7S6461C12v6Ev");}
void  S6461C1 ::v7(){vfunc_called(this, "_ZN7S6461C12v7Ev");}
void  S6461C1 ::v8(){vfunc_called(this, "_ZN7S6461C12v8Ev");}
void  S6461C1 ::v9(){vfunc_called(this, "_ZN7S6461C12v9Ev");}
void  S6461C1 ::v10(){vfunc_called(this, "_ZN7S6461C13v10Ev");}
void  S6461C1 ::v11(){vfunc_called(this, "_ZN7S6461C13v11Ev");}
S6461C1 ::S6461C1(){ note_ctor("S6461C1", this);} // tgen

static void Test_S6461C1()
{
  extern Class_Descriptor cd_S6461C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,17)];
    init_test(&cd_S6461C1, buf);
    S6461C1 *dp, &lv = *(dp=new (buf) S6461C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,64), "sizeof(S6461C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6461C1)");
    check_base_class_offset(lv, (S6461C2*), 0, "S6461C1");
    check_base_class_offset(lv, (S6461C9*)(S6461C8*)(S6461C7*), ABISELECT(32,20), "S6461C1");
    check_base_class_offset(lv, (S6461C8*)(S6461C7*), ABISELECT(32,20), "S6461C1");
    check_base_class_offset(lv, (S6461C7*), ABISELECT(32,20), "S6461C1");
    check_field_offset(lv, s6461c1f0, ABISELECT(97,57), "S6461C1.s6461c1f0");
    check_field_offset(lv, s6461c1f1, ABISELECT(104,60), "S6461C1.s6461c1f1");
    test_class_info(&lv, &cd_S6461C1);
    dp->~S6461C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6461C1(Test_S6461C1, "S6461C1", ABISELECT(112,64));

#else // __cplusplus

extern void _ZN7S6461C1C1Ev();
extern void _ZN7S6461C1D1Ev();
Name_Map name_map_S6461C1[] = {
  NSPAIR(_ZN7S6461C1C1Ev),
  NSPAIR(_ZN7S6461C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6461C2;
extern VTBL_ENTRY _ZTI7S6461C2[];
extern  VTBL_ENTRY _ZTV7S6461C2[];
extern Class_Descriptor cd_S6461C9;
extern VTBL_ENTRY _ZTI7S6461C9[];
extern  VTBL_ENTRY _ZTV7S6461C9[];
extern Class_Descriptor cd_S6461C8;
extern VTBL_ENTRY _ZTI7S6461C8[];
extern  VTBL_ENTRY _ZTV7S6461C8[];
extern Class_Descriptor cd_S6461C7;
extern VTBL_ENTRY _ZTI7S6461C7[];
extern  VTBL_ENTRY _ZTV7S6461C7[];
static Base_Class bases_S6461C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6461C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6461C9,    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_S6461C8,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6461C7,    ABISELECT(32,20), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6461C1[];
extern void _ZN7S6461C1D1Ev();
extern void _ZN7S6461C1D0Ev();
extern void _ZN7S6461C23v12Ev();
extern void _ZN7S6461C23v13Ev();
extern void _ZN7S6461C23v14Ev();
extern void _ZN7S6461C23v15Ev();
extern void _ZN7S6461C23v16Ev();
extern void _ZN7S6461C23v17Ev();
extern void _ZN7S6461C23v18Ev();
extern void _ZN7S6461C23v19Ev();
extern void _ZN7S6461C23v20Ev();
extern void _ZN7S6461C23v21Ev();
extern void _ZN7S6461C23v22Ev();
extern void _ZN7S6461C23v23Ev();
extern void _ZN7S6461C23v24Ev();
extern void _ZN7S6461C23v25Ev();
extern void _ZN7S6461C23v26Ev();
extern void _ZN7S6461C12v1Ev();
extern void _ZN7S6461C12v2Ev();
extern void _ZN7S6461C12v3Ev();
extern void _ZN7S6461C12v4Ev();
extern void _ZN7S6461C12v5Ev();
extern void _ZN7S6461C12v6Ev();
extern void _ZN7S6461C12v7Ev();
extern void _ZN7S6461C12v8Ev();
extern void _ZN7S6461C12v9Ev();
extern void _ZN7S6461C13v10Ev();
extern void _ZN7S6461C13v11Ev();
extern void ABISELECT(_ZThn32_N7S6461C1D1Ev,_ZThn20_N7S6461C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S6461C1D0Ev,_ZThn20_N7S6461C1D0Ev)();
extern void _ZN7S6461C93v27Ev();
extern void _ZN7S6461C93v28Ev();
extern void _ZN7S6461C93v29Ev();
extern void _ZN7S6461C83v30Ev();
extern void _ZN7S6461C83v31Ev();
extern void _ZN7S6461C83v32Ev();
extern void _ZN7S6461C83v33Ev();
extern void _ZN7S6461C83v34Ev();
extern void _ZN7S6461C83v35Ev();
extern void _ZN7S6461C73v36Ev();
extern void _ZN7S6461C73v37Ev();
extern void _ZN7S6461C73v38Ev();
static  VTBL_ENTRY vtc_S6461C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6461C1[0]),
  (VTBL_ENTRY)&_ZN7S6461C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6461C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6461C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6461C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6461C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6461C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6461C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6461C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6461C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6461C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6461C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6461C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6461C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6461C13v11Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S6461C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S6461C1D1Ev,_ZThn20_N7S6461C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S6461C1D0Ev,_ZThn20_N7S6461C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6461C93v27Ev,
  (VTBL_ENTRY)&_ZN7S6461C93v28Ev,
  (VTBL_ENTRY)&_ZN7S6461C93v29Ev,
  (VTBL_ENTRY)&_ZN7S6461C83v30Ev,
  (VTBL_ENTRY)&_ZN7S6461C83v31Ev,
  (VTBL_ENTRY)&_ZN7S6461C83v32Ev,
  (VTBL_ENTRY)&_ZN7S6461C83v33Ev,
  (VTBL_ENTRY)&_ZN7S6461C83v34Ev,
  (VTBL_ENTRY)&_ZN7S6461C83v35Ev,
  (VTBL_ENTRY)&_ZN7S6461C73v36Ev,
  (VTBL_ENTRY)&_ZN7S6461C73v37Ev,
  (VTBL_ENTRY)&_ZN7S6461C73v38Ev,
};
extern VTBL_ENTRY _ZTI7S6461C1[];
extern  VTBL_ENTRY _ZTV7S6461C1[];
Class_Descriptor cd_S6461C1 = {  "S6461C1", // class name
  bases_S6461C1, 4,
  &(vtc_S6461C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,64), // object size
  NSPAIRA(_ZTI7S6461C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6461C1),46, //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  S6463C2  {
  void *s6463c2f0;
  ::S3027C4_nt s6463c2f1;
  virtual  ~S6463C2(); // _ZN7S6463C2D1Ev
  virtual void  v12(); // _ZN7S6463C23v12Ev
  virtual void  v13(); // _ZN7S6463C23v13Ev
  virtual void  v14(); // _ZN7S6463C23v14Ev
  virtual void  v15(); // _ZN7S6463C23v15Ev
  virtual void  v16(); // _ZN7S6463C23v16Ev
  virtual void  v17(); // _ZN7S6463C23v17Ev
  virtual void  v18(); // _ZN7S6463C23v18Ev
  virtual void  v19(); // _ZN7S6463C23v19Ev
  virtual void  v20(); // _ZN7S6463C23v20Ev
  virtual void  v21(); // _ZN7S6463C23v21Ev
  virtual void  v22(); // _ZN7S6463C23v22Ev
  virtual void  v23(); // _ZN7S6463C23v23Ev
  virtual void  v24(); // _ZN7S6463C23v24Ev
  virtual void  v25(); // _ZN7S6463C23v25Ev
  virtual void  v26(); // _ZN7S6463C23v26Ev
  S6463C2(); // tgen
};
//SIG(-1 S6463C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp FC2{ BC3{ m Fp Fi FC4{ m} FC5{ m}}}}


 S6463C2 ::~S6463C2(){ note_dtor("S6463C2", this);}
void  S6463C2 ::v12(){vfunc_called(this, "_ZN7S6463C23v12Ev");}
void  S6463C2 ::v13(){vfunc_called(this, "_ZN7S6463C23v13Ev");}
void  S6463C2 ::v14(){vfunc_called(this, "_ZN7S6463C23v14Ev");}
void  S6463C2 ::v15(){vfunc_called(this, "_ZN7S6463C23v15Ev");}
void  S6463C2 ::v16(){vfunc_called(this, "_ZN7S6463C23v16Ev");}
void  S6463C2 ::v17(){vfunc_called(this, "_ZN7S6463C23v17Ev");}
void  S6463C2 ::v18(){vfunc_called(this, "_ZN7S6463C23v18Ev");}
void  S6463C2 ::v19(){vfunc_called(this, "_ZN7S6463C23v19Ev");}
void  S6463C2 ::v20(){vfunc_called(this, "_ZN7S6463C23v20Ev");}
void  S6463C2 ::v21(){vfunc_called(this, "_ZN7S6463C23v21Ev");}
void  S6463C2 ::v22(){vfunc_called(this, "_ZN7S6463C23v22Ev");}
void  S6463C2 ::v23(){vfunc_called(this, "_ZN7S6463C23v23Ev");}
void  S6463C2 ::v24(){vfunc_called(this, "_ZN7S6463C23v24Ev");}
void  S6463C2 ::v25(){vfunc_called(this, "_ZN7S6463C23v25Ev");}
void  S6463C2 ::v26(){vfunc_called(this, "_ZN7S6463C23v26Ev");}
S6463C2 ::S6463C2(){ note_ctor("S6463C2", this);} // tgen

static void Test_S6463C2()
{
  extern Class_Descriptor cd_S6463C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S6463C2, buf);
    S6463C2 *dp, &lv = *(dp=new (buf) S6463C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S6463C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6463C2)");
    check_field_offset(lv, s6463c2f0, ABISELECT(8,4), "S6463C2.s6463c2f0");
    check_field_offset(lv, s6463c2f1, ABISELECT(16,8), "S6463C2.s6463c2f1");
    test_class_info(&lv, &cd_S6463C2);
    dp->~S6463C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6463C2(Test_S6463C2, "S6463C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S6463C2C1Ev();
extern void _ZN7S6463C2D1Ev();
Name_Map name_map_S6463C2[] = {
  NSPAIR(_ZN7S6463C2C1Ev),
  NSPAIR(_ZN7S6463C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6463C2[];
extern void _ZN7S6463C2D1Ev();
extern void _ZN7S6463C2D0Ev();
extern void _ZN7S6463C23v12Ev();
extern void _ZN7S6463C23v13Ev();
extern void _ZN7S6463C23v14Ev();
extern void _ZN7S6463C23v15Ev();
extern void _ZN7S6463C23v16Ev();
extern void _ZN7S6463C23v17Ev();
extern void _ZN7S6463C23v18Ev();
extern void _ZN7S6463C23v19Ev();
extern void _ZN7S6463C23v20Ev();
extern void _ZN7S6463C23v21Ev();
extern void _ZN7S6463C23v22Ev();
extern void _ZN7S6463C23v23Ev();
extern void _ZN7S6463C23v24Ev();
extern void _ZN7S6463C23v25Ev();
extern void _ZN7S6463C23v26Ev();
static  VTBL_ENTRY vtc_S6463C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6463C2[0]),
  (VTBL_ENTRY)&_ZN7S6463C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6463C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v26Ev,
};
extern VTBL_ENTRY _ZTI7S6463C2[];
extern  VTBL_ENTRY _ZTV7S6463C2[];
Class_Descriptor cd_S6463C2 = {  "S6463C2", // class name
  0,0,//no base classes
  &(vtc_S6463C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S6463C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6463C2),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6463C9  {
  virtual  ~S6463C9(); // _ZN7S6463C9D1Ev
  virtual void  v27(); // _ZN7S6463C93v27Ev
  virtual void  v28(); // _ZN7S6463C93v28Ev
  virtual void  v29(); // _ZN7S6463C93v29Ev
  S6463C9(); // tgen
};
//SIG(-1 S6463C9) C1{ vd v1 v2 v3}


 S6463C9 ::~S6463C9(){ note_dtor("S6463C9", this);}
void  S6463C9 ::v27(){vfunc_called(this, "_ZN7S6463C93v27Ev");}
void  S6463C9 ::v28(){vfunc_called(this, "_ZN7S6463C93v28Ev");}
void  S6463C9 ::v29(){vfunc_called(this, "_ZN7S6463C93v29Ev");}
S6463C9 ::S6463C9(){ note_ctor("S6463C9", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6463C9C1Ev();
extern void _ZN7S6463C9D1Ev();
Name_Map name_map_S6463C9[] = {
  NSPAIR(_ZN7S6463C9C1Ev),
  NSPAIR(_ZN7S6463C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6463C9[];
extern void _ZN7S6463C9D1Ev();
extern void _ZN7S6463C9D0Ev();
extern void _ZN7S6463C93v27Ev();
extern void _ZN7S6463C93v28Ev();
extern void _ZN7S6463C93v29Ev();
static  VTBL_ENTRY vtc_S6463C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6463C9[0]),
  (VTBL_ENTRY)&_ZN7S6463C9D1Ev,
  (VTBL_ENTRY)&_ZN7S6463C9D0Ev,
  (VTBL_ENTRY)&_ZN7S6463C93v27Ev,
  (VTBL_ENTRY)&_ZN7S6463C93v28Ev,
  (VTBL_ENTRY)&_ZN7S6463C93v29Ev,
};
extern VTBL_ENTRY _ZTI7S6463C9[];
extern  VTBL_ENTRY _ZTV7S6463C9[];
Class_Descriptor cd_S6463C9 = {  "S6463C9", // class name
  0,0,//no base classes
  &(vtc_S6463C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6463C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6463C9),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  S6463C8  : S6463C9 {
  virtual  ~S6463C8(); // _ZN7S6463C8D1Ev
  virtual void  v30(); // _ZN7S6463C83v30Ev
  virtual void  v31(); // _ZN7S6463C83v31Ev
  virtual void  v32(); // _ZN7S6463C83v32Ev
  virtual void  v33(); // _ZN7S6463C83v33Ev
  virtual void  v34(); // _ZN7S6463C83v34Ev
  virtual void  v35(); // _ZN7S6463C83v35Ev
  S6463C8(); // tgen
};
//SIG(-1 S6463C8) C1{ BC2{ vd v7 v8 v9} vd v1 v2 v3 v4 v5 v6}


 S6463C8 ::~S6463C8(){ note_dtor("S6463C8", this);}
void  S6463C8 ::v30(){vfunc_called(this, "_ZN7S6463C83v30Ev");}
void  S6463C8 ::v31(){vfunc_called(this, "_ZN7S6463C83v31Ev");}
void  S6463C8 ::v32(){vfunc_called(this, "_ZN7S6463C83v32Ev");}
void  S6463C8 ::v33(){vfunc_called(this, "_ZN7S6463C83v33Ev");}
void  S6463C8 ::v34(){vfunc_called(this, "_ZN7S6463C83v34Ev");}
void  S6463C8 ::v35(){vfunc_called(this, "_ZN7S6463C83v35Ev");}
S6463C8 ::S6463C8(){ note_ctor("S6463C8", this);} // tgen

static void Test_S6463C8()
{
  extern Class_Descriptor cd_S6463C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6463C8, buf);
    S6463C8 *dp, &lv = *(dp=new (buf) S6463C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6463C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6463C8)");
    check_base_class_offset(lv, (S6463C9*), 0, "S6463C8");
    test_class_info(&lv, &cd_S6463C8);
    dp->~S6463C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6463C8(Test_S6463C8, "S6463C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6463C8C1Ev();
extern void _ZN7S6463C8D1Ev();
Name_Map name_map_S6463C8[] = {
  NSPAIR(_ZN7S6463C8C1Ev),
  NSPAIR(_ZN7S6463C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6463C9;
extern VTBL_ENTRY _ZTI7S6463C9[];
extern  VTBL_ENTRY _ZTV7S6463C9[];
static Base_Class bases_S6463C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6463C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6463C8[];
extern void _ZN7S6463C8D1Ev();
extern void _ZN7S6463C8D0Ev();
extern void _ZN7S6463C93v27Ev();
extern void _ZN7S6463C93v28Ev();
extern void _ZN7S6463C93v29Ev();
extern void _ZN7S6463C83v30Ev();
extern void _ZN7S6463C83v31Ev();
extern void _ZN7S6463C83v32Ev();
extern void _ZN7S6463C83v33Ev();
extern void _ZN7S6463C83v34Ev();
extern void _ZN7S6463C83v35Ev();
static  VTBL_ENTRY vtc_S6463C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6463C8[0]),
  (VTBL_ENTRY)&_ZN7S6463C8D1Ev,
  (VTBL_ENTRY)&_ZN7S6463C8D0Ev,
  (VTBL_ENTRY)&_ZN7S6463C93v27Ev,
  (VTBL_ENTRY)&_ZN7S6463C93v28Ev,
  (VTBL_ENTRY)&_ZN7S6463C93v29Ev,
  (VTBL_ENTRY)&_ZN7S6463C83v30Ev,
  (VTBL_ENTRY)&_ZN7S6463C83v31Ev,
  (VTBL_ENTRY)&_ZN7S6463C83v32Ev,
  (VTBL_ENTRY)&_ZN7S6463C83v33Ev,
  (VTBL_ENTRY)&_ZN7S6463C83v34Ev,
  (VTBL_ENTRY)&_ZN7S6463C83v35Ev,
};
extern VTBL_ENTRY _ZTI7S6463C8[];
extern  VTBL_ENTRY _ZTV7S6463C8[];
Class_Descriptor cd_S6463C8 = {  "S6463C8", // class name
  bases_S6463C8, 1,
  &(vtc_S6463C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6463C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6463C8),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  S6463C7  : S6463C8 {
  ::S731C20 s6463c7f0;
  ::S3029C15_nt s6463c7f1;
  char s6463c7f2;
  virtual  ~S6463C7(); // _ZN7S6463C7D1Ev
  virtual void  v36(); // _ZN7S6463C73v36Ev
  virtual void  v37(); // _ZN7S6463C73v37Ev
  virtual void  v38(); // _ZN7S6463C73v38Ev
  S6463C7(); // tgen
};
//SIG(-1 S6463C7) C1{ BC2{ BC3{ vd v4 v5 v6} vd v7 v8 v9 v10 v11 v12} vd v1 v2 v3 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FL[4]} Fc}


 S6463C7 ::~S6463C7(){ note_dtor("S6463C7", this);}
void  S6463C7 ::v36(){vfunc_called(this, "_ZN7S6463C73v36Ev");}
void  S6463C7 ::v37(){vfunc_called(this, "_ZN7S6463C73v37Ev");}
void  S6463C7 ::v38(){vfunc_called(this, "_ZN7S6463C73v38Ev");}
S6463C7 ::S6463C7(){ note_ctor("S6463C7", this);} // tgen

static void Test_S6463C7()
{
  extern Class_Descriptor cd_S6463C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S6463C7, buf);
    S6463C7 *dp, &lv = *(dp=new (buf) S6463C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S6463C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6463C7)");
    check_base_class_offset(lv, (S6463C9*)(S6463C8*), 0, "S6463C7");
    check_base_class_offset(lv, (S6463C8*), 0, "S6463C7");
    check_field_offset(lv, s6463c7f0, ABISELECT(8,4), "S6463C7.s6463c7f0");
    check_field_offset(lv, s6463c7f1, ABISELECT(32,20), "S6463C7.s6463c7f1");
    check_field_offset(lv, s6463c7f2, ABISELECT(64,52), "S6463C7.s6463c7f2");
    test_class_info(&lv, &cd_S6463C7);
    dp->~S6463C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6463C7(Test_S6463C7, "S6463C7", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S6463C7C1Ev();
extern void _ZN7S6463C7D1Ev();
Name_Map name_map_S6463C7[] = {
  NSPAIR(_ZN7S6463C7C1Ev),
  NSPAIR(_ZN7S6463C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6463C9;
extern VTBL_ENTRY _ZTI7S6463C9[];
extern  VTBL_ENTRY _ZTV7S6463C9[];
extern Class_Descriptor cd_S6463C8;
extern VTBL_ENTRY _ZTI7S6463C8[];
extern  VTBL_ENTRY _ZTV7S6463C8[];
static Base_Class bases_S6463C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6463C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S6463C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S6463C7[];
extern void _ZN7S6463C7D1Ev();
extern void _ZN7S6463C7D0Ev();
extern void _ZN7S6463C93v27Ev();
extern void _ZN7S6463C93v28Ev();
extern void _ZN7S6463C93v29Ev();
extern void _ZN7S6463C83v30Ev();
extern void _ZN7S6463C83v31Ev();
extern void _ZN7S6463C83v32Ev();
extern void _ZN7S6463C83v33Ev();
extern void _ZN7S6463C83v34Ev();
extern void _ZN7S6463C83v35Ev();
extern void _ZN7S6463C73v36Ev();
extern void _ZN7S6463C73v37Ev();
extern void _ZN7S6463C73v38Ev();
static  VTBL_ENTRY vtc_S6463C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6463C7[0]),
  (VTBL_ENTRY)&_ZN7S6463C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6463C7D0Ev,
  (VTBL_ENTRY)&_ZN7S6463C93v27Ev,
  (VTBL_ENTRY)&_ZN7S6463C93v28Ev,
  (VTBL_ENTRY)&_ZN7S6463C93v29Ev,
  (VTBL_ENTRY)&_ZN7S6463C83v30Ev,
  (VTBL_ENTRY)&_ZN7S6463C83v31Ev,
  (VTBL_ENTRY)&_ZN7S6463C83v32Ev,
  (VTBL_ENTRY)&_ZN7S6463C83v33Ev,
  (VTBL_ENTRY)&_ZN7S6463C83v34Ev,
  (VTBL_ENTRY)&_ZN7S6463C83v35Ev,
  (VTBL_ENTRY)&_ZN7S6463C73v36Ev,
  (VTBL_ENTRY)&_ZN7S6463C73v37Ev,
  (VTBL_ENTRY)&_ZN7S6463C73v38Ev,
};
extern VTBL_ENTRY _ZTI7S6463C7[];
extern  VTBL_ENTRY _ZTV7S6463C7[];
Class_Descriptor cd_S6463C7 = {  "S6463C7", // class name
  bases_S6463C7, 2,
  &(vtc_S6463C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S6463C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6463C7),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  S6463C1  : S6463C2 , S6463C7 {
  char s6463c1f0;
  void *s6463c1f1;
  virtual  ~S6463C1(); // _ZN7S6463C1D1Ev
  virtual void  v1(); // _ZN7S6463C12v1Ev
  virtual void  v2(); // _ZN7S6463C12v2Ev
  virtual void  v3(); // _ZN7S6463C12v3Ev
  virtual void  v4(); // _ZN7S6463C12v4Ev
  virtual void  v5(); // _ZN7S6463C12v5Ev
  virtual void  v6(); // _ZN7S6463C12v6Ev
  virtual void  v7(); // _ZN7S6463C12v7Ev
  virtual void  v8(); // _ZN7S6463C12v8Ev
  virtual void  v9(); // _ZN7S6463C12v9Ev
  virtual void  v10(); // _ZN7S6463C13v10Ev
  virtual void  v11(); // _ZN7S6463C13v11Ev
  S6463C1(); // tgen
};
//SIG(1 S6463C1) C1{ BC2{ vd v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 Fp FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}} BC7{ BC8{ BC9{ vd v27 v28 v29} vd v30 v31 v32 v33 v34 v35} vd v36 v37 v38 FC10{ m Fp Fi[2] FC5} FC11{ m FL[4]} Fc} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 Fc Fp}


 S6463C1 ::~S6463C1(){ note_dtor("S6463C1", this);}
void  S6463C1 ::v1(){vfunc_called(this, "_ZN7S6463C12v1Ev");}
void  S6463C1 ::v2(){vfunc_called(this, "_ZN7S6463C12v2Ev");}
void  S6463C1 ::v3(){vfunc_called(this, "_ZN7S6463C12v3Ev");}
void  S6463C1 ::v4(){vfunc_called(this, "_ZN7S6463C12v4Ev");}
void  S6463C1 ::v5(){vfunc_called(this, "_ZN7S6463C12v5Ev");}
void  S6463C1 ::v6(){vfunc_called(this, "_ZN7S6463C12v6Ev");}
void  S6463C1 ::v7(){vfunc_called(this, "_ZN7S6463C12v7Ev");}
void  S6463C1 ::v8(){vfunc_called(this, "_ZN7S6463C12v8Ev");}
void  S6463C1 ::v9(){vfunc_called(this, "_ZN7S6463C12v9Ev");}
void  S6463C1 ::v10(){vfunc_called(this, "_ZN7S6463C13v10Ev");}
void  S6463C1 ::v11(){vfunc_called(this, "_ZN7S6463C13v11Ev");}
S6463C1 ::S6463C1(){ note_ctor("S6463C1", this);} // tgen

static void Test_S6463C1()
{
  extern Class_Descriptor cd_S6463C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,21)];
    init_test(&cd_S6463C1, buf);
    S6463C1 *dp, &lv = *(dp=new (buf) S6463C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,80), "sizeof(S6463C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6463C1)");
    check_base_class_offset(lv, (S6463C2*), 0, "S6463C1");
    check_base_class_offset(lv, (S6463C9*)(S6463C8*)(S6463C7*), ABISELECT(32,20), "S6463C1");
    check_base_class_offset(lv, (S6463C8*)(S6463C7*), ABISELECT(32,20), "S6463C1");
    check_base_class_offset(lv, (S6463C7*), ABISELECT(32,20), "S6463C1");
    check_field_offset(lv, s6463c1f0, ABISELECT(97,73), "S6463C1.s6463c1f0");
    check_field_offset(lv, s6463c1f1, ABISELECT(104,76), "S6463C1.s6463c1f1");
    test_class_info(&lv, &cd_S6463C1);
    dp->~S6463C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6463C1(Test_S6463C1, "S6463C1", ABISELECT(112,80));

#else // __cplusplus

extern void _ZN7S6463C1C1Ev();
extern void _ZN7S6463C1D1Ev();
Name_Map name_map_S6463C1[] = {
  NSPAIR(_ZN7S6463C1C1Ev),
  NSPAIR(_ZN7S6463C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6463C2;
extern VTBL_ENTRY _ZTI7S6463C2[];
extern  VTBL_ENTRY _ZTV7S6463C2[];
extern Class_Descriptor cd_S6463C9;
extern VTBL_ENTRY _ZTI7S6463C9[];
extern  VTBL_ENTRY _ZTV7S6463C9[];
extern Class_Descriptor cd_S6463C8;
extern VTBL_ENTRY _ZTI7S6463C8[];
extern  VTBL_ENTRY _ZTV7S6463C8[];
extern Class_Descriptor cd_S6463C7;
extern VTBL_ENTRY _ZTI7S6463C7[];
extern  VTBL_ENTRY _ZTV7S6463C7[];
static Base_Class bases_S6463C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6463C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6463C9,    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_S6463C8,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6463C7,    ABISELECT(32,20), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6463C1[];
extern void _ZN7S6463C1D1Ev();
extern void _ZN7S6463C1D0Ev();
extern void _ZN7S6463C23v12Ev();
extern void _ZN7S6463C23v13Ev();
extern void _ZN7S6463C23v14Ev();
extern void _ZN7S6463C23v15Ev();
extern void _ZN7S6463C23v16Ev();
extern void _ZN7S6463C23v17Ev();
extern void _ZN7S6463C23v18Ev();
extern void _ZN7S6463C23v19Ev();
extern void _ZN7S6463C23v20Ev();
extern void _ZN7S6463C23v21Ev();
extern void _ZN7S6463C23v22Ev();
extern void _ZN7S6463C23v23Ev();
extern void _ZN7S6463C23v24Ev();
extern void _ZN7S6463C23v25Ev();
extern void _ZN7S6463C23v26Ev();
extern void _ZN7S6463C12v1Ev();
extern void _ZN7S6463C12v2Ev();
extern void _ZN7S6463C12v3Ev();
extern void _ZN7S6463C12v4Ev();
extern void _ZN7S6463C12v5Ev();
extern void _ZN7S6463C12v6Ev();
extern void _ZN7S6463C12v7Ev();
extern void _ZN7S6463C12v8Ev();
extern void _ZN7S6463C12v9Ev();
extern void _ZN7S6463C13v10Ev();
extern void _ZN7S6463C13v11Ev();
extern void ABISELECT(_ZThn32_N7S6463C1D1Ev,_ZThn20_N7S6463C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S6463C1D0Ev,_ZThn20_N7S6463C1D0Ev)();
extern void _ZN7S6463C93v27Ev();
extern void _ZN7S6463C93v28Ev();
extern void _ZN7S6463C93v29Ev();
extern void _ZN7S6463C83v30Ev();
extern void _ZN7S6463C83v31Ev();
extern void _ZN7S6463C83v32Ev();
extern void _ZN7S6463C83v33Ev();
extern void _ZN7S6463C83v34Ev();
extern void _ZN7S6463C83v35Ev();
extern void _ZN7S6463C73v36Ev();
extern void _ZN7S6463C73v37Ev();
extern void _ZN7S6463C73v38Ev();
static  VTBL_ENTRY vtc_S6463C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6463C1[0]),
  (VTBL_ENTRY)&_ZN7S6463C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6463C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6463C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6463C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6463C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6463C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6463C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6463C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6463C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6463C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6463C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6463C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6463C13v10Ev,
  (VTBL_ENTRY)&_ZN7S6463C13v11Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S6463C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S6463C1D1Ev,_ZThn20_N7S6463C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S6463C1D0Ev,_ZThn20_N7S6463C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6463C93v27Ev,
  (VTBL_ENTRY)&_ZN7S6463C93v28Ev,
  (VTBL_ENTRY)&_ZN7S6463C93v29Ev,
  (VTBL_ENTRY)&_ZN7S6463C83v30Ev,
  (VTBL_ENTRY)&_ZN7S6463C83v31Ev,
  (VTBL_ENTRY)&_ZN7S6463C83v32Ev,
  (VTBL_ENTRY)&_ZN7S6463C83v33Ev,
  (VTBL_ENTRY)&_ZN7S6463C83v34Ev,
  (VTBL_ENTRY)&_ZN7S6463C83v35Ev,
  (VTBL_ENTRY)&_ZN7S6463C73v36Ev,
  (VTBL_ENTRY)&_ZN7S6463C73v37Ev,
  (VTBL_ENTRY)&_ZN7S6463C73v38Ev,
};
extern VTBL_ENTRY _ZTI7S6463C1[];
extern  VTBL_ENTRY _ZTV7S6463C1[];
Class_Descriptor cd_S6463C1 = {  "S6463C1", // class name
  bases_S6463C1, 4,
  &(vtc_S6463C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,80), // object size
  NSPAIRA(_ZTI7S6463C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6463C1),46, //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  S10149C2  {
  virtual  ~S10149C2(); // _ZN8S10149C2D1Ev
  virtual void  v7(); // _ZN8S10149C22v7Ev
  virtual void  v8(); // _ZN8S10149C22v8Ev
  virtual void  v9(); // _ZN8S10149C22v9Ev
  virtual void  v10(); // _ZN8S10149C23v10Ev
  virtual void  v11(); // _ZN8S10149C23v11Ev
  virtual void  v12(); // _ZN8S10149C23v12Ev
  virtual void  v13(); // _ZN8S10149C23v13Ev
  virtual void  v14(); // _ZN8S10149C23v14Ev
  virtual void  v15(); // _ZN8S10149C23v15Ev
  S10149C2(); // tgen
};
//SIG(-1 S10149C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S10149C2 ::~S10149C2(){ note_dtor("S10149C2", this);}
void  S10149C2 ::v7(){vfunc_called(this, "_ZN8S10149C22v7Ev");}
void  S10149C2 ::v8(){vfunc_called(this, "_ZN8S10149C22v8Ev");}
void  S10149C2 ::v9(){vfunc_called(this, "_ZN8S10149C22v9Ev");}
void  S10149C2 ::v10(){vfunc_called(this, "_ZN8S10149C23v10Ev");}
void  S10149C2 ::v11(){vfunc_called(this, "_ZN8S10149C23v11Ev");}
void  S10149C2 ::v12(){vfunc_called(this, "_ZN8S10149C23v12Ev");}
void  S10149C2 ::v13(){vfunc_called(this, "_ZN8S10149C23v13Ev");}
void  S10149C2 ::v14(){vfunc_called(this, "_ZN8S10149C23v14Ev");}
void  S10149C2 ::v15(){vfunc_called(this, "_ZN8S10149C23v15Ev");}
S10149C2 ::S10149C2(){ note_ctor("S10149C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S10149C2C1Ev();
extern void _ZN8S10149C2D1Ev();
Name_Map name_map_S10149C2[] = {
  NSPAIR(_ZN8S10149C2C1Ev),
  NSPAIR(_ZN8S10149C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10149C2[];
extern void _ZN8S10149C2D1Ev();
extern void _ZN8S10149C2D0Ev();
extern void _ZN8S10149C22v7Ev();
extern void _ZN8S10149C22v8Ev();
extern void _ZN8S10149C22v9Ev();
extern void _ZN8S10149C23v10Ev();
extern void _ZN8S10149C23v11Ev();
extern void _ZN8S10149C23v12Ev();
extern void _ZN8S10149C23v13Ev();
extern void _ZN8S10149C23v14Ev();
extern void _ZN8S10149C23v15Ev();
static  VTBL_ENTRY vtc_S10149C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10149C2[0]),
  (VTBL_ENTRY)&_ZN8S10149C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10149C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10149C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10149C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10149C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10149C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10149C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10149C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10149C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10149C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10149C23v15Ev,
};
extern VTBL_ENTRY _ZTI8S10149C2[];
extern  VTBL_ENTRY _ZTV8S10149C2[];
Class_Descriptor cd_S10149C2 = {  "S10149C2", // class name
  0,0,//no base classes
  &(vtc_S10149C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S10149C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10149C2),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  S10149C5  {
  int s10149c5f0[3];
  char s10149c5f1[68];
  int s10149c5f2[4];
  char s10149c5f3[36];
  int s10149c5f4;
  char s10149c5f5[96];
  int s10149c5f6;
  char s10149c5f7[560];
  int s10149c5f8;
  char s10149c5f9[32];
  int s10149c5f10;
  char s10149c5f11[256];
  int s10149c5f12[13];
};
//SIG(-1 S10149C5) C1{ Fi[3] Fc[68] Fi[4] Fc[36] Fi Fc[96] Fi Fc[560] Fi Fc[32] Fi Fc[256] Fi[13]}



static void Test_S10149C5()
{
  {
    init_simple_test("S10149C5");
    S10149C5 lv;
    check2(sizeof(lv), 1144, "sizeof(S10149C5)");
    check2(__alignof__(lv), 4, "__alignof__(S10149C5)");
    check_field_offset(lv, s10149c5f0, 0, "S10149C5.s10149c5f0");
    check_field_offset(lv, s10149c5f1, 12, "S10149C5.s10149c5f1");
    check_field_offset(lv, s10149c5f2, 80, "S10149C5.s10149c5f2");
    check_field_offset(lv, s10149c5f3, 96, "S10149C5.s10149c5f3");
    check_field_offset(lv, s10149c5f4, 132, "S10149C5.s10149c5f4");
    check_field_offset(lv, s10149c5f5, 136, "S10149C5.s10149c5f5");
    check_field_offset(lv, s10149c5f6, 232, "S10149C5.s10149c5f6");
    check_field_offset(lv, s10149c5f7, 236, "S10149C5.s10149c5f7");
    check_field_offset(lv, s10149c5f8, 796, "S10149C5.s10149c5f8");
    check_field_offset(lv, s10149c5f9, 800, "S10149C5.s10149c5f9");
    check_field_offset(lv, s10149c5f10, 832, "S10149C5.s10149c5f10");
    check_field_offset(lv, s10149c5f11, 836, "S10149C5.s10149c5f11");
    check_field_offset(lv, s10149c5f12, 1092, "S10149C5.s10149c5f12");
  }
}
static Arrange_To_Call_Me vS10149C5(Test_S10149C5, "S10149C5", 1144);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10149C1  : S10149C2 {
  ::S731C16_nt s10149c1f0;
  ::S731C16_nt s10149c1f1;
  ::S731C16_nt s10149c1f2;
  ::S731C16_nt s10149c1f3;
  ::S731C16_nt s10149c1f4;
  ::S731C16_nt s10149c1f5;
  ::S731C16_nt s10149c1f6;
  ::S731C16_nt s10149c1f7;
  ::S731C16_nt s10149c1f8;
  ::S731C16_nt s10149c1f9;
  ::S731C16_nt s10149c1f10;
  ::S731C16_nt s10149c1f11;
  int s10149c1f12[10];
  ::S10149C5 s10149c1f13;
  void *s10149c1f14;
  char s10149c1f15;
  void *s10149c1f16[12];
  virtual  ~S10149C1(); // _ZN8S10149C1D1Ev
  virtual void  v1(); // _ZN8S10149C12v1Ev
  virtual void  v2(); // _ZN8S10149C12v2Ev
  virtual void  v3(); // _ZN8S10149C12v3Ev
  virtual void  v4(); // _ZN8S10149C12v4Ev
  virtual void  v5(); // _ZN8S10149C12v5Ev
  virtual void  v6(); // _ZN8S10149C12v6Ev
  S10149C1(); // tgen
};
//SIG(1 S10149C1) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 v13 v14 v15} vd v1 v2 v3 v4 v5 v6 FC3{ m Fp Fi FC4{ m}} FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 Fi[10] FC5{ Fi[3] Fc[68] Fi[4] Fc[36] Fi Fc[96] Fi Fc[560] Fi Fc[32] Fi Fc[256] Fi[13]} Fp Fc Fp[12]}


 S10149C1 ::~S10149C1(){ note_dtor("S10149C1", this);}
void  S10149C1 ::v1(){vfunc_called(this, "_ZN8S10149C12v1Ev");}
void  S10149C1 ::v2(){vfunc_called(this, "_ZN8S10149C12v2Ev");}
void  S10149C1 ::v3(){vfunc_called(this, "_ZN8S10149C12v3Ev");}
void  S10149C1 ::v4(){vfunc_called(this, "_ZN8S10149C12v4Ev");}
void  S10149C1 ::v5(){vfunc_called(this, "_ZN8S10149C12v5Ev");}
void  S10149C1 ::v6(){vfunc_called(this, "_ZN8S10149C12v6Ev");}
S10149C1 ::S10149C1(){ note_ctor("S10149C1", this);} // tgen

static void Test_S10149C1()
{
  extern Class_Descriptor cd_S10149C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(188,348)];
    init_test(&cd_S10149C1, buf);
    S10149C1 *dp, &lv = *(dp=new (buf) S10149C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1496,1388), "sizeof(S10149C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10149C1)");
    check_base_class_offset(lv, (S10149C2*), 0, "S10149C1");
    check_field_offset(lv, s10149c1f0, ABISELECT(8,4), "S10149C1.s10149c1f0");
    check_field_offset(lv, s10149c1f1, ABISELECT(24,16), "S10149C1.s10149c1f1");
    check_field_offset(lv, s10149c1f2, ABISELECT(40,28), "S10149C1.s10149c1f2");
    check_field_offset(lv, s10149c1f3, ABISELECT(56,40), "S10149C1.s10149c1f3");
    check_field_offset(lv, s10149c1f4, ABISELECT(72,52), "S10149C1.s10149c1f4");
    check_field_offset(lv, s10149c1f5, ABISELECT(88,64), "S10149C1.s10149c1f5");
    check_field_offset(lv, s10149c1f6, ABISELECT(104,76), "S10149C1.s10149c1f6");
    check_field_offset(lv, s10149c1f7, ABISELECT(120,88), "S10149C1.s10149c1f7");
    check_field_offset(lv, s10149c1f8, ABISELECT(136,100), "S10149C1.s10149c1f8");
    check_field_offset(lv, s10149c1f9, ABISELECT(152,112), "S10149C1.s10149c1f9");
    check_field_offset(lv, s10149c1f10, ABISELECT(168,124), "S10149C1.s10149c1f10");
    check_field_offset(lv, s10149c1f11, ABISELECT(184,136), "S10149C1.s10149c1f11");
    check_field_offset(lv, s10149c1f12, ABISELECT(200,148), "S10149C1.s10149c1f12");
    check_field_offset(lv, s10149c1f13, ABISELECT(240,188), "S10149C1.s10149c1f13");
    check_field_offset(lv, s10149c1f14, ABISELECT(1384,1332), "S10149C1.s10149c1f14");
    check_field_offset(lv, s10149c1f15, ABISELECT(1392,1336), "S10149C1.s10149c1f15");
    check_field_offset(lv, s10149c1f16, ABISELECT(1400,1340), "S10149C1.s10149c1f16");
    test_class_info(&lv, &cd_S10149C1);
    dp->~S10149C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10149C1(Test_S10149C1, "S10149C1", ABISELECT(1496,1388));

#else // __cplusplus

extern void _ZN8S10149C1C1Ev();
extern void _ZN8S10149C1D1Ev();
Name_Map name_map_S10149C1[] = {
  NSPAIR(_ZN8S10149C1C1Ev),
  NSPAIR(_ZN8S10149C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10149C2;
extern VTBL_ENTRY _ZTI8S10149C2[];
extern  VTBL_ENTRY _ZTV8S10149C2[];
static Base_Class bases_S10149C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10149C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10149C1[];
extern void _ZN8S10149C1D1Ev();
extern void _ZN8S10149C1D0Ev();
extern void _ZN8S10149C22v7Ev();
extern void _ZN8S10149C22v8Ev();
extern void _ZN8S10149C22v9Ev();
extern void _ZN8S10149C23v10Ev();
extern void _ZN8S10149C23v11Ev();
extern void _ZN8S10149C23v12Ev();
extern void _ZN8S10149C23v13Ev();
extern void _ZN8S10149C23v14Ev();
extern void _ZN8S10149C23v15Ev();
extern void _ZN8S10149C12v1Ev();
extern void _ZN8S10149C12v2Ev();
extern void _ZN8S10149C12v3Ev();
extern void _ZN8S10149C12v4Ev();
extern void _ZN8S10149C12v5Ev();
extern void _ZN8S10149C12v6Ev();
static  VTBL_ENTRY vtc_S10149C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10149C1[0]),
  (VTBL_ENTRY)&_ZN8S10149C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10149C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10149C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10149C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10149C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10149C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10149C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10149C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10149C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10149C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10149C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10149C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10149C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10149C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10149C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10149C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10149C12v6Ev,
};
extern VTBL_ENTRY _ZTI8S10149C1[];
extern  VTBL_ENTRY _ZTV8S10149C1[];
Class_Descriptor cd_S10149C1 = {  "S10149C1", // class name
  bases_S10149C1, 1,
  &(vtc_S10149C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1496,1388), // object size
  NSPAIRA(_ZTI8S10149C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10149C1),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6441C2  {
  virtual  ~S6441C2(); // _ZN7S6441C2D1Ev
  virtual void  v10(); // _ZN7S6441C23v10Ev
  virtual void  v11(); // _ZN7S6441C23v11Ev
  virtual void  v12(); // _ZN7S6441C23v12Ev
  virtual void  v13(); // _ZN7S6441C23v13Ev
  virtual void  v14(); // _ZN7S6441C23v14Ev
  virtual void  v15(); // _ZN7S6441C23v15Ev
  virtual void  v16(); // _ZN7S6441C23v16Ev
  virtual void  v17(); // _ZN7S6441C23v17Ev
  virtual void  v18(); // _ZN7S6441C23v18Ev
  S6441C2(); // tgen
};
//SIG(-1 S6441C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S6441C2 ::~S6441C2(){ note_dtor("S6441C2", this);}
void  S6441C2 ::v10(){vfunc_called(this, "_ZN7S6441C23v10Ev");}
void  S6441C2 ::v11(){vfunc_called(this, "_ZN7S6441C23v11Ev");}
void  S6441C2 ::v12(){vfunc_called(this, "_ZN7S6441C23v12Ev");}
void  S6441C2 ::v13(){vfunc_called(this, "_ZN7S6441C23v13Ev");}
void  S6441C2 ::v14(){vfunc_called(this, "_ZN7S6441C23v14Ev");}
void  S6441C2 ::v15(){vfunc_called(this, "_ZN7S6441C23v15Ev");}
void  S6441C2 ::v16(){vfunc_called(this, "_ZN7S6441C23v16Ev");}
void  S6441C2 ::v17(){vfunc_called(this, "_ZN7S6441C23v17Ev");}
void  S6441C2 ::v18(){vfunc_called(this, "_ZN7S6441C23v18Ev");}
S6441C2 ::S6441C2(){ note_ctor("S6441C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6441C2C1Ev();
extern void _ZN7S6441C2D1Ev();
Name_Map name_map_S6441C2[] = {
  NSPAIR(_ZN7S6441C2C1Ev),
  NSPAIR(_ZN7S6441C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6441C2[];
extern void _ZN7S6441C2D1Ev();
extern void _ZN7S6441C2D0Ev();
extern void _ZN7S6441C23v10Ev();
extern void _ZN7S6441C23v11Ev();
extern void _ZN7S6441C23v12Ev();
extern void _ZN7S6441C23v13Ev();
extern void _ZN7S6441C23v14Ev();
extern void _ZN7S6441C23v15Ev();
extern void _ZN7S6441C23v16Ev();
extern void _ZN7S6441C23v17Ev();
extern void _ZN7S6441C23v18Ev();
static  VTBL_ENTRY vtc_S6441C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6441C2[0]),
  (VTBL_ENTRY)&_ZN7S6441C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6441C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6441C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6441C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6441C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6441C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6441C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6441C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6441C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6441C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6441C23v18Ev,
};
extern VTBL_ENTRY _ZTI7S6441C2[];
extern  VTBL_ENTRY _ZTV7S6441C2[];
Class_Descriptor cd_S6441C2 = {  "S6441C2", // class name
  0,0,//no base classes
  &(vtc_S6441C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6441C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6441C2),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  S6441C3_nt  {
  __tsi64 s6441c3f0[4];
};
//SIG(-1 S6441C3_nt) C1{ FL[4]}



//skip512 S6441C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6441C4_nt  {
  void *s6441c4f0;
  void  mf6441c4(); // _ZN10S6441C4_nt8mf6441c4Ev
};
//SIG(-1 S6441C4_nt) C1{ m Fp}


void  S6441C4_nt ::mf6441c4(){}

//skip512 S6441C4_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S6441C4_nt[];
VTBL_ENTRY *P__ZTI10S6441C4_nt = _ZTI10S6441C4_nt; 
Class_Descriptor cd_S6441C4_nt = {  "S6441C4_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S6441C4_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  S6441C6_nt  {
  void *s6441c6f0;
  int s6441c6f1;
  virtual  ~S6441C6_nt(); // _ZN10S6441C6_ntD1Ev
  virtual void  v22(); // _ZN10S6441C6_nt3v22Ev
  S6441C6_nt(); // tgen
};
//SIG(-1 S6441C6_nt) C1{ vd v1 Fp Fi}


 S6441C6_nt ::~S6441C6_nt(){ note_dtor("S6441C6_nt", this);}
void  S6441C6_nt ::v22(){vfunc_called(this, "_ZN10S6441C6_nt3v22Ev");}
S6441C6_nt ::S6441C6_nt(){ note_ctor("S6441C6_nt", this);} // tgen

//skip512 S6441C6_nt

#else // __cplusplus

extern void _ZN10S6441C6_ntC1Ev();
extern void _ZN10S6441C6_ntD1Ev();
Name_Map name_map_S6441C6_nt[] = {
  NSPAIR(_ZN10S6441C6_ntC1Ev),
  NSPAIR(_ZN10S6441C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6441C6_nt[];
extern void _ZN10S6441C6_ntD1Ev();
extern void _ZN10S6441C6_ntD0Ev();
extern void _ZN10S6441C6_nt3v22Ev();
static  VTBL_ENTRY vtc_S6441C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6441C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6441C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6441C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6441C6_nt3v22Ev,
};
extern VTBL_ENTRY _ZTI10S6441C6_nt[];
VTBL_ENTRY *P__ZTI10S6441C6_nt = _ZTI10S6441C6_nt; 
extern  VTBL_ENTRY _ZTV10S6441C6_nt[];
Class_Descriptor cd_S6441C6_nt = {  "S6441C6_nt", // class name
  0,0,//no base classes
  &(vtc_S6441C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI10S6441C6_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6441C6_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  S6441C7_nt  {
  virtual  ~S6441C7_nt(); // _ZN10S6441C7_ntD1Ev
  virtual void  v23(); // _ZN10S6441C7_nt3v23Ev
  virtual void  v24(); // _ZN10S6441C7_nt3v24Ev
  S6441C7_nt(); // tgen
};
//SIG(-1 S6441C7_nt) C1{ vd v1 v2}


 S6441C7_nt ::~S6441C7_nt(){ note_dtor("S6441C7_nt", this);}
void  S6441C7_nt ::v23(){vfunc_called(this, "_ZN10S6441C7_nt3v23Ev");}
void  S6441C7_nt ::v24(){vfunc_called(this, "_ZN10S6441C7_nt3v24Ev");}
S6441C7_nt ::S6441C7_nt(){ note_ctor("S6441C7_nt", this);} // tgen

//skip512 S6441C7_nt

#else // __cplusplus

extern void _ZN10S6441C7_ntC1Ev();
extern void _ZN10S6441C7_ntD1Ev();
Name_Map name_map_S6441C7_nt[] = {
  NSPAIR(_ZN10S6441C7_ntC1Ev),
  NSPAIR(_ZN10S6441C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6441C7_nt[];
extern void _ZN10S6441C7_ntD1Ev();
extern void _ZN10S6441C7_ntD0Ev();
extern void _ZN10S6441C7_nt3v23Ev();
extern void _ZN10S6441C7_nt3v24Ev();
static  VTBL_ENTRY vtc_S6441C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6441C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6441C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6441C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6441C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6441C7_nt3v24Ev,
};
extern VTBL_ENTRY _ZTI10S6441C7_nt[];
VTBL_ENTRY *P__ZTI10S6441C7_nt = _ZTI10S6441C7_nt; 
extern  VTBL_ENTRY _ZTV10S6441C7_nt[];
Class_Descriptor cd_S6441C7_nt = {  "S6441C7_nt", // class name
  0,0,//no base classes
  &(vtc_S6441C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S6441C7_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6441C7_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  S6441C5  : S6441C6_nt , S6441C7_nt {
  void *s6441c5f0;
  int s6441c5f1[2];
  virtual  ~S6441C5(); // _ZN7S6441C5D1Ev
  virtual void  v19(); // _ZN7S6441C53v19Ev
  virtual void  v20(); // _ZN7S6441C53v20Ev
  virtual void  v21(); // _ZN7S6441C53v21Ev
  S6441C5(); // tgen
};
//SIG(-1 S6441C5) C1{ BC2{ vd v4 Fp Fi} BC3{ vd v5 v6} vd v1 v2 v3 Fp Fi[2]}


 S6441C5 ::~S6441C5(){ note_dtor("S6441C5", this);}
void  S6441C5 ::v19(){vfunc_called(this, "_ZN7S6441C53v19Ev");}
void  S6441C5 ::v20(){vfunc_called(this, "_ZN7S6441C53v20Ev");}
void  S6441C5 ::v21(){vfunc_called(this, "_ZN7S6441C53v21Ev");}
S6441C5 ::S6441C5(){ note_ctor("S6441C5", this);} // tgen

static void Test_S6441C5()
{
  extern Class_Descriptor cd_S6441C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S6441C5, buf);
    S6441C5 *dp, &lv = *(dp=new (buf) S6441C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S6441C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6441C5)");
    check_base_class_offset(lv, (S6441C6_nt*), 0, "S6441C5");
    check_base_class_offset(lv, (S6441C7_nt*), ABISELECT(24,12), "S6441C5");
    check_field_offset(lv, s6441c5f0, ABISELECT(32,16), "S6441C5.s6441c5f0");
    check_field_offset(lv, s6441c5f1, ABISELECT(40,20), "S6441C5.s6441c5f1");
    test_class_info(&lv, &cd_S6441C5);
    dp->~S6441C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6441C5(Test_S6441C5, "S6441C5", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S6441C5C1Ev();
extern void _ZN7S6441C5D1Ev();
Name_Map name_map_S6441C5[] = {
  NSPAIR(_ZN7S6441C5C1Ev),
  NSPAIR(_ZN7S6441C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6441C6_nt;
extern VTBL_ENTRY _ZTI10S6441C6_nt[];
extern  VTBL_ENTRY _ZTV10S6441C6_nt[];
extern Class_Descriptor cd_S6441C7_nt;
extern VTBL_ENTRY _ZTI10S6441C7_nt[];
extern  VTBL_ENTRY _ZTV10S6441C7_nt[];
static Base_Class bases_S6441C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6441C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6441C7_nt,    ABISELECT(24,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
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6441C5[];
extern void _ZN7S6441C5D1Ev();
extern void _ZN7S6441C5D0Ev();
extern void _ZN10S6441C6_nt3v22Ev();
extern void _ZN7S6441C53v19Ev();
extern void _ZN7S6441C53v20Ev();
extern void _ZN7S6441C53v21Ev();
extern void ABISELECT(_ZThn24_N7S6441C5D1Ev,_ZThn12_N7S6441C5D1Ev)();
extern void ABISELECT(_ZThn24_N7S6441C5D0Ev,_ZThn12_N7S6441C5D0Ev)();
extern void _ZN10S6441C7_nt3v23Ev();
extern void _ZN10S6441C7_nt3v24Ev();
static  VTBL_ENTRY vtc_S6441C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6441C5[0]),
  (VTBL_ENTRY)&_ZN7S6441C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6441C5D0Ev,
  (VTBL_ENTRY)&_ZN10S6441C6_nt3v22Ev,
  (VTBL_ENTRY)&_ZN7S6441C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6441C53v20Ev,
  (VTBL_ENTRY)&_ZN7S6441C53v21Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6441C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S6441C5D1Ev,_ZThn12_N7S6441C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S6441C5D0Ev,_ZThn12_N7S6441C5D0Ev),
  (VTBL_ENTRY)&_ZN10S6441C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6441C7_nt3v24Ev,
};
extern VTBL_ENTRY _ZTI7S6441C5[];
extern  VTBL_ENTRY _ZTV7S6441C5[];
Class_Descriptor cd_S6441C5 = {  "S6441C5", // class name
  bases_S6441C5, 2,
  &(vtc_S6441C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S6441C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6441C5),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6441C8_nt  {
  int s6441c8f0;
  void  mf6441c8(); // _ZN10S6441C8_nt8mf6441c8Ev
  virtual  ~S6441C8_nt(); // _ZN10S6441C8_ntD1Ev
  S6441C8_nt(); // tgen
};
//SIG(-1 S6441C8_nt) C1{ vd m Fi}


void  S6441C8_nt ::mf6441c8(){}
 S6441C8_nt ::~S6441C8_nt(){ note_dtor("S6441C8_nt", this);}
S6441C8_nt ::S6441C8_nt(){ note_ctor("S6441C8_nt", this);} // tgen

//skip512 S6441C8_nt

#else // __cplusplus

extern void _ZN10S6441C8_ntC1Ev();
extern void _ZN10S6441C8_ntD1Ev();
Name_Map name_map_S6441C8_nt[] = {
  NSPAIR(_ZN10S6441C8_ntC1Ev),
  NSPAIR(_ZN10S6441C8_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6441C8_nt[];
extern void _ZN10S6441C8_ntD1Ev();
extern void _ZN10S6441C8_ntD0Ev();
static  VTBL_ENTRY vtc_S6441C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6441C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S6441C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6441C8_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S6441C8_nt[];
VTBL_ENTRY *P__ZTI10S6441C8_nt = _ZTI10S6441C8_nt; 
extern  VTBL_ENTRY _ZTV10S6441C8_nt[];
Class_Descriptor cd_S6441C8_nt = {  "S6441C8_nt", // class name
  0,0,//no base classes
  &(vtc_S6441C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S6441C8_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6441C8_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  S6441C9_nt  : S28C13_nt {
};
//SIG(-1 S6441C9_nt) C1{ BC2{ m Fi}}



//skip512 S6441C9_nt

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S6441C9_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S6441C1  : S6441C2 {
  int s6441c1f0;
  ::S6441C3_nt s6441c1f1;
  int s6441c1f2[4];
  char s6441c1f3[2];
  int s6441c1f4[2];
  ::S6441C4_nt s6441c1f5;
  ::S6441C5 s6441c1f6;
  char s6441c1f7;
  ::S6441C8_nt s6441c1f8;
  ::S6441C9_nt s6441c1f9;
  ::S6441C9_nt s6441c1f10;
  int s6441c1f11;
  __tsi64 s6441c1f12;
  virtual  ~S6441C1(); // _ZN7S6441C1D1Ev
  virtual void  v1(); // _ZN7S6441C12v1Ev
  virtual void  v2(); // _ZN7S6441C12v2Ev
  virtual void  v3(); // _ZN7S6441C12v3Ev
  virtual void  v4(); // _ZN7S6441C12v4Ev
  virtual void  v5(); // _ZN7S6441C12v5Ev
  virtual void  v6(); // _ZN7S6441C12v6Ev
  virtual void  v7(); // _ZN7S6441C12v7Ev
  virtual void  v8(); // _ZN7S6441C12v8Ev
  virtual void  v9(); // _ZN7S6441C12v9Ev
  S6441C1(); // tgen
};
//SIG(1 S6441C1) C1{ BC2{ vd v10 v11 v12 v13 v14 v15 v16 v17 v18} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fi FC3{ FL[4]} Fi[4] Fc[2] Fi[2] FC4{ m Fp} FC5{ BC6{ vd v22 Fp Fi} BC7{ vd v23 v24} vd v19 v20 v21 Fp Fi[2]} Fc FC8{ vd m Fi} FC9{ BC10{ m Fi}} FC9 Fi FL}


 S6441C1 ::~S6441C1(){ note_dtor("S6441C1", this);}
void  S6441C1 ::v1(){vfunc_called(this, "_ZN7S6441C12v1Ev");}
void  S6441C1 ::v2(){vfunc_called(this, "_ZN7S6441C12v2Ev");}
void  S6441C1 ::v3(){vfunc_called(this, "_ZN7S6441C12v3Ev");}
void  S6441C1 ::v4(){vfunc_called(this, "_ZN7S6441C12v4Ev");}
void  S6441C1 ::v5(){vfunc_called(this, "_ZN7S6441C12v5Ev");}
void  S6441C1 ::v6(){vfunc_called(this, "_ZN7S6441C12v6Ev");}
void  S6441C1 ::v7(){vfunc_called(this, "_ZN7S6441C12v7Ev");}
void  S6441C1 ::v8(){vfunc_called(this, "_ZN7S6441C12v8Ev");}
void  S6441C1 ::v9(){vfunc_called(this, "_ZN7S6441C12v9Ev");}
S6441C1 ::S6441C1(){ note_ctor("S6441C1", this);} // tgen

static void Test_S6441C1()
{
  extern Class_Descriptor cd_S6441C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,34)];
    init_test(&cd_S6441C1, buf);
    S6441C1 *dp, &lv = *(dp=new (buf) S6441C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,132), "sizeof(S6441C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6441C1)");
    check_base_class_offset(lv, (S6441C2*), 0, "S6441C1");
    check_field_offset(lv, s6441c1f0, ABISELECT(8,4), "S6441C1.s6441c1f0");
    check_field_offset(lv, s6441c1f1, ABISELECT(16,8), "S6441C1.s6441c1f1");
    check_field_offset(lv, s6441c1f2, ABISELECT(48,40), "S6441C1.s6441c1f2");
    check_field_offset(lv, s6441c1f3, ABISELECT(64,56), "S6441C1.s6441c1f3");
    check_field_offset(lv, s6441c1f4, ABISELECT(68,60), "S6441C1.s6441c1f4");
    check_field_offset(lv, s6441c1f5, ABISELECT(80,68), "S6441C1.s6441c1f5");
    check_field_offset(lv, s6441c1f6, ABISELECT(88,72), "S6441C1.s6441c1f6");
    check_field_offset(lv, s6441c1f7, ABISELECT(136,100), "S6441C1.s6441c1f7");
    check_field_offset(lv, s6441c1f8, ABISELECT(144,104), "S6441C1.s6441c1f8");
    check_field_offset(lv, s6441c1f9, ABISELECT(160,112), "S6441C1.s6441c1f9");
    check_field_offset(lv, s6441c1f10, ABISELECT(164,116), "S6441C1.s6441c1f10");
    check_field_offset(lv, s6441c1f11, ABISELECT(168,120), "S6441C1.s6441c1f11");
    check_field_offset(lv, s6441c1f12, ABISELECT(176,124), "S6441C1.s6441c1f12");
    test_class_info(&lv, &cd_S6441C1);
    dp->~S6441C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6441C1(Test_S6441C1, "S6441C1", ABISELECT(184,132));

#else // __cplusplus

extern void _ZN7S6441C1C1Ev();
extern void _ZN7S6441C1D1Ev();
Name_Map name_map_S6441C1[] = {
  NSPAIR(_ZN7S6441C1C1Ev),
  NSPAIR(_ZN7S6441C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6441C2;
extern VTBL_ENTRY _ZTI7S6441C2[];
extern  VTBL_ENTRY _ZTV7S6441C2[];
static Base_Class bases_S6441C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6441C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6441C1[];
extern void _ZN7S6441C1D1Ev();
extern void _ZN7S6441C1D0Ev();
extern void _ZN7S6441C23v10Ev();
extern void _ZN7S6441C23v11Ev();
extern void _ZN7S6441C23v12Ev();
extern void _ZN7S6441C23v13Ev();
extern void _ZN7S6441C23v14Ev();
extern void _ZN7S6441C23v15Ev();
extern void _ZN7S6441C23v16Ev();
extern void _ZN7S6441C23v17Ev();
extern void _ZN7S6441C23v18Ev();
extern void _ZN7S6441C12v1Ev();
extern void _ZN7S6441C12v2Ev();
extern void _ZN7S6441C12v3Ev();
extern void _ZN7S6441C12v4Ev();
extern void _ZN7S6441C12v5Ev();
extern void _ZN7S6441C12v6Ev();
extern void _ZN7S6441C12v7Ev();
extern void _ZN7S6441C12v8Ev();
extern void _ZN7S6441C12v9Ev();
static  VTBL_ENTRY vtc_S6441C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6441C1[0]),
  (VTBL_ENTRY)&_ZN7S6441C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6441C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6441C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6441C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6441C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6441C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6441C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6441C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6441C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6441C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6441C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6441C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6441C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6441C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6441C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6441C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6441C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6441C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6441C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6441C12v9Ev,
};
extern VTBL_ENTRY _ZTI7S6441C1[];
extern  VTBL_ENTRY _ZTV7S6441C1[];
Class_Descriptor cd_S6441C1 = {  "S6441C1", // class name
  bases_S6441C1, 1,
  &(vtc_S6441C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,132), // object size
  NSPAIRA(_ZTI7S6441C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6441C1),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  S6440C2  {
  virtual  ~S6440C2(); // _ZN7S6440C2D1Ev
  virtual void  v10(); // _ZN7S6440C23v10Ev
  virtual void  v11(); // _ZN7S6440C23v11Ev
  virtual void  v12(); // _ZN7S6440C23v12Ev
  virtual void  v13(); // _ZN7S6440C23v13Ev
  virtual void  v14(); // _ZN7S6440C23v14Ev
  virtual void  v15(); // _ZN7S6440C23v15Ev
  virtual void  v16(); // _ZN7S6440C23v16Ev
  virtual void  v17(); // _ZN7S6440C23v17Ev
  virtual void  v18(); // _ZN7S6440C23v18Ev
  S6440C2(); // tgen
};
//SIG(-1 S6440C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S6440C2 ::~S6440C2(){ note_dtor("S6440C2", this);}
void  S6440C2 ::v10(){vfunc_called(this, "_ZN7S6440C23v10Ev");}
void  S6440C2 ::v11(){vfunc_called(this, "_ZN7S6440C23v11Ev");}
void  S6440C2 ::v12(){vfunc_called(this, "_ZN7S6440C23v12Ev");}
void  S6440C2 ::v13(){vfunc_called(this, "_ZN7S6440C23v13Ev");}
void  S6440C2 ::v14(){vfunc_called(this, "_ZN7S6440C23v14Ev");}
void  S6440C2 ::v15(){vfunc_called(this, "_ZN7S6440C23v15Ev");}
void  S6440C2 ::v16(){vfunc_called(this, "_ZN7S6440C23v16Ev");}
void  S6440C2 ::v17(){vfunc_called(this, "_ZN7S6440C23v17Ev");}
void  S6440C2 ::v18(){vfunc_called(this, "_ZN7S6440C23v18Ev");}
S6440C2 ::S6440C2(){ note_ctor("S6440C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6440C2C1Ev();
extern void _ZN7S6440C2D1Ev();
Name_Map name_map_S6440C2[] = {
  NSPAIR(_ZN7S6440C2C1Ev),
  NSPAIR(_ZN7S6440C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6440C2[];
extern void _ZN7S6440C2D1Ev();
extern void _ZN7S6440C2D0Ev();
extern void _ZN7S6440C23v10Ev();
extern void _ZN7S6440C23v11Ev();
extern void _ZN7S6440C23v12Ev();
extern void _ZN7S6440C23v13Ev();
extern void _ZN7S6440C23v14Ev();
extern void _ZN7S6440C23v15Ev();
extern void _ZN7S6440C23v16Ev();
extern void _ZN7S6440C23v17Ev();
extern void _ZN7S6440C23v18Ev();
static  VTBL_ENTRY vtc_S6440C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6440C2[0]),
  (VTBL_ENTRY)&_ZN7S6440C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6440C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6440C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6440C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6440C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6440C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6440C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6440C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6440C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6440C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6440C23v18Ev,
};
extern VTBL_ENTRY _ZTI7S6440C2[];
extern  VTBL_ENTRY _ZTV7S6440C2[];
Class_Descriptor cd_S6440C2 = {  "S6440C2", // class name
  0,0,//no base classes
  &(vtc_S6440C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6440C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6440C2),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  S6440C11  : S28C13_nt {
};
//SIG(-1 S6440C11) C1{ BC2{ m Fi}}



static void Test_S6440C11()
{
  extern Class_Descriptor cd_S6440C11;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S6440C11, buf);
    S6440C11 &lv = *(new (buf) S6440C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S6440C11)");
    check2(__alignof__(lv), 4, "__alignof__(S6440C11)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S6440C11");
    test_class_info(&lv, &cd_S6440C11);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6440C11(Test_S6440C11, "S6440C11", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S6440C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S6440C11 = {  "S6440C11", // class name
  bases_S6440C11, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6440C1  : S6440C2 {
  int s6440c1f0;
  ::S3027C16_nt s6440c1f1;
  int s6440c1f2[4];
  char s6440c1f3[2];
  int s6440c1f4[2];
  ::S6441C4_nt s6440c1f5;
  ::S6441C5 s6440c1f6;
  char s6440c1f7;
  ::S6441C8_nt s6440c1f8;
  ::S6441C9_nt s6440c1f9;
  ::S6440C11 s6440c1f10;
  int s6440c1f11;
  long s6440c1f12;
  virtual  ~S6440C1(); // _ZN7S6440C1D1Ev
  virtual void  v1(); // _ZN7S6440C12v1Ev
  virtual void  v2(); // _ZN7S6440C12v2Ev
  virtual void  v3(); // _ZN7S6440C12v3Ev
  virtual void  v4(); // _ZN7S6440C12v4Ev
  virtual void  v5(); // _ZN7S6440C12v5Ev
  virtual void  v6(); // _ZN7S6440C12v6Ev
  virtual void  v7(); // _ZN7S6440C12v7Ev
  virtual void  v8(); // _ZN7S6440C12v8Ev
  virtual void  v9(); // _ZN7S6440C12v9Ev
  S6440C1(); // tgen
};
//SIG(1 S6440C1) C1{ BC2{ vd v10 v11 v12 v13 v14 v15 v16 v17 v18} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fi FC3{ Fl[4]} Fi[4] Fc[2] Fi[2] FC4{ m Fp} FC5{ BC6{ vd v22 Fp Fi} BC7{ vd v23 v24} vd v19 v20 v21 Fp Fi[2]} Fc FC8{ vd m Fi} FC9{ BC10{ m Fi}} FC11{ BC10} Fi Fl}


 S6440C1 ::~S6440C1(){ note_dtor("S6440C1", this);}
void  S6440C1 ::v1(){vfunc_called(this, "_ZN7S6440C12v1Ev");}
void  S6440C1 ::v2(){vfunc_called(this, "_ZN7S6440C12v2Ev");}
void  S6440C1 ::v3(){vfunc_called(this, "_ZN7S6440C12v3Ev");}
void  S6440C1 ::v4(){vfunc_called(this, "_ZN7S6440C12v4Ev");}
void  S6440C1 ::v5(){vfunc_called(this, "_ZN7S6440C12v5Ev");}
void  S6440C1 ::v6(){vfunc_called(this, "_ZN7S6440C12v6Ev");}
void  S6440C1 ::v7(){vfunc_called(this, "_ZN7S6440C12v7Ev");}
void  S6440C1 ::v8(){vfunc_called(this, "_ZN7S6440C12v8Ev");}
void  S6440C1 ::v9(){vfunc_called(this, "_ZN7S6440C12v9Ev");}
S6440C1 ::S6440C1(){ note_ctor("S6440C1", this);} // tgen

static void Test_S6440C1()
{
  extern Class_Descriptor cd_S6440C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,29)];
    init_test(&cd_S6440C1, buf);
    S6440C1 *dp, &lv = *(dp=new (buf) S6440C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,112), "sizeof(S6440C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6440C1)");
    check_base_class_offset(lv, (S6440C2*), 0, "S6440C1");
    check_field_offset(lv, s6440c1f0, ABISELECT(8,4), "S6440C1.s6440c1f0");
    check_field_offset(lv, s6440c1f1, ABISELECT(16,8), "S6440C1.s6440c1f1");
    check_field_offset(lv, s6440c1f2, ABISELECT(48,24), "S6440C1.s6440c1f2");
    check_field_offset(lv, s6440c1f3, ABISELECT(64,40), "S6440C1.s6440c1f3");
    check_field_offset(lv, s6440c1f4, ABISELECT(68,44), "S6440C1.s6440c1f4");
    check_field_offset(lv, s6440c1f5, ABISELECT(80,52), "S6440C1.s6440c1f5");
    check_field_offset(lv, s6440c1f6, ABISELECT(88,56), "S6440C1.s6440c1f6");
    check_field_offset(lv, s6440c1f7, ABISELECT(136,84), "S6440C1.s6440c1f7");
    check_field_offset(lv, s6440c1f8, ABISELECT(144,88), "S6440C1.s6440c1f8");
    check_field_offset(lv, s6440c1f9, ABISELECT(160,96), "S6440C1.s6440c1f9");
    check_field_offset(lv, s6440c1f10, ABISELECT(164,100), "S6440C1.s6440c1f10");
    check_field_offset(lv, s6440c1f11, ABISELECT(168,104), "S6440C1.s6440c1f11");
    check_field_offset(lv, s6440c1f12, ABISELECT(176,108), "S6440C1.s6440c1f12");
    test_class_info(&lv, &cd_S6440C1);
    dp->~S6440C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6440C1(Test_S6440C1, "S6440C1", ABISELECT(184,112));

#else // __cplusplus

extern void _ZN7S6440C1C1Ev();
extern void _ZN7S6440C1D1Ev();
Name_Map name_map_S6440C1[] = {
  NSPAIR(_ZN7S6440C1C1Ev),
  NSPAIR(_ZN7S6440C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6440C2;
extern VTBL_ENTRY _ZTI7S6440C2[];
extern  VTBL_ENTRY _ZTV7S6440C2[];
static Base_Class bases_S6440C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6440C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6440C1[];
extern void _ZN7S6440C1D1Ev();
extern void _ZN7S6440C1D0Ev();
extern void _ZN7S6440C23v10Ev();
extern void _ZN7S6440C23v11Ev();
extern void _ZN7S6440C23v12Ev();
extern void _ZN7S6440C23v13Ev();
extern void _ZN7S6440C23v14Ev();
extern void _ZN7S6440C23v15Ev();
extern void _ZN7S6440C23v16Ev();
extern void _ZN7S6440C23v17Ev();
extern void _ZN7S6440C23v18Ev();
extern void _ZN7S6440C12v1Ev();
extern void _ZN7S6440C12v2Ev();
extern void _ZN7S6440C12v3Ev();
extern void _ZN7S6440C12v4Ev();
extern void _ZN7S6440C12v5Ev();
extern void _ZN7S6440C12v6Ev();
extern void _ZN7S6440C12v7Ev();
extern void _ZN7S6440C12v8Ev();
extern void _ZN7S6440C12v9Ev();
static  VTBL_ENTRY vtc_S6440C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6440C1[0]),
  (VTBL_ENTRY)&_ZN7S6440C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6440C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6440C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6440C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6440C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6440C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6440C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6440C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6440C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6440C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6440C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6440C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6440C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6440C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6440C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6440C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6440C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6440C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6440C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6440C12v9Ev,
};
extern VTBL_ENTRY _ZTI7S6440C1[];
extern  VTBL_ENTRY _ZTV7S6440C1[];
Class_Descriptor cd_S6440C1 = {  "S6440C1", // class name
  bases_S6440C1, 1,
  &(vtc_S6440C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,112), // object size
  NSPAIRA(_ZTI7S6440C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6440C1),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  S343C6_nt  {
  void  mf343c6(); // _ZN9S343C6_nt7mf343c6Ev
  virtual  ~S343C6_nt(); // _ZN9S343C6_ntD1Ev
  S343C6_nt(); // tgen
};
//SIG(-1 S343C6_nt) C1{ vd m}


void  S343C6_nt ::mf343c6(){}
 S343C6_nt ::~S343C6_nt(){ note_dtor("S343C6_nt", this);}
S343C6_nt ::S343C6_nt(){ note_ctor("S343C6_nt", this);} // tgen

//skip512 S343C6_nt

#else // __cplusplus

extern void _ZN9S343C6_ntC1Ev();
extern void _ZN9S343C6_ntD1Ev();
Name_Map name_map_S343C6_nt[] = {
  NSPAIR(_ZN9S343C6_ntC1Ev),
  NSPAIR(_ZN9S343C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern void _ZN9S343C6_ntD1Ev();
extern void _ZN9S343C6_ntD0Ev();
static  VTBL_ENTRY vtc_S343C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S343C6_nt[0]),
  (VTBL_ENTRY)&_ZN9S343C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S343C6_ntD0Ev,
};
extern VTBL_ENTRY _ZTI9S343C6_nt[];
VTBL_ENTRY *P__ZTI9S343C6_nt = _ZTI9S343C6_nt; 
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
Class_Descriptor cd_S343C6_nt = {  "S343C6_nt", // class name
  0,0,//no base classes
  &(vtc_S343C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S343C6_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S343C6_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  S343C5_nt  : S343C6_nt {
  virtual  ~S343C5_nt(); // _ZN9S343C5_ntD1Ev
  S343C5_nt(); // tgen
};
//SIG(-1 S343C5_nt) C1{ BC2{ vd m} vd}


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

//skip512 S343C5_nt

#else // __cplusplus

extern void _ZN9S343C5_ntC1Ev();
extern void _ZN9S343C5_ntD1Ev();
Name_Map name_map_S343C5_nt[] = {
  NSPAIR(_ZN9S343C5_ntC1Ev),
  NSPAIR(_ZN9S343C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
static Base_Class bases_S343C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern void _ZN9S343C5_ntD1Ev();
extern void _ZN9S343C5_ntD0Ev();
static  VTBL_ENTRY vtc_S343C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S343C5_nt[0]),
  (VTBL_ENTRY)&_ZN9S343C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S343C5_ntD0Ev,
};
extern VTBL_ENTRY _ZTI9S343C5_nt[];
VTBL_ENTRY *P__ZTI9S343C5_nt = _ZTI9S343C5_nt; 
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
Class_Descriptor cd_S343C5_nt = {  "S343C5_nt", // class name
  bases_S343C5_nt, 1,
  &(vtc_S343C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S343C5_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S343C5_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  S343C4_nt  : S343C5_nt {
  virtual  ~S343C4_nt(); // _ZN9S343C4_ntD1Ev
  S343C4_nt(); // tgen
};
//SIG(-1 S343C4_nt) C1{ BC2{ BC3{ vd m} vd} vd}


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

//skip512 S343C4_nt

#else // __cplusplus

extern void _ZN9S343C4_ntC1Ev();
extern void _ZN9S343C4_ntD1Ev();
Name_Map name_map_S343C4_nt[] = {
  NSPAIR(_ZN9S343C4_ntC1Ev),
  NSPAIR(_ZN9S343C4_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
static Base_Class bases_S343C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S343C4_nt[];
extern void _ZN9S343C4_ntD1Ev();
extern void _ZN9S343C4_ntD0Ev();
static  VTBL_ENTRY vtc_S343C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S343C4_nt[0]),
  (VTBL_ENTRY)&_ZN9S343C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S343C4_ntD0Ev,
};
extern VTBL_ENTRY _ZTI9S343C4_nt[];
VTBL_ENTRY *P__ZTI9S343C4_nt = _ZTI9S343C4_nt; 
extern  VTBL_ENTRY _ZTV9S343C4_nt[];
Class_Descriptor cd_S343C4_nt = {  "S343C4_nt", // class name
  bases_S343C4_nt, 2,
  &(vtc_S343C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S343C4_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S343C4_nt),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S343C8_nt  : S343C5_nt {
  ::S343C5_nt s343c8f0;
  virtual  ~S343C8_nt(); // _ZN9S343C8_ntD1Ev
  S343C8_nt(); // tgen
};
//SIG(-1 S343C8_nt) C1{ BC2{ BC3{ vd m} vd} vd FC2}


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

//skip512 S343C8_nt

#else // __cplusplus

extern void _ZN9S343C8_ntC1Ev();
extern void _ZN9S343C8_ntD1Ev();
Name_Map name_map_S343C8_nt[] = {
  NSPAIR(_ZN9S343C8_ntC1Ev),
  NSPAIR(_ZN9S343C8_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
static Base_Class bases_S343C8_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S343C8_nt[];
extern void _ZN9S343C8_ntD1Ev();
extern void _ZN9S343C8_ntD0Ev();
static  VTBL_ENTRY vtc_S343C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S343C8_nt[0]),
  (VTBL_ENTRY)&_ZN9S343C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S343C8_ntD0Ev,
};
extern VTBL_ENTRY _ZTI9S343C8_nt[];
VTBL_ENTRY *P__ZTI9S343C8_nt = _ZTI9S343C8_nt; 
extern  VTBL_ENTRY _ZTV9S343C8_nt[];
Class_Descriptor cd_S343C8_nt = {  "S343C8_nt", // class name
  bases_S343C8_nt, 2,
  &(vtc_S343C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S343C8_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S343C8_nt),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  S343C7_nt  : S343C8_nt , S343C4_nt {
  long s343c7f0;
  int s343c7f1;
  ~S343C7_nt(); // tgen
  S343C7_nt(); // tgen
};
//SIG(-1 S343C7_nt) C1{ BC2{ BC3{ BC4{ vd m} vd} vd FC3} BC5{ BC3 vd} Fl Fi}


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

//skip512 S343C7_nt

#else // __cplusplus

extern void _ZN9S343C7_ntC1Ev();
extern void _ZN9S343C7_ntD1Ev();
Name_Map name_map_S343C7_nt[] = {
  NSPAIR(_ZN9S343C7_ntC1Ev),
  NSPAIR(_ZN9S343C7_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C8_nt;
extern VTBL_ENTRY _ZTI9S343C8_nt[];
extern  VTBL_ENTRY _ZTV9S343C8_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C4_nt;
extern VTBL_ENTRY _ZTI9S343C4_nt[];
extern  VTBL_ENTRY _ZTV9S343C4_nt[];
static Base_Class bases_S343C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S343C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S343C6_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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S343C5_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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S343C4_nt,    ABISELECT(16,8), //bcp->offset
    4, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S343C7_nt[];
extern void _ZN9S343C7_ntD1Ev();
extern void _ZN9S343C7_ntD0Ev();
extern void ABISELECT(_ZThn16_N9S343C7_ntD1Ev,_ZThn8_N9S343C7_ntD1Ev)();
extern void ABISELECT(_ZThn16_N9S343C7_ntD0Ev,_ZThn8_N9S343C7_ntD0Ev)();
static  VTBL_ENTRY vtc_S343C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S343C7_nt[0]),
  (VTBL_ENTRY)&_ZN9S343C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S343C7_ntD0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S343C7_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S343C7_ntD1Ev,_ZThn8_N9S343C7_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S343C7_ntD0Ev,_ZThn8_N9S343C7_ntD0Ev),
};
extern VTBL_ENTRY _ZTI9S343C7_nt[];
VTBL_ENTRY *P__ZTI9S343C7_nt = _ZTI9S343C7_nt; 
extern  VTBL_ENTRY _ZTV9S343C7_nt[];
Class_Descriptor cd_S343C7_nt = {  "S343C7_nt", // class name
  bases_S343C7_nt, 6,
  &(vtc_S343C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI9S343C7_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S343C7_nt),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S343C3_nt  : S343C4_nt , virtual S343C6_nt , virtual S343C5_nt , virtual S343C7_nt {
  int s343c3f0;
  ~S343C3_nt(); // tgen
  S343C3_nt(); // tgen
};
//SIG(-1 S343C3_nt) C1{ BC2{ BC3{ BC4{ vd m} vd} vd} VBC4 VBC3 VBC5{ BC6{ BC3 vd FC3} BC2 Fl Fi} Fi}


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

//skip512 S343C3_nt

#else // __cplusplus

extern void _ZN9S343C3_ntC1Ev();
extern void _ZN9S343C3_ntD1Ev();
Name_Map name_map_S343C3_nt[] = {
  NSPAIR(_ZN9S343C3_ntC1Ev),
  NSPAIR(_ZN9S343C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C4_nt;
extern VTBL_ENTRY _ZTI9S343C4_nt[];
extern  VTBL_ENTRY _ZTV9S343C4_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C8_nt;
extern VTBL_ENTRY _ZTI9S343C8_nt[];
extern  VTBL_ENTRY _ZTV9S343C8_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C4_nt;
extern VTBL_ENTRY _ZTI9S343C4_nt[];
extern  VTBL_ENTRY _ZTV9S343C4_nt[];
extern Class_Descriptor cd_S343C7_nt;
extern VTBL_ENTRY _ZTI9S343C7_nt[];
extern  VTBL_ENTRY _ZTV9S343C7_nt[];
static Base_Class bases_S343C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S343C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S343C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S343C6_nt,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_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
    5, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    ABISELECT(24,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S343C8_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S343C4_nt,    ABISELECT(48,24), //bcp->offset
    22, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S343C7_nt,    ABISELECT(32,16), //bcp->offset
    17, //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
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S343C3_nt[];
extern void _ZN9S343C3_ntD1Ev();
extern void _ZN9S343C3_ntD0Ev();
extern void ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev)();
extern void ABISELECT(_ZThn16_N9S343C3_ntD1Ev,_ZThn8_N9S343C3_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev)();
extern void ABISELECT(_ZThn16_N9S343C3_ntD0Ev,_ZThn8_N9S343C3_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev)();
extern void ABISELECT(_ZThn24_N9S343C3_ntD1Ev,_ZThn12_N9S343C3_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev)();
extern void ABISELECT(_ZThn24_N9S343C3_ntD0Ev,_ZThn12_N9S343C3_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev)();
extern void ABISELECT(_ZThn32_N9S343C3_ntD1Ev,_ZThn16_N9S343C3_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev)();
extern void ABISELECT(_ZThn32_N9S343C3_ntD0Ev,_ZThn16_N9S343C3_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n24_N9S343C3_ntD1Ev,_ZTvn8_n12_N9S343C3_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n24_N9S343C3_ntD0Ev,_ZTvn8_n12_N9S343C3_ntD0Ev)();
static  VTBL_ENTRY vtc_S343C3_nt[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S343C3_nt[0]),
  (VTBL_ENTRY)&_ZN9S343C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S343C3_ntD0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S343C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S343C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S343C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S343C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N9S343C3_ntD1Ev,_ZTvn8_n12_N9S343C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N9S343C3_ntD0Ev,_ZTvn8_n12_N9S343C3_ntD0Ev),
};
extern VTBL_ENTRY _ZTV9S343C3_nt[];
static  VTT_ENTRY vtt_S343C3_nt[] = {
  {&(_ZTV9S343C3_nt[5]),  5,26},
  {&(_ZTV9S343C3_nt[10]),  10,26},
  {&(_ZTV9S343C3_nt[15]),  15,26},
  {&(_ZTV9S343C3_nt[20]),  20,26},
  {&(_ZTV9S343C3_nt[24]),  24,26},
};
extern VTBL_ENTRY _ZTI9S343C3_nt[];
VTBL_ENTRY *P__ZTI9S343C3_nt = _ZTI9S343C3_nt; 
extern  VTBL_ENTRY _ZTV9S343C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S343C3_nt[];
static VTBL_ENTRY alt_thunk_names54[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S343C3_ntD0Ev,_ZThn16_N9S343C3_ntD0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S343C3_ntD0Ev,_ZThn12_N9S343C3_ntD0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S343C3_ntD0Ev,_ZThn8_N9S343C3_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S343C3_ntD1Ev,_ZThn16_N9S343C3_ntD1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S343C3_ntD1Ev,_ZThn12_N9S343C3_ntD1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S343C3_ntD1Ev,_ZThn8_N9S343C3_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S343C3_nt = {  "S343C3_nt", // class name
  bases_S343C3_nt, 13,
  &(vtc_S343C3_nt[0]), // expected_vtbl_contents
  &(vtt_S343C3_nt[0]), // expected_vtt_contents
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI9S343C3_nt),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S343C3_nt),26, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S343C3_nt),5, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names54,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S343C9_nt  {
  ::S343C5_nt s343c9f0;
  void  mf343c9(); // _ZN9S343C9_nt7mf343c9Ev
};
//SIG(-1 S343C9_nt) C1{ m FC2{ BC3{ vd m} vd}}


void  S343C9_nt ::mf343c9(){}

//skip512 S343C9_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI9S343C9_nt[];
VTBL_ENTRY *P__ZTI9S343C9_nt = _ZTI9S343C9_nt; 
Class_Descriptor cd_S343C9_nt = {  "S343C9_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S343C9_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  S343C12_nt  : S731C17_nt {
};
//SIG(-1 S343C12_nt) C1{ BC2{ m}}



//skip512 S343C12_nt

#else // __cplusplus

extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S343C12_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S343C12_nt[];
VTBL_ENTRY *P__ZTI10S343C12_nt = _ZTI10S343C12_nt; 
Class_Descriptor cd_S343C12_nt = {  "S343C12_nt", // class name
  bases_S343C12_nt, 1,
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI10S343C12_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  S343C10_nt  : virtual S731C17_nt , virtual S343C8_nt , S343C12_nt {
  ~S343C10_nt(); // tgen
  S343C10_nt(); // tgen
};
//SIG(-1 S343C10_nt) C1{ VBC2{ m} VBC3{ BC4{ BC5{ vd m} vd} vd FC4} BC6{ BC2}}


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

//skip512 S343C10_nt

#else // __cplusplus

extern void _ZN10S343C10_ntC1Ev();
extern void _ZN10S343C10_ntD1Ev();
Name_Map name_map_S343C10_nt[] = {
  NSPAIR(_ZN10S343C10_ntC1Ev),
  NSPAIR(_ZN10S343C10_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C8_nt;
extern VTBL_ENTRY _ZTI9S343C8_nt[];
extern  VTBL_ENTRY _ZTV9S343C8_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S343C12_nt;
extern VTBL_ENTRY _ZTI10S343C12_nt[];
static Base_Class bases_S343C10_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S343C8_nt,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S343C12_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S343C10_nt[];
extern void _ZN10S343C10_ntD1Ev();
extern void _ZN10S343C10_ntD0Ev();
extern void ABISELECT(_ZTv0_n24_N10S343C10_ntD1Ev,_ZTv0_n12_N10S343C10_ntD1Ev)();
extern void ABISELECT(_ZThn8_N10S343C10_ntD1Ev,_ZThn4_N10S343C10_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N10S343C10_ntD0Ev,_ZTv0_n12_N10S343C10_ntD0Ev)();
extern void ABISELECT(_ZThn8_N10S343C10_ntD0Ev,_ZThn4_N10S343C10_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S343C10_nt[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI10S343C10_nt[0]),
  (VTBL_ENTRY)&_ZN10S343C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S343C10_ntD0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI10S343C10_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S343C10_ntD1Ev,_ZTv0_n12_N10S343C10_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S343C10_ntD0Ev,_ZTv0_n12_N10S343C10_ntD0Ev),
};
extern VTBL_ENTRY _ZTV10S343C10_nt[];
static  VTT_ENTRY vtt_S343C10_nt[] = {
  {&(_ZTV10S343C10_nt[4]),  4,11},
  {&(_ZTV10S343C10_nt[9]),  9,11},
};
extern VTBL_ENTRY _ZTI10S343C10_nt[];
VTBL_ENTRY *P__ZTI10S343C10_nt = _ZTI10S343C10_nt; 
extern  VTBL_ENTRY _ZTV10S343C10_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S343C10_nt[];
static VTBL_ENTRY alt_thunk_names55[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S343C10_ntD0Ev,_ZTv0_n12_N10S343C10_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N10S343C10_ntD0Ev,_ZThn4_N10S343C10_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S343C10_ntD1Ev,_ZTv0_n12_N10S343C10_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N10S343C10_ntD1Ev,_ZThn4_N10S343C10_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S343C10_nt = {  "S343C10_nt", // class name
  bases_S343C10_nt, 6,
  &(vtc_S343C10_nt[0]), // expected_vtbl_contents
  &(vtt_S343C10_nt[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI10S343C10_nt),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV10S343C10_nt),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT10S343C10_nt),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names55,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S343C2_nt  : S343C3_nt , S343C9_nt , virtual S343C10_nt {
  void *s343c2f0[8];
  ~S343C2_nt(); // tgen
  S343C2_nt(); // tgen
};
//SIG(-1 S343C2_nt) C1{ BC2{ BC3{ BC4{ BC5{ vd m} vd} vd} VBC5 VBC4 VBC6{ BC7{ BC4 vd FC4} BC3 Fl Fi} Fi} BC8{ m FC4} VBC9{ VBC10{ m} VBC7 BC11{ BC10}} Fp[8]}


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

//skip512 S343C2_nt

#else // __cplusplus

extern void _ZN9S343C2_ntC1Ev();
extern void _ZN9S343C2_ntD1Ev();
Name_Map name_map_S343C2_nt[] = {
  NSPAIR(_ZN9S343C2_ntC1Ev),
  NSPAIR(_ZN9S343C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C4_nt;
extern VTBL_ENTRY _ZTI9S343C4_nt[];
extern  VTBL_ENTRY _ZTV9S343C4_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C8_nt;
extern VTBL_ENTRY _ZTI9S343C8_nt[];
extern  VTBL_ENTRY _ZTV9S343C8_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C4_nt;
extern VTBL_ENTRY _ZTI9S343C4_nt[];
extern  VTBL_ENTRY _ZTV9S343C4_nt[];
extern Class_Descriptor cd_S343C7_nt;
extern VTBL_ENTRY _ZTI9S343C7_nt[];
extern  VTBL_ENTRY _ZTV9S343C7_nt[];
extern Class_Descriptor cd_S343C3_nt;
extern VTBL_ENTRY _ZTI9S343C3_nt[];
extern  VTBL_ENTRY _ZTV9S343C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S343C3_nt[];
extern Class_Descriptor cd_S343C9_nt;
extern VTBL_ENTRY _ZTI9S343C9_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C8_nt;
extern VTBL_ENTRY _ZTI9S343C8_nt[];
extern  VTBL_ENTRY _ZTV9S343C8_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S343C12_nt;
extern VTBL_ENTRY _ZTI10S343C12_nt[];
extern Class_Descriptor cd_S343C10_nt;
extern VTBL_ENTRY _ZTI10S343C10_nt[];
extern  VTBL_ENTRY _ZTV10S343C10_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S343C10_nt[];
static Base_Class bases_S343C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S343C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S343C6_nt,    ABISELECT(88,44), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S343C6_nt,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    ABISELECT(96,48), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S343C6_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S343C8_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S343C4_nt,    ABISELECT(120,60), //bcp->offset
    25, //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
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S343C7_nt,    ABISELECT(104,52), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S343C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S343C9_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S343C6_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S343C8_nt,    ABISELECT(152,76), //bcp->offset
    36, //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
    13, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(144,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S343C12_nt,    ABISELECT(144,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S343C10_nt,    ABISELECT(144,72), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S343C2_nt[];
extern void _ZN9S343C2_ntD1Ev();
extern void _ZN9S343C2_ntD0Ev();
extern void ABISELECT(_ZTv0_n24_N9S343C2_ntD1Ev,_ZTv0_n12_N9S343C2_ntD1Ev)();
extern void ABISELECT(_ZThn88_N9S343C2_ntD1Ev,_ZThn44_N9S343C2_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S343C2_ntD0Ev,_ZTv0_n12_N9S343C2_ntD0Ev)();
extern void ABISELECT(_ZThn88_N9S343C2_ntD0Ev,_ZThn44_N9S343C2_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S343C2_ntD1Ev,_ZTv0_n12_N9S343C2_ntD1Ev)();
extern void ABISELECT(_ZThn96_N9S343C2_ntD1Ev,_ZThn48_N9S343C2_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S343C2_ntD0Ev,_ZTv0_n12_N9S343C2_ntD0Ev)();
extern void ABISELECT(_ZThn96_N9S343C2_ntD0Ev,_ZThn48_N9S343C2_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S343C2_ntD1Ev,_ZTv0_n12_N9S343C2_ntD1Ev)();
extern void ABISELECT(_ZThn104_N9S343C2_ntD1Ev,_ZThn52_N9S343C2_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S343C2_ntD0Ev,_ZTv0_n12_N9S343C2_ntD0Ev)();
extern void ABISELECT(_ZThn104_N9S343C2_ntD0Ev,_ZThn52_N9S343C2_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n24_N9S343C2_ntD1Ev,_ZTvn8_n12_N9S343C2_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n24_N9S343C2_ntD0Ev,_ZTvn8_n12_N9S343C2_ntD0Ev)();
extern void ABISELECT(_ZTv0_n40_N9S343C2_ntD1Ev,_ZTv0_n20_N9S343C2_ntD1Ev)();
extern void ABISELECT(_ZThn144_N9S343C2_ntD1Ev,_ZThn72_N9S343C2_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S343C2_ntD0Ev,_ZTv0_n20_N9S343C2_ntD0Ev)();
extern void ABISELECT(_ZThn144_N9S343C2_ntD0Ev,_ZThn72_N9S343C2_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S343C2_ntD1Ev,_ZTv0_n12_N9S343C2_ntD1Ev)();
extern void ABISELECT(_ZThn152_N9S343C2_ntD1Ev,_ZThn76_N9S343C2_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S343C2_ntD0Ev,_ZTv0_n12_N9S343C2_ntD0Ev)();
extern void ABISELECT(_ZThn152_N9S343C2_ntD0Ev,_ZThn76_N9S343C2_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S343C2_nt[] = {
  ABISELECT(152,76),
  0,
  ABISELECT(144,72),
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S343C2_nt[0]),
  (VTBL_ENTRY)&_ZN9S343C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S343C2_ntD0Ev,
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S343C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C2_ntD1Ev,_ZTv0_n12_N9S343C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C2_ntD0Ev,_ZTv0_n12_N9S343C2_ntD0Ev),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S343C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C2_ntD1Ev,_ZTv0_n12_N9S343C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C2_ntD0Ev,_ZTv0_n12_N9S343C2_ntD0Ev),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S343C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C2_ntD1Ev,_ZTv0_n12_N9S343C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C2_ntD0Ev,_ZTv0_n12_N9S343C2_ntD0Ev),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S343C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N9S343C2_ntD1Ev,_ZTvn8_n12_N9S343C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N9S343C2_ntD0Ev,_ZTvn8_n12_N9S343C2_ntD0Ev),
  ABISELECT(-144,-72),
  ABISELECT(8,4),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI9S343C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S343C2_ntD1Ev,_ZTv0_n20_N9S343C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S343C2_ntD0Ev,_ZTv0_n20_N9S343C2_ntD0Ev),
  ABISELECT(-152,-76),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI9S343C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C2_ntD1Ev,_ZTv0_n12_N9S343C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C2_ntD0Ev,_ZTv0_n12_N9S343C2_ntD0Ev),
};
extern VTBL_ENTRY _ZTV9S343C2_nt[];
extern void _ZN9S343C3_ntD1Ev();
extern void _ZN9S343C3_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV9S343C3_nt__9S343C2_nt[] = {
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S343C3_nt[0]),
  (VTBL_ENTRY)&_ZN9S343C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S343C3_ntD0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev)();
extern void ABISELECT(_ZThn88_N9S343C3_ntD1Ev,_ZThn44_N9S343C3_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev)();
extern void ABISELECT(_ZThn88_N9S343C3_ntD0Ev,_ZThn44_N9S343C3_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S343C6_nt__A1__9S343C3_nt__9S343C2_nt[] = {
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S343C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev)();
extern void ABISELECT(_ZThn96_N9S343C3_ntD1Ev,_ZThn48_N9S343C3_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev)();
extern void ABISELECT(_ZThn96_N9S343C3_ntD0Ev,_ZThn48_N9S343C3_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S343C5_nt__A1__9S343C3_nt__9S343C2_nt[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S343C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev)();
extern void ABISELECT(_ZThn104_N9S343C3_ntD1Ev,_ZThn52_N9S343C3_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev)();
extern void ABISELECT(_ZThn104_N9S343C3_ntD0Ev,_ZThn52_N9S343C3_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S343C7_nt__9S343C3_nt__9S343C2_nt[] = {
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S343C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev),
};
extern void ABISELECT(_ZTvn16_n24_N9S343C3_ntD1Ev,_ZTvn8_n12_N9S343C3_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n24_N9S343C3_ntD0Ev,_ZTvn8_n12_N9S343C3_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C4_nt9S343C7_nt__A1__9S343C3_nt__9S343C2_nt[] = {
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S343C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N9S343C3_ntD1Ev,_ZTvn8_n12_N9S343C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N9S343C3_ntD0Ev,_ZTvn8_n12_N9S343C3_ntD0Ev),
};
extern void _ZN10S343C10_ntD1Ev();
extern void _ZN10S343C10_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV10S343C10_nt__9S343C2_nt[] = {
  ABISELECT(8,4),
  ABISELECT(-144,-72),
  0,
  (VTBL_ENTRY)&(_ZTI10S343C10_nt[0]),
  (VTBL_ENTRY)&_ZN10S343C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S343C10_ntD0Ev,
};
extern void ABISELECT(_ZTv0_n24_N10S343C10_ntD1Ev,_ZTv0_n12_N10S343C10_ntD1Ev)();
extern void ABISELECT(_ZThn8_N10S343C10_ntD1Ev,_ZThn4_N10S343C10_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N10S343C10_ntD0Ev,_ZTv0_n12_N10S343C10_ntD0Ev)();
extern void ABISELECT(_ZThn8_N10S343C10_ntD0Ev,_ZThn4_N10S343C10_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S343C8_nt__10S343C10_nt__9S343C2_nt[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI10S343C10_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S343C10_ntD1Ev,_ZTv0_n12_N10S343C10_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S343C10_ntD0Ev,_ZTv0_n12_N10S343C10_ntD0Ev),
};
static  VTT_ENTRY vtt_S343C2_nt[] = {
  {&(_ZTV9S343C2_nt[8]),  8,41},
  {&(_tg__ZTV9S343C3_nt__9S343C2_nt[5]),  5,7},
  {&(_tg__ZTV9S343C6_nt__A1__9S343C3_nt__9S343C2_nt[3]),  3,5},
  {&(_tg__ZTV9S343C5_nt__A1__9S343C3_nt__9S343C2_nt[3]),  3,5},
  {&(_tg__ZTV9S343C7_nt__9S343C3_nt__9S343C2_nt[3]),  3,5},
  {&(_tg__ZTV9S343C4_nt9S343C7_nt__A1__9S343C3_nt__9S343C2_nt[2]),  2,4},
  {&(_ZTV9S343C2_nt[13]),  13,41},
  {&(_ZTV9S343C2_nt[18]),  18,41},
  {&(_ZTV9S343C2_nt[23]),  23,41},
  {&(_ZTV9S343C2_nt[27]),  27,41},
  {&(_ZTV9S343C2_nt[34]),  34,41},
  {&(_ZTV9S343C2_nt[39]),  39,41},
  {&(_tg__ZTV10S343C10_nt__9S343C2_nt[4]),  4,6},
  {&(_tg__ZTV9S343C8_nt__10S343C10_nt__9S343C2_nt[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S343C2_nt[];
VTBL_ENTRY *P__ZTI9S343C2_nt = _ZTI9S343C2_nt; 
extern  VTBL_ENTRY _ZTV9S343C2_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S343C2_nt[];
static VTBL_ENTRY alt_thunk_names56[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S343C10_ntD0Ev,_ZTv0_n12_N10S343C10_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N10S343C10_ntD0Ev,_ZThn4_N10S343C10_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S343C10_ntD1Ev,_ZTv0_n12_N10S343C10_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N10S343C10_ntD1Ev,_ZThn4_N10S343C10_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S343C3_ntD0Ev,_ZThn52_N9S343C3_ntD0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S343C3_ntD0Ev,_ZThn48_N9S343C3_ntD0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S343C3_ntD0Ev,_ZThn44_N9S343C3_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S343C3_ntD1Ev,_ZThn52_N9S343C3_ntD1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S343C3_ntD1Ev,_ZThn48_N9S343C3_ntD1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S343C3_ntD1Ev,_ZThn44_N9S343C3_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S343C2_ntD0Ev,_ZTv0_n20_N9S343C2_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S343C2_ntD0Ev,_ZThn72_N9S343C2_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S343C2_ntD1Ev,_ZTv0_n20_N9S343C2_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S343C2_ntD1Ev,_ZThn72_N9S343C2_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S343C2_ntD0Ev,_ZTv0_n12_N9S343C2_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S343C2_ntD0Ev,_ZThn76_N9S343C2_ntD0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S343C2_ntD0Ev,_ZThn52_N9S343C2_ntD0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S343C2_ntD0Ev,_ZThn48_N9S343C2_ntD0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S343C2_ntD0Ev,_ZThn44_N9S343C2_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S343C2_ntD1Ev,_ZTv0_n12_N9S343C2_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S343C2_ntD1Ev,_ZThn76_N9S343C2_ntD1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S343C2_ntD1Ev,_ZThn52_N9S343C2_ntD1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S343C2_ntD1Ev,_ZThn48_N9S343C2_ntD1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S343C2_ntD1Ev,_ZThn44_N9S343C2_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S343C2_nt = {  "S343C2_nt", // class name
  bases_S343C2_nt, 22,
  &(vtc_S343C2_nt[0]), // expected_vtbl_contents
  &(vtt_S343C2_nt[0]), // expected_vtt_contents
  ABISELECT(168,84), // object size
  NSPAIRA(_ZTI9S343C2_nt),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S343C2_nt),41, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S343C2_nt),14, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names56,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S343C15_nt  : S343C5_nt , S343C6_nt , S731C17_nt , virtual S3461C5_nt {
  virtual  ~S343C15_nt(); // _ZN10S343C15_ntD2Ev
  S343C15_nt(); // tgen
};
//SIG(-1 S343C15_nt) C1{ BC2{ BC3{ vd m} vd} BC3 BC4{ m} VBC5{ m FL} vd}


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

//skip512 S343C15_nt

#else // __cplusplus

extern void _ZN10S343C15_ntC1Ev();
extern void _ZN10S343C15_ntD2Ev();
Name_Map name_map_S343C15_nt[] = {
  NSPAIR(_ZN10S343C15_ntC1Ev),
  NSPAIR(_ZN10S343C15_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
static Base_Class bases_S343C15_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S343C6_nt,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI10S343C15_nt[];
extern void _ZN10S343C15_ntD1Ev();
extern void _ZN10S343C15_ntD0Ev();
extern void ABISELECT(_ZThn8_N10S343C15_ntD1Ev,_ZThn4_N10S343C15_ntD1Ev)();
extern void ABISELECT(_ZThn8_N10S343C15_ntD0Ev,_ZThn4_N10S343C15_ntD0Ev)();
static  VTBL_ENTRY vtc_S343C15_nt[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI10S343C15_nt[0]),
  (VTBL_ENTRY)&_ZN10S343C15_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S343C15_ntD0Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI10S343C15_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N10S343C15_ntD1Ev,_ZThn4_N10S343C15_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N10S343C15_ntD0Ev,_ZThn4_N10S343C15_ntD0Ev),
};
extern VTBL_ENTRY _ZTV10S343C15_nt[];
static  VTT_ENTRY vtt_S343C15_nt[] = {
  {&(_ZTV10S343C15_nt[3]),  3,9},
};
extern VTBL_ENTRY _ZTI10S343C15_nt[];
VTBL_ENTRY *P__ZTI10S343C15_nt = _ZTI10S343C15_nt; 
extern  VTBL_ENTRY _ZTV10S343C15_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S343C15_nt[];
Class_Descriptor cd_S343C15_nt = {  "S343C15_nt", // class name
  bases_S343C15_nt, 5,
  &(vtc_S343C15_nt[0]), // expected_vtbl_contents
  &(vtt_S343C15_nt[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI10S343C15_nt),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV10S343C15_nt),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT10S343C15_nt),1, //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  S343C14_nt  : S343C8_nt , virtual S343C15_nt {
  int s343c14f0;
  ~S343C14_nt(); // tgen
  S343C14_nt(); // tgen
};
//SIG(-1 S343C14_nt) C1{ BC2{ BC3{ BC4{ vd m} vd} vd FC3} VBC5{ BC3 BC4 BC6{ m} VBC7{ m FL} vd} Fi}


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

//skip512 S343C14_nt

#else // __cplusplus

extern void _ZN10S343C14_ntC1Ev();
extern void _ZN10S343C14_ntD1Ev();
Name_Map name_map_S343C14_nt[] = {
  NSPAIR(_ZN10S343C14_ntC1Ev),
  NSPAIR(_ZN10S343C14_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C8_nt;
extern VTBL_ENTRY _ZTI9S343C8_nt[];
extern  VTBL_ENTRY _ZTV9S343C8_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S343C15_nt;
extern VTBL_ENTRY _ZTI10S343C15_nt[];
extern  VTBL_ENTRY _ZTV10S343C15_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S343C15_nt[];
static Base_Class bases_S343C14_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S343C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S343C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S343C6_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_S343C5_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
    8, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(32,16), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    8, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S343C15_nt,    ABISELECT(24,12), //bcp->offset
    6, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI10S343C14_nt[];
extern void _ZN10S343C14_ntD1Ev();
extern void _ZN10S343C14_ntD0Ev();
extern void ABISELECT(_ZTv0_n32_N10S343C14_ntD1Ev,_ZTv0_n16_N10S343C14_ntD1Ev)();
extern void ABISELECT(_ZThn24_N10S343C14_ntD1Ev,_ZThn12_N10S343C14_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N10S343C14_ntD0Ev,_ZTv0_n16_N10S343C14_ntD0Ev)();
extern void ABISELECT(_ZThn24_N10S343C14_ntD0Ev,_ZThn12_N10S343C14_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n32_N10S343C14_ntD1Ev,_ZTvn4_n16_N10S343C14_ntD1Ev)();
extern void ABISELECT(_ZTvn8_n32_N10S343C14_ntD0Ev,_ZTvn4_n16_N10S343C14_ntD0Ev)();
static  VTBL_ENTRY vtc_S343C14_nt[] = {
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI10S343C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S343C14_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S343C14_ntD0Ev,
  ABISELECT(-24,-12),
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S343C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N10S343C14_ntD1Ev,_ZTv0_n16_N10S343C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N10S343C14_ntD0Ev,_ZTv0_n16_N10S343C14_ntD0Ev),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI10S343C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N10S343C14_ntD1Ev,_ZTvn4_n16_N10S343C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N10S343C14_ntD0Ev,_ZTvn4_n16_N10S343C14_ntD0Ev),
};
extern VTBL_ENTRY _ZTV10S343C14_nt[];
extern void _ZN10S343C15_ntD1Ev();
extern void _ZN10S343C15_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV10S343C15_nt__10S343C14_nt[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI10S343C15_nt[0]),
  (VTBL_ENTRY)&_ZN10S343C15_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S343C15_ntD0Ev,
};
static  VTT_ENTRY vtt_S343C14_nt[] = {
  {&(_ZTV10S343C14_nt[4]),  4,16},
  {&(_ZTV10S343C14_nt[10]),  10,16},
  {&(_ZTV10S343C14_nt[14]),  14,16},
  {&(_tg__ZTV10S343C15_nt__10S343C14_nt[3]),  3,5},
};
extern VTBL_ENTRY _ZTI10S343C14_nt[];
VTBL_ENTRY *P__ZTI10S343C14_nt = _ZTI10S343C14_nt; 
extern  VTBL_ENTRY _ZTV10S343C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S343C14_nt[];
static VTBL_ENTRY alt_thunk_names57[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N10S343C14_ntD0Ev,_ZTv0_n16_N10S343C14_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N10S343C14_ntD0Ev,_ZThn12_N10S343C14_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N10S343C14_ntD1Ev,_ZTv0_n16_N10S343C14_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N10S343C14_ntD1Ev,_ZThn12_N10S343C14_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S343C14_nt = {  "S343C14_nt", // class name
  bases_S343C14_nt, 9,
  &(vtc_S343C14_nt[0]), // expected_vtbl_contents
  &(vtt_S343C14_nt[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI10S343C14_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV10S343C14_nt),16, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT10S343C14_nt),4, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names57,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S343C13_nt  : S343C14_nt , virtual S6441C4_nt , virtual S343C5_nt , S343C9_nt {
  ~S343C13_nt(); // tgen
  S343C13_nt(); // tgen
};
//SIG(-1 S343C13_nt) C1{ BC2{ BC3{ BC4{ BC5{ vd m} vd} vd FC4} VBC6{ BC4 BC5 BC7{ m} VBC8{ m FL} vd} Fi} VBC9{ m Fp} VBC4 BC10{ m FC4}}


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

//skip512 S343C13_nt

#else // __cplusplus

extern void _ZN10S343C13_ntC1Ev();
extern void _ZN10S343C13_ntD1Ev();
Name_Map name_map_S343C13_nt[] = {
  NSPAIR(_ZN10S343C13_ntC1Ev),
  NSPAIR(_ZN10S343C13_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C8_nt;
extern VTBL_ENTRY _ZTI9S343C8_nt[];
extern  VTBL_ENTRY _ZTV9S343C8_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S343C15_nt;
extern VTBL_ENTRY _ZTI10S343C15_nt[];
extern  VTBL_ENTRY _ZTV10S343C15_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S343C15_nt[];
extern Class_Descriptor cd_S343C14_nt;
extern VTBL_ENTRY _ZTI10S343C14_nt[];
extern  VTBL_ENTRY _ZTV10S343C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S343C14_nt[];
extern Class_Descriptor cd_S6441C4_nt;
extern VTBL_ENTRY _ZTI10S6441C4_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C9_nt;
extern VTBL_ENTRY _ZTI9S343C9_nt[];
static Base_Class bases_S343C13_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S343C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S343C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S343C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(40,20), //bcp->offset
    14, //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
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S343C15_nt,    ABISELECT(32,16), //bcp->offset
    8, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S343C14_nt,    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_S6441C4_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    ABISELECT(64,36), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C9_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S343C13_nt[];
extern void _ZN10S343C13_ntD1Ev();
extern void _ZN10S343C13_ntD0Ev();
extern void ABISELECT(_ZTv0_n32_N10S343C13_ntD1Ev,_ZTv0_n16_N10S343C13_ntD1Ev)();
extern void ABISELECT(_ZThn32_N10S343C13_ntD1Ev,_ZThn16_N10S343C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N10S343C13_ntD0Ev,_ZTv0_n16_N10S343C13_ntD0Ev)();
extern void ABISELECT(_ZThn32_N10S343C13_ntD0Ev,_ZThn16_N10S343C13_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n32_N10S343C13_ntD1Ev,_ZTvn4_n16_N10S343C13_ntD1Ev)();
extern void ABISELECT(_ZTvn8_n32_N10S343C13_ntD0Ev,_ZTvn4_n16_N10S343C13_ntD0Ev)();
extern void ABISELECT(_ZTv0_n24_N10S343C13_ntD1Ev,_ZTv0_n12_N10S343C13_ntD1Ev)();
extern void ABISELECT(_ZThn64_N10S343C13_ntD1Ev,_ZThn36_N10S343C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N10S343C13_ntD0Ev,_ZTv0_n12_N10S343C13_ntD0Ev)();
extern void ABISELECT(_ZThn64_N10S343C13_ntD0Ev,_ZThn36_N10S343C13_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S343C13_nt[] = {
  ABISELECT(64,36),
  ABISELECT(56,32),
  ABISELECT(48,24),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI10S343C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S343C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S343C13_ntD0Ev,
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI10S343C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N10S343C13_ntD1Ev,_ZTv0_n16_N10S343C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N10S343C13_ntD0Ev,_ZTv0_n16_N10S343C13_ntD0Ev),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI10S343C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N10S343C13_ntD1Ev,_ZTvn4_n16_N10S343C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N10S343C13_ntD0Ev,_ZTvn4_n16_N10S343C13_ntD0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI10S343C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S343C13_ntD1Ev,_ZTv0_n12_N10S343C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S343C13_ntD0Ev,_ZTv0_n12_N10S343C13_ntD0Ev),
};
extern VTBL_ENTRY _ZTV10S343C13_nt[];
extern void _ZN10S343C14_ntD1Ev();
extern void _ZN10S343C14_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV10S343C14_nt__10S343C13_nt[] = {
  ABISELECT(48,24),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI10S343C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S343C14_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S343C14_ntD0Ev,
};
extern void ABISELECT(_ZTv0_n32_N10S343C14_ntD1Ev,_ZTv0_n16_N10S343C14_ntD1Ev)();
extern void ABISELECT(_ZThn32_N10S343C14_ntD1Ev,_ZThn16_N10S343C14_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N10S343C14_ntD0Ev,_ZTv0_n16_N10S343C14_ntD0Ev)();
extern void ABISELECT(_ZThn32_N10S343C14_ntD0Ev,_ZThn16_N10S343C14_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S343C15_nt__10S343C14_nt__10S343C13_nt[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI10S343C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N10S343C14_ntD1Ev,_ZTv0_n16_N10S343C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N10S343C14_ntD0Ev,_ZTv0_n16_N10S343C14_ntD0Ev),
};
extern void ABISELECT(_ZTvn8_n32_N10S343C14_ntD1Ev,_ZTvn4_n16_N10S343C14_ntD1Ev)();
extern void ABISELECT(_ZTvn8_n32_N10S343C14_ntD0Ev,_ZTvn4_n16_N10S343C14_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt10S343C15_nt__A2__10S343C14_nt__10S343C13_nt[] = {
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI10S343C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N10S343C14_ntD1Ev,_ZTvn4_n16_N10S343C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N10S343C14_ntD0Ev,_ZTvn4_n16_N10S343C14_ntD0Ev),
};
extern void _ZN10S343C15_ntD1Ev();
extern void _ZN10S343C15_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV10S343C15_nt__10S343C13_nt[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI10S343C15_nt[0]),
  (VTBL_ENTRY)&_ZN10S343C15_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S343C15_ntD0Ev,
};
static  VTT_ENTRY vtt_S343C13_nt[] = {
  {&(_ZTV10S343C13_nt[6]),  6,23},
  {&(_tg__ZTV10S343C14_nt__10S343C13_nt[4]),  4,6},
  {&(_tg__ZTV10S343C15_nt__10S343C14_nt__10S343C13_nt[4]),  4,6},
  {&(_tg__ZTV9S343C6_nt10S343C15_nt__A2__10S343C14_nt__10S343C13_nt[2]),  2,4},
  {&(_ZTV10S343C13_nt[12]),  12,23},
  {&(_ZTV10S343C13_nt[16]),  16,23},
  {&(_ZTV10S343C13_nt[21]),  21,23},
  {&(_tg__ZTV10S343C15_nt__10S343C13_nt[3]),  3,5},
};
extern VTBL_ENTRY _ZTI10S343C13_nt[];
VTBL_ENTRY *P__ZTI10S343C13_nt = _ZTI10S343C13_nt; 
extern  VTBL_ENTRY _ZTV10S343C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S343C13_nt[];
static VTBL_ENTRY alt_thunk_names58[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N10S343C14_ntD0Ev,_ZTv0_n16_N10S343C14_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N10S343C14_ntD0Ev,_ZThn16_N10S343C14_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N10S343C14_ntD1Ev,_ZTv0_n16_N10S343C14_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N10S343C14_ntD1Ev,_ZThn16_N10S343C14_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S343C13_ntD0Ev,_ZTv0_n12_N10S343C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N10S343C13_ntD0Ev,_ZThn36_N10S343C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S343C13_ntD1Ev,_ZTv0_n12_N10S343C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N10S343C13_ntD1Ev,_ZThn36_N10S343C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N10S343C13_ntD0Ev,_ZTv0_n16_N10S343C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N10S343C13_ntD0Ev,_ZThn16_N10S343C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N10S343C13_ntD1Ev,_ZTv0_n16_N10S343C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N10S343C13_ntD1Ev,_ZThn16_N10S343C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S343C13_nt = {  "S343C13_nt", // class name
  bases_S343C13_nt, 14,
  &(vtc_S343C13_nt[0]), // expected_vtbl_contents
  &(vtt_S343C13_nt[0]), // expected_vtt_contents
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI10S343C13_nt),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV10S343C13_nt),23, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT10S343C13_nt),8, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names58,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S343C18_nt  : S343C8_nt {
  ~S343C18_nt(); // tgen
  S343C18_nt(); // tgen
};
//SIG(-1 S343C18_nt) C1{ BC2{ BC3{ BC4{ vd m} vd} vd FC3}}


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

//skip512 S343C18_nt

#else // __cplusplus

extern void _ZN10S343C18_ntC1Ev();
extern void _ZN10S343C18_ntD1Ev();
Name_Map name_map_S343C18_nt[] = {
  NSPAIR(_ZN10S343C18_ntC1Ev),
  NSPAIR(_ZN10S343C18_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C8_nt;
extern VTBL_ENTRY _ZTI9S343C8_nt[];
extern  VTBL_ENTRY _ZTV9S343C8_nt[];
static Base_Class bases_S343C18_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S343C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI10S343C18_nt[];
extern void _ZN10S343C18_ntD1Ev();
extern void _ZN10S343C18_ntD0Ev();
static  VTBL_ENTRY vtc_S343C18_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S343C18_nt[0]),
  (VTBL_ENTRY)&_ZN10S343C18_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S343C18_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S343C18_nt[];
VTBL_ENTRY *P__ZTI10S343C18_nt = _ZTI10S343C18_nt; 
extern  VTBL_ENTRY _ZTV10S343C18_nt[];
Class_Descriptor cd_S343C18_nt = {  "S343C18_nt", // class name
  bases_S343C18_nt, 3,
  &(vtc_S343C18_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S343C18_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S343C18_nt),4, //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  S343C1  : S343C2_nt , virtual S343C13_nt , virtual S343C3_nt , S343C18_nt {
  virtual  ~S343C1(); // _ZN6S343C1D2Ev
  S343C1(); // tgen
};
//SIG(1 S343C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ vd m} vd} vd} VBC6 VBC5 VBC7{ BC8{ BC5 vd FC5} BC4 Fl Fi} Fi} BC9{ m FC5} VBC10{ VBC11{ m} VBC8 BC12{ BC11}} Fp[8]} VBC13{ BC14{ BC8 VBC15{ BC5 BC6 BC11 VBC16{ m FL} vd} Fi} VBC17{ m Fp} VBC5 BC9} VBC3 BC18{ BC8} vd}


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

static void Test_S343C1()
{
  extern Class_Descriptor cd_S343C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(34,35)];
    init_test(&cd_S343C1, buf);
    S343C1 *dp, &lv = *(dp=new (buf) S343C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(264,136), "sizeof(S343C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S343C1)");
    /*is_ambiguous_... S343C3_nt::S343C4_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S343C5_nt*)(S343C4_nt*)(S343C3_nt*)(S343C2_nt*), 0, "S343C1");
    /*is_ambiguous_... S343C3_nt::S343C4_nt */ AMB_check_base_class_offset(lv, (S343C5_nt*)(S343C4_nt*)(S343C3_nt*)(S343C2_nt*), 0, "S343C1");
    /*is_ambiguous_... S343C3_nt::S343C4_nt */ AMB_check_base_class_offset(lv, (S343C4_nt*)(S343C3_nt*)(S343C2_nt*), 0, "S343C1");
    /*is_ambiguous_... S343C3_nt::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S343C3_nt*)(S343C2_nt*), ABISELECT(104,52), "S343C1");
    /*is_ambiguous_... S343C1::S343C3_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S343C3_nt*), ABISELECT(104,52), "S343C1");
    /*is_ambiguous_... S343C1::S343C5_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S343C5_nt*), ABISELECT(112,56), "S343C1");
    /*is_ambiguous_... S343C3_nt::S343C5_nt */ AMB_check_base_class_offset(lv, (S343C5_nt*)(S343C3_nt*)(S343C2_nt*), ABISELECT(112,56), "S343C1");
    /*is_ambiguous_... S343C13_nt::S343C5_nt */ AMB_check_base_class_offset(lv, (S343C5_nt*)(S343C13_nt*), ABISELECT(112,56), "S343C1");
    /*is_ambiguous_... S343C1::S343C3_nt */ AMB_check_base_class_offset(lv, (S343C5_nt*)(S343C3_nt*), ABISELECT(112,56), "S343C1");
    check_base_class_offset(lv, (S343C6_nt*)(S343C5_nt*)(S343C8_nt*)(S343C7_nt*), ABISELECT(120,60), "S343C1");
    check_base_class_offset(lv, (S343C5_nt*)(S343C8_nt*)(S343C7_nt*), ABISELECT(120,60), "S343C1");
    check_base_class_offset(lv, (S343C8_nt*)(S343C7_nt*), ABISELECT(120,60), "S343C1");
    check_base_class_offset(lv, (S343C6_nt*)(S343C5_nt*)(S343C4_nt*)(S343C7_nt*), ABISELECT(136,68), "S343C1");
    check_base_class_offset(lv, (S343C5_nt*)(S343C4_nt*)(S343C7_nt*), ABISELECT(136,68), "S343C1");
    check_base_class_offset(lv, (S343C4_nt*)(S343C7_nt*), ABISELECT(136,68), "S343C1");
    check_base_class_offset(lv, (S343C7_nt*)(S343C3_nt*)(S343C2_nt*), ABISELECT(120,60), "S343C1");
    /*is_ambiguous_... S343C1::S343C3_nt */ AMB_check_base_class_offset(lv, (S343C7_nt*)(S343C3_nt*), ABISELECT(120,60), "S343C1");
    check_base_class_offset(lv, (S343C3_nt*)(S343C2_nt*), 0, "S343C1");
    check_base_class_offset(lv, (S343C9_nt*)(S343C2_nt*), ABISELECT(16,8), "S343C1");
    /*is_ambiguous_... S343C10_nt::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S343C10_nt*), 0, "S343C1");
    /*is_ambiguous_... S343C1::S343C8_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S343C5_nt*)(S343C8_nt*), ABISELECT(168,84), "S343C1");
    /*is_ambiguous_... S343C1::S343C8_nt */ AMB_check_base_class_offset(lv, (S343C5_nt*)(S343C8_nt*), ABISELECT(168,84), "S343C1");
    check_base_class_offset(lv, (S343C8_nt*)(S343C10_nt*), ABISELECT(168,84), "S343C1");
    check_base_class_offset(lv, (S731C17_nt*)(S343C12_nt*)(S343C10_nt*), ABISELECT(160,80), "S343C1");
    check_base_class_offset(lv, (S343C12_nt*)(S343C10_nt*), ABISELECT(160,80), "S343C1");
    check_base_class_offset(lv, (S343C10_nt*)(S343C2_nt*), ABISELECT(160,80), "S343C1");
    check_base_class_offset(lv, (S343C2_nt*), 0, "S343C1");
    check_base_class_offset(lv, (S343C6_nt*)(S343C5_nt*)(S343C8_nt*)(S343C14_nt*)(S343C13_nt*), ABISELECT(184,92), "S343C1");
    check_base_class_offset(lv, (S343C5_nt*)(S343C8_nt*)(S343C14_nt*)(S343C13_nt*), ABISELECT(184,92), "S343C1");
    check_base_class_offset(lv, (S343C8_nt*)(S343C14_nt*)(S343C13_nt*), ABISELECT(184,92), "S343C1");
    check_base_class_offset(lv, (S343C6_nt*)(S343C5_nt*)(S343C15_nt*), ABISELECT(216,108), "S343C1");
    check_base_class_offset(lv, (S343C5_nt*)(S343C15_nt*), ABISELECT(216,108), "S343C1");
    /*is_ambiguous_... S343C15_nt::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S343C15_nt*), ABISELECT(224,112), "S343C1");
    check_base_class_offset(lv, (S731C17_nt*)(S343C15_nt*), ABISELECT(216,108), "S343C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S343C15_nt*), ABISELECT(232,116), "S343C1");
    check_base_class_offset(lv, (S343C15_nt*)(S343C14_nt*)(S343C13_nt*), ABISELECT(216,108), "S343C1");
    check_base_class_offset(lv, (S343C14_nt*)(S343C13_nt*), ABISELECT(184,92), "S343C1");
    check_base_class_offset(lv, (S6441C4_nt*)(S343C13_nt*), ABISELECT(240,124), "S343C1");
    check_base_class_offset(lv, (S343C9_nt*)(S343C13_nt*), ABISELECT(208,104), "S343C1");
    check_base_class_offset(lv, (S343C13_nt*), ABISELECT(184,92), "S343C1");
    /*is_ambiguous_... S343C1::S343C3_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S343C5_nt*)(S343C4_nt*)(S343C3_nt*), ABISELECT(248,128), "S343C1");
    /*is_ambiguous_... S343C1::S343C3_nt */ AMB_check_base_class_offset(lv, (S343C5_nt*)(S343C4_nt*)(S343C3_nt*), ABISELECT(248,128), "S343C1");
    /*is_ambiguous_... S343C1::S343C3_nt */ AMB_check_base_class_offset(lv, (S343C4_nt*)(S343C3_nt*), ABISELECT(248,128), "S343C1");
    /*is_ambiguous_... S343C1::S343C3_nt */ AMB_check_base_class_offset(lv, (S343C3_nt*), ABISELECT(248,128), "S343C1");
    check_base_class_offset(lv, (S343C6_nt*)(S343C5_nt*)(S343C8_nt*)(S343C18_nt*), ABISELECT(88,44), "S343C1");
    check_base_class_offset(lv, (S343C5_nt*)(S343C8_nt*)(S343C18_nt*), ABISELECT(88,44), "S343C1");
    check_base_class_offset(lv, (S343C8_nt*)(S343C18_nt*), ABISELECT(88,44), "S343C1");
    check_base_class_offset(lv, (S343C18_nt*), ABISELECT(88,44), "S343C1");
    test_class_info(&lv, &cd_S343C1);
    dp->~S343C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS343C1(Test_S343C1, "S343C1", ABISELECT(264,136));

#else // __cplusplus

extern void _ZN6S343C1C1Ev();
extern void _ZN6S343C1D2Ev();
Name_Map name_map_S343C1[] = {
  NSPAIR(_ZN6S343C1C1Ev),
  NSPAIR(_ZN6S343C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C4_nt;
extern VTBL_ENTRY _ZTI9S343C4_nt[];
extern  VTBL_ENTRY _ZTV9S343C4_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C8_nt;
extern VTBL_ENTRY _ZTI9S343C8_nt[];
extern  VTBL_ENTRY _ZTV9S343C8_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C4_nt;
extern VTBL_ENTRY _ZTI9S343C4_nt[];
extern  VTBL_ENTRY _ZTV9S343C4_nt[];
extern Class_Descriptor cd_S343C7_nt;
extern VTBL_ENTRY _ZTI9S343C7_nt[];
extern  VTBL_ENTRY _ZTV9S343C7_nt[];
extern Class_Descriptor cd_S343C3_nt;
extern VTBL_ENTRY _ZTI9S343C3_nt[];
extern  VTBL_ENTRY _ZTV9S343C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S343C3_nt[];
extern Class_Descriptor cd_S343C9_nt;
extern VTBL_ENTRY _ZTI9S343C9_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C8_nt;
extern VTBL_ENTRY _ZTI9S343C8_nt[];
extern  VTBL_ENTRY _ZTV9S343C8_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S343C12_nt;
extern VTBL_ENTRY _ZTI10S343C12_nt[];
extern Class_Descriptor cd_S343C10_nt;
extern VTBL_ENTRY _ZTI10S343C10_nt[];
extern  VTBL_ENTRY _ZTV10S343C10_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S343C10_nt[];
extern Class_Descriptor cd_S343C2_nt;
extern VTBL_ENTRY _ZTI9S343C2_nt[];
extern  VTBL_ENTRY _ZTV9S343C2_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S343C2_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C8_nt;
extern VTBL_ENTRY _ZTI9S343C8_nt[];
extern  VTBL_ENTRY _ZTV9S343C8_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S343C15_nt;
extern VTBL_ENTRY _ZTI10S343C15_nt[];
extern  VTBL_ENTRY _ZTV10S343C15_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S343C15_nt[];
extern Class_Descriptor cd_S343C14_nt;
extern VTBL_ENTRY _ZTI10S343C14_nt[];
extern  VTBL_ENTRY _ZTV10S343C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S343C14_nt[];
extern Class_Descriptor cd_S6441C4_nt;
extern VTBL_ENTRY _ZTI10S6441C4_nt[];
extern Class_Descriptor cd_S343C9_nt;
extern VTBL_ENTRY _ZTI9S343C9_nt[];
extern Class_Descriptor cd_S343C13_nt;
extern VTBL_ENTRY _ZTI10S343C13_nt[];
extern  VTBL_ENTRY _ZTV10S343C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S343C13_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C4_nt;
extern VTBL_ENTRY _ZTI9S343C4_nt[];
extern  VTBL_ENTRY _ZTV9S343C4_nt[];
extern Class_Descriptor cd_S343C3_nt;
extern VTBL_ENTRY _ZTI9S343C3_nt[];
extern  VTBL_ENTRY _ZTV9S343C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S343C3_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C5_nt;
extern VTBL_ENTRY _ZTI9S343C5_nt[];
extern  VTBL_ENTRY _ZTV9S343C5_nt[];
extern Class_Descriptor cd_S343C8_nt;
extern VTBL_ENTRY _ZTI9S343C8_nt[];
extern  VTBL_ENTRY _ZTV9S343C8_nt[];
extern Class_Descriptor cd_S343C18_nt;
extern VTBL_ENTRY _ZTI10S343C18_nt[];
extern  VTBL_ENTRY _ZTV10S343C18_nt[];
static Base_Class bases_S343C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S343C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(104,52), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S343C6_nt,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    ABISELECT(112,56), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S343C6_nt,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S343C8_nt,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    ABISELECT(136,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S343C4_nt,    ABISELECT(136,68), //bcp->offset
    34, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S343C7_nt,    ABISELECT(120,60), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S343C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S343C9_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
    22, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S343C6_nt,    ABISELECT(168,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    ABISELECT(168,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S343C8_nt,    ABISELECT(168,84), //bcp->offset
    45, //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
    13, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(160,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S343C12_nt,    ABISELECT(160,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S343C10_nt,    ABISELECT(160,80), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S343C2_nt,    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
    32, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S343C6_nt,    ABISELECT(184,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    ABISELECT(184,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S343C8_nt,    ABISELECT(184,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(216,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
    15, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    ABISELECT(216,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
    16, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(224,112), //bcp->offset
    65, //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
    17, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(216,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
    31, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(232,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S343C15_nt,    ABISELECT(216,108), //bcp->offset
    59, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S343C14_nt,    ABISELECT(184,92), //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
    22, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S6441C4_nt,    ABISELECT(240,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 1},
  {&cd_S343C9_nt,    ABISELECT(208,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
    35, //immediately_derived
  0, 0},
  {&cd_S343C13_nt,    ABISELECT(184,92), //bcp->offset
    50, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_nt,    ABISELECT(248,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    ABISELECT(248,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S343C4_nt,    ABISELECT(248,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S343C3_nt,    ABISELECT(248,128), //bcp->offset
    69, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_nt,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S343C5_nt,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S343C8_nt,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S343C18_nt,    ABISELECT(88,44), //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
    36, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S343C1[];
extern void _ZN6S343C1D1Ev();
extern void _ZN6S343C1D0Ev();
extern void ABISELECT(_ZThn88_N6S343C1D1Ev,_ZThn44_N6S343C1D1Ev)();
extern void ABISELECT(_ZThn88_N6S343C1D0Ev,_ZThn44_N6S343C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N6S343C1D1Ev,_ZTv0_n12_N6S343C1D1Ev)();
extern void ABISELECT(_ZThn104_N6S343C1D1Ev,_ZThn52_N6S343C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N6S343C1D0Ev,_ZTv0_n12_N6S343C1D0Ev)();
extern void ABISELECT(_ZThn104_N6S343C1D0Ev,_ZThn52_N6S343C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N6S343C1D1Ev,_ZTv0_n12_N6S343C1D1Ev)();
extern void ABISELECT(_ZThn112_N6S343C1D1Ev,_ZThn56_N6S343C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N6S343C1D0Ev,_ZTv0_n12_N6S343C1D0Ev)();
extern void ABISELECT(_ZThn112_N6S343C1D0Ev,_ZThn56_N6S343C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N6S343C1D1Ev,_ZTv0_n12_N6S343C1D1Ev)();
extern void ABISELECT(_ZThn120_N6S343C1D1Ev,_ZThn60_N6S343C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N6S343C1D0Ev,_ZTv0_n12_N6S343C1D0Ev)();
extern void ABISELECT(_ZThn120_N6S343C1D0Ev,_ZThn60_N6S343C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n24_N6S343C1D1Ev,_ZTvn8_n12_N6S343C1D1Ev)();
extern void ABISELECT(_ZTvn16_n24_N6S343C1D0Ev,_ZTvn8_n12_N6S343C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N6S343C1D1Ev,_ZTv0_n20_N6S343C1D1Ev)();
extern void ABISELECT(_ZThn160_N6S343C1D1Ev,_ZThn80_N6S343C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N6S343C1D0Ev,_ZTv0_n20_N6S343C1D0Ev)();
extern void ABISELECT(_ZThn160_N6S343C1D0Ev,_ZThn80_N6S343C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N6S343C1D1Ev,_ZTv0_n12_N6S343C1D1Ev)();
extern void ABISELECT(_ZThn168_N6S343C1D1Ev,_ZThn84_N6S343C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N6S343C1D0Ev,_ZTv0_n12_N6S343C1D0Ev)();
extern void ABISELECT(_ZThn168_N6S343C1D0Ev,_ZThn84_N6S343C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N6S343C1D1Ev,_ZTv0_n28_N6S343C1D1Ev)();
extern void ABISELECT(_ZThn184_N6S343C1D1Ev,_ZThn92_N6S343C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N6S343C1D0Ev,_ZTv0_n28_N6S343C1D0Ev)();
extern void ABISELECT(_ZThn184_N6S343C1D0Ev,_ZThn92_N6S343C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N6S343C1D1Ev,_ZTv0_n16_N6S343C1D1Ev)();
extern void ABISELECT(_ZThn216_N6S343C1D1Ev,_ZThn108_N6S343C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N6S343C1D0Ev,_ZTv0_n16_N6S343C1D0Ev)();
extern void ABISELECT(_ZThn216_N6S343C1D0Ev,_ZThn108_N6S343C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n32_N6S343C1D1Ev,_ZTvn4_n16_N6S343C1D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N6S343C1D0Ev,_ZTvn4_n16_N6S343C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N6S343C1D1Ev,_ZTv0_n24_N6S343C1D1Ev)();
extern void ABISELECT(_ZThn248_N6S343C1D1Ev,_ZThn128_N6S343C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N6S343C1D0Ev,_ZTv0_n24_N6S343C1D0Ev)();
extern void ABISELECT(_ZThn248_N6S343C1D0Ev,_ZThn128_N6S343C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S343C1[] = {
  ABISELECT(248,128),
  ABISELECT(240,124),
  ABISELECT(232,116),
  ABISELECT(216,108),
  ABISELECT(184,92),
  ABISELECT(168,84),
  0,
  ABISELECT(160,80),
  ABISELECT(120,60),
  ABISELECT(112,56),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI6S343C1[0]),
  (VTBL_ENTRY)&_ZN6S343C1D1Ev,
  (VTBL_ENTRY)&_ZN6S343C1D0Ev,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI6S343C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N6S343C1D1Ev,_ZThn44_N6S343C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N6S343C1D0Ev,_ZThn44_N6S343C1D0Ev),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI6S343C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6S343C1D1Ev,_ZTv0_n12_N6S343C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6S343C1D0Ev,_ZTv0_n12_N6S343C1D0Ev),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI6S343C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6S343C1D1Ev,_ZTv0_n12_N6S343C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6S343C1D0Ev,_ZTv0_n12_N6S343C1D0Ev),
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI6S343C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6S343C1D1Ev,_ZTv0_n12_N6S343C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6S343C1D0Ev,_ZTv0_n12_N6S343C1D0Ev),
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI6S343C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N6S343C1D1Ev,_ZTvn8_n12_N6S343C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N6S343C1D0Ev,_ZTvn8_n12_N6S343C1D0Ev),
  ABISELECT(-160,-80),
  ABISELECT(8,4),
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI6S343C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N6S343C1D1Ev,_ZTv0_n20_N6S343C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N6S343C1D0Ev,_ZTv0_n20_N6S343C1D0Ev),
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI6S343C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6S343C1D1Ev,_ZTv0_n12_N6S343C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N6S343C1D0Ev,_ZTv0_n12_N6S343C1D0Ev),
  ABISELECT(-184,-92),
  ABISELECT(-72,-36),
  ABISELECT(56,32),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI6S343C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N6S343C1D1Ev,_ZTv0_n28_N6S343C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N6S343C1D0Ev,_ZTv0_n28_N6S343C1D0Ev),
  ABISELECT(-216,-108),
  ABISELECT(16,8),
  ABISELECT(-216,-108),
  (VTBL_ENTRY)&(_ZTI6S343C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6S343C1D1Ev,_ZTv0_n16_N6S343C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N6S343C1D0Ev,_ZTv0_n16_N6S343C1D0Ev),
  ABISELECT(-224,-112),
  (VTBL_ENTRY)&(_ZTI6S343C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N6S343C1D1Ev,_ZTvn4_n16_N6S343C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N6S343C1D0Ev,_ZTvn4_n16_N6S343C1D0Ev),
  ABISELECT(-248,-128),
  ABISELECT(-128,-68),
  ABISELECT(-136,-72),
  ABISELECT(-144,-76),
  ABISELECT(-248,-128),
  (VTBL_ENTRY)&(_ZTI6S343C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N6S343C1D1Ev,_ZTv0_n24_N6S343C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N6S343C1D0Ev,_ZTv0_n24_N6S343C1D0Ev),
};
extern VTBL_ENTRY _ZTV6S343C1[];
extern void _ZN9S343C2_ntD1Ev();
extern void _ZN9S343C2_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV9S343C2_nt__6S343C1[] = {
  ABISELECT(168,84),
  0,
  ABISELECT(160,80),
  ABISELECT(120,60),
  ABISELECT(112,56),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S343C2_nt[0]),
  (VTBL_ENTRY)&_ZN9S343C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S343C2_ntD0Ev,
};
extern void _ZN9S343C3_ntD1Ev();
extern void _ZN9S343C3_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV9S343C3_nt9S343C2_nt__6S343C1[] = {
  ABISELECT(120,60),
  ABISELECT(112,56),
  ABISELECT(104,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S343C3_nt[0]),
  (VTBL_ENTRY)&_ZN9S343C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S343C3_ntD0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev)();
extern void ABISELECT(_ZThn104_N9S343C3_ntD1Ev,_ZThn52_N9S343C3_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev)();
extern void ABISELECT(_ZThn104_N9S343C3_ntD0Ev,_ZThn52_N9S343C3_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S343C6_nt__A1__9S343C3_nt9S343C2_nt__6S343C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S343C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev)();
extern void ABISELECT(_ZThn112_N9S343C3_ntD1Ev,_ZThn56_N9S343C3_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev)();
extern void ABISELECT(_ZThn112_N9S343C3_ntD0Ev,_ZThn56_N9S343C3_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S343C5_nt__A1__9S343C3_nt9S343C2_nt__6S343C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S343C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev)();
extern void ABISELECT(_ZThn120_N9S343C3_ntD1Ev,_ZThn60_N9S343C3_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev)();
extern void ABISELECT(_ZThn120_N9S343C3_ntD0Ev,_ZThn60_N9S343C3_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S343C7_nt__9S343C3_nt9S343C2_nt__6S343C1[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S343C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev),
};
extern void ABISELECT(_ZTvn16_n24_N9S343C3_ntD1Ev,_ZTvn8_n12_N9S343C3_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n24_N9S343C3_ntD0Ev,_ZTvn8_n12_N9S343C3_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C4_nt9S343C7_nt__A1__9S343C3_nt9S343C2_nt__6S343C1[] = {
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI9S343C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N9S343C3_ntD1Ev,_ZTvn8_n12_N9S343C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N9S343C3_ntD0Ev,_ZTvn8_n12_N9S343C3_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S343C2_ntD1Ev,_ZTv0_n12_N9S343C2_ntD1Ev)();
extern void ABISELECT(_ZThn104_N9S343C2_ntD1Ev,_ZThn52_N9S343C2_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S343C2_ntD0Ev,_ZTv0_n12_N9S343C2_ntD0Ev)();
extern void ABISELECT(_ZThn104_N9S343C2_ntD0Ev,_ZThn52_N9S343C2_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S343C6_nt__A1__9S343C2_nt__6S343C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI9S343C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C2_ntD1Ev,_ZTv0_n12_N9S343C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C2_ntD0Ev,_ZTv0_n12_N9S343C2_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S343C2_ntD1Ev,_ZTv0_n12_N9S343C2_ntD1Ev)();
extern void ABISELECT(_ZThn112_N9S343C2_ntD1Ev,_ZThn56_N9S343C2_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S343C2_ntD0Ev,_ZTv0_n12_N9S343C2_ntD0Ev)();
extern void ABISELECT(_ZThn112_N9S343C2_ntD0Ev,_ZThn56_N9S343C2_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S343C5_nt__A1__9S343C2_nt__6S343C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S343C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C2_ntD1Ev,_ZTv0_n12_N9S343C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C2_ntD0Ev,_ZTv0_n12_N9S343C2_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S343C2_ntD1Ev,_ZTv0_n12_N9S343C2_ntD1Ev)();
extern void ABISELECT(_ZThn120_N9S343C2_ntD1Ev,_ZThn60_N9S343C2_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S343C2_ntD0Ev,_ZTv0_n12_N9S343C2_ntD0Ev)();
extern void ABISELECT(_ZThn120_N9S343C2_ntD0Ev,_ZThn60_N9S343C2_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S343C7_nt__9S343C2_nt__6S343C1[] = {
  ABISELECT(-120,-60),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI9S343C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C2_ntD1Ev,_ZTv0_n12_N9S343C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C2_ntD0Ev,_ZTv0_n12_N9S343C2_ntD0Ev),
};
extern void ABISELECT(_ZTvn16_n24_N9S343C2_ntD1Ev,_ZTvn8_n12_N9S343C2_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n24_N9S343C2_ntD0Ev,_ZTvn8_n12_N9S343C2_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C4_nt9S343C7_nt__A1__9S343C2_nt__6S343C1[] = {
  ABISELECT(-136,-68),
  (VTBL_ENTRY)&(_ZTI9S343C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N9S343C2_ntD1Ev,_ZTvn8_n12_N9S343C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N9S343C2_ntD0Ev,_ZTvn8_n12_N9S343C2_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S343C2_ntD1Ev,_ZTv0_n20_N9S343C2_ntD1Ev)();
extern void ABISELECT(_ZThn160_N9S343C2_ntD1Ev,_ZThn80_N9S343C2_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S343C2_ntD0Ev,_ZTv0_n20_N9S343C2_ntD0Ev)();
extern void ABISELECT(_ZThn160_N9S343C2_ntD0Ev,_ZThn80_N9S343C2_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S343C10_nt__9S343C2_nt__6S343C1[] = {
  ABISELECT(-160,-80),
  ABISELECT(8,4),
  ABISELECT(-160,-80),
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI9S343C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S343C2_ntD1Ev,_ZTv0_n20_N9S343C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S343C2_ntD0Ev,_ZTv0_n20_N9S343C2_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S343C2_ntD1Ev,_ZTv0_n12_N9S343C2_ntD1Ev)();
extern void ABISELECT(_ZThn168_N9S343C2_ntD1Ev,_ZThn84_N9S343C2_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S343C2_ntD0Ev,_ZTv0_n12_N9S343C2_ntD0Ev)();
extern void ABISELECT(_ZThn168_N9S343C2_ntD0Ev,_ZThn84_N9S343C2_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S343C8_nt__A1__9S343C2_nt__6S343C1[] = {
  ABISELECT(-168,-84),
  ABISELECT(-168,-84),
  (VTBL_ENTRY)&(_ZTI9S343C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C2_ntD1Ev,_ZTv0_n12_N9S343C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C2_ntD0Ev,_ZTv0_n12_N9S343C2_ntD0Ev),
};
extern void _ZN10S343C10_ntD1Ev();
extern void _ZN10S343C10_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV10S343C10_nt__6S343C1[] = {
  ABISELECT(8,4),
  ABISELECT(-160,-80),
  0,
  (VTBL_ENTRY)&(_ZTI10S343C10_nt[0]),
  (VTBL_ENTRY)&_ZN10S343C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S343C10_ntD0Ev,
};
extern void ABISELECT(_ZTv0_n24_N10S343C10_ntD1Ev,_ZTv0_n12_N10S343C10_ntD1Ev)();
extern void ABISELECT(_ZThn8_N10S343C10_ntD1Ev,_ZThn4_N10S343C10_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N10S343C10_ntD0Ev,_ZTv0_n12_N10S343C10_ntD0Ev)();
extern void ABISELECT(_ZThn8_N10S343C10_ntD0Ev,_ZThn4_N10S343C10_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S343C8_nt__10S343C10_nt__6S343C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI10S343C10_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S343C10_ntD1Ev,_ZTv0_n12_N10S343C10_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S343C10_ntD0Ev,_ZTv0_n12_N10S343C10_ntD0Ev),
};
extern void _ZN10S343C13_ntD1Ev();
extern void _ZN10S343C13_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV10S343C13_nt__6S343C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(56,32),
  ABISELECT(48,24),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI10S343C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S343C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S343C13_ntD0Ev,
};
extern void _ZN10S343C14_ntD1Ev();
extern void _ZN10S343C14_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV10S343C14_nt10S343C13_nt__6S343C1[] = {
  ABISELECT(48,24),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI10S343C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S343C14_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S343C14_ntD0Ev,
};
extern void ABISELECT(_ZTv0_n32_N10S343C14_ntD1Ev,_ZTv0_n16_N10S343C14_ntD1Ev)();
extern void ABISELECT(_ZThn32_N10S343C14_ntD1Ev,_ZThn16_N10S343C14_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N10S343C14_ntD0Ev,_ZTv0_n16_N10S343C14_ntD0Ev)();
extern void ABISELECT(_ZThn32_N10S343C14_ntD0Ev,_ZThn16_N10S343C14_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S343C15_nt__10S343C14_nt10S343C13_nt__6S343C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI10S343C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N10S343C14_ntD1Ev,_ZTv0_n16_N10S343C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N10S343C14_ntD0Ev,_ZTv0_n16_N10S343C14_ntD0Ev),
};
extern void ABISELECT(_ZTvn8_n32_N10S343C14_ntD1Ev,_ZTvn4_n16_N10S343C14_ntD1Ev)();
extern void ABISELECT(_ZTvn8_n32_N10S343C14_ntD0Ev,_ZTvn4_n16_N10S343C14_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt10S343C15_nt__A2__10S343C14_nt10S343C13_nt__6S343C1[] = {
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI10S343C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N10S343C14_ntD1Ev,_ZTvn4_n16_N10S343C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N10S343C14_ntD0Ev,_ZTvn4_n16_N10S343C14_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n32_N10S343C13_ntD1Ev,_ZTv0_n16_N10S343C13_ntD1Ev)();
extern void ABISELECT(_ZThn32_N10S343C13_ntD1Ev,_ZThn16_N10S343C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N10S343C13_ntD0Ev,_ZTv0_n16_N10S343C13_ntD0Ev)();
extern void ABISELECT(_ZThn32_N10S343C13_ntD0Ev,_ZThn16_N10S343C13_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S343C15_nt__10S343C13_nt__6S343C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI10S343C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N10S343C13_ntD1Ev,_ZTv0_n16_N10S343C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N10S343C13_ntD0Ev,_ZTv0_n16_N10S343C13_ntD0Ev),
};
extern void ABISELECT(_ZTvn8_n32_N10S343C13_ntD1Ev,_ZTvn4_n16_N10S343C13_ntD1Ev)();
extern void ABISELECT(_ZTvn8_n32_N10S343C13_ntD0Ev,_ZTvn4_n16_N10S343C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt10S343C15_nt__A2__10S343C13_nt__6S343C1[] = {
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI10S343C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N10S343C13_ntD1Ev,_ZTvn4_n16_N10S343C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N10S343C13_ntD0Ev,_ZTvn4_n16_N10S343C13_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N10S343C13_ntD1Ev,_ZTv0_n12_N10S343C13_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N10S343C13_ntD0Ev,_ZTv0_n12_N10S343C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C5_nt__A2__10S343C13_nt__6S343C1[] = {
  ABISELECT(72,36),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI10S343C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S343C13_ntD1Ev,_ZTv0_n12_N10S343C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S343C13_ntD0Ev,_ZTv0_n12_N10S343C13_ntD0Ev),
};
extern void _ZN10S343C15_ntD1Ev();
extern void _ZN10S343C15_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV10S343C15_nt__6S343C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI10S343C15_nt[0]),
  (VTBL_ENTRY)&_ZN10S343C15_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S343C15_ntD0Ev,
};
extern void _ZN9S343C3_ntD1Ev();
extern void _ZN9S343C3_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV9S343C3_nt__A1__6S343C1[] = {
  ABISELECT(-128,-68),
  ABISELECT(-136,-72),
  ABISELECT(-144,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S343C3_nt[0]),
  (VTBL_ENTRY)&_ZN9S343C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S343C3_ntD0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt__A1__9S343C3_nt__A1__6S343C1[] = {
  ABISELECT(144,76),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI9S343C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C5_nt__A1__9S343C3_nt__A1__6S343C1[] = {
  ABISELECT(136,72),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI9S343C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C7_nt__9S343C3_nt__A1__6S343C1[] = {
  ABISELECT(128,68),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI9S343C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev),
};
extern void ABISELECT(_ZTvn16_n24_N9S343C3_ntD1Ev,_ZTvn8_n12_N9S343C3_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n24_N9S343C3_ntD0Ev,_ZTvn8_n12_N9S343C3_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C4_nt9S343C7_nt__A1__9S343C3_nt__A1__6S343C1[] = {
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI9S343C3_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N9S343C3_ntD1Ev,_ZTvn8_n12_N9S343C3_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N9S343C3_ntD0Ev,_ZTvn8_n12_N9S343C3_ntD0Ev),
};
static  VTT_ENTRY vtt_S343C1[] = {
  {&(_ZTV6S343C1[13]),  13,77},
  {&(_tg__ZTV9S343C2_nt__6S343C1[8]),  8,10},
  {&(_tg__ZTV9S343C3_nt9S343C2_nt__6S343C1[5]),  5,7},
  {&(_tg__ZTV9S343C6_nt__A1__9S343C3_nt9S343C2_nt__6S343C1[3]),  3,5},
  {&(_tg__ZTV9S343C5_nt__A1__9S343C3_nt9S343C2_nt__6S343C1[3]),  3,5},
  {&(_tg__ZTV9S343C7_nt__9S343C3_nt9S343C2_nt__6S343C1[3]),  3,5},
  {&(_tg__ZTV9S343C4_nt9S343C7_nt__A1__9S343C3_nt9S343C2_nt__6S343C1[2]),  2,4},
  {&(_tg__ZTV9S343C6_nt__A1__9S343C2_nt__6S343C1[3]),  3,5},
  {&(_tg__ZTV9S343C5_nt__A1__9S343C2_nt__6S343C1[3]),  3,5},
  {&(_tg__ZTV9S343C7_nt__9S343C2_nt__6S343C1[3]),  3,5},
  {&(_tg__ZTV9S343C4_nt9S343C7_nt__A1__9S343C2_nt__6S343C1[2]),  2,4},
  {&(_tg__ZTV10S343C10_nt__9S343C2_nt__6S343C1[5]),  5,7},
  {&(_tg__ZTV9S343C8_nt__A1__9S343C2_nt__6S343C1[3]),  3,5},
  {&(_ZTV6S343C1[22]),  22,77},
  {&(_ZTV6S343C1[27]),  27,77},
  {&(_ZTV6S343C1[32]),  32,77},
  {&(_ZTV6S343C1[36]),  36,77},
  {&(_ZTV6S343C1[43]),  43,77},
  {&(_ZTV6S343C1[48]),  48,77},
  {&(_ZTV6S343C1[57]),  57,77},
  {&(_ZTV6S343C1[63]),  63,77},
  {&(_ZTV6S343C1[67]),  67,77},
  {&(_ZTV6S343C1[75]),  75,77},
  {&(_tg__ZTV10S343C10_nt__6S343C1[4]),  4,6},
  {&(_tg__ZTV9S343C8_nt__10S343C10_nt__6S343C1[3]),  3,5},
  {&(_tg__ZTV10S343C13_nt__6S343C1[6]),  6,8},
  {&(_tg__ZTV10S343C14_nt10S343C13_nt__6S343C1[4]),  4,6},
  {&(_tg__ZTV10S343C15_nt__10S343C14_nt10S343C13_nt__6S343C1[4]),  4,6},
  {&(_tg__ZTV9S343C6_nt10S343C15_nt__A2__10S343C14_nt10S343C13_nt__6S343C1[2]),  2,4},
  {&(_tg__ZTV10S343C15_nt__10S343C13_nt__6S343C1[4]),  4,6},
  {&(_tg__ZTV9S343C6_nt10S343C15_nt__A2__10S343C13_nt__6S343C1[2]),  2,4},
  {&(_tg__ZTV9S343C5_nt__A2__10S343C13_nt__6S343C1[3]),  3,5},
  {&(_tg__ZTV10S343C15_nt__6S343C1[3]),  3,5},
  {&(_tg__ZTV9S343C3_nt__A1__6S343C1[5]),  5,7},
  {&(_tg__ZTV9S343C6_nt__A1__9S343C3_nt__A1__6S343C1[3]),  3,5},
  {&(_tg__ZTV9S343C5_nt__A1__9S343C3_nt__A1__6S343C1[3]),  3,5},
  {&(_tg__ZTV9S343C7_nt__9S343C3_nt__A1__6S343C1[3]),  3,5},
  {&(_tg__ZTV9S343C4_nt9S343C7_nt__A1__9S343C3_nt__A1__6S343C1[2]),  2,4},
};
extern VTBL_ENTRY _ZTI6S343C1[];
extern  VTBL_ENTRY _ZTV6S343C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT6S343C1[];
static VTBL_ENTRY alt_thunk_names59[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N10S343C13_ntD0Ev,_ZTv0_n16_N10S343C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N10S343C13_ntD0Ev,_ZThn16_N10S343C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N10S343C13_ntD1Ev,_ZTv0_n16_N10S343C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N10S343C13_ntD1Ev,_ZThn16_N10S343C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N10S343C14_ntD0Ev,_ZTv0_n16_N10S343C14_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N10S343C14_ntD0Ev,_ZThn16_N10S343C14_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N10S343C14_ntD1Ev,_ZTv0_n16_N10S343C14_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N10S343C14_ntD1Ev,_ZThn16_N10S343C14_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S343C10_ntD0Ev,_ZTv0_n12_N10S343C10_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N10S343C10_ntD0Ev,_ZThn4_N10S343C10_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S343C10_ntD1Ev,_ZTv0_n12_N10S343C10_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N10S343C10_ntD1Ev,_ZThn4_N10S343C10_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S343C2_ntD0Ev,_ZTv0_n20_N9S343C2_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S343C2_ntD0Ev,_ZThn80_N9S343C2_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S343C2_ntD1Ev,_ZTv0_n20_N9S343C2_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S343C2_ntD1Ev,_ZThn80_N9S343C2_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S343C2_ntD0Ev,_ZTv0_n12_N9S343C2_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S343C2_ntD0Ev,_ZThn84_N9S343C2_ntD0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S343C2_ntD0Ev,_ZThn60_N9S343C2_ntD0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S343C2_ntD0Ev,_ZThn56_N9S343C2_ntD0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S343C2_ntD0Ev,_ZThn52_N9S343C2_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S343C2_ntD1Ev,_ZTv0_n12_N9S343C2_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S343C2_ntD1Ev,_ZThn84_N9S343C2_ntD1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S343C2_ntD1Ev,_ZThn60_N9S343C2_ntD1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S343C2_ntD1Ev,_ZThn56_N9S343C2_ntD1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S343C2_ntD1Ev,_ZThn52_N9S343C2_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S343C3_ntD0Ev,_ZTv0_n12_N9S343C3_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S343C3_ntD0Ev,_ZThn60_N9S343C3_ntD0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S343C3_ntD0Ev,_ZThn56_N9S343C3_ntD0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S343C3_ntD0Ev,_ZThn52_N9S343C3_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S343C3_ntD1Ev,_ZTv0_n12_N9S343C3_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S343C3_ntD1Ev,_ZThn60_N9S343C3_ntD1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S343C3_ntD1Ev,_ZThn56_N9S343C3_ntD1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S343C3_ntD1Ev,_ZThn52_N9S343C3_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N6S343C1D0Ev,_ZTv0_n24_N6S343C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N6S343C1D0Ev,_ZThn128_N6S343C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N6S343C1D1Ev,_ZTv0_n24_N6S343C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N6S343C1D1Ev,_ZThn128_N6S343C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6S343C1D0Ev,_ZTv0_n16_N6S343C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N6S343C1D0Ev,_ZThn108_N6S343C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N6S343C1D1Ev,_ZTv0_n16_N6S343C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N6S343C1D1Ev,_ZThn108_N6S343C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N6S343C1D0Ev,_ZTv0_n28_N6S343C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N6S343C1D0Ev,_ZThn92_N6S343C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N6S343C1D1Ev,_ZTv0_n28_N6S343C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N6S343C1D1Ev,_ZThn92_N6S343C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N6S343C1D0Ev,_ZTv0_n20_N6S343C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N6S343C1D0Ev,_ZThn80_N6S343C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N6S343C1D1Ev,_ZTv0_n20_N6S343C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N6S343C1D1Ev,_ZThn80_N6S343C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6S343C1D0Ev,_ZTv0_n12_N6S343C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N6S343C1D0Ev,_ZThn84_N6S343C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N6S343C1D0Ev,_ZThn60_N6S343C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N6S343C1D0Ev,_ZThn56_N6S343C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N6S343C1D0Ev,_ZThn52_N6S343C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N6S343C1D1Ev,_ZTv0_n12_N6S343C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N6S343C1D1Ev,_ZThn84_N6S343C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N6S343C1D1Ev,_ZThn60_N6S343C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N6S343C1D1Ev,_ZThn56_N6S343C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N6S343C1D1Ev,_ZThn52_N6S343C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S343C1 = {  "S343C1", // class name
  bases_S343C1, 44,
  &(vtc_S343C1[0]), // expected_vtbl_contents
  &(vtt_S343C1[0]), // expected_vtt_contents
  ABISELECT(264,136), // object size
  NSPAIRA(_ZTI6S343C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV6S343C1),77, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT6S343C1),38, //virtual table table var
  36, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names59,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2958C2  : S731C17_nt {
};
//SIG(-1 S2958C2) C1{ BC2{ m}}



static void Test_S2958C2()
{
  extern Class_Descriptor cd_S2958C2;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S2958C2, buf);
    S2958C2 &lv = *(new (buf) S2958C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S2958C2)");
    check2(__alignof__(lv), 1, "__alignof__(S2958C2)");
    check_base_class_offset(lv, (S731C17_nt*), 0, "S2958C2");
    test_class_info(&lv, &cd_S2958C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2958C2(Test_S2958C2, "S2958C2", 1);

#else // __cplusplus

extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S2958C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2958C2[];
Class_Descriptor cd_S2958C2 = {  "S2958C2", // class name
  bases_S2958C2, 1,
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI7S2958C2),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  S2958C6_nt  : S731C14_nt {
  ~S2958C6_nt(); // tgen
  S2958C6_nt(); // tgen
};
//SIG(-1 S2958C6_nt) C1{ BC2{ vd m Fp}}


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

//skip512 S2958C6_nt

#else // __cplusplus

extern void _ZN10S2958C6_ntC1Ev();
extern void _ZN10S2958C6_ntD1Ev();
Name_Map name_map_S2958C6_nt[] = {
  NSPAIR(_ZN10S2958C6_ntC1Ev),
  NSPAIR(_ZN10S2958C6_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
static Base_Class bases_S2958C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C14_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2958C6_nt[];
extern void _ZN10S2958C6_ntD1Ev();
extern void _ZN10S2958C6_ntD0Ev();
static  VTBL_ENTRY vtc_S2958C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C6_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S2958C6_nt[];
VTBL_ENTRY *P__ZTI10S2958C6_nt = _ZTI10S2958C6_nt; 
extern  VTBL_ENTRY _ZTV10S2958C6_nt[];
Class_Descriptor cd_S2958C6_nt = {  "S2958C6_nt", // class name
  bases_S2958C6_nt, 1,
  &(vtc_S2958C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S2958C6_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S2958C6_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  S2958C8_nt  : virtual S731C14_nt {
  virtual  ~S2958C8_nt(); // _ZN10S2958C8_ntD2Ev
  S2958C8_nt(); // tgen
};
//SIG(-1 S2958C8_nt) C1{ VBC2{ vd m Fp} vd}


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

//skip512 S2958C8_nt

#else // __cplusplus

extern void _ZN10S2958C8_ntC1Ev();
extern void _ZN10S2958C8_ntD2Ev();
Name_Map name_map_S2958C8_nt[] = {
  NSPAIR(_ZN10S2958C8_ntC1Ev),
  NSPAIR(_ZN10S2958C8_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
static Base_Class bases_S2958C8_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C14_nt,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI10S2958C8_nt[];
extern void _ZN10S2958C8_ntD1Ev();
extern void _ZN10S2958C8_ntD0Ev();
extern void ABISELECT(_ZTv0_n24_N10S2958C8_ntD1Ev,_ZTv0_n12_N10S2958C8_ntD1Ev)();
extern void ABISELECT(_ZThn8_N10S2958C8_ntD1Ev,_ZThn4_N10S2958C8_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N10S2958C8_ntD0Ev,_ZTv0_n12_N10S2958C8_ntD0Ev)();
extern void ABISELECT(_ZThn8_N10S2958C8_ntD0Ev,_ZThn4_N10S2958C8_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2958C8_nt[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C8_ntD0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI10S2958C8_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C8_ntD1Ev,_ZTv0_n12_N10S2958C8_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C8_ntD0Ev,_ZTv0_n12_N10S2958C8_ntD0Ev),
};
extern VTBL_ENTRY _ZTV10S2958C8_nt[];
static  VTT_ENTRY vtt_S2958C8_nt[] = {
  {&(_ZTV10S2958C8_nt[3]),  3,10},
  {&(_ZTV10S2958C8_nt[8]),  8,10},
};
extern VTBL_ENTRY _ZTI10S2958C8_nt[];
VTBL_ENTRY *P__ZTI10S2958C8_nt = _ZTI10S2958C8_nt; 
extern  VTBL_ENTRY _ZTV10S2958C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C8_nt[];
static VTBL_ENTRY alt_thunk_names60[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S2958C8_ntD0Ev,_ZTv0_n12_N10S2958C8_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N10S2958C8_ntD0Ev,_ZThn4_N10S2958C8_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S2958C8_ntD1Ev,_ZTv0_n12_N10S2958C8_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N10S2958C8_ntD1Ev,_ZThn4_N10S2958C8_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2958C8_nt = {  "S2958C8_nt", // class name
  bases_S2958C8_nt, 1,
  &(vtc_S2958C8_nt[0]), // expected_vtbl_contents
  &(vtt_S2958C8_nt[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI10S2958C8_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV10S2958C8_nt),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT10S2958C8_nt),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names60,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2958C10  : virtual S731C14_nt {
  virtual  ~S2958C10(); // _ZN8S2958C10D2Ev
  S2958C10(); // tgen
};
//SIG(-1 S2958C10) C1{ VBC2{ vd m Fp} vd}


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

static void Test_S2958C10()
{
  extern Class_Descriptor cd_S2958C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S2958C10, buf);
    S2958C10 *dp, &lv = *(dp=new (buf) S2958C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S2958C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2958C10)");
    check_base_class_offset(lv, (S731C14_nt*), ABISELECT(8,4), "S2958C10");
    test_class_info(&lv, &cd_S2958C10);
    dp->~S2958C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2958C10(Test_S2958C10, "S2958C10", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S2958C10C1Ev();
extern void _ZN8S2958C10D2Ev();
Name_Map name_map_S2958C10[] = {
  NSPAIR(_ZN8S2958C10C1Ev),
  NSPAIR(_ZN8S2958C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
static Base_Class bases_S2958C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C14_nt,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S2958C10[];
extern void _ZN8S2958C10D1Ev();
extern void _ZN8S2958C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev)();
extern void ABISELECT(_ZThn8_N8S2958C10D1Ev,_ZThn4_N8S2958C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev)();
extern void ABISELECT(_ZThn8_N8S2958C10D0Ev,_ZThn4_N8S2958C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2958C10[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S2958C10[0]),
  (VTBL_ENTRY)&_ZN8S2958C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2958C10D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S2958C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S2958C10[];
static  VTT_ENTRY vtt_S2958C10[] = {
  {&(_ZTV8S2958C10[3]),  3,10},
  {&(_ZTV8S2958C10[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S2958C10[];
extern  VTBL_ENTRY _ZTV8S2958C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2958C10[];
static VTBL_ENTRY alt_thunk_names61[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S2958C10D0Ev,_ZThn4_N8S2958C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S2958C10D1Ev,_ZThn4_N8S2958C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2958C10 = {  "S2958C10", // class name
  bases_S2958C10, 1,
  &(vtc_S2958C10[0]), // expected_vtbl_contents
  &(vtt_S2958C10[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S2958C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S2958C10),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2958C10),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names61,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2958C11_nt  : virtual S731C17_nt {
  long double s2958c11f0;
  ~S2958C11_nt(); // tgen
  S2958C11_nt(); // tgen
};
//SIG(-1 S2958C11_nt) C1{ VBC2{ m} FD}


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

//skip512 S2958C11_nt

#else // __cplusplus

extern void _ZN11S2958C11_ntC1Ev();
extern void _ZN11S2958C11_ntD1Ev();
Name_Map name_map_S2958C11_nt[] = {
  NSPAIR(_ZN11S2958C11_ntC1Ev),
  NSPAIR(_ZN11S2958C11_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S2958C11_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI11S2958C11_nt[];
static  VTBL_ENTRY vtc_S2958C11_nt[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S2958C11_nt[0]),
};
extern VTBL_ENTRY _ZTV11S2958C11_nt[];
static  VTT_ENTRY vtt_S2958C11_nt[] = {
  {&(_ZTV11S2958C11_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI11S2958C11_nt[];
VTBL_ENTRY *P__ZTI11S2958C11_nt = _ZTI11S2958C11_nt; 
extern  VTBL_ENTRY _ZTV11S2958C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S2958C11_nt[];
Class_Descriptor cd_S2958C11_nt = {  "S2958C11_nt", // class name
  bases_S2958C11_nt, 1,
  &(vtc_S2958C11_nt[0]), // expected_vtbl_contents
  &(vtt_S2958C11_nt[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI11S2958C11_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV11S2958C11_nt),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S2958C11_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  S2958C9_nt  : S731C14_nt , S2958C10 , virtual S2958C11_nt , S2958C2 , S731C17_nt {
  virtual  ~S2958C9_nt(); // _ZN10S2958C9_ntD2Ev
  S2958C9_nt(); // tgen
};
//SIG(-1 S2958C9_nt) C1{ BC2{ vd m Fp} BC3{ VBC2 vd} VBC4{ VBC5{ m} FD} BC6{ BC5} BC5 vd}


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

//skip512 S2958C9_nt

#else // __cplusplus

extern void _ZN10S2958C9_ntC1Ev();
extern void _ZN10S2958C9_ntD2Ev();
Name_Map name_map_S2958C9_nt[] = {
  NSPAIR(_ZN10S2958C9_ntC1Ev),
  NSPAIR(_ZN10S2958C9_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S2958C10;
extern VTBL_ENTRY _ZTI8S2958C10[];
extern  VTBL_ENTRY _ZTV8S2958C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2958C10[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S2958C11_nt;
extern VTBL_ENTRY _ZTI11S2958C11_nt[];
extern  VTBL_ENTRY _ZTV11S2958C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S2958C11_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S2958C2;
extern VTBL_ENTRY _ZTI7S2958C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S2958C9_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C14_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C14_nt,    ABISELECT(24,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S2958C10,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    ABISELECT(80,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S2958C11_nt,    ABISELECT(48,20), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S2958C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2958C9_nt[];
extern void _ZN10S2958C9_ntD1Ev();
extern void _ZN10S2958C9_ntD0Ev();
extern void ABISELECT(_ZThn16_N10S2958C9_ntD1Ev,_ZThn8_N10S2958C9_ntD1Ev)();
extern void ABISELECT(_ZThn16_N10S2958C9_ntD0Ev,_ZThn8_N10S2958C9_ntD0Ev)();
extern void ABISELECT(_ZTv0_n24_N10S2958C9_ntD1Ev,_ZTv0_n12_N10S2958C9_ntD1Ev)();
extern void ABISELECT(_ZThn24_N10S2958C9_ntD1Ev,_ZThn12_N10S2958C9_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N10S2958C9_ntD0Ev,_ZTv0_n12_N10S2958C9_ntD0Ev)();
extern void ABISELECT(_ZThn24_N10S2958C9_ntD0Ev,_ZThn12_N10S2958C9_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2958C9_nt[] = {
  ABISELECT(80,36),
  ABISELECT(48,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C9_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C9_ntD0Ev,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI10S2958C9_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N10S2958C9_ntD1Ev,_ZThn8_N10S2958C9_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N10S2958C9_ntD0Ev,_ZThn8_N10S2958C9_ntD0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S2958C9_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C9_ntD1Ev,_ZTv0_n12_N10S2958C9_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C9_ntD0Ev,_ZTv0_n12_N10S2958C9_ntD0Ev),
  ABISELECT(32,16),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI10S2958C9_nt[0]),
};
extern VTBL_ENTRY _ZTV10S2958C9_nt[];
extern void _ZN8S2958C10D1Ev();
extern void _ZN8S2958C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2958C10__10S2958C9_nt[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S2958C10[0]),
  (VTBL_ENTRY)&_ZN8S2958C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2958C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev)();
extern void ABISELECT(_ZThn8_N8S2958C10D1Ev,_ZThn4_N8S2958C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev)();
extern void ABISELECT(_ZThn8_N8S2958C10D0Ev,_ZThn4_N8S2958C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__8S2958C10__10S2958C9_nt[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S2958C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S2958C11_nt__10S2958C9_nt[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI11S2958C11_nt[0]),
};
static  VTT_ENTRY vtt_S2958C9_nt[] = {
  {&(_ZTV10S2958C9_nt[5]),  5,20},
  {&(_tg__ZTV8S2958C10__10S2958C9_nt[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__8S2958C10__10S2958C9_nt[3]),  3,5},
  {&(_ZTV10S2958C9_nt[10]),  10,20},
  {&(_ZTV10S2958C9_nt[15]),  15,20},
  {&(_ZTV10S2958C9_nt[20]),  20,20},
  {&(_tg__ZTV11S2958C11_nt__10S2958C9_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI10S2958C9_nt[];
VTBL_ENTRY *P__ZTI10S2958C9_nt = _ZTI10S2958C9_nt; 
extern  VTBL_ENTRY _ZTV10S2958C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C9_nt[];
static VTBL_ENTRY alt_thunk_names62[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S2958C10D0Ev,_ZThn4_N8S2958C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S2958C10D1Ev,_ZThn4_N8S2958C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S2958C9_ntD0Ev,_ZTv0_n12_N10S2958C9_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N10S2958C9_ntD0Ev,_ZThn12_N10S2958C9_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S2958C9_ntD1Ev,_ZTv0_n12_N10S2958C9_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N10S2958C9_ntD1Ev,_ZThn12_N10S2958C9_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2958C9_nt = {  "S2958C9_nt", // class name
  bases_S2958C9_nt, 8,
  &(vtc_S2958C9_nt[0]), // expected_vtbl_contents
  &(vtt_S2958C9_nt[0]), // expected_vtt_contents
  ABISELECT(96,40), // object size
  NSPAIRA(_ZTI10S2958C9_nt),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV10S2958C9_nt),20, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT10S2958C9_nt),7, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names62,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2958C5_nt  : S731C17_nt , S2958C6_nt , virtual S731C14_nt , S2958C8_nt , virtual S2958C9_nt {
  virtual void  v1(); // _ZN10S2958C5_nt2v1Ev
  ~S2958C5_nt(); // tgen
  S2958C5_nt(); // tgen
};
//SIG(-1 S2958C5_nt) C1{ BC2{ m} BC3{ BC4{ vd m Fp}} VBC4 BC5{ VBC4 vd} VBC6{ BC4 BC7{ VBC4 vd} VBC8{ VBC2 FD} BC9{ BC2} BC2 vd} v1}


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

//skip512 S2958C5_nt

#else // __cplusplus

extern void _ZN10S2958C5_ntC1Ev();
extern void _ZN10S2958C5_ntD1Ev();
Name_Map name_map_S2958C5_nt[] = {
  NSPAIR(_ZN10S2958C5_ntC1Ev),
  NSPAIR(_ZN10S2958C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S2958C6_nt;
extern VTBL_ENTRY _ZTI10S2958C6_nt[];
extern  VTBL_ENTRY _ZTV10S2958C6_nt[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S2958C8_nt;
extern VTBL_ENTRY _ZTI10S2958C8_nt[];
extern  VTBL_ENTRY _ZTV10S2958C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C8_nt[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S2958C10;
extern VTBL_ENTRY _ZTI8S2958C10[];
extern  VTBL_ENTRY _ZTV8S2958C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2958C10[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S2958C11_nt;
extern VTBL_ENTRY _ZTI11S2958C11_nt[];
extern  VTBL_ENTRY _ZTV11S2958C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S2958C11_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S2958C2;
extern VTBL_ENTRY _ZTI7S2958C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S2958C9_nt;
extern VTBL_ENTRY _ZTI10S2958C9_nt[];
extern  VTBL_ENTRY _ZTV10S2958C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C9_nt[];
static Base_Class bases_S2958C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C14_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S2958C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S731C14_nt,    ABISELECT(24,12), //bcp->offset
    14, //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_S2958C8_nt,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C14_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
    12, //immediately_derived
  0, 0},
  {&cd_S2958C10,    ABISELECT(56,28), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(112,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S2958C11_nt,    ABISELECT(80,36), //bcp->offset
    32, //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
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S2958C2,    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
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S2958C9_nt,    ABISELECT(40,20), //bcp->offset
    19, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI10S2958C5_nt[];
extern void _ZN10S2958C5_ntD1Ev();
extern void _ZN10S2958C5_ntD0Ev();
extern void _ZN10S2958C5_nt2v1Ev();
extern void ABISELECT(_ZThn16_N10S2958C5_ntD1Ev,_ZThn8_N10S2958C5_ntD1Ev)();
extern void ABISELECT(_ZThn16_N10S2958C5_ntD0Ev,_ZThn8_N10S2958C5_ntD0Ev)();
extern void ABISELECT(_ZTv0_n24_N10S2958C5_ntD1Ev,_ZTv0_n12_N10S2958C5_ntD1Ev)();
extern void ABISELECT(_ZThn24_N10S2958C5_ntD1Ev,_ZThn12_N10S2958C5_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N10S2958C5_ntD0Ev,_ZTv0_n12_N10S2958C5_ntD0Ev)();
extern void ABISELECT(_ZThn24_N10S2958C5_ntD0Ev,_ZThn12_N10S2958C5_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N10S2958C5_ntD1Ev,_ZTv0_n24_N10S2958C5_ntD1Ev)();
extern void ABISELECT(_ZThn40_N10S2958C5_ntD1Ev,_ZThn20_N10S2958C5_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N10S2958C5_ntD0Ev,_ZTv0_n24_N10S2958C5_ntD0Ev)();
extern void ABISELECT(_ZThn40_N10S2958C5_ntD0Ev,_ZThn20_N10S2958C5_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N10S2958C5_ntD1Ev,_ZTvn8_n24_N10S2958C5_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n48_N10S2958C5_ntD0Ev,_ZTvn8_n24_N10S2958C5_ntD0Ev)();
static  VTBL_ENTRY vtc_S2958C5_nt[] = {
  ABISELECT(112,52),
  ABISELECT(80,36),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2958C5_nt2v1Ev,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N10S2958C5_ntD1Ev,_ZThn8_N10S2958C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N10S2958C5_ntD0Ev,_ZThn8_N10S2958C5_ntD0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C5_ntD1Ev,_ZTv0_n12_N10S2958C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C5_ntD0Ev,_ZTv0_n12_N10S2958C5_ntD0Ev),
  ABISELECT(-40,-20),
  ABISELECT(72,32),
  ABISELECT(40,16),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N10S2958C5_ntD1Ev,_ZTv0_n24_N10S2958C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N10S2958C5_ntD0Ev,_ZTv0_n24_N10S2958C5_ntD0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N10S2958C5_ntD1Ev,_ZTvn8_n24_N10S2958C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N10S2958C5_ntD0Ev,_ZTvn8_n24_N10S2958C5_ntD0Ev),
  ABISELECT(32,16),
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
};
extern VTBL_ENTRY _ZTV10S2958C5_nt[];
extern void _ZN10S2958C8_ntD1Ev();
extern void _ZN10S2958C8_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C8_nt__10S2958C5_nt[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C8_ntD0Ev,
};
extern void ABISELECT(_ZTv0_n24_N10S2958C8_ntD1Ev,_ZTv0_n12_N10S2958C8_ntD1Ev)();
extern void ABISELECT(_ZThn8_N10S2958C8_ntD1Ev,_ZThn4_N10S2958C8_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N10S2958C8_ntD0Ev,_ZTv0_n12_N10S2958C8_ntD0Ev)();
extern void ABISELECT(_ZThn8_N10S2958C8_ntD0Ev,_ZThn4_N10S2958C8_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__10S2958C8_nt__10S2958C5_nt[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI10S2958C8_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C8_ntD1Ev,_ZTv0_n12_N10S2958C8_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C8_ntD0Ev,_ZTv0_n12_N10S2958C8_ntD0Ev),
};
extern void _ZN10S2958C9_ntD1Ev();
extern void _ZN10S2958C9_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C9_nt__10S2958C5_nt[] = {
  ABISELECT(72,32),
  ABISELECT(40,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C9_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C9_ntD0Ev,
};
extern void _ZN8S2958C10D1Ev();
extern void _ZN8S2958C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2958C1010S2958C9_nt__10S2958C5_nt[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S2958C10[0]),
  (VTBL_ENTRY)&_ZN8S2958C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2958C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__8S2958C1010S2958C9_nt__10S2958C5_nt[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S2958C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev),
};
extern void ABISELECT(_ZThn16_N10S2958C9_ntD1Ev,_ZThn8_N10S2958C9_ntD1Ev)();
extern void ABISELECT(_ZThn16_N10S2958C9_ntD0Ev,_ZThn8_N10S2958C9_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2958C10__10S2958C9_nt__10S2958C5_nt[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI10S2958C9_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N10S2958C9_ntD1Ev,_ZThn8_N10S2958C9_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N10S2958C9_ntD0Ev,_ZThn8_N10S2958C9_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N10S2958C9_ntD1Ev,_ZTv0_n12_N10S2958C9_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N10S2958C9_ntD0Ev,_ZTv0_n12_N10S2958C9_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A1__10S2958C9_nt__10S2958C5_nt[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI10S2958C9_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C9_ntD1Ev,_ZTv0_n12_N10S2958C9_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C9_ntD0Ev,_ZTv0_n12_N10S2958C9_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S2958C11_nt__10S2958C9_nt__10S2958C5_nt[] = {
  ABISELECT(32,16),
  ABISELECT(-40,-16),
  (VTBL_ENTRY)&(_ZTI10S2958C9_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S2958C11_nt__10S2958C5_nt[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI11S2958C11_nt[0]),
};
static  VTT_ENTRY vtt_S2958C5_nt[] = {
  {&(_ZTV10S2958C5_nt[6]),  6,35},
  {&(_tg__ZTV10S2958C8_nt__10S2958C5_nt[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__10S2958C8_nt__10S2958C5_nt[3]),  3,5},
  {&(_ZTV10S2958C5_nt[17]),  17,35},
  {&(_ZTV10S2958C5_nt[12]),  12,35},
  {&(_ZTV10S2958C5_nt[25]),  25,35},
  {&(_ZTV10S2958C5_nt[30]),  30,35},
  {&(_ZTV10S2958C5_nt[35]),  35,35},
  {&(_tg__ZTV10S2958C9_nt__10S2958C5_nt[5]),  5,7},
  {&(_tg__ZTV8S2958C1010S2958C9_nt__10S2958C5_nt[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__8S2958C1010S2958C9_nt__10S2958C5_nt[3]),  3,5},
  {&(_tg__ZTV8S2958C10__10S2958C9_nt__10S2958C5_nt[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__A1__10S2958C9_nt__10S2958C5_nt[3]),  3,5},
  {&(_tg__ZTV11S2958C11_nt__10S2958C9_nt__10S2958C5_nt[3]),  3,3},
  {&(_tg__ZTV11S2958C11_nt__10S2958C5_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI10S2958C5_nt[];
VTBL_ENTRY *P__ZTI10S2958C5_nt = _ZTI10S2958C5_nt; 
extern  VTBL_ENTRY _ZTV10S2958C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C5_nt[];
static VTBL_ENTRY alt_thunk_names63[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S2958C8_ntD0Ev,_ZTv0_n12_N10S2958C8_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N10S2958C8_ntD0Ev,_ZThn4_N10S2958C8_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S2958C8_ntD1Ev,_ZTv0_n12_N10S2958C8_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N10S2958C8_ntD1Ev,_ZThn4_N10S2958C8_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N10S2958C5_ntD0Ev,_ZTv0_n24_N10S2958C5_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N10S2958C5_ntD0Ev,_ZThn20_N10S2958C5_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N10S2958C5_ntD1Ev,_ZTv0_n24_N10S2958C5_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N10S2958C5_ntD1Ev,_ZThn20_N10S2958C5_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S2958C5_ntD0Ev,_ZTv0_n12_N10S2958C5_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N10S2958C5_ntD0Ev,_ZThn12_N10S2958C5_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S2958C5_ntD1Ev,_ZTv0_n12_N10S2958C5_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N10S2958C5_ntD1Ev,_ZThn12_N10S2958C5_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2958C5_nt = {  "S2958C5_nt", // class name
  bases_S2958C5_nt, 13,
  &(vtc_S2958C5_nt[0]), // expected_vtbl_contents
  &(vtt_S2958C5_nt[0]), // expected_vtt_contents
  ABISELECT(128,56), // object size
  NSPAIRA(_ZTI10S2958C5_nt),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV10S2958C5_nt),35, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT10S2958C5_nt),15, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names63,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2958C4_nt  : virtual S2958C5_nt {
  virtual  ~S2958C4_nt(); // _ZN10S2958C4_ntD2Ev
  virtual void  v2(); // _ZN10S2958C4_nt2v2Ev
  S2958C4_nt(); // tgen
};
//SIG(-1 S2958C4_nt) C1{ VBC2{ BC3{ m} BC4{ BC5{ vd m Fp}} VBC5 BC6{ VBC5 vd} VBC7{ BC5 BC8{ VBC5 vd} VBC9{ VBC3 FD} BC10{ BC3} BC3 vd} v2} vd v1}


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

//skip512 S2958C4_nt

#else // __cplusplus

extern void _ZN10S2958C4_ntC1Ev();
extern void _ZN10S2958C4_ntD2Ev();
Name_Map name_map_S2958C4_nt[] = {
  NSPAIR(_ZN10S2958C4_ntC1Ev),
  NSPAIR(_ZN10S2958C4_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S2958C6_nt;
extern VTBL_ENTRY _ZTI10S2958C6_nt[];
extern  VTBL_ENTRY _ZTV10S2958C6_nt[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S2958C8_nt;
extern VTBL_ENTRY _ZTI10S2958C8_nt[];
extern  VTBL_ENTRY _ZTV10S2958C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C8_nt[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S2958C10;
extern VTBL_ENTRY _ZTI8S2958C10[];
extern  VTBL_ENTRY _ZTV8S2958C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2958C10[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S2958C11_nt;
extern VTBL_ENTRY _ZTI11S2958C11_nt[];
extern  VTBL_ENTRY _ZTV11S2958C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S2958C11_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S2958C2;
extern VTBL_ENTRY _ZTI7S2958C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S2958C9_nt;
extern VTBL_ENTRY _ZTI10S2958C9_nt[];
extern  VTBL_ENTRY _ZTV10S2958C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C9_nt[];
extern Class_Descriptor cd_S2958C5_nt;
extern VTBL_ENTRY _ZTI10S2958C5_nt[];
extern  VTBL_ENTRY _ZTV10S2958C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C5_nt[];
static Base_Class bases_S2958C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C14_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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_S2958C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S731C14_nt,    ABISELECT(32,16), //bcp->offset
    26, //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_S2958C8_nt,    ABISELECT(24,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S731C14_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S2958C10,    ABISELECT(64,32), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2958C11_nt,    ABISELECT(80,40), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S2958C2,    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
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S2958C9_nt,    ABISELECT(48,24), //bcp->offset
    31, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S2958C5_nt,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI10S2958C4_nt[];
extern void _ZN10S2958C4_ntD1Ev();
extern void _ZN10S2958C4_ntD0Ev();
extern void _ZN10S2958C4_nt2v2Ev();
extern void ABISELECT(_ZTv0_n56_N10S2958C4_ntD1Ev,_ZTv0_n28_N10S2958C4_ntD1Ev)();
extern void ABISELECT(_ZThn8_N10S2958C4_ntD1Ev,_ZThn4_N10S2958C4_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N10S2958C4_ntD0Ev,_ZTv0_n28_N10S2958C4_ntD0Ev)();
extern void ABISELECT(_ZThn8_N10S2958C4_ntD0Ev,_ZThn4_N10S2958C4_ntD0Ev)() __attribute__((weak));
extern void _ZN10S2958C5_nt2v1Ev();
extern void ABISELECT(_ZTvn16_n56_N10S2958C4_ntD1Ev,_ZTvn8_n28_N10S2958C4_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n56_N10S2958C4_ntD0Ev,_ZTvn8_n28_N10S2958C4_ntD0Ev)();
extern void ABISELECT(_ZTv0_n24_N10S2958C4_ntD1Ev,_ZTv0_n12_N10S2958C4_ntD1Ev)();
extern void ABISELECT(_ZThn32_N10S2958C4_ntD1Ev,_ZThn16_N10S2958C4_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N10S2958C4_ntD0Ev,_ZTv0_n12_N10S2958C4_ntD0Ev)();
extern void ABISELECT(_ZThn32_N10S2958C4_ntD0Ev,_ZThn16_N10S2958C4_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N10S2958C4_ntD1Ev,_ZTv0_n24_N10S2958C4_ntD1Ev)();
extern void ABISELECT(_ZThn48_N10S2958C4_ntD1Ev,_ZThn24_N10S2958C4_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N10S2958C4_ntD0Ev,_ZTv0_n24_N10S2958C4_ntD0Ev)();
extern void ABISELECT(_ZThn48_N10S2958C4_ntD0Ev,_ZThn24_N10S2958C4_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N10S2958C4_ntD1Ev,_ZTvn8_n24_N10S2958C4_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n48_N10S2958C4_ntD0Ev,_ZTvn8_n24_N10S2958C4_ntD0Ev)();
static  VTBL_ENTRY vtc_S2958C4_nt[] = {
  0,
  ABISELECT(80,40),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2958C4_nt2v2Ev,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(72,36),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N10S2958C4_ntD1Ev,_ZTv0_n28_N10S2958C4_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N10S2958C4_ntD0Ev,_ZTv0_n28_N10S2958C4_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S2958C5_nt2v1Ev,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N10S2958C4_ntD1Ev,_ZTvn8_n28_N10S2958C4_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N10S2958C4_ntD0Ev,_ZTvn8_n28_N10S2958C4_ntD0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C4_ntD1Ev,_ZTv0_n12_N10S2958C4_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C4_ntD0Ev,_ZTv0_n12_N10S2958C4_ntD0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N10S2958C4_ntD1Ev,_ZTv0_n24_N10S2958C4_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N10S2958C4_ntD0Ev,_ZTv0_n24_N10S2958C4_ntD0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N10S2958C4_ntD1Ev,_ZTvn8_n24_N10S2958C4_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N10S2958C4_ntD0Ev,_ZTvn8_n24_N10S2958C4_ntD0Ev),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
};
extern VTBL_ENTRY _ZTV10S2958C4_nt[];
extern void _ZN10S2958C5_ntD1Ev();
extern void _ZN10S2958C5_ntD0Ev();
extern void _ZN10S2958C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C5_nt__10S2958C4_nt[] = {
  ABISELECT(-8,-4),
  ABISELECT(72,36),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2958C5_nt2v1Ev,
};
extern void _ZN10S2958C8_ntD1Ev();
extern void _ZN10S2958C8_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C8_nt10S2958C5_nt__10S2958C4_nt[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C8_ntD0Ev,
};
extern void ABISELECT(_ZTv0_n24_N10S2958C8_ntD1Ev,_ZTv0_n12_N10S2958C8_ntD1Ev)();
extern void ABISELECT(_ZThn8_N10S2958C8_ntD1Ev,_ZThn4_N10S2958C8_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N10S2958C8_ntD0Ev,_ZTv0_n12_N10S2958C8_ntD0Ev)();
extern void ABISELECT(_ZThn8_N10S2958C8_ntD0Ev,_ZThn4_N10S2958C8_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__10S2958C8_nt10S2958C5_nt__10S2958C4_nt[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI10S2958C8_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C8_ntD1Ev,_ZTv0_n12_N10S2958C8_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C8_ntD0Ev,_ZTv0_n12_N10S2958C8_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N10S2958C5_ntD1Ev,_ZTv0_n12_N10S2958C5_ntD1Ev)();
extern void ABISELECT(_ZThn24_N10S2958C5_ntD1Ev,_ZThn12_N10S2958C5_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N10S2958C5_ntD0Ev,_ZTv0_n12_N10S2958C5_ntD0Ev)();
extern void ABISELECT(_ZThn24_N10S2958C5_ntD0Ev,_ZThn12_N10S2958C5_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A1__10S2958C5_nt__10S2958C4_nt[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C5_ntD1Ev,_ZTv0_n12_N10S2958C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C5_ntD0Ev,_ZTv0_n12_N10S2958C5_ntD0Ev),
};
extern void ABISELECT(_ZThn16_N10S2958C5_ntD1Ev,_ZThn8_N10S2958C5_ntD1Ev)();
extern void ABISELECT(_ZThn16_N10S2958C5_ntD0Ev,_ZThn8_N10S2958C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S2958C8_nt__10S2958C5_nt__10S2958C4_nt[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N10S2958C5_ntD1Ev,_ZThn8_N10S2958C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N10S2958C5_ntD0Ev,_ZThn8_N10S2958C5_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n48_N10S2958C5_ntD1Ev,_ZTv0_n24_N10S2958C5_ntD1Ev)();
extern void ABISELECT(_ZThn40_N10S2958C5_ntD1Ev,_ZThn20_N10S2958C5_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N10S2958C5_ntD0Ev,_ZTv0_n24_N10S2958C5_ntD0Ev)();
extern void ABISELECT(_ZThn40_N10S2958C5_ntD0Ev,_ZThn20_N10S2958C5_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S2958C9_nt__10S2958C5_nt__10S2958C4_nt[] = {
  ABISELECT(-40,-20),
  ABISELECT(-48,-24),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N10S2958C5_ntD1Ev,_ZTv0_n24_N10S2958C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N10S2958C5_ntD0Ev,_ZTv0_n24_N10S2958C5_ntD0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N10S2958C5_ntD1Ev,_ZTvn8_n24_N10S2958C5_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n48_N10S2958C5_ntD0Ev,_ZTvn8_n24_N10S2958C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2958C1010S2958C9_nt__10S2958C5_nt__10S2958C4_nt[] = {
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N10S2958C5_ntD1Ev,_ZTvn8_n24_N10S2958C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N10S2958C5_ntD0Ev,_ZTvn8_n24_N10S2958C5_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S2958C11_nt__10S2958C5_nt__10S2958C4_nt[] = {
  ABISELECT(-80,-40),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
};
extern void _ZN10S2958C9_ntD1Ev();
extern void _ZN10S2958C9_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C9_nt__10S2958C4_nt[] = {
  ABISELECT(-48,-24),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C9_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C9_ntD0Ev,
};
extern void _ZN8S2958C10D1Ev();
extern void _ZN8S2958C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2958C1010S2958C9_nt__10S2958C4_nt[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S2958C10[0]),
  (VTBL_ENTRY)&_ZN8S2958C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2958C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__8S2958C1010S2958C9_nt__10S2958C4_nt[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S2958C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev),
};
extern void ABISELECT(_ZThn16_N10S2958C9_ntD1Ev,_ZThn8_N10S2958C9_ntD1Ev)();
extern void ABISELECT(_ZThn16_N10S2958C9_ntD0Ev,_ZThn8_N10S2958C9_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2958C10__10S2958C9_nt__10S2958C4_nt[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI10S2958C9_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N10S2958C9_ntD1Ev,_ZThn8_N10S2958C9_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N10S2958C9_ntD0Ev,_ZThn8_N10S2958C9_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N10S2958C9_ntD1Ev,_ZTv0_n12_N10S2958C9_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N10S2958C9_ntD0Ev,_ZTv0_n12_N10S2958C9_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A1__10S2958C9_nt__10S2958C4_nt[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI10S2958C9_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C9_ntD1Ev,_ZTv0_n12_N10S2958C9_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C9_ntD0Ev,_ZTv0_n12_N10S2958C9_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S2958C11_nt__10S2958C9_nt__10S2958C4_nt[] = {
  ABISELECT(-80,-40),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI10S2958C9_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S2958C11_nt__10S2958C4_nt[] = {
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI11S2958C11_nt[0]),
};
static  VTT_ENTRY vtt_S2958C4_nt[] = {
  {&(_ZTV10S2958C4_nt[7]),  7,47},
  {&(_ZTV10S2958C4_nt[18]),  18,47},
  {&(_ZTV10S2958C4_nt[29]),  29,47},
  {&(_ZTV10S2958C4_nt[24]),  24,47},
  {&(_ZTV10S2958C4_nt[37]),  37,47},
  {&(_ZTV10S2958C4_nt[42]),  42,47},
  {&(_ZTV10S2958C4_nt[47]),  47,47},
  {&(_tg__ZTV10S2958C5_nt__10S2958C4_nt[6]),  6,9},
  {&(_tg__ZTV10S2958C8_nt10S2958C5_nt__10S2958C4_nt[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__10S2958C8_nt10S2958C5_nt__10S2958C4_nt[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__A1__10S2958C5_nt__10S2958C4_nt[3]),  3,5},
  {&(_tg__ZTV10S2958C8_nt__10S2958C5_nt__10S2958C4_nt[3]),  3,5},
  {&(_tg__ZTV10S2958C9_nt__10S2958C5_nt__10S2958C4_nt[6]),  6,8},
  {&(_tg__ZTV8S2958C1010S2958C9_nt__10S2958C5_nt__10S2958C4_nt[3]),  3,5},
  {&(_tg__ZTV11S2958C11_nt__10S2958C5_nt__10S2958C4_nt[3]),  3,3},
  {&(_tg__ZTV10S2958C9_nt__10S2958C4_nt[5]),  5,7},
  {&(_tg__ZTV8S2958C1010S2958C9_nt__10S2958C4_nt[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__8S2958C1010S2958C9_nt__10S2958C4_nt[3]),  3,5},
  {&(_tg__ZTV8S2958C10__10S2958C9_nt__10S2958C4_nt[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__A1__10S2958C9_nt__10S2958C4_nt[3]),  3,5},
  {&(_tg__ZTV11S2958C11_nt__10S2958C9_nt__10S2958C4_nt[3]),  3,3},
  {&(_tg__ZTV11S2958C11_nt__10S2958C4_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI10S2958C4_nt[];
VTBL_ENTRY *P__ZTI10S2958C4_nt = _ZTI10S2958C4_nt; 
extern  VTBL_ENTRY _ZTV10S2958C4_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C4_nt[];
static VTBL_ENTRY alt_thunk_names64[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N10S2958C5_ntD0Ev,_ZTv0_n24_N10S2958C5_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N10S2958C5_ntD0Ev,_ZThn20_N10S2958C5_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N10S2958C5_ntD1Ev,_ZTv0_n24_N10S2958C5_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N10S2958C5_ntD1Ev,_ZThn20_N10S2958C5_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S2958C5_ntD0Ev,_ZTv0_n12_N10S2958C5_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N10S2958C5_ntD0Ev,_ZThn12_N10S2958C5_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S2958C5_ntD1Ev,_ZTv0_n12_N10S2958C5_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N10S2958C5_ntD1Ev,_ZThn12_N10S2958C5_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S2958C8_ntD0Ev,_ZTv0_n12_N10S2958C8_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N10S2958C8_ntD0Ev,_ZThn4_N10S2958C8_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S2958C8_ntD1Ev,_ZTv0_n12_N10S2958C8_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N10S2958C8_ntD1Ev,_ZThn4_N10S2958C8_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N10S2958C4_ntD0Ev,_ZTv0_n24_N10S2958C4_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N10S2958C4_ntD0Ev,_ZThn24_N10S2958C4_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N10S2958C4_ntD1Ev,_ZTv0_n24_N10S2958C4_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N10S2958C4_ntD1Ev,_ZThn24_N10S2958C4_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S2958C4_ntD0Ev,_ZTv0_n12_N10S2958C4_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N10S2958C4_ntD0Ev,_ZThn16_N10S2958C4_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S2958C4_ntD1Ev,_ZTv0_n12_N10S2958C4_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N10S2958C4_ntD1Ev,_ZThn16_N10S2958C4_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N10S2958C4_ntD0Ev,_ZTv0_n28_N10S2958C4_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N10S2958C4_ntD0Ev,_ZThn4_N10S2958C4_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N10S2958C4_ntD1Ev,_ZTv0_n28_N10S2958C4_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N10S2958C4_ntD1Ev,_ZThn4_N10S2958C4_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2958C4_nt = {  "S2958C4_nt", // class name
  bases_S2958C4_nt, 14,
  &(vtc_S2958C4_nt[0]), // expected_vtbl_contents
  &(vtt_S2958C4_nt[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI10S2958C4_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV10S2958C4_nt),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT10S2958C4_nt),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names64,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2958C12_nt  : virtual S731C14_nt , virtual S2958C9_nt , virtual S2958C2 , virtual S2958C6_nt , S2958C10 {
  char s2958c12f0:8;
  ~S2958C12_nt(); // tgen
  S2958C12_nt(); // tgen
};
//SIG(-1 S2958C12_nt) C1{ VBC2{ vd m Fp} VBC3{ BC2 BC4{ VBC2 vd} VBC5{ VBC6{ m} FD} BC7{ BC6} BC6 vd} VBC7 VBC8{ BC2} BC4 Fc:8}


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

//skip512 S2958C12_nt

#else // __cplusplus

extern void _ZN11S2958C12_ntC1Ev();
extern void _ZN11S2958C12_ntD1Ev();
Name_Map name_map_S2958C12_nt[] = {
  NSPAIR(_ZN11S2958C12_ntC1Ev),
  NSPAIR(_ZN11S2958C12_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S2958C10;
extern VTBL_ENTRY _ZTI8S2958C10[];
extern  VTBL_ENTRY _ZTV8S2958C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2958C10[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S2958C11_nt;
extern VTBL_ENTRY _ZTI11S2958C11_nt[];
extern  VTBL_ENTRY _ZTV11S2958C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S2958C11_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S2958C2;
extern VTBL_ENTRY _ZTI7S2958C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S2958C9_nt;
extern VTBL_ENTRY _ZTI10S2958C9_nt[];
extern  VTBL_ENTRY _ZTV10S2958C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C9_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S2958C2;
extern VTBL_ENTRY _ZTI7S2958C2[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S2958C6_nt;
extern VTBL_ENTRY _ZTI10S2958C6_nt[];
extern  VTBL_ENTRY _ZTV10S2958C6_nt[];
extern Class_Descriptor cd_S2958C10;
extern VTBL_ENTRY _ZTI8S2958C10[];
extern  VTBL_ENTRY _ZTV8S2958C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2958C10[];
static Base_Class bases_S2958C12_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C14_nt,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C14_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S2958C10,    ABISELECT(48,24), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2958C11_nt,    ABISELECT(64,32), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S2958C2,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S2958C9_nt,    ABISELECT(32,16), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S2958C2,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C14_nt,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S2958C6_nt,    ABISELECT(96,48), //bcp->offset
    31, //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
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2958C10,    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 _ZTI11S2958C12_nt[];
extern void _ZN11S2958C12_ntD1Ev();
extern void _ZN11S2958C12_ntD0Ev();
extern void ABISELECT(_ZTv0_n24_N11S2958C12_ntD1Ev,_ZTv0_n12_N11S2958C12_ntD1Ev)();
extern void ABISELECT(_ZThn16_N11S2958C12_ntD1Ev,_ZThn8_N11S2958C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N11S2958C12_ntD0Ev,_ZTv0_n12_N11S2958C12_ntD0Ev)();
extern void ABISELECT(_ZThn16_N11S2958C12_ntD0Ev,_ZThn8_N11S2958C12_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N11S2958C12_ntD1Ev,_ZTv0_n24_N11S2958C12_ntD1Ev)();
extern void ABISELECT(_ZThn32_N11S2958C12_ntD1Ev,_ZThn16_N11S2958C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N11S2958C12_ntD0Ev,_ZTv0_n24_N11S2958C12_ntD0Ev)();
extern void ABISELECT(_ZThn32_N11S2958C12_ntD0Ev,_ZThn16_N11S2958C12_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N11S2958C12_ntD1Ev,_ZTvn8_n24_N11S2958C12_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n48_N11S2958C12_ntD0Ev,_ZTvn8_n24_N11S2958C12_ntD0Ev)();
extern void ABISELECT(_ZTv0_n24_N11S2958C12_ntD1Ev,_ZTv0_n12_N11S2958C12_ntD1Ev)();
extern void ABISELECT(_ZThn96_N11S2958C12_ntD1Ev,_ZThn48_N11S2958C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N11S2958C12_ntD0Ev,_ZTv0_n12_N11S2958C12_ntD0Ev)();
extern void ABISELECT(_ZThn96_N11S2958C12_ntD0Ev,_ZThn48_N11S2958C12_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2958C12_nt[] = {
  ABISELECT(96,48),
  ABISELECT(96,48),
  0,
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI11S2958C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S2958C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S2958C12_ntD0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI11S2958C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N11S2958C12_ntD1Ev,_ZTv0_n12_N11S2958C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N11S2958C12_ntD0Ev,_ZTv0_n12_N11S2958C12_ntD0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI11S2958C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S2958C12_ntD1Ev,_ZTv0_n24_N11S2958C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S2958C12_ntD0Ev,_ZTv0_n24_N11S2958C12_ntD0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI11S2958C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N11S2958C12_ntD1Ev,_ZTvn8_n24_N11S2958C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N11S2958C12_ntD0Ev,_ZTvn8_n24_N11S2958C12_ntD0Ev),
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI11S2958C12_nt[0]),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI11S2958C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N11S2958C12_ntD1Ev,_ZTv0_n12_N11S2958C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N11S2958C12_ntD0Ev,_ZTv0_n12_N11S2958C12_ntD0Ev),
};
extern VTBL_ENTRY _ZTV11S2958C12_nt[];
extern void _ZN8S2958C10D1Ev();
extern void _ZN8S2958C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2958C10__A1__11S2958C12_nt[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S2958C10[0]),
  (VTBL_ENTRY)&_ZN8S2958C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2958C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S2958C10D1Ev,_ZThn8_N8S2958C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev)();
extern void ABISELECT(_ZThn16_N8S2958C10D0Ev,_ZThn8_N8S2958C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__8S2958C10__A1__11S2958C12_nt[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S2958C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev),
};
extern void _ZN10S2958C9_ntD1Ev();
extern void _ZN10S2958C9_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C9_nt__11S2958C12_nt[] = {
  ABISELECT(-32,-16),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C9_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C9_ntD0Ev,
};
extern void _ZN8S2958C10D1Ev();
extern void _ZN8S2958C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2958C1010S2958C9_nt__11S2958C12_nt[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S2958C10[0]),
  (VTBL_ENTRY)&_ZN8S2958C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2958C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__8S2958C1010S2958C9_nt__11S2958C12_nt[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S2958C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev),
};
extern void ABISELECT(_ZThn16_N10S2958C9_ntD1Ev,_ZThn8_N10S2958C9_ntD1Ev)();
extern void ABISELECT(_ZThn16_N10S2958C9_ntD0Ev,_ZThn8_N10S2958C9_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2958C10__10S2958C9_nt__11S2958C12_nt[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI10S2958C9_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N10S2958C9_ntD1Ev,_ZThn8_N10S2958C9_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N10S2958C9_ntD0Ev,_ZThn8_N10S2958C9_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N10S2958C9_ntD1Ev,_ZTv0_n12_N10S2958C9_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N10S2958C9_ntD0Ev,_ZTv0_n12_N10S2958C9_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A1__10S2958C9_nt__11S2958C12_nt[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI10S2958C9_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C9_ntD1Ev,_ZTv0_n12_N10S2958C9_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C9_ntD0Ev,_ZTv0_n12_N10S2958C9_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S2958C11_nt__10S2958C9_nt__11S2958C12_nt[] = {
  ABISELECT(-64,-32),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI10S2958C9_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S2958C11_nt__11S2958C12_nt[] = {
  ABISELECT(-64,-32),
  0,
  (VTBL_ENTRY)&(_ZTI11S2958C11_nt[0]),
};
static  VTT_ENTRY vtt_S2958C12_nt[] = {
  {&(_ZTV11S2958C12_nt[8]),  8,36},
  {&(_tg__ZTV8S2958C10__A1__11S2958C12_nt[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__8S2958C10__A1__11S2958C12_nt[3]),  3,5},
  {&(_ZTV11S2958C12_nt[13]),  13,36},
  {&(_ZTV11S2958C12_nt[21]),  21,36},
  {&(_ZTV11S2958C12_nt[26]),  26,36},
  {&(_ZTV11S2958C12_nt[31]),  31,36},
  {&(_ZTV11S2958C12_nt[34]),  34,36},
  {&(_tg__ZTV10S2958C9_nt__11S2958C12_nt[5]),  5,7},
  {&(_tg__ZTV8S2958C1010S2958C9_nt__11S2958C12_nt[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__8S2958C1010S2958C9_nt__11S2958C12_nt[3]),  3,5},
  {&(_tg__ZTV8S2958C10__10S2958C9_nt__11S2958C12_nt[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__A1__10S2958C9_nt__11S2958C12_nt[3]),  3,5},
  {&(_tg__ZTV11S2958C11_nt__10S2958C9_nt__11S2958C12_nt[3]),  3,3},
  {&(_tg__ZTV11S2958C11_nt__11S2958C12_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI11S2958C12_nt[];
VTBL_ENTRY *P__ZTI11S2958C12_nt = _ZTI11S2958C12_nt; 
extern  VTBL_ENTRY _ZTV11S2958C12_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S2958C12_nt[];
static VTBL_ENTRY alt_thunk_names65[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S2958C10D0Ev,_ZThn8_N8S2958C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S2958C10D1Ev,_ZThn8_N8S2958C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S2958C12_ntD0Ev,_ZTv0_n24_N11S2958C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N11S2958C12_ntD0Ev,_ZThn16_N11S2958C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S2958C12_ntD1Ev,_ZTv0_n24_N11S2958C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N11S2958C12_ntD1Ev,_ZThn16_N11S2958C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N11S2958C12_ntD0Ev,_ZTv0_n12_N11S2958C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N11S2958C12_ntD0Ev,_ZThn48_N11S2958C12_ntD0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N11S2958C12_ntD0Ev,_ZThn8_N11S2958C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N11S2958C12_ntD1Ev,_ZTv0_n12_N11S2958C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N11S2958C12_ntD1Ev,_ZThn48_N11S2958C12_ntD1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N11S2958C12_ntD1Ev,_ZThn8_N11S2958C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2958C12_nt = {  "S2958C12_nt", // class name
  bases_S2958C12_nt, 14,
  &(vtc_S2958C12_nt[0]), // expected_vtbl_contents
  &(vtt_S2958C12_nt[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI11S2958C12_nt),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV11S2958C12_nt),36, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S2958C12_nt),15, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names65,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2958C13_nt  : virtual S2958C6_nt , virtual S2958C11_nt , S2958C5_nt , virtual S2958C4_nt {
  virtual  ~S2958C13_nt(); // _ZN11S2958C13_ntD2Ev
  S2958C13_nt(); // tgen
};
//SIG(-1 S2958C13_nt) C1{ VBC2{ BC3{ vd m Fp}} VBC4{ VBC5{ m} FD} BC6{ BC5 BC2 VBC3 BC7{ VBC3 vd} VBC8{ BC3 BC9{ VBC3 vd} VBC4 BC10{ BC5} BC5 vd} v1} VBC11{ VBC6 vd v2} vd}


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

//skip512 S2958C13_nt

#else // __cplusplus

extern void _ZN11S2958C13_ntC1Ev();
extern void _ZN11S2958C13_ntD2Ev();
Name_Map name_map_S2958C13_nt[] = {
  NSPAIR(_ZN11S2958C13_ntC1Ev),
  NSPAIR(_ZN11S2958C13_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S2958C6_nt;
extern VTBL_ENTRY _ZTI10S2958C6_nt[];
extern  VTBL_ENTRY _ZTV10S2958C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S2958C11_nt;
extern VTBL_ENTRY _ZTI11S2958C11_nt[];
extern  VTBL_ENTRY _ZTV11S2958C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S2958C11_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S2958C6_nt;
extern VTBL_ENTRY _ZTI10S2958C6_nt[];
extern  VTBL_ENTRY _ZTV10S2958C6_nt[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S2958C8_nt;
extern VTBL_ENTRY _ZTI10S2958C8_nt[];
extern  VTBL_ENTRY _ZTV10S2958C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C8_nt[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S2958C10;
extern VTBL_ENTRY _ZTI8S2958C10[];
extern  VTBL_ENTRY _ZTV8S2958C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2958C10[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S2958C2;
extern VTBL_ENTRY _ZTI7S2958C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S2958C9_nt;
extern VTBL_ENTRY _ZTI10S2958C9_nt[];
extern  VTBL_ENTRY _ZTV10S2958C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C9_nt[];
extern Class_Descriptor cd_S2958C5_nt;
extern VTBL_ENTRY _ZTI10S2958C5_nt[];
extern  VTBL_ENTRY _ZTV10S2958C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S2958C6_nt;
extern VTBL_ENTRY _ZTI10S2958C6_nt[];
extern  VTBL_ENTRY _ZTV10S2958C6_nt[];
extern Class_Descriptor cd_S2958C8_nt;
extern VTBL_ENTRY _ZTI10S2958C8_nt[];
extern  VTBL_ENTRY _ZTV10S2958C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C8_nt[];
extern Class_Descriptor cd_S2958C5_nt;
extern VTBL_ENTRY _ZTI10S2958C5_nt[];
extern  VTBL_ENTRY _ZTV10S2958C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C5_nt[];
extern Class_Descriptor cd_S2958C4_nt;
extern VTBL_ENTRY _ZTI10S2958C4_nt[];
extern  VTBL_ENTRY _ZTV10S2958C4_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C4_nt[];
static Base_Class bases_S2958C13_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C14_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2958C6_nt,    ABISELECT(24,12), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(80,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S2958C11_nt,    ABISELECT(48,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C14_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S2958C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C14_nt,    ABISELECT(80,36), //bcp->offset
    25, //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
    4, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S2958C8_nt,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C14_nt,    ABISELECT(96,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S2958C10,    ABISELECT(112,52), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(96,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S2958C2,    ABISELECT(96,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(120,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_S2958C9_nt,    ABISELECT(96,44), //bcp->offset
    30, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S2958C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    ABISELECT(136,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_S731C14_nt,    ABISELECT(136,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
    8, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S2958C6_nt,    ABISELECT(136,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
    9, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S2958C8_nt,    ABISELECT(152,72), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S2958C5_nt,    ABISELECT(136,64), //bcp->offset
    55, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S2958C4_nt,    ABISELECT(128,60), //bcp->offset
    43, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI11S2958C13_nt[];
extern void _ZN11S2958C13_ntD1Ev();
extern void _ZN11S2958C13_ntD0Ev();
extern void _ZN10S2958C5_nt2v1Ev();
extern void ABISELECT(_ZThn16_N11S2958C13_ntD1Ev,_ZThn8_N11S2958C13_ntD1Ev)();
extern void ABISELECT(_ZThn16_N11S2958C13_ntD0Ev,_ZThn8_N11S2958C13_ntD0Ev)();
extern void ABISELECT(_ZTv0_n24_N11S2958C13_ntD1Ev,_ZTv0_n12_N11S2958C13_ntD1Ev)();
extern void ABISELECT(_ZThn24_N11S2958C13_ntD1Ev,_ZThn12_N11S2958C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N11S2958C13_ntD0Ev,_ZTv0_n12_N11S2958C13_ntD0Ev)();
extern void ABISELECT(_ZThn24_N11S2958C13_ntD0Ev,_ZThn12_N11S2958C13_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N11S2958C13_ntD1Ev,_ZTv0_n12_N11S2958C13_ntD1Ev)();
extern void ABISELECT(_ZThn80_N11S2958C13_ntD1Ev,_ZThn36_N11S2958C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N11S2958C13_ntD0Ev,_ZTv0_n12_N11S2958C13_ntD0Ev)();
extern void ABISELECT(_ZThn80_N11S2958C13_ntD0Ev,_ZThn36_N11S2958C13_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N11S2958C13_ntD1Ev,_ZTv0_n24_N11S2958C13_ntD1Ev)();
extern void ABISELECT(_ZThn96_N11S2958C13_ntD1Ev,_ZThn44_N11S2958C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N11S2958C13_ntD0Ev,_ZTv0_n24_N11S2958C13_ntD0Ev)();
extern void ABISELECT(_ZThn96_N11S2958C13_ntD0Ev,_ZThn44_N11S2958C13_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N11S2958C13_ntD1Ev,_ZTvn8_n24_N11S2958C13_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n48_N11S2958C13_ntD0Ev,_ZTvn8_n24_N11S2958C13_ntD0Ev)();
extern void ABISELECT(_ZTv0_n64_N11S2958C13_ntD1Ev,_ZTv0_n32_N11S2958C13_ntD1Ev)();
extern void ABISELECT(_ZThn128_N11S2958C13_ntD1Ev,_ZThn60_N11S2958C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N11S2958C13_ntD0Ev,_ZTv0_n32_N11S2958C13_ntD0Ev)();
extern void ABISELECT(_ZThn128_N11S2958C13_ntD0Ev,_ZThn60_N11S2958C13_ntD0Ev)() __attribute__((weak));
extern void _ZN10S2958C4_nt2v2Ev();
extern void ABISELECT(_ZTv0_n56_N11S2958C13_ntD1Ev,_ZTv0_n28_N11S2958C13_ntD1Ev)();
extern void ABISELECT(_ZThn136_N11S2958C13_ntD1Ev,_ZThn64_N11S2958C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N11S2958C13_ntD0Ev,_ZTv0_n28_N11S2958C13_ntD0Ev)();
extern void ABISELECT(_ZThn136_N11S2958C13_ntD0Ev,_ZThn64_N11S2958C13_ntD0Ev)() __attribute__((weak));
extern void _ZN10S2958C5_nt2v1Ev();
extern void ABISELECT(_ZTvn16_n56_N11S2958C13_ntD1Ev,_ZTvn8_n28_N11S2958C13_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n56_N11S2958C13_ntD0Ev,_ZTvn8_n28_N11S2958C13_ntD0Ev)();
static  VTBL_ENTRY vtc_S2958C13_nt[] = {
  ABISELECT(136,64),
  ABISELECT(128,60),
  ABISELECT(24,12),
  ABISELECT(80,36),
  ABISELECT(48,20),
  ABISELECT(96,44),
  ABISELECT(80,36),
  0,
  (VTBL_ENTRY)&(_ZTI11S2958C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S2958C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S2958C13_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2958C5_nt2v1Ev,
  ABISELECT(64,28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI11S2958C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N11S2958C13_ntD1Ev,_ZThn8_N11S2958C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N11S2958C13_ntD0Ev,_ZThn8_N11S2958C13_ntD0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI11S2958C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N11S2958C13_ntD1Ev,_ZTv0_n12_N11S2958C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N11S2958C13_ntD0Ev,_ZTv0_n12_N11S2958C13_ntD0Ev),
  ABISELECT(32,16),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI11S2958C13_nt[0]),
  ABISELECT(-80,-36),
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI11S2958C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N11S2958C13_ntD1Ev,_ZTv0_n12_N11S2958C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N11S2958C13_ntD0Ev,_ZTv0_n12_N11S2958C13_ntD0Ev),
  ABISELECT(-96,-44),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI11S2958C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S2958C13_ntD1Ev,_ZTv0_n24_N11S2958C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S2958C13_ntD0Ev,_ZTv0_n24_N11S2958C13_ntD0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-112,-52),
  (VTBL_ENTRY)&(_ZTI11S2958C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N11S2958C13_ntD1Ev,_ZTvn8_n24_N11S2958C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N11S2958C13_ntD0Ev,_ZTvn8_n24_N11S2958C13_ntD0Ev),
  0,
  ABISELECT(-128,-60),
  ABISELECT(-48,-24),
  ABISELECT(-80,-40),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(8,4),
  ABISELECT(-128,-60),
  (VTBL_ENTRY)&(_ZTI11S2958C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N11S2958C13_ntD1Ev,_ZTv0_n32_N11S2958C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N11S2958C13_ntD0Ev,_ZTv0_n32_N11S2958C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S2958C4_nt2v2Ev,
  0,
  ABISELECT(-136,-64),
  ABISELECT(-56,-28),
  ABISELECT(-88,-44),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-136,-64),
  (VTBL_ENTRY)&(_ZTI11S2958C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N11S2958C13_ntD1Ev,_ZTv0_n28_N11S2958C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N11S2958C13_ntD0Ev,_ZTv0_n28_N11S2958C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S2958C5_nt2v1Ev,
  ABISELECT(-72,-36),
  ABISELECT(-152,-72),
  (VTBL_ENTRY)&(_ZTI11S2958C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N11S2958C13_ntD1Ev,_ZTvn8_n28_N11S2958C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N11S2958C13_ntD0Ev,_ZTvn8_n28_N11S2958C13_ntD0Ev),
};
extern VTBL_ENTRY _ZTV11S2958C13_nt[];
extern void _ZN10S2958C5_ntD1Ev();
extern void _ZN10S2958C5_ntD0Ev();
extern void _ZN10S2958C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C5_nt__A__11S2958C13_nt[] = {
  ABISELECT(80,36),
  ABISELECT(48,20),
  ABISELECT(96,44),
  ABISELECT(80,36),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2958C5_nt2v1Ev,
};
extern void _ZN10S2958C8_ntD1Ev();
extern void _ZN10S2958C8_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C8_nt10S2958C5_nt__11S2958C13_nt[] = {
  ABISELECT(64,28),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C8_ntD0Ev,
};
extern void ABISELECT(_ZTv0_n24_N10S2958C8_ntD1Ev,_ZTv0_n12_N10S2958C8_ntD1Ev)();
extern void ABISELECT(_ZThn64_N10S2958C8_ntD1Ev,_ZThn28_N10S2958C8_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N10S2958C8_ntD0Ev,_ZTv0_n12_N10S2958C8_ntD0Ev)();
extern void ABISELECT(_ZThn64_N10S2958C8_ntD0Ev,_ZThn28_N10S2958C8_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__10S2958C8_nt10S2958C5_nt__11S2958C13_nt[] = {
  ABISELECT(-64,-28),
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI10S2958C8_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C8_ntD1Ev,_ZTv0_n12_N10S2958C8_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C8_ntD0Ev,_ZTv0_n12_N10S2958C8_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N10S2958C5_ntD1Ev,_ZTv0_n12_N10S2958C5_ntD1Ev)();
extern void ABISELECT(_ZThn80_N10S2958C5_ntD1Ev,_ZThn36_N10S2958C5_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N10S2958C5_ntD0Ev,_ZTv0_n12_N10S2958C5_ntD0Ev)();
extern void ABISELECT(_ZThn80_N10S2958C5_ntD0Ev,_ZThn36_N10S2958C5_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A1__10S2958C5_nt__A__11S2958C13_nt[] = {
  ABISELECT(-80,-36),
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C5_ntD1Ev,_ZTv0_n12_N10S2958C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C5_ntD0Ev,_ZTv0_n12_N10S2958C5_ntD0Ev),
};
extern void ABISELECT(_ZThn16_N10S2958C5_ntD1Ev,_ZThn8_N10S2958C5_ntD1Ev)();
extern void ABISELECT(_ZThn16_N10S2958C5_ntD0Ev,_ZThn8_N10S2958C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S2958C8_nt__10S2958C5_nt__A__11S2958C13_nt[] = {
  ABISELECT(64,28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N10S2958C5_ntD1Ev,_ZThn8_N10S2958C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N10S2958C5_ntD0Ev,_ZThn8_N10S2958C5_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n48_N10S2958C5_ntD1Ev,_ZTv0_n24_N10S2958C5_ntD1Ev)();
extern void ABISELECT(_ZThn96_N10S2958C5_ntD1Ev,_ZThn44_N10S2958C5_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N10S2958C5_ntD0Ev,_ZTv0_n24_N10S2958C5_ntD0Ev)();
extern void ABISELECT(_ZThn96_N10S2958C5_ntD0Ev,_ZThn44_N10S2958C5_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S2958C9_nt__10S2958C5_nt__A__11S2958C13_nt[] = {
  ABISELECT(-96,-44),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N10S2958C5_ntD1Ev,_ZTv0_n24_N10S2958C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N10S2958C5_ntD0Ev,_ZTv0_n24_N10S2958C5_ntD0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N10S2958C5_ntD1Ev,_ZTvn8_n24_N10S2958C5_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n48_N10S2958C5_ntD0Ev,_ZTvn8_n24_N10S2958C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2958C1010S2958C9_nt__10S2958C5_nt__A__11S2958C13_nt[] = {
  ABISELECT(-32,-16),
  ABISELECT(-112,-52),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N10S2958C5_ntD1Ev,_ZTvn8_n24_N10S2958C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N10S2958C5_ntD0Ev,_ZTvn8_n24_N10S2958C5_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S2958C11_nt__10S2958C5_nt__A__11S2958C13_nt[] = {
  ABISELECT(32,16),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S2958C11_nt__11S2958C13_nt[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI11S2958C11_nt[0]),
};
extern void _ZN10S2958C9_ntD1Ev();
extern void _ZN10S2958C9_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C9_nt__11S2958C13_nt[] = {
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C9_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C9_ntD0Ev,
};
extern void _ZN8S2958C10D1Ev();
extern void _ZN8S2958C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2958C1010S2958C9_nt__11S2958C13_nt[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S2958C10[0]),
  (VTBL_ENTRY)&_ZN8S2958C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2958C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__8S2958C1010S2958C9_nt__11S2958C13_nt[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S2958C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev),
};
extern void ABISELECT(_ZThn16_N10S2958C9_ntD1Ev,_ZThn8_N10S2958C9_ntD1Ev)();
extern void ABISELECT(_ZThn16_N10S2958C9_ntD0Ev,_ZThn8_N10S2958C9_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2958C10__10S2958C9_nt__11S2958C13_nt[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI10S2958C9_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N10S2958C9_ntD1Ev,_ZThn8_N10S2958C9_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N10S2958C9_ntD0Ev,_ZThn8_N10S2958C9_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N10S2958C9_ntD1Ev,_ZTv0_n12_N10S2958C9_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N10S2958C9_ntD0Ev,_ZTv0_n12_N10S2958C9_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A1__10S2958C9_nt__11S2958C13_nt[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI10S2958C9_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C9_ntD1Ev,_ZTv0_n12_N10S2958C9_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C9_ntD0Ev,_ZTv0_n12_N10S2958C9_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S2958C11_nt__10S2958C9_nt__11S2958C13_nt[] = {
  ABISELECT(32,16),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI10S2958C9_nt[0]),
};
extern void _ZN10S2958C4_ntD1Ev();
extern void _ZN10S2958C4_ntD0Ev();
extern void _ZN10S2958C4_nt2v2Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C4_nt__11S2958C13_nt[] = {
  ABISELECT(-48,-24),
  ABISELECT(-80,-40),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2958C4_nt2v2Ev,
};
extern void ABISELECT(_ZTv0_n56_N10S2958C4_ntD1Ev,_ZTv0_n28_N10S2958C4_ntD1Ev)();
extern void ABISELECT(_ZThn8_N10S2958C4_ntD1Ev,_ZThn4_N10S2958C4_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N10S2958C4_ntD0Ev,_ZTv0_n28_N10S2958C4_ntD0Ev)();
extern void ABISELECT(_ZThn8_N10S2958C4_ntD0Ev,_ZThn4_N10S2958C4_ntD0Ev)() __attribute__((weak));
extern void _ZN10S2958C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C5_nt__10S2958C4_nt__11S2958C13_nt[] = {
  0,
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-88,-44),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N10S2958C4_ntD1Ev,_ZTv0_n28_N10S2958C4_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N10S2958C4_ntD0Ev,_ZTv0_n28_N10S2958C4_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S2958C5_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N10S2958C4_ntD1Ev,_ZTv0_n12_N10S2958C4_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N10S2958C4_ntD0Ev,_ZTv0_n12_N10S2958C4_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A1__10S2958C4_nt__11S2958C13_nt[] = {
  ABISELECT(48,24),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C4_ntD1Ev,_ZTv0_n12_N10S2958C4_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C4_ntD0Ev,_ZTv0_n12_N10S2958C4_ntD0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N10S2958C4_ntD1Ev,_ZTvn8_n28_N10S2958C4_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n56_N10S2958C4_ntD0Ev,_ZTvn8_n28_N10S2958C4_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S2958C8_nt10S2958C5_nt__10S2958C4_nt__11S2958C13_nt[] = {
  ABISELECT(-72,-36),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N10S2958C4_ntD1Ev,_ZTvn8_n28_N10S2958C4_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N10S2958C4_ntD0Ev,_ZTvn8_n28_N10S2958C4_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n48_N10S2958C4_ntD1Ev,_ZTv0_n24_N10S2958C4_ntD1Ev)();
extern void ABISELECT(_ZTv0_n48_N10S2958C4_ntD0Ev,_ZTv0_n24_N10S2958C4_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S2958C9_nt__10S2958C4_nt__11S2958C13_nt[] = {
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N10S2958C4_ntD1Ev,_ZTv0_n24_N10S2958C4_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N10S2958C4_ntD0Ev,_ZTv0_n24_N10S2958C4_ntD0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N10S2958C4_ntD1Ev,_ZTvn8_n24_N10S2958C4_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n48_N10S2958C4_ntD0Ev,_ZTvn8_n24_N10S2958C4_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2958C1010S2958C9_nt__10S2958C4_nt__11S2958C13_nt[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N10S2958C4_ntD1Ev,_ZTvn8_n24_N10S2958C4_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N10S2958C4_ntD0Ev,_ZTvn8_n24_N10S2958C4_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S2958C11_nt__10S2958C4_nt__11S2958C13_nt[] = {
  ABISELECT(32,16),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
};
extern void _ZN10S2958C5_ntD1Ev();
extern void _ZN10S2958C5_ntD0Ev();
extern void _ZN10S2958C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C5_nt__A1__11S2958C13_nt[] = {
  ABISELECT(-56,-28),
  ABISELECT(-88,-44),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2958C5_nt2v1Ev,
};
extern void _ZN10S2958C8_ntD1Ev();
extern void _ZN10S2958C8_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C8_nt10S2958C5_nt__A1__11S2958C13_nt[] = {
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C8_ntD0Ev,
};
extern void ABISELECT(_ZTv0_n24_N10S2958C8_ntD1Ev,_ZTv0_n12_N10S2958C8_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N10S2958C8_ntD0Ev,_ZTv0_n12_N10S2958C8_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__10S2958C8_nt10S2958C5_nt__A1__11S2958C13_nt[] = {
  ABISELECT(72,36),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI10S2958C8_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C8_ntD1Ev,_ZTv0_n12_N10S2958C8_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C8_ntD0Ev,_ZTv0_n12_N10S2958C8_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N10S2958C5_ntD1Ev,_ZTv0_n12_N10S2958C5_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N10S2958C5_ntD0Ev,_ZTv0_n12_N10S2958C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A1__10S2958C5_nt__A1__11S2958C13_nt[] = {
  ABISELECT(56,28),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C5_ntD1Ev,_ZTv0_n12_N10S2958C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C5_ntD0Ev,_ZTv0_n12_N10S2958C5_ntD0Ev),
};
extern void ABISELECT(_ZThn16_N10S2958C5_ntD1Ev,_ZThn8_N10S2958C5_ntD1Ev)();
extern void ABISELECT(_ZThn16_N10S2958C5_ntD0Ev,_ZThn8_N10S2958C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S2958C8_nt__10S2958C5_nt__A1__11S2958C13_nt[] = {
  ABISELECT(-72,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N10S2958C5_ntD1Ev,_ZThn8_N10S2958C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N10S2958C5_ntD0Ev,_ZThn8_N10S2958C5_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n48_N10S2958C5_ntD1Ev,_ZTv0_n24_N10S2958C5_ntD1Ev)();
extern void ABISELECT(_ZTv0_n48_N10S2958C5_ntD0Ev,_ZTv0_n24_N10S2958C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S2958C9_nt__10S2958C5_nt__A1__11S2958C13_nt[] = {
  ABISELECT(40,20),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N10S2958C5_ntD1Ev,_ZTv0_n24_N10S2958C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N10S2958C5_ntD0Ev,_ZTv0_n24_N10S2958C5_ntD0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N10S2958C5_ntD1Ev,_ZTvn8_n24_N10S2958C5_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n48_N10S2958C5_ntD0Ev,_ZTvn8_n24_N10S2958C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2958C1010S2958C9_nt__10S2958C5_nt__A1__11S2958C13_nt[] = {
  ABISELECT(-32,-16),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N10S2958C5_ntD1Ev,_ZTvn8_n24_N10S2958C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N10S2958C5_ntD0Ev,_ZTvn8_n24_N10S2958C5_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S2958C11_nt__10S2958C5_nt__A1__11S2958C13_nt[] = {
  ABISELECT(32,16),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
};
static  VTT_ENTRY vtt_S2958C13_nt[] = {
  {&(_ZTV11S2958C13_nt[9]),  9,71},
  {&(_tg__ZTV10S2958C5_nt__A__11S2958C13_nt[6]),  6,9},
  {&(_tg__ZTV10S2958C8_nt10S2958C5_nt__11S2958C13_nt[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__10S2958C8_nt10S2958C5_nt__11S2958C13_nt[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__A1__10S2958C5_nt__A__11S2958C13_nt[3]),  3,5},
  {&(_tg__ZTV10S2958C8_nt__10S2958C5_nt__A__11S2958C13_nt[3]),  3,5},
  {&(_tg__ZTV10S2958C9_nt__10S2958C5_nt__A__11S2958C13_nt[6]),  6,8},
  {&(_tg__ZTV8S2958C1010S2958C9_nt__10S2958C5_nt__A__11S2958C13_nt[3]),  3,5},
  {&(_tg__ZTV11S2958C11_nt__10S2958C5_nt__A__11S2958C13_nt[3]),  3,3},
  {&(_ZTV11S2958C13_nt[20]),  20,71},
  {&(_ZTV11S2958C13_nt[25]),  25,71},
  {&(_ZTV11S2958C13_nt[28]),  28,71},
  {&(_ZTV11S2958C13_nt[15]),  15,71},
  {&(_ZTV11S2958C13_nt[36]),  36,71},
  {&(_ZTV11S2958C13_nt[41]),  41,71},
  {&(_ZTV11S2958C13_nt[52]),  52,71},
  {&(_ZTV11S2958C13_nt[63]),  63,71},
  {&(_ZTV11S2958C13_nt[69]),  69,71},
  {&(_tg__ZTV11S2958C11_nt__11S2958C13_nt[3]),  3,3},
  {&(_tg__ZTV10S2958C9_nt__11S2958C13_nt[5]),  5,7},
  {&(_tg__ZTV8S2958C1010S2958C9_nt__11S2958C13_nt[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__8S2958C1010S2958C9_nt__11S2958C13_nt[3]),  3,5},
  {&(_tg__ZTV8S2958C10__10S2958C9_nt__11S2958C13_nt[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__A1__10S2958C9_nt__11S2958C13_nt[3]),  3,5},
  {&(_tg__ZTV11S2958C11_nt__10S2958C9_nt__11S2958C13_nt[3]),  3,3},
  {&(_tg__ZTV10S2958C4_nt__11S2958C13_nt[7]),  7,10},
  {&(_tg__ZTV10S2958C5_nt__10S2958C4_nt__11S2958C13_nt[8]),  8,11},
  {&(_tg__ZTV10S731C14_nt__A1__10S2958C4_nt__11S2958C13_nt[3]),  3,5},
  {&(_tg__ZTV10S2958C8_nt10S2958C5_nt__10S2958C4_nt__11S2958C13_nt[3]),  3,5},
  {&(_tg__ZTV10S2958C9_nt__10S2958C4_nt__11S2958C13_nt[6]),  6,8},
  {&(_tg__ZTV8S2958C1010S2958C9_nt__10S2958C4_nt__11S2958C13_nt[3]),  3,5},
  {&(_tg__ZTV11S2958C11_nt__10S2958C4_nt__11S2958C13_nt[3]),  3,3},
  {&(_tg__ZTV10S2958C5_nt__A1__11S2958C13_nt[6]),  6,9},
  {&(_tg__ZTV10S2958C8_nt10S2958C5_nt__A1__11S2958C13_nt[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__10S2958C8_nt10S2958C5_nt__A1__11S2958C13_nt[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__A1__10S2958C5_nt__A1__11S2958C13_nt[3]),  3,5},
  {&(_tg__ZTV10S2958C8_nt__10S2958C5_nt__A1__11S2958C13_nt[3]),  3,5},
  {&(_tg__ZTV10S2958C9_nt__10S2958C5_nt__A1__11S2958C13_nt[6]),  6,8},
  {&(_tg__ZTV8S2958C1010S2958C9_nt__10S2958C5_nt__A1__11S2958C13_nt[3]),  3,5},
  {&(_tg__ZTV11S2958C11_nt__10S2958C5_nt__A1__11S2958C13_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI11S2958C13_nt[];
VTBL_ENTRY *P__ZTI11S2958C13_nt = _ZTI11S2958C13_nt; 
extern  VTBL_ENTRY _ZTV11S2958C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S2958C13_nt[];
static VTBL_ENTRY alt_thunk_names66[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N10S2958C4_ntD0Ev,_ZTv0_n28_N10S2958C4_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N10S2958C4_ntD0Ev,_ZThn4_N10S2958C4_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N10S2958C4_ntD1Ev,_ZTv0_n28_N10S2958C4_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N10S2958C4_ntD1Ev,_ZThn4_N10S2958C4_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N10S2958C5_ntD0Ev,_ZTv0_n24_N10S2958C5_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N10S2958C5_ntD0Ev,_ZThn44_N10S2958C5_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N10S2958C5_ntD1Ev,_ZTv0_n24_N10S2958C5_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N10S2958C5_ntD1Ev,_ZThn44_N10S2958C5_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S2958C5_ntD0Ev,_ZTv0_n12_N10S2958C5_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N10S2958C5_ntD0Ev,_ZThn36_N10S2958C5_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S2958C5_ntD1Ev,_ZTv0_n12_N10S2958C5_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N10S2958C5_ntD1Ev,_ZThn36_N10S2958C5_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S2958C8_ntD0Ev,_ZTv0_n12_N10S2958C8_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N10S2958C8_ntD0Ev,_ZThn28_N10S2958C8_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S2958C8_ntD1Ev,_ZTv0_n12_N10S2958C8_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N10S2958C8_ntD1Ev,_ZThn28_N10S2958C8_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N11S2958C13_ntD0Ev,_ZTv0_n28_N11S2958C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N11S2958C13_ntD0Ev,_ZThn64_N11S2958C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N11S2958C13_ntD1Ev,_ZTv0_n28_N11S2958C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N11S2958C13_ntD1Ev,_ZThn64_N11S2958C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N11S2958C13_ntD0Ev,_ZTv0_n32_N11S2958C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N11S2958C13_ntD0Ev,_ZThn60_N11S2958C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N11S2958C13_ntD1Ev,_ZTv0_n32_N11S2958C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N11S2958C13_ntD1Ev,_ZThn60_N11S2958C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S2958C13_ntD0Ev,_ZTv0_n24_N11S2958C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N11S2958C13_ntD0Ev,_ZThn44_N11S2958C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S2958C13_ntD1Ev,_ZTv0_n24_N11S2958C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N11S2958C13_ntD1Ev,_ZThn44_N11S2958C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N11S2958C13_ntD0Ev,_ZTv0_n12_N11S2958C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N11S2958C13_ntD0Ev,_ZThn36_N11S2958C13_ntD0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N11S2958C13_ntD0Ev,_ZThn12_N11S2958C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N11S2958C13_ntD1Ev,_ZTv0_n12_N11S2958C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N11S2958C13_ntD1Ev,_ZThn36_N11S2958C13_ntD1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N11S2958C13_ntD1Ev,_ZThn12_N11S2958C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2958C13_nt = {  "S2958C13_nt", // class name
  bases_S2958C13_nt, 22,
  &(vtc_S2958C13_nt[0]), // expected_vtbl_contents
  &(vtt_S2958C13_nt[0]), // expected_vtt_contents
  ABISELECT(160,76), // object size
  NSPAIRA(_ZTI11S2958C13_nt),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV11S2958C13_nt),71, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S2958C13_nt),40, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names66,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2958C14_nt  : S2958C10 , virtual S2958C8_nt {
  int s2958c14f0[6];
  virtual  ~S2958C14_nt(); // _ZN11S2958C14_ntD2Ev
  S2958C14_nt(); // tgen
};
//SIG(-1 S2958C14_nt) C1{ BC2{ VBC3{ vd m Fp} vd} VBC4{ VBC3 vd} vd Fi[6]}


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

//skip512 S2958C14_nt

#else // __cplusplus

extern void _ZN11S2958C14_ntC1Ev();
extern void _ZN11S2958C14_ntD2Ev();
Name_Map name_map_S2958C14_nt[] = {
  NSPAIR(_ZN11S2958C14_ntC1Ev),
  NSPAIR(_ZN11S2958C14_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S2958C10;
extern VTBL_ENTRY _ZTI8S2958C10[];
extern  VTBL_ENTRY _ZTV8S2958C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2958C10[];
extern Class_Descriptor cd_S2958C8_nt;
extern VTBL_ENTRY _ZTI10S2958C8_nt[];
extern  VTBL_ENTRY _ZTV10S2958C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C8_nt[];
static Base_Class bases_S2958C14_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C14_nt,    ABISELECT(32,28), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S2958C10,    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_S2958C8_nt,    ABISELECT(48,36), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI11S2958C14_nt[];
extern void _ZN11S2958C14_ntD1Ev();
extern void _ZN11S2958C14_ntD0Ev();
extern void ABISELECT(_ZTv0_n24_N11S2958C14_ntD1Ev,_ZTv0_n12_N11S2958C14_ntD1Ev)();
extern void ABISELECT(_ZThn32_N11S2958C14_ntD1Ev,_ZThn28_N11S2958C14_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N11S2958C14_ntD0Ev,_ZTv0_n12_N11S2958C14_ntD0Ev)();
extern void ABISELECT(_ZThn32_N11S2958C14_ntD0Ev,_ZThn28_N11S2958C14_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N11S2958C14_ntD1Ev,_ZTv0_n16_N11S2958C14_ntD1Ev)();
extern void ABISELECT(_ZThn48_N11S2958C14_ntD1Ev,_ZThn36_N11S2958C14_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N11S2958C14_ntD0Ev,_ZTv0_n16_N11S2958C14_ntD0Ev)();
extern void ABISELECT(_ZThn48_N11S2958C14_ntD0Ev,_ZThn36_N11S2958C14_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2958C14_nt[] = {
  ABISELECT(48,36),
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI11S2958C14_nt[0]),
  (VTBL_ENTRY)&_ZN11S2958C14_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S2958C14_ntD0Ev,
  ABISELECT(-32,-28),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI11S2958C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N11S2958C14_ntD1Ev,_ZTv0_n12_N11S2958C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N11S2958C14_ntD0Ev,_ZTv0_n12_N11S2958C14_ntD0Ev),
  ABISELECT(-48,-36),
  ABISELECT(-16,-8),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI11S2958C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S2958C14_ntD1Ev,_ZTv0_n16_N11S2958C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S2958C14_ntD0Ev,_ZTv0_n16_N11S2958C14_ntD0Ev),
};
extern VTBL_ENTRY _ZTV11S2958C14_nt[];
extern void _ZN8S2958C10D1Ev();
extern void _ZN8S2958C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2958C10__11S2958C14_nt[] = {
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S2958C10[0]),
  (VTBL_ENTRY)&_ZN8S2958C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2958C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev)();
extern void ABISELECT(_ZThn32_N8S2958C10D1Ev,_ZThn28_N8S2958C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev)();
extern void ABISELECT(_ZThn32_N8S2958C10D0Ev,_ZThn28_N8S2958C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__8S2958C10__11S2958C14_nt[] = {
  ABISELECT(-32,-28),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI8S2958C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev),
};
extern void _ZN10S2958C8_ntD1Ev();
extern void _ZN10S2958C8_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C8_nt__11S2958C14_nt[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C8_ntD0Ev,
};
extern void ABISELECT(_ZTv0_n24_N10S2958C8_ntD1Ev,_ZTv0_n12_N10S2958C8_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N10S2958C8_ntD0Ev,_ZTv0_n12_N10S2958C8_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__10S2958C8_nt__11S2958C14_nt[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI10S2958C8_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C8_ntD1Ev,_ZTv0_n12_N10S2958C8_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C8_ntD0Ev,_ZTv0_n12_N10S2958C8_ntD0Ev),
};
static  VTT_ENTRY vtt_S2958C14_nt[] = {
  {&(_ZTV11S2958C14_nt[4]),  4,17},
  {&(_tg__ZTV8S2958C10__11S2958C14_nt[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__8S2958C10__11S2958C14_nt[3]),  3,5},
  {&(_ZTV11S2958C14_nt[9]),  9,17},
  {&(_ZTV11S2958C14_nt[15]),  15,17},
  {&(_tg__ZTV10S2958C8_nt__11S2958C14_nt[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__10S2958C8_nt__11S2958C14_nt[3]),  3,5},
};
extern VTBL_ENTRY _ZTI11S2958C14_nt[];
VTBL_ENTRY *P__ZTI11S2958C14_nt = _ZTI11S2958C14_nt; 
extern  VTBL_ENTRY _ZTV11S2958C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S2958C14_nt[];
static VTBL_ENTRY alt_thunk_names67[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S2958C10D0Ev,_ZThn28_N8S2958C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S2958C10D1Ev,_ZThn28_N8S2958C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S2958C14_ntD0Ev,_ZTv0_n16_N11S2958C14_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N11S2958C14_ntD0Ev,_ZThn36_N11S2958C14_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S2958C14_ntD1Ev,_ZTv0_n16_N11S2958C14_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N11S2958C14_ntD1Ev,_ZThn36_N11S2958C14_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N11S2958C14_ntD0Ev,_ZTv0_n12_N11S2958C14_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N11S2958C14_ntD0Ev,_ZThn28_N11S2958C14_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N11S2958C14_ntD1Ev,_ZTv0_n12_N11S2958C14_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N11S2958C14_ntD1Ev,_ZThn28_N11S2958C14_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2958C14_nt = {  "S2958C14_nt", // class name
  bases_S2958C14_nt, 3,
  &(vtc_S2958C14_nt[0]), // expected_vtbl_contents
  &(vtt_S2958C14_nt[0]), // expected_vtt_contents
  ABISELECT(56,40), // object size
  NSPAIRA(_ZTI11S2958C14_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV11S2958C14_nt),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S2958C14_nt),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names67,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2958C1  : S2958C2 , S2958C4_nt , S2958C12_nt , virtual S2958C13_nt , S2958C14_nt {
  ~S2958C1(); // tgen
  S2958C1(); // tgen
};
//SIG(1 S2958C1) C1{ BC2{ BC3{ m}} BC4{ VBC5{ BC3 BC6{ BC7{ vd m Fp}} VBC7 BC8{ VBC7 vd} VBC9{ BC7 BC10{ VBC7 vd} VBC11{ VBC3 FD} BC2 BC3 vd} v1} vd v2} BC12{ VBC7 VBC9 VBC2 VBC6 BC10 Fc:8} VBC13{ VBC6 VBC11 BC5 VBC4 vd} BC14{ BC10 VBC8 vd Fi[6]}}


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

static void Test_S2958C1()
{
  extern Class_Descriptor cd_S2958C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,31)];
    init_test(&cd_S2958C1, buf);
    S2958C1 *dp, &lv = *(dp=new (buf) S2958C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,120), "sizeof(S2958C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2958C1)");
    /*is_ambiguous_... S2958C1::S2958C2 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S2958C2*), 0, "S2958C1");
    /*is_ambiguous_... S2958C1::S2958C2 */ AMB_check_base_class_offset(lv, (S2958C2*), 0, "S2958C1");
    /*is_ambiguous_... S2958C1::S2958C5_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S2958C5_nt*), ABISELECT(56,40), "S2958C1");
    /*is_ambiguous_... S2958C1::S2958C5_nt */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S2958C6_nt*)(S2958C5_nt*), ABISELECT(56,40), "S2958C1");
    /*is_ambiguous_... S2958C1::S2958C5_nt */ AMB_check_base_class_offset(lv, (S2958C6_nt*)(S2958C5_nt*), ABISELECT(56,40), "S2958C1");
    /*is_ambiguous_... S2958C1::S2958C5_nt */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S2958C5_nt*), ABISELECT(80,52), "S2958C1");
    /*is_ambiguous_... S2958C1::S2958C5_nt */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S2958C8_nt*)(S2958C5_nt*), ABISELECT(80,52), "S2958C1");
    check_base_class_offset(lv, (S731C14_nt*)(S2958C10*)(S2958C9_nt*), ABISELECT(80,52), "S2958C1");
    /*is_ambiguous_... S2958C12_nt::S731C14_nt */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S2958C12_nt*), ABISELECT(80,52), "S2958C1");
    /*is_ambiguous_... S2958C12_nt::S2958C10 */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S2958C10*)(S2958C12_nt*), ABISELECT(80,52), "S2958C1");
    /*is_ambiguous_... S2958C13_nt::S2958C5_nt */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S2958C5_nt*)(S2958C13_nt*), ABISELECT(80,52), "S2958C1");
    /*is_ambiguous_... S2958C13_nt::S2958C5_nt */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S2958C8_nt*)(S2958C5_nt*)(S2958C13_nt*), ABISELECT(80,52), "S2958C1");
    check_base_class_offset(lv, (S731C14_nt*)(S2958C10*)(S2958C14_nt*), ABISELECT(80,52), "S2958C1");
    /*is_ambiguous_... S2958C1::S2958C8_nt */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S2958C8_nt*), ABISELECT(80,52), "S2958C1");
    /*is_ambiguous_... S2958C1::S2958C5_nt */ AMB_check_base_class_offset(lv, (S2958C8_nt*)(S2958C5_nt*), ABISELECT(72,48), "S2958C1");
    /*is_ambiguous_... S2958C9_nt::S731C14_nt */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S2958C9_nt*), ABISELECT(96,60), "S2958C1");
    check_base_class_offset(lv, (S2958C10*)(S2958C9_nt*), ABISELECT(112,68), "S2958C1");
    check_base_class_offset(lv, (S731C17_nt*)(S2958C11_nt*), ABISELECT(160,92), "S2958C1");
    check_base_class_offset(lv, (S2958C11_nt*)(S2958C9_nt*), ABISELECT(128,76), "S2958C1");
    check_base_class_offset(lv, (S2958C11_nt*)(S2958C13_nt*), ABISELECT(128,76), "S2958C1");
    check_base_class_offset(lv, (S731C17_nt*)(S2958C2*)(S2958C9_nt*), ABISELECT(96,60), "S2958C1");
    check_base_class_offset(lv, (S2958C2*)(S2958C9_nt*), ABISELECT(96,60), "S2958C1");
    /*is_ambiguous_... S2958C9_nt::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S2958C9_nt*), ABISELECT(120,72), "S2958C1");
    /*is_ambiguous_... S2958C1::S2958C5_nt */ AMB_check_base_class_offset(lv, (S2958C9_nt*)(S2958C5_nt*), ABISELECT(96,60), "S2958C1");
    check_base_class_offset(lv, (S2958C9_nt*)(S2958C12_nt*), ABISELECT(96,60), "S2958C1");
    /*is_ambiguous_... S2958C13_nt::S2958C5_nt */ AMB_check_base_class_offset(lv, (S2958C9_nt*)(S2958C5_nt*)(S2958C13_nt*), ABISELECT(96,60), "S2958C1");
    /*is_ambiguous_... S2958C1::S2958C4_nt */ AMB_check_base_class_offset(lv, (S2958C5_nt*)(S2958C4_nt*), ABISELECT(56,40), "S2958C1");
    /*is_ambiguous_... S2958C1::S2958C4_nt */ AMB_check_base_class_offset(lv, (S2958C5_nt*)(S2958C4_nt*), ABISELECT(56,40), "S2958C1");
    /*is_ambiguous_... S2958C1::S2958C4_nt */ AMB_check_base_class_offset(lv, (S2958C4_nt*), 0, "S2958C1");
    /*is_ambiguous_... S2958C1::S2958C2 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S2958C2*), ABISELECT(161,93), "S2958C1");
    /*is_ambiguous_... S2958C12_nt::S2958C2 */ AMB_check_base_class_offset(lv, (S2958C2*)(S2958C12_nt*), ABISELECT(161,93), "S2958C1");
    /*is_ambiguous_... S2958C1::S2958C6_nt */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S2958C6_nt*), ABISELECT(160,92), "S2958C1");
    check_base_class_offset(lv, (S2958C6_nt*)(S2958C12_nt*), ABISELECT(160,92), "S2958C1");
    /*is_ambiguous_... S2958C13_nt::S2958C6_nt */ AMB_check_base_class_offset(lv, (S2958C6_nt*)(S2958C13_nt*), ABISELECT(160,92), "S2958C1");
    /*is_ambiguous_... S2958C12_nt::S2958C10 */ AMB_check_base_class_offset(lv, (S2958C10*)(S2958C12_nt*), ABISELECT(8,4), "S2958C1");
    check_base_class_offset(lv, (S2958C12_nt*), ABISELECT(8,4), "S2958C1");
    /*is_ambiguous_... S2958C13_nt::S2958C5_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S2958C5_nt*)(S2958C13_nt*), ABISELECT(176,100), "S2958C1");
    /*is_ambiguous_... S2958C13_nt::S2958C5_nt */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S2958C6_nt*)(S2958C5_nt*)(S2958C13_nt*), ABISELECT(176,100), "S2958C1");
    /*is_ambiguous_... S2958C13_nt::S2958C5_nt */ AMB_check_base_class_offset(lv, (S2958C6_nt*)(S2958C5_nt*)(S2958C13_nt*), ABISELECT(176,100), "S2958C1");
    /*is_ambiguous_... S2958C13_nt::S2958C5_nt */ AMB_check_base_class_offset(lv, (S2958C8_nt*)(S2958C5_nt*)(S2958C13_nt*), ABISELECT(192,108), "S2958C1");
    /*is_ambiguous_... S2958C13_nt::S2958C5_nt */ AMB_check_base_class_offset(lv, (S2958C5_nt*)(S2958C13_nt*), ABISELECT(176,100), "S2958C1");
    check_base_class_offset(lv, (S2958C4_nt*)(S2958C13_nt*), ABISELECT(200,112), "S2958C1");
    check_base_class_offset(lv, (S2958C13_nt*), ABISELECT(176,100), "S2958C1");
    check_base_class_offset(lv, (S2958C10*)(S2958C14_nt*), ABISELECT(24,12), "S2958C1");
    check_base_class_offset(lv, (S2958C8_nt*)(S2958C14_nt*), ABISELECT(208,116), "S2958C1");
    check_base_class_offset(lv, (S2958C14_nt*), ABISELECT(24,12), "S2958C1");
    test_class_info(&lv, &cd_S2958C1);
    dp->~S2958C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2958C1(Test_S2958C1, "S2958C1", ABISELECT(224,120));

#else // __cplusplus

extern void _ZN7S2958C1C1Ev();
extern void _ZN7S2958C1D1Ev();
Name_Map name_map_S2958C1[] = {
  NSPAIR(_ZN7S2958C1C1Ev),
  NSPAIR(_ZN7S2958C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S2958C2;
extern VTBL_ENTRY _ZTI7S2958C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S2958C6_nt;
extern VTBL_ENTRY _ZTI10S2958C6_nt[];
extern  VTBL_ENTRY _ZTV10S2958C6_nt[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S2958C8_nt;
extern VTBL_ENTRY _ZTI10S2958C8_nt[];
extern  VTBL_ENTRY _ZTV10S2958C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C8_nt[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S2958C10;
extern VTBL_ENTRY _ZTI8S2958C10[];
extern  VTBL_ENTRY _ZTV8S2958C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2958C10[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S2958C11_nt;
extern VTBL_ENTRY _ZTI11S2958C11_nt[];
extern  VTBL_ENTRY _ZTV11S2958C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S2958C11_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S2958C2;
extern VTBL_ENTRY _ZTI7S2958C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S2958C9_nt;
extern VTBL_ENTRY _ZTI10S2958C9_nt[];
extern  VTBL_ENTRY _ZTV10S2958C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C9_nt[];
extern Class_Descriptor cd_S2958C5_nt;
extern VTBL_ENTRY _ZTI10S2958C5_nt[];
extern  VTBL_ENTRY _ZTV10S2958C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C5_nt[];
extern Class_Descriptor cd_S2958C4_nt;
extern VTBL_ENTRY _ZTI10S2958C4_nt[];
extern  VTBL_ENTRY _ZTV10S2958C4_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C4_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S2958C2;
extern VTBL_ENTRY _ZTI7S2958C2[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S2958C6_nt;
extern VTBL_ENTRY _ZTI10S2958C6_nt[];
extern  VTBL_ENTRY _ZTV10S2958C6_nt[];
extern Class_Descriptor cd_S2958C10;
extern VTBL_ENTRY _ZTI8S2958C10[];
extern  VTBL_ENTRY _ZTV8S2958C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2958C10[];
extern Class_Descriptor cd_S2958C12_nt;
extern VTBL_ENTRY _ZTI11S2958C12_nt[];
extern  VTBL_ENTRY _ZTV11S2958C12_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S2958C12_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S2958C6_nt;
extern VTBL_ENTRY _ZTI10S2958C6_nt[];
extern  VTBL_ENTRY _ZTV10S2958C6_nt[];
extern Class_Descriptor cd_S2958C8_nt;
extern VTBL_ENTRY _ZTI10S2958C8_nt[];
extern  VTBL_ENTRY _ZTV10S2958C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C8_nt[];
extern Class_Descriptor cd_S2958C5_nt;
extern VTBL_ENTRY _ZTI10S2958C5_nt[];
extern  VTBL_ENTRY _ZTV10S2958C5_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C5_nt[];
extern Class_Descriptor cd_S2958C4_nt;
extern VTBL_ENTRY _ZTI10S2958C4_nt[];
extern  VTBL_ENTRY _ZTV10S2958C4_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C4_nt[];
extern Class_Descriptor cd_S2958C13_nt;
extern VTBL_ENTRY _ZTI11S2958C13_nt[];
extern  VTBL_ENTRY _ZTV11S2958C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S2958C13_nt[];
extern Class_Descriptor cd_S2958C10;
extern VTBL_ENTRY _ZTI8S2958C10[];
extern  VTBL_ENTRY _ZTV8S2958C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2958C10[];
extern Class_Descriptor cd_S2958C8_nt;
extern VTBL_ENTRY _ZTI10S2958C8_nt[];
extern  VTBL_ENTRY _ZTV10S2958C8_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S2958C8_nt[];
extern Class_Descriptor cd_S2958C14_nt;
extern VTBL_ENTRY _ZTI11S2958C14_nt[];
extern  VTBL_ENTRY _ZTV11S2958C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S2958C14_nt[];
static Base_Class bases_S2958C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2958C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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
    15, //immediately_derived
  0, 0},
  {&cd_S731C14_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
    6, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2958C6_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
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C14_nt,    ABISELECT(80,52), //bcp->offset
    47, //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_S2958C8_nt,    ABISELECT(72,48), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C14_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
    3, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S2958C10,    ABISELECT(112,68), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S2958C11_nt,    ABISELECT(128,76), //bcp->offset
    65, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    12, //immediately_derived
  0, 0},
  {&cd_S2958C2,    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
    14, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    14, //immediately_derived
  0, 0},
  {&cd_S2958C9_nt,    ABISELECT(96,60), //bcp->offset
    52, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S2958C5_nt,    ABISELECT(56,40), //bcp->offset
    31, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S2958C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    ABISELECT(161,93), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S2958C2,    ABISELECT(161,93), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S731C14_nt,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S2958C6_nt,    ABISELECT(160,92), //bcp->offset
    68, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S2958C10,    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
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S2958C12_nt,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    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
    27, //immediately_derived
  0, 0},
  {&cd_S731C14_nt,    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
    13, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S2958C6_nt,    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
    14, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S2958C8_nt,    ABISELECT(192,108), //bcp->offset
    87, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S2958C5_nt,    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
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S2958C4_nt,    ABISELECT(200,112), //bcp->offset
    92, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S2958C13_nt,    ABISELECT(176,100), //bcp->offset
    73, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2958C10,    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
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S2958C8_nt,    ABISELECT(208,116), //bcp->offset
    104, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S2958C14_nt,    ABISELECT(24,12), //bcp->offset
    25, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2958C1[];
extern void _ZN7S2958C1D1Ev();
extern void _ZN7S2958C1D0Ev();
extern void _ZN10S2958C4_nt2v2Ev();
extern void ABISELECT(_ZThn8_N7S2958C1D1Ev,_ZThn4_N7S2958C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S2958C1D0Ev,_ZThn4_N7S2958C1D0Ev)();
extern void ABISELECT(_ZThn24_N7S2958C1D1Ev,_ZThn12_N7S2958C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S2958C1D0Ev,_ZThn12_N7S2958C1D0Ev)();
extern void ABISELECT(_ZTv0_n56_N7S2958C1D1Ev,_ZTv0_n28_N7S2958C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S2958C1D1Ev,_ZThn40_N7S2958C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S2958C1D0Ev,_ZTv0_n28_N7S2958C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S2958C1D0Ev,_ZThn40_N7S2958C1D0Ev)() __attribute__((weak));
extern void _ZN10S2958C5_nt2v1Ev();
extern void ABISELECT(_ZTvn16_n56_N7S2958C1D1Ev,_ZTvn8_n28_N7S2958C1D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N7S2958C1D0Ev,_ZTvn8_n28_N7S2958C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2958C1D1Ev,_ZTv0_n12_N7S2958C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S2958C1D1Ev,_ZThn52_N7S2958C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2958C1D0Ev,_ZTv0_n12_N7S2958C1D0Ev)();
extern void ABISELECT(_ZThn80_N7S2958C1D0Ev,_ZThn52_N7S2958C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2958C1D1Ev,_ZTv0_n24_N7S2958C1D1Ev)();
extern void ABISELECT(_ZThn96_N7S2958C1D1Ev,_ZThn60_N7S2958C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2958C1D0Ev,_ZTv0_n24_N7S2958C1D0Ev)();
extern void ABISELECT(_ZThn96_N7S2958C1D0Ev,_ZThn60_N7S2958C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N7S2958C1D1Ev,_ZTvn8_n24_N7S2958C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S2958C1D0Ev,_ZTvn8_n24_N7S2958C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2958C1D1Ev,_ZTv0_n12_N7S2958C1D1Ev)();
extern void ABISELECT(_ZThn160_N7S2958C1D1Ev,_ZThn92_N7S2958C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2958C1D0Ev,_ZTv0_n12_N7S2958C1D0Ev)();
extern void ABISELECT(_ZThn160_N7S2958C1D0Ev,_ZThn92_N7S2958C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S2958C1D1Ev,_ZTv0_n40_N7S2958C1D1Ev)();
extern void ABISELECT(_ZThn176_N7S2958C1D1Ev,_ZThn100_N7S2958C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S2958C1D0Ev,_ZTv0_n40_N7S2958C1D0Ev)();
extern void ABISELECT(_ZThn176_N7S2958C1D0Ev,_ZThn100_N7S2958C1D0Ev)() __attribute__((weak));
extern void _ZN10S2958C5_nt2v1Ev();
extern void ABISELECT(_ZTvn16_n80_N7S2958C1D1Ev,_ZTvn8_n40_N7S2958C1D1Ev)();
extern void ABISELECT(_ZTvn16_n80_N7S2958C1D0Ev,_ZTvn8_n40_N7S2958C1D0Ev)();
extern void ABISELECT(_ZTv0_n64_N7S2958C1D1Ev,_ZTv0_n32_N7S2958C1D1Ev)();
extern void ABISELECT(_ZThn200_N7S2958C1D1Ev,_ZThn112_N7S2958C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S2958C1D0Ev,_ZTv0_n32_N7S2958C1D0Ev)();
extern void ABISELECT(_ZThn200_N7S2958C1D0Ev,_ZThn112_N7S2958C1D0Ev)() __attribute__((weak));
extern void _ZN10S2958C4_nt2v2Ev();
extern void ABISELECT(_ZTv0_n32_N7S2958C1D1Ev,_ZTv0_n16_N7S2958C1D1Ev)();
extern void ABISELECT(_ZThn208_N7S2958C1D1Ev,_ZThn116_N7S2958C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2958C1D0Ev,_ZTv0_n16_N7S2958C1D0Ev)();
extern void ABISELECT(_ZThn208_N7S2958C1D0Ev,_ZThn116_N7S2958C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2958C1[] = {
  ABISELECT(208,116),
  ABISELECT(200,112),
  ABISELECT(176,100),
  ABISELECT(160,92),
  ABISELECT(161,93),
  ABISELECT(160,92),
  ABISELECT(128,76),
  ABISELECT(96,60),
  ABISELECT(80,52),
  ABISELECT(56,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S2958C1[0]),
  (VTBL_ENTRY)&_ZN7S2958C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2958C1D0Ev,
  (VTBL_ENTRY)&_ZN10S2958C4_nt2v2Ev,
  ABISELECT(152,88),
  ABISELECT(153,89),
  ABISELECT(152,88),
  ABISELECT(120,72),
  ABISELECT(88,56),
  ABISELECT(72,48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S2958C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S2958C1D1Ev,_ZThn4_N7S2958C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S2958C1D0Ev,_ZThn4_N7S2958C1D0Ev),
  ABISELECT(184,104),
  ABISELECT(56,40),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S2958C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S2958C1D1Ev,_ZThn12_N7S2958C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S2958C1D0Ev,_ZThn12_N7S2958C1D0Ev),
  0,
  ABISELECT(-56,-40),
  ABISELECT(104,52),
  ABISELECT(72,36),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI7S2958C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S2958C1D1Ev,_ZTv0_n28_N7S2958C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S2958C1D0Ev,_ZTv0_n28_N7S2958C1D0Ev),
  (VTBL_ENTRY)&_ZN10S2958C5_nt2v1Ev,
  ABISELECT(8,4),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S2958C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N7S2958C1D1Ev,_ZTvn8_n28_N7S2958C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N7S2958C1D0Ev,_ZTvn8_n28_N7S2958C1D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S2958C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2958C1D1Ev,_ZTv0_n12_N7S2958C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2958C1D0Ev,_ZTv0_n12_N7S2958C1D0Ev),
  ABISELECT(-96,-60),
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S2958C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2958C1D1Ev,_ZTv0_n24_N7S2958C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2958C1D0Ev,_ZTv0_n24_N7S2958C1D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI7S2958C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2958C1D1Ev,_ZTvn8_n24_N7S2958C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2958C1D0Ev,_ZTvn8_n24_N7S2958C1D0Ev),
  ABISELECT(32,16),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI7S2958C1[0]),
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI7S2958C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2958C1D1Ev,_ZTv0_n12_N7S2958C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2958C1D0Ev,_ZTv0_n12_N7S2958C1D0Ev),
  0,
  ABISELECT(-176,-100),
  ABISELECT(-120,-60),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI7S2958C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S2958C1D1Ev,_ZTv0_n40_N7S2958C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S2958C1D0Ev,_ZTv0_n40_N7S2958C1D0Ev),
  (VTBL_ENTRY)&_ZN10S2958C5_nt2v1Ev,
  ABISELECT(-112,-56),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S2958C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N7S2958C1D1Ev,_ZTvn8_n40_N7S2958C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N7S2958C1D0Ev,_ZTvn8_n40_N7S2958C1D0Ev),
  0,
  ABISELECT(-200,-112),
  ABISELECT(-40,-20),
  ABISELECT(-72,-36),
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-144,-72),
  ABISELECT(-200,-112),
  (VTBL_ENTRY)&(_ZTI7S2958C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S2958C1D1Ev,_ZTv0_n32_N7S2958C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S2958C1D0Ev,_ZTv0_n32_N7S2958C1D0Ev),
  (VTBL_ENTRY)&_ZN10S2958C4_nt2v2Ev,
  ABISELECT(-208,-116),
  ABISELECT(-128,-64),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S2958C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2958C1D1Ev,_ZTv0_n16_N7S2958C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2958C1D0Ev,_ZTv0_n16_N7S2958C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S2958C1[];
extern void _ZN10S2958C4_ntD1Ev();
extern void _ZN10S2958C4_ntD0Ev();
extern void _ZN10S2958C4_nt2v2Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C4_nt__A__7S2958C1[] = {
  ABISELECT(160,92),
  ABISELECT(128,76),
  ABISELECT(96,60),
  ABISELECT(80,52),
  ABISELECT(56,40),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2958C4_nt2v2Ev,
};
extern void ABISELECT(_ZTv0_n56_N10S2958C4_ntD1Ev,_ZTv0_n28_N10S2958C4_ntD1Ev)();
extern void ABISELECT(_ZThn56_N10S2958C4_ntD1Ev,_ZThn40_N10S2958C4_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N10S2958C4_ntD0Ev,_ZTv0_n28_N10S2958C4_ntD0Ev)();
extern void ABISELECT(_ZThn56_N10S2958C4_ntD0Ev,_ZThn40_N10S2958C4_ntD0Ev)() __attribute__((weak));
extern void _ZN10S2958C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C5_nt__10S2958C4_nt__A__7S2958C1[] = {
  0,
  ABISELECT(-56,-40),
  ABISELECT(104,52),
  ABISELECT(72,36),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N10S2958C4_ntD1Ev,_ZTv0_n28_N10S2958C4_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N10S2958C4_ntD0Ev,_ZTv0_n28_N10S2958C4_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S2958C5_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N10S2958C4_ntD1Ev,_ZTv0_n12_N10S2958C4_ntD1Ev)();
extern void ABISELECT(_ZThn80_N10S2958C4_ntD1Ev,_ZThn52_N10S2958C4_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N10S2958C4_ntD0Ev,_ZTv0_n12_N10S2958C4_ntD0Ev)();
extern void ABISELECT(_ZThn80_N10S2958C4_ntD0Ev,_ZThn52_N10S2958C4_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A1__10S2958C4_nt__A__7S2958C1[] = {
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C4_ntD1Ev,_ZTv0_n12_N10S2958C4_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C4_ntD0Ev,_ZTv0_n12_N10S2958C4_ntD0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N10S2958C4_ntD1Ev,_ZTvn8_n28_N10S2958C4_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n56_N10S2958C4_ntD0Ev,_ZTvn8_n28_N10S2958C4_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S2958C8_nt10S2958C5_nt__10S2958C4_nt__A__7S2958C1[] = {
  ABISELECT(8,4),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N10S2958C4_ntD1Ev,_ZTvn8_n28_N10S2958C4_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N10S2958C4_ntD0Ev,_ZTvn8_n28_N10S2958C4_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n48_N10S2958C4_ntD1Ev,_ZTv0_n24_N10S2958C4_ntD1Ev)();
extern void ABISELECT(_ZThn96_N10S2958C4_ntD1Ev,_ZThn60_N10S2958C4_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N10S2958C4_ntD0Ev,_ZTv0_n24_N10S2958C4_ntD0Ev)();
extern void ABISELECT(_ZThn96_N10S2958C4_ntD0Ev,_ZThn60_N10S2958C4_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S2958C9_nt__10S2958C4_nt__A__7S2958C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N10S2958C4_ntD1Ev,_ZTv0_n24_N10S2958C4_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N10S2958C4_ntD0Ev,_ZTv0_n24_N10S2958C4_ntD0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N10S2958C4_ntD1Ev,_ZTvn8_n24_N10S2958C4_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n48_N10S2958C4_ntD0Ev,_ZTvn8_n24_N10S2958C4_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2958C1010S2958C9_nt__10S2958C4_nt__A__7S2958C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N10S2958C4_ntD1Ev,_ZTvn8_n24_N10S2958C4_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N10S2958C4_ntD0Ev,_ZTvn8_n24_N10S2958C4_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S2958C11_nt__10S2958C4_nt__A__7S2958C1[] = {
  ABISELECT(32,16),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
};
extern void _ZN11S2958C12_ntD1Ev();
extern void _ZN11S2958C12_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S2958C12_nt__7S2958C1[] = {
  ABISELECT(152,88),
  ABISELECT(153,89),
  ABISELECT(152,88),
  ABISELECT(120,72),
  ABISELECT(88,56),
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI11S2958C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S2958C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S2958C12_ntD0Ev,
};
extern void _ZN8S2958C10D1Ev();
extern void _ZN8S2958C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2958C1011S2958C12_nt__A1__7S2958C1[] = {
  ABISELECT(72,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S2958C10[0]),
  (VTBL_ENTRY)&_ZN8S2958C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2958C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev)();
extern void ABISELECT(_ZThn72_N8S2958C10D1Ev,_ZThn48_N8S2958C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev)();
extern void ABISELECT(_ZThn72_N8S2958C10D0Ev,_ZThn48_N8S2958C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__8S2958C1011S2958C12_nt__A1__7S2958C1[] = {
  ABISELECT(-72,-48),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S2958C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N11S2958C12_ntD1Ev,_ZTv0_n12_N11S2958C12_ntD1Ev)();
extern void ABISELECT(_ZThn72_N11S2958C12_ntD1Ev,_ZThn48_N11S2958C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N11S2958C12_ntD0Ev,_ZTv0_n12_N11S2958C12_ntD0Ev)();
extern void ABISELECT(_ZThn72_N11S2958C12_ntD0Ev,_ZThn48_N11S2958C12_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__11S2958C12_nt__7S2958C1[] = {
  ABISELECT(-72,-48),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI11S2958C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N11S2958C12_ntD1Ev,_ZTv0_n12_N11S2958C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N11S2958C12_ntD0Ev,_ZTv0_n12_N11S2958C12_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n48_N11S2958C12_ntD1Ev,_ZTv0_n24_N11S2958C12_ntD1Ev)();
extern void ABISELECT(_ZThn88_N11S2958C12_ntD1Ev,_ZThn56_N11S2958C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N11S2958C12_ntD0Ev,_ZTv0_n24_N11S2958C12_ntD0Ev)();
extern void ABISELECT(_ZThn88_N11S2958C12_ntD0Ev,_ZThn56_N11S2958C12_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S2958C9_nt__11S2958C12_nt__7S2958C1[] = {
  ABISELECT(-88,-56),
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI11S2958C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S2958C12_ntD1Ev,_ZTv0_n24_N11S2958C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S2958C12_ntD0Ev,_ZTv0_n24_N11S2958C12_ntD0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N11S2958C12_ntD1Ev,_ZTvn8_n24_N11S2958C12_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n48_N11S2958C12_ntD0Ev,_ZTvn8_n24_N11S2958C12_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2958C1010S2958C9_nt__11S2958C12_nt__7S2958C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI11S2958C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N11S2958C12_ntD1Ev,_ZTvn8_n24_N11S2958C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N11S2958C12_ntD0Ev,_ZTvn8_n24_N11S2958C12_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S2958C11_nt__11S2958C12_nt__7S2958C1[] = {
  ABISELECT(32,16),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI11S2958C12_nt[0]),
};
extern void ABISELECT(_ZTv0_n24_N11S2958C12_ntD1Ev,_ZTv0_n12_N11S2958C12_ntD1Ev)();
extern void ABISELECT(_ZThn152_N11S2958C12_ntD1Ev,_ZThn88_N11S2958C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N11S2958C12_ntD0Ev,_ZTv0_n12_N11S2958C12_ntD0Ev)();
extern void ABISELECT(_ZThn152_N11S2958C12_ntD0Ev,_ZThn88_N11S2958C12_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S2958C6_nt__11S2958C12_nt__7S2958C1[] = {
  ABISELECT(-152,-88),
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI11S2958C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N11S2958C12_ntD1Ev,_ZTv0_n12_N11S2958C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N11S2958C12_ntD0Ev,_ZTv0_n12_N11S2958C12_ntD0Ev),
};
extern void _ZN11S2958C14_ntD1Ev();
extern void _ZN11S2958C14_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S2958C14_nt__7S2958C1[] = {
  ABISELECT(184,104),
  ABISELECT(56,40),
  0,
  (VTBL_ENTRY)&(_ZTI11S2958C14_nt[0]),
  (VTBL_ENTRY)&_ZN11S2958C14_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S2958C14_ntD0Ev,
};
extern void _ZN8S2958C10D1Ev();
extern void _ZN8S2958C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2958C1011S2958C14_nt__A2__7S2958C1[] = {
  ABISELECT(56,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S2958C10[0]),
  (VTBL_ENTRY)&_ZN8S2958C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2958C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev)();
extern void ABISELECT(_ZThn56_N8S2958C10D1Ev,_ZThn40_N8S2958C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev)();
extern void ABISELECT(_ZThn56_N8S2958C10D0Ev,_ZThn40_N8S2958C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__8S2958C1011S2958C14_nt__A2__7S2958C1[] = {
  ABISELECT(-56,-40),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S2958C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N11S2958C14_ntD1Ev,_ZTv0_n12_N11S2958C14_ntD1Ev)();
extern void ABISELECT(_ZThn56_N11S2958C14_ntD1Ev,_ZThn40_N11S2958C14_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N11S2958C14_ntD0Ev,_ZTv0_n12_N11S2958C14_ntD0Ev)();
extern void ABISELECT(_ZThn56_N11S2958C14_ntD0Ev,_ZThn40_N11S2958C14_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__11S2958C14_nt__7S2958C1[] = {
  ABISELECT(-56,-40),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI11S2958C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N11S2958C14_ntD1Ev,_ZTv0_n12_N11S2958C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N11S2958C14_ntD0Ev,_ZTv0_n12_N11S2958C14_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n32_N11S2958C14_ntD1Ev,_ZTv0_n16_N11S2958C14_ntD1Ev)();
extern void ABISELECT(_ZThn184_N11S2958C14_ntD1Ev,_ZThn104_N11S2958C14_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N11S2958C14_ntD0Ev,_ZTv0_n16_N11S2958C14_ntD0Ev)();
extern void ABISELECT(_ZThn184_N11S2958C14_ntD0Ev,_ZThn104_N11S2958C14_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S2958C8_nt__11S2958C14_nt__7S2958C1[] = {
  ABISELECT(-184,-104),
  ABISELECT(-128,-64),
  ABISELECT(-184,-104),
  (VTBL_ENTRY)&(_ZTI11S2958C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S2958C14_ntD1Ev,_ZTv0_n16_N11S2958C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N11S2958C14_ntD0Ev,_ZTv0_n16_N11S2958C14_ntD0Ev),
};
extern void _ZN10S2958C5_ntD1Ev();
extern void _ZN10S2958C5_ntD0Ev();
extern void _ZN10S2958C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C5_nt__7S2958C1[] = {
  ABISELECT(104,52),
  ABISELECT(72,36),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2958C5_nt2v1Ev,
};
extern void _ZN10S2958C8_ntD1Ev();
extern void _ZN10S2958C8_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C8_nt10S2958C5_nt__7S2958C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C8_ntD0Ev,
};
extern void ABISELECT(_ZTv0_n24_N10S2958C8_ntD1Ev,_ZTv0_n12_N10S2958C8_ntD1Ev)();
extern void ABISELECT(_ZThn8_N10S2958C8_ntD1Ev,_ZThn4_N10S2958C8_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N10S2958C8_ntD0Ev,_ZTv0_n12_N10S2958C8_ntD0Ev)();
extern void ABISELECT(_ZThn8_N10S2958C8_ntD0Ev,_ZThn4_N10S2958C8_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__10S2958C8_nt10S2958C5_nt__7S2958C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI10S2958C8_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C8_ntD1Ev,_ZTv0_n12_N10S2958C8_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C8_ntD0Ev,_ZTv0_n12_N10S2958C8_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N10S2958C5_ntD1Ev,_ZTv0_n12_N10S2958C5_ntD1Ev)();
extern void ABISELECT(_ZThn24_N10S2958C5_ntD1Ev,_ZThn12_N10S2958C5_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N10S2958C5_ntD0Ev,_ZTv0_n12_N10S2958C5_ntD0Ev)();
extern void ABISELECT(_ZThn24_N10S2958C5_ntD0Ev,_ZThn12_N10S2958C5_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A1__10S2958C5_nt__7S2958C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C5_ntD1Ev,_ZTv0_n12_N10S2958C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C5_ntD0Ev,_ZTv0_n12_N10S2958C5_ntD0Ev),
};
extern void ABISELECT(_ZThn16_N10S2958C5_ntD1Ev,_ZThn8_N10S2958C5_ntD1Ev)();
extern void ABISELECT(_ZThn16_N10S2958C5_ntD0Ev,_ZThn8_N10S2958C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S2958C8_nt__10S2958C5_nt__7S2958C1[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N10S2958C5_ntD1Ev,_ZThn8_N10S2958C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N10S2958C5_ntD0Ev,_ZThn8_N10S2958C5_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n48_N10S2958C5_ntD1Ev,_ZTv0_n24_N10S2958C5_ntD1Ev)();
extern void ABISELECT(_ZThn40_N10S2958C5_ntD1Ev,_ZThn20_N10S2958C5_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N10S2958C5_ntD0Ev,_ZTv0_n24_N10S2958C5_ntD0Ev)();
extern void ABISELECT(_ZThn40_N10S2958C5_ntD0Ev,_ZThn20_N10S2958C5_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S2958C9_nt__10S2958C5_nt__7S2958C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N10S2958C5_ntD1Ev,_ZTv0_n24_N10S2958C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N10S2958C5_ntD0Ev,_ZTv0_n24_N10S2958C5_ntD0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N10S2958C5_ntD1Ev,_ZTvn8_n24_N10S2958C5_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n48_N10S2958C5_ntD0Ev,_ZTvn8_n24_N10S2958C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2958C1010S2958C9_nt__10S2958C5_nt__7S2958C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N10S2958C5_ntD1Ev,_ZTvn8_n24_N10S2958C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N10S2958C5_ntD0Ev,_ZTvn8_n24_N10S2958C5_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S2958C11_nt__10S2958C5_nt__7S2958C1[] = {
  ABISELECT(32,16),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
};
extern void _ZN10S2958C9_ntD1Ev();
extern void _ZN10S2958C9_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C9_nt__7S2958C1[] = {
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C9_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C9_ntD0Ev,
};
extern void _ZN8S2958C10D1Ev();
extern void _ZN8S2958C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2958C1010S2958C9_nt__7S2958C1[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S2958C10[0]),
  (VTBL_ENTRY)&_ZN8S2958C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2958C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__8S2958C1010S2958C9_nt__7S2958C1[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S2958C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev),
};
extern void ABISELECT(_ZThn16_N10S2958C9_ntD1Ev,_ZThn8_N10S2958C9_ntD1Ev)();
extern void ABISELECT(_ZThn16_N10S2958C9_ntD0Ev,_ZThn8_N10S2958C9_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2958C10__10S2958C9_nt__7S2958C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI10S2958C9_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N10S2958C9_ntD1Ev,_ZThn8_N10S2958C9_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N10S2958C9_ntD0Ev,_ZThn8_N10S2958C9_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N10S2958C9_ntD1Ev,_ZTv0_n12_N10S2958C9_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N10S2958C9_ntD0Ev,_ZTv0_n12_N10S2958C9_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A1__10S2958C9_nt__7S2958C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI10S2958C9_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C9_ntD1Ev,_ZTv0_n12_N10S2958C9_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C9_ntD0Ev,_ZTv0_n12_N10S2958C9_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S2958C11_nt__10S2958C9_nt__7S2958C1[] = {
  ABISELECT(32,16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI10S2958C9_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV11S2958C11_nt__7S2958C1[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI11S2958C11_nt[0]),
};
extern void _ZN11S2958C13_ntD1Ev();
extern void _ZN11S2958C13_ntD0Ev();
extern void _ZN10S2958C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S2958C13_nt__7S2958C1[] = {
  ABISELECT(-120,-60),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI11S2958C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S2958C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S2958C13_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2958C5_nt2v1Ev,
};
extern void _ZN10S2958C5_ntD1Ev();
extern void _ZN10S2958C5_ntD0Ev();
extern void _ZN10S2958C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C5_nt11S2958C13_nt__A1__7S2958C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-80,-40),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2958C5_nt2v1Ev,
};
extern void _ZN10S2958C8_ntD1Ev();
extern void _ZN10S2958C8_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C8_nt10S2958C5_nt11S2958C13_nt__A1__7S2958C1[] = {
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C8_ntD0Ev,
};
extern void ABISELECT(_ZTv0_n24_N10S2958C8_ntD1Ev,_ZTv0_n12_N10S2958C8_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N10S2958C8_ntD0Ev,_ZTv0_n12_N10S2958C8_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__10S2958C8_nt10S2958C5_nt11S2958C13_nt__A1__7S2958C1[] = {
  ABISELECT(112,56),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI10S2958C8_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C8_ntD1Ev,_ZTv0_n12_N10S2958C8_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C8_ntD0Ev,_ZTv0_n12_N10S2958C8_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N10S2958C5_ntD1Ev,_ZTv0_n12_N10S2958C5_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N10S2958C5_ntD0Ev,_ZTv0_n12_N10S2958C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A1__10S2958C5_nt11S2958C13_nt__A1__7S2958C1[] = {
  ABISELECT(96,48),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C5_ntD1Ev,_ZTv0_n12_N10S2958C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C5_ntD0Ev,_ZTv0_n12_N10S2958C5_ntD0Ev),
};
extern void ABISELECT(_ZThn16_N10S2958C5_ntD1Ev,_ZThn8_N10S2958C5_ntD1Ev)();
extern void ABISELECT(_ZThn16_N10S2958C5_ntD0Ev,_ZThn8_N10S2958C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S2958C8_nt__10S2958C5_nt11S2958C13_nt__A1__7S2958C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N10S2958C5_ntD1Ev,_ZThn8_N10S2958C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N10S2958C5_ntD0Ev,_ZThn8_N10S2958C5_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n48_N10S2958C5_ntD1Ev,_ZTv0_n24_N10S2958C5_ntD1Ev)();
extern void ABISELECT(_ZTv0_n48_N10S2958C5_ntD0Ev,_ZTv0_n24_N10S2958C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S2958C9_nt__10S2958C5_nt11S2958C13_nt__A1__7S2958C1[] = {
  ABISELECT(80,40),
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N10S2958C5_ntD1Ev,_ZTv0_n24_N10S2958C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N10S2958C5_ntD0Ev,_ZTv0_n24_N10S2958C5_ntD0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N10S2958C5_ntD1Ev,_ZTvn8_n24_N10S2958C5_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n48_N10S2958C5_ntD0Ev,_ZTvn8_n24_N10S2958C5_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2958C1010S2958C9_nt__10S2958C5_nt11S2958C13_nt__A1__7S2958C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N10S2958C5_ntD1Ev,_ZTvn8_n24_N10S2958C5_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N10S2958C5_ntD0Ev,_ZTvn8_n24_N10S2958C5_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S2958C11_nt__10S2958C5_nt11S2958C13_nt__A1__7S2958C1[] = {
  ABISELECT(32,16),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI10S2958C5_nt[0]),
};
extern void ABISELECT(_ZTv0_n24_N11S2958C13_ntD1Ev,_ZTv0_n12_N11S2958C13_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N11S2958C13_ntD0Ev,_ZTv0_n12_N11S2958C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S2958C6_nt__11S2958C13_nt__7S2958C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI11S2958C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N11S2958C13_ntD1Ev,_ZTv0_n12_N11S2958C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N11S2958C13_ntD0Ev,_ZTv0_n12_N11S2958C13_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S2958C11_nt__11S2958C13_nt__7S2958C1[] = {
  ABISELECT(32,16),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI11S2958C13_nt[0]),
};
extern void ABISELECT(_ZTv0_n24_N11S2958C13_ntD1Ev,_ZTv0_n12_N11S2958C13_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N11S2958C13_ntD0Ev,_ZTv0_n12_N11S2958C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A2__11S2958C13_nt__7S2958C1[] = {
  ABISELECT(96,48),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI11S2958C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N11S2958C13_ntD1Ev,_ZTv0_n12_N11S2958C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N11S2958C13_ntD0Ev,_ZTv0_n12_N11S2958C13_ntD0Ev),
};
extern void ABISELECT(_ZThn16_N11S2958C13_ntD1Ev,_ZThn8_N11S2958C13_ntD1Ev)();
extern void ABISELECT(_ZThn16_N11S2958C13_ntD0Ev,_ZThn8_N11S2958C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S2958C8_nt10S2958C5_nt__11S2958C13_nt__7S2958C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI11S2958C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N11S2958C13_ntD1Ev,_ZThn8_N11S2958C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N11S2958C13_ntD0Ev,_ZThn8_N11S2958C13_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n48_N11S2958C13_ntD1Ev,_ZTv0_n24_N11S2958C13_ntD1Ev)();
extern void ABISELECT(_ZTv0_n48_N11S2958C13_ntD0Ev,_ZTv0_n24_N11S2958C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S2958C9_nt__11S2958C13_nt__7S2958C1[] = {
  ABISELECT(80,40),
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI11S2958C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S2958C13_ntD1Ev,_ZTv0_n24_N11S2958C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S2958C13_ntD0Ev,_ZTv0_n24_N11S2958C13_ntD0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N11S2958C13_ntD1Ev,_ZTvn8_n24_N11S2958C13_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n48_N11S2958C13_ntD0Ev,_ZTvn8_n24_N11S2958C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2958C1010S2958C9_nt__11S2958C13_nt__7S2958C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI11S2958C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N11S2958C13_ntD1Ev,_ZTvn8_n24_N11S2958C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N11S2958C13_ntD0Ev,_ZTvn8_n24_N11S2958C13_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n64_N11S2958C13_ntD1Ev,_ZTv0_n32_N11S2958C13_ntD1Ev)();
extern void ABISELECT(_ZThn24_N11S2958C13_ntD1Ev,_ZThn12_N11S2958C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N11S2958C13_ntD0Ev,_ZTv0_n32_N11S2958C13_ntD0Ev)();
extern void ABISELECT(_ZThn24_N11S2958C13_ntD0Ev,_ZThn12_N11S2958C13_ntD0Ev)() __attribute__((weak));
extern void _ZN10S2958C4_nt2v2Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C4_nt__11S2958C13_nt__7S2958C1[] = {
  0,
  ABISELECT(-24,-12),
  ABISELECT(-40,-20),
  ABISELECT(-72,-36),
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-144,-72),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI11S2958C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N11S2958C13_ntD1Ev,_ZTv0_n32_N11S2958C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N11S2958C13_ntD0Ev,_ZTv0_n32_N11S2958C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S2958C4_nt2v2Ev,
};
extern void ABISELECT(_ZTv0_n56_N11S2958C13_ntD1Ev,_ZTv0_n28_N11S2958C13_ntD1Ev)();
extern void ABISELECT(_ZTv0_n56_N11S2958C13_ntD0Ev,_ZTv0_n28_N11S2958C13_ntD0Ev)();
extern void _ZN10S2958C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C5_nt__A1__11S2958C13_nt__7S2958C1[] = {
  0,
  ABISELECT(120,60),
  ABISELECT(104,52),
  ABISELECT(72,36),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI11S2958C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N11S2958C13_ntD1Ev,_ZTv0_n28_N11S2958C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N11S2958C13_ntD0Ev,_ZTv0_n28_N11S2958C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S2958C5_nt2v1Ev,
};
extern void ABISELECT(_ZTvn16_n56_N11S2958C13_ntD1Ev,_ZTvn8_n28_N11S2958C13_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n56_N11S2958C13_ntD0Ev,_ZTvn8_n28_N11S2958C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S2958C8_nt10S2958C5_nt__A1__11S2958C13_nt__7S2958C1[] = {
  ABISELECT(8,4),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI11S2958C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N11S2958C13_ntD1Ev,_ZTvn8_n28_N11S2958C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N11S2958C13_ntD0Ev,_ZTvn8_n28_N11S2958C13_ntD0Ev),
};
extern void _ZN10S2958C4_ntD1Ev();
extern void _ZN10S2958C4_ntD0Ev();
extern void _ZN10S2958C4_nt2v2Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C4_nt__A1__7S2958C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-72,-36),
  ABISELECT(-104,-52),
  ABISELECT(-120,-60),
  ABISELECT(-144,-72),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2958C4_nt2v2Ev,
};
extern void ABISELECT(_ZTv0_n56_N10S2958C4_ntD1Ev,_ZTv0_n28_N10S2958C4_ntD1Ev)();
extern void ABISELECT(_ZTv0_n56_N10S2958C4_ntD0Ev,_ZTv0_n28_N10S2958C4_ntD0Ev)();
extern void _ZN10S2958C5_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C5_nt__10S2958C4_nt__A1__7S2958C1[] = {
  0,
  ABISELECT(144,72),
  ABISELECT(104,52),
  ABISELECT(72,36),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(144,72),
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N10S2958C4_ntD1Ev,_ZTv0_n28_N10S2958C4_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N10S2958C4_ntD0Ev,_ZTv0_n28_N10S2958C4_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S2958C5_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N10S2958C4_ntD1Ev,_ZTv0_n12_N10S2958C4_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N10S2958C4_ntD0Ev,_ZTv0_n12_N10S2958C4_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A1__10S2958C4_nt__A1__7S2958C1[] = {
  ABISELECT(120,60),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C4_ntD1Ev,_ZTv0_n12_N10S2958C4_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C4_ntD0Ev,_ZTv0_n12_N10S2958C4_ntD0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N10S2958C4_ntD1Ev,_ZTvn8_n28_N10S2958C4_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n56_N10S2958C4_ntD0Ev,_ZTvn8_n28_N10S2958C4_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S2958C8_nt10S2958C5_nt__10S2958C4_nt__A1__7S2958C1[] = {
  ABISELECT(8,4),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N10S2958C4_ntD1Ev,_ZTvn8_n28_N10S2958C4_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N10S2958C4_ntD0Ev,_ZTvn8_n28_N10S2958C4_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n48_N10S2958C4_ntD1Ev,_ZTv0_n24_N10S2958C4_ntD1Ev)();
extern void ABISELECT(_ZTv0_n48_N10S2958C4_ntD0Ev,_ZTv0_n24_N10S2958C4_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S2958C9_nt__10S2958C4_nt__A1__7S2958C1[] = {
  ABISELECT(104,52),
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N10S2958C4_ntD1Ev,_ZTv0_n24_N10S2958C4_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N10S2958C4_ntD0Ev,_ZTv0_n24_N10S2958C4_ntD0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N10S2958C4_ntD1Ev,_ZTvn8_n24_N10S2958C4_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n48_N10S2958C4_ntD0Ev,_ZTvn8_n24_N10S2958C4_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2958C1010S2958C9_nt__10S2958C4_nt__A1__7S2958C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N10S2958C4_ntD1Ev,_ZTvn8_n24_N10S2958C4_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N10S2958C4_ntD0Ev,_ZTvn8_n24_N10S2958C4_ntD0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S2958C11_nt__10S2958C4_nt__A1__7S2958C1[] = {
  ABISELECT(32,16),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI10S2958C4_nt[0]),
};
extern void _ZN10S2958C8_ntD1Ev();
extern void _ZN10S2958C8_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV10S2958C8_nt__A2__7S2958C1[] = {
  ABISELECT(-128,-64),
  0,
  (VTBL_ENTRY)&(_ZTI10S2958C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S2958C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2958C8_ntD0Ev,
};
extern void ABISELECT(_ZTv0_n24_N10S2958C8_ntD1Ev,_ZTv0_n12_N10S2958C8_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N10S2958C8_ntD0Ev,_ZTv0_n12_N10S2958C8_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__10S2958C8_nt__A2__7S2958C1[] = {
  ABISELECT(128,64),
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI10S2958C8_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C8_ntD1Ev,_ZTv0_n12_N10S2958C8_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S2958C8_ntD0Ev,_ZTv0_n12_N10S2958C8_ntD0Ev),
};
static  VTT_ENTRY vtt_S2958C1[] = {
  {&(_ZTV7S2958C1[12]),  12,110},
  {&(_tg__ZTV10S2958C4_nt__A__7S2958C1[7]),  7,10},
  {&(_tg__ZTV10S2958C5_nt__10S2958C4_nt__A__7S2958C1[8]),  8,11},
  {&(_tg__ZTV10S731C14_nt__A1__10S2958C4_nt__A__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S2958C8_nt10S2958C5_nt__10S2958C4_nt__A__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S2958C9_nt__10S2958C4_nt__A__7S2958C1[6]),  6,8},
  {&(_tg__ZTV8S2958C1010S2958C9_nt__10S2958C4_nt__A__7S2958C1[3]),  3,5},
  {&(_tg__ZTV11S2958C11_nt__10S2958C4_nt__A__7S2958C1[3]),  3,3},
  {&(_tg__ZTV11S2958C12_nt__7S2958C1[8]),  8,10},
  {&(_tg__ZTV8S2958C1011S2958C12_nt__A1__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__8S2958C1011S2958C12_nt__A1__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__11S2958C12_nt__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S2958C9_nt__11S2958C12_nt__7S2958C1[6]),  6,8},
  {&(_tg__ZTV8S2958C1010S2958C9_nt__11S2958C12_nt__7S2958C1[3]),  3,5},
  {&(_tg__ZTV11S2958C11_nt__11S2958C12_nt__7S2958C1[3]),  3,3},
  {&(_tg__ZTV10S2958C6_nt__11S2958C12_nt__7S2958C1[3]),  3,5},
  {&(_tg__ZTV11S2958C14_nt__7S2958C1[4]),  4,6},
  {&(_tg__ZTV8S2958C1011S2958C14_nt__A2__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__8S2958C1011S2958C14_nt__A2__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__11S2958C14_nt__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S2958C8_nt__11S2958C14_nt__7S2958C1[4]),  4,6},
  {&(_ZTV7S2958C1[39]),  39,110},
  {&(_ZTV7S2958C1[50]),  50,110},
  {&(_ZTV7S2958C1[45]),  45,110},
  {&(_ZTV7S2958C1[58]),  58,110},
  {&(_ZTV7S2958C1[63]),  63,110},
  {&(_ZTV7S2958C1[68]),  68,110},
  {&(_ZTV7S2958C1[23]),  23,110},
  {&(_ZTV7S2958C1[71]),  71,110},
  {&(_ZTV7S2958C1[84]),  84,110},
  {&(_ZTV7S2958C1[90]),  90,110},
  {&(_ZTV7S2958C1[101]),  101,110},
  {&(_ZTV7S2958C1[29]),  29,110},
  {&(_ZTV7S2958C1[108]),  108,110},
  {&(_tg__ZTV10S2958C5_nt__7S2958C1[6]),  6,9},
  {&(_tg__ZTV10S2958C8_nt10S2958C5_nt__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__10S2958C8_nt10S2958C5_nt__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__A1__10S2958C5_nt__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S2958C8_nt__10S2958C5_nt__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S2958C9_nt__10S2958C5_nt__7S2958C1[6]),  6,8},
  {&(_tg__ZTV8S2958C1010S2958C9_nt__10S2958C5_nt__7S2958C1[3]),  3,5},
  {&(_tg__ZTV11S2958C11_nt__10S2958C5_nt__7S2958C1[3]),  3,3},
  {&(_tg__ZTV10S2958C9_nt__7S2958C1[5]),  5,7},
  {&(_tg__ZTV8S2958C1010S2958C9_nt__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__8S2958C1010S2958C9_nt__7S2958C1[3]),  3,5},
  {&(_tg__ZTV8S2958C10__10S2958C9_nt__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__A1__10S2958C9_nt__7S2958C1[3]),  3,5},
  {&(_tg__ZTV11S2958C11_nt__10S2958C9_nt__7S2958C1[3]),  3,3},
  {&(_tg__ZTV11S2958C11_nt__7S2958C1[3]),  3,3},
  {&(_tg__ZTV11S2958C13_nt__7S2958C1[9]),  9,12},
  {&(_tg__ZTV10S2958C5_nt11S2958C13_nt__A1__7S2958C1[6]),  6,9},
  {&(_tg__ZTV10S2958C8_nt10S2958C5_nt11S2958C13_nt__A1__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__10S2958C8_nt10S2958C5_nt11S2958C13_nt__A1__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__A1__10S2958C5_nt11S2958C13_nt__A1__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S2958C8_nt__10S2958C5_nt11S2958C13_nt__A1__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S2958C9_nt__10S2958C5_nt11S2958C13_nt__A1__7S2958C1[6]),  6,8},
  {&(_tg__ZTV8S2958C1010S2958C9_nt__10S2958C5_nt11S2958C13_nt__A1__7S2958C1[3]),  3,5},
  {&(_tg__ZTV11S2958C11_nt__10S2958C5_nt11S2958C13_nt__A1__7S2958C1[3]),  3,3},
  {&(_tg__ZTV10S2958C6_nt__11S2958C13_nt__7S2958C1[3]),  3,5},
  {&(_tg__ZTV11S2958C11_nt__11S2958C13_nt__7S2958C1[3]),  3,3},
  {&(_tg__ZTV10S731C14_nt__A2__11S2958C13_nt__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S2958C8_nt10S2958C5_nt__11S2958C13_nt__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S2958C9_nt__11S2958C13_nt__7S2958C1[6]),  6,8},
  {&(_tg__ZTV8S2958C1010S2958C9_nt__11S2958C13_nt__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S2958C4_nt__11S2958C13_nt__7S2958C1[9]),  9,12},
  {&(_tg__ZTV10S2958C5_nt__A1__11S2958C13_nt__7S2958C1[8]),  8,11},
  {&(_tg__ZTV10S2958C8_nt10S2958C5_nt__A1__11S2958C13_nt__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S2958C4_nt__A1__7S2958C1[7]),  7,10},
  {&(_tg__ZTV10S2958C5_nt__10S2958C4_nt__A1__7S2958C1[8]),  8,11},
  {&(_tg__ZTV10S731C14_nt__A1__10S2958C4_nt__A1__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S2958C8_nt10S2958C5_nt__10S2958C4_nt__A1__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S2958C9_nt__10S2958C4_nt__A1__7S2958C1[6]),  6,8},
  {&(_tg__ZTV8S2958C1010S2958C9_nt__10S2958C4_nt__A1__7S2958C1[3]),  3,5},
  {&(_tg__ZTV11S2958C11_nt__10S2958C4_nt__A1__7S2958C1[3]),  3,3},
  {&(_tg__ZTV10S2958C8_nt__A2__7S2958C1[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__10S2958C8_nt__A2__7S2958C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2958C1[];
extern  VTBL_ENTRY _ZTV7S2958C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2958C1[];
static VTBL_ENTRY alt_thunk_names68[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N11S2958C13_ntD0Ev,_ZTv0_n32_N11S2958C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N11S2958C13_ntD0Ev,_ZThn12_N11S2958C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N11S2958C13_ntD1Ev,_ZTv0_n32_N11S2958C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N11S2958C13_ntD1Ev,_ZThn12_N11S2958C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N10S2958C5_ntD0Ev,_ZTv0_n24_N10S2958C5_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N10S2958C5_ntD0Ev,_ZThn20_N10S2958C5_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N10S2958C5_ntD1Ev,_ZTv0_n24_N10S2958C5_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N10S2958C5_ntD1Ev,_ZThn20_N10S2958C5_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S2958C5_ntD0Ev,_ZTv0_n12_N10S2958C5_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N10S2958C5_ntD0Ev,_ZThn12_N10S2958C5_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S2958C5_ntD1Ev,_ZTv0_n12_N10S2958C5_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N10S2958C5_ntD1Ev,_ZThn12_N10S2958C5_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S2958C8_ntD0Ev,_ZTv0_n12_N10S2958C8_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N10S2958C8_ntD0Ev,_ZThn4_N10S2958C8_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S2958C8_ntD1Ev,_ZTv0_n12_N10S2958C8_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N10S2958C8_ntD1Ev,_ZThn4_N10S2958C8_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S2958C14_ntD0Ev,_ZTv0_n16_N11S2958C14_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N11S2958C14_ntD0Ev,_ZThn104_N11S2958C14_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N11S2958C14_ntD1Ev,_ZTv0_n16_N11S2958C14_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N11S2958C14_ntD1Ev,_ZThn104_N11S2958C14_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N11S2958C14_ntD0Ev,_ZTv0_n12_N11S2958C14_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N11S2958C14_ntD0Ev,_ZThn40_N11S2958C14_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N11S2958C14_ntD1Ev,_ZTv0_n12_N11S2958C14_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N11S2958C14_ntD1Ev,_ZThn40_N11S2958C14_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S2958C12_ntD0Ev,_ZTv0_n24_N11S2958C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N11S2958C12_ntD0Ev,_ZThn56_N11S2958C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S2958C12_ntD1Ev,_ZTv0_n24_N11S2958C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N11S2958C12_ntD1Ev,_ZThn56_N11S2958C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N11S2958C12_ntD0Ev,_ZTv0_n12_N11S2958C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N11S2958C12_ntD0Ev,_ZThn88_N11S2958C12_ntD0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N11S2958C12_ntD0Ev,_ZThn48_N11S2958C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N11S2958C12_ntD1Ev,_ZTv0_n12_N11S2958C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N11S2958C12_ntD1Ev,_ZThn88_N11S2958C12_ntD1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N11S2958C12_ntD1Ev,_ZThn48_N11S2958C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2958C10D0Ev,_ZTv0_n12_N8S2958C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S2958C10D0Ev,_ZThn40_N8S2958C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S2958C10D0Ev,_ZThn48_N8S2958C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2958C10D1Ev,_ZTv0_n12_N8S2958C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S2958C10D1Ev,_ZThn40_N8S2958C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S2958C10D1Ev,_ZThn48_N8S2958C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N10S2958C4_ntD0Ev,_ZTv0_n24_N10S2958C4_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N10S2958C4_ntD0Ev,_ZThn60_N10S2958C4_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N10S2958C4_ntD1Ev,_ZTv0_n24_N10S2958C4_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N10S2958C4_ntD1Ev,_ZThn60_N10S2958C4_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S2958C4_ntD0Ev,_ZTv0_n12_N10S2958C4_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N10S2958C4_ntD0Ev,_ZThn52_N10S2958C4_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S2958C4_ntD1Ev,_ZTv0_n12_N10S2958C4_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N10S2958C4_ntD1Ev,_ZThn52_N10S2958C4_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N10S2958C4_ntD0Ev,_ZTv0_n28_N10S2958C4_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N10S2958C4_ntD0Ev,_ZThn40_N10S2958C4_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N10S2958C4_ntD1Ev,_ZTv0_n28_N10S2958C4_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N10S2958C4_ntD1Ev,_ZThn40_N10S2958C4_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2958C1D0Ev,_ZTv0_n16_N7S2958C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2958C1D0Ev,_ZThn116_N7S2958C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2958C1D1Ev,_ZTv0_n16_N7S2958C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2958C1D1Ev,_ZThn116_N7S2958C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S2958C1D0Ev,_ZTv0_n32_N7S2958C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S2958C1D0Ev,_ZThn112_N7S2958C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S2958C1D1Ev,_ZTv0_n32_N7S2958C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S2958C1D1Ev,_ZThn112_N7S2958C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S2958C1D0Ev,_ZTv0_n40_N7S2958C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S2958C1D0Ev,_ZThn100_N7S2958C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S2958C1D1Ev,_ZTv0_n40_N7S2958C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S2958C1D1Ev,_ZThn100_N7S2958C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2958C1D0Ev,_ZTv0_n24_N7S2958C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2958C1D0Ev,_ZThn60_N7S2958C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2958C1D1Ev,_ZTv0_n24_N7S2958C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2958C1D1Ev,_ZThn60_N7S2958C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2958C1D0Ev,_ZTv0_n12_N7S2958C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S2958C1D0Ev,_ZThn92_N7S2958C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2958C1D0Ev,_ZThn52_N7S2958C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2958C1D1Ev,_ZTv0_n12_N7S2958C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S2958C1D1Ev,_ZThn92_N7S2958C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2958C1D1Ev,_ZThn52_N7S2958C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S2958C1D0Ev,_ZTv0_n28_N7S2958C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2958C1D0Ev,_ZThn40_N7S2958C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S2958C1D1Ev,_ZTv0_n28_N7S2958C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2958C1D1Ev,_ZThn40_N7S2958C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2958C1 = {  "S2958C1", // class name
  bases_S2958C1, 33,
  &(vtc_S2958C1[0]), // expected_vtbl_contents
  &(vtt_S2958C1[0]), // expected_vtt_contents
  ABISELECT(224,120), // object size
  NSPAIRA(_ZTI7S2958C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S2958C1),110, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2958C1),76, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names68,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3751C2_nt  : S6441C8_nt {
  virtual void  v8(); // _ZN10S3751C2_nt2v8Ev
  virtual void  v9(); // _ZN10S3751C2_nt2v9Ev
  virtual void  v10(); // _ZN10S3751C2_nt3v10Ev
  virtual void  v11(); // _ZN10S3751C2_nt3v11Ev
  virtual void  v12(); // _ZN10S3751C2_nt3v12Ev
  virtual void  v13(); // _ZN10S3751C2_nt3v13Ev
  virtual void  v14(); // _ZN10S3751C2_nt3v14Ev
  virtual void  v15(); // _ZN10S3751C2_nt3v15Ev
  virtual void  v16(); // _ZN10S3751C2_nt3v16Ev
  virtual void  v17(); // _ZN10S3751C2_nt3v17Ev
  virtual void  v18(); // _ZN10S3751C2_nt3v18Ev
  virtual void  v19(); // _ZN10S3751C2_nt3v19Ev
  ~S3751C2_nt(); // tgen
  S3751C2_nt(); // tgen
};
//SIG(-1 S3751C2_nt) C1{ BC2{ vd m Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12}


void  S3751C2_nt ::v8(){vfunc_called(this, "_ZN10S3751C2_nt2v8Ev");}
void  S3751C2_nt ::v9(){vfunc_called(this, "_ZN10S3751C2_nt2v9Ev");}
void  S3751C2_nt ::v10(){vfunc_called(this, "_ZN10S3751C2_nt3v10Ev");}
void  S3751C2_nt ::v11(){vfunc_called(this, "_ZN10S3751C2_nt3v11Ev");}
void  S3751C2_nt ::v12(){vfunc_called(this, "_ZN10S3751C2_nt3v12Ev");}
void  S3751C2_nt ::v13(){vfunc_called(this, "_ZN10S3751C2_nt3v13Ev");}
void  S3751C2_nt ::v14(){vfunc_called(this, "_ZN10S3751C2_nt3v14Ev");}
void  S3751C2_nt ::v15(){vfunc_called(this, "_ZN10S3751C2_nt3v15Ev");}
void  S3751C2_nt ::v16(){vfunc_called(this, "_ZN10S3751C2_nt3v16Ev");}
void  S3751C2_nt ::v17(){vfunc_called(this, "_ZN10S3751C2_nt3v17Ev");}
void  S3751C2_nt ::v18(){vfunc_called(this, "_ZN10S3751C2_nt3v18Ev");}
void  S3751C2_nt ::v19(){vfunc_called(this, "_ZN10S3751C2_nt3v19Ev");}
S3751C2_nt ::~S3751C2_nt(){ note_dtor("S3751C2_nt", this);} // tgen
S3751C2_nt ::S3751C2_nt(){ note_ctor("S3751C2_nt", this);} // tgen

//skip512 S3751C2_nt

#else // __cplusplus

extern void _ZN10S3751C2_ntC1Ev();
extern void _ZN10S3751C2_ntD1Ev();
Name_Map name_map_S3751C2_nt[] = {
  NSPAIR(_ZN10S3751C2_ntC1Ev),
  NSPAIR(_ZN10S3751C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6441C8_nt;
extern VTBL_ENTRY _ZTI10S6441C8_nt[];
extern  VTBL_ENTRY _ZTV10S6441C8_nt[];
static Base_Class bases_S3751C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6441C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S3751C2_nt[];
extern void _ZN10S3751C2_ntD1Ev();
extern void _ZN10S3751C2_ntD0Ev();
extern void _ZN10S3751C2_nt2v8Ev();
extern void _ZN10S3751C2_nt2v9Ev();
extern void _ZN10S3751C2_nt3v10Ev();
extern void _ZN10S3751C2_nt3v11Ev();
extern void _ZN10S3751C2_nt3v12Ev();
extern void _ZN10S3751C2_nt3v13Ev();
extern void _ZN10S3751C2_nt3v14Ev();
extern void _ZN10S3751C2_nt3v15Ev();
extern void _ZN10S3751C2_nt3v16Ev();
extern void _ZN10S3751C2_nt3v17Ev();
extern void _ZN10S3751C2_nt3v18Ev();
extern void _ZN10S3751C2_nt3v19Ev();
static  VTBL_ENTRY vtc_S3751C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3751C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S3751C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_nt3v19Ev,
};
extern VTBL_ENTRY _ZTI10S3751C2_nt[];
VTBL_ENTRY *P__ZTI10S3751C2_nt = _ZTI10S3751C2_nt; 
extern  VTBL_ENTRY _ZTV10S3751C2_nt[];
Class_Descriptor cd_S3751C2_nt = {  "S3751C2_nt", // class name
  bases_S3751C2_nt, 1,
  &(vtc_S3751C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S3751C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S3751C2_nt),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3751C9_nt  {
  ::S731C6_nt s3751c9f0;
  void *s3751c9f1[2];
  void  mf3751c9(); // _ZN10S3751C9_nt8mf3751c9Ev
};
//SIG(-1 S3751C9_nt) C1{ m FC2{ m Fp Fi[2] FC3{ m}} Fp[2]}


void  S3751C9_nt ::mf3751c9(){}

//skip512 S3751C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3751C1  : S3751C2_nt {
  ::S28C39_nt s3751c1f0;
  ::S731C20 s3751c1f1;
  ::S731C16_nt s3751c1f2;
  ::S731C16_nt s3751c1f3;
  char s3751c1f4;
  ::S731C20 s3751c1f5;
  ::S731C20 s3751c1f6;
  ::S3751C9_nt s3751c1f7;
  int s3751c1f8;
  void *s3751c1f9[2];
  virtual  ~S3751C1(); // _ZN7S3751C1D1Ev
  virtual void  v1(); // _ZN7S3751C12v1Ev
  virtual void  v2(); // _ZN7S3751C12v2Ev
  virtual void  v3(); // _ZN7S3751C12v3Ev
  virtual void  v4(); // _ZN7S3751C12v4Ev
  virtual void  v5(); // _ZN7S3751C12v5Ev
  virtual void  v6(); // _ZN7S3751C12v6Ev
  virtual void  v7(); // _ZN7S3751C12v7Ev
  S3751C1(); // tgen
};
//SIG(1 S3751C1) C1{ BC2{ BC3{ vd m Fi} v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19} vd v1 v2 v3 v4 v5 v6 v7 FC4{ m Fp[2]} FC5{ m Fp Fi[2] FC6{ m}} FC7{ m Fp Fi FC6} FC7 Fc FC5 FC5 FC8{ m FC9{ m Fp Fi[2] FC10{ m}} Fp[2]} Fi Fp[2]}


 S3751C1 ::~S3751C1(){ note_dtor("S3751C1", this);}
void  S3751C1 ::v1(){vfunc_called(this, "_ZN7S3751C12v1Ev");}
void  S3751C1 ::v2(){vfunc_called(this, "_ZN7S3751C12v2Ev");}
void  S3751C1 ::v3(){vfunc_called(this, "_ZN7S3751C12v3Ev");}
void  S3751C1 ::v4(){vfunc_called(this, "_ZN7S3751C12v4Ev");}
void  S3751C1 ::v5(){vfunc_called(this, "_ZN7S3751C12v5Ev");}
void  S3751C1 ::v6(){vfunc_called(this, "_ZN7S3751C12v6Ev");}
void  S3751C1 ::v7(){vfunc_called(this, "_ZN7S3751C12v7Ev");}
S3751C1 ::S3751C1(){ note_ctor("S3751C1", this);} // tgen

static void Test_S3751C1()
{
  extern Class_Descriptor cd_S3751C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,33)];
    init_test(&cd_S3751C1, buf);
    S3751C1 *dp, &lv = *(dp=new (buf) S3751C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,128), "sizeof(S3751C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3751C1)");
    check_base_class_offset(lv, (S6441C8_nt*)(S3751C2_nt*), 0, "S3751C1");
    check_base_class_offset(lv, (S3751C2_nt*), 0, "S3751C1");
    check_field_offset(lv, s3751c1f0, ABISELECT(16,8), "S3751C1.s3751c1f0");
    check_field_offset(lv, s3751c1f1, ABISELECT(32,16), "S3751C1.s3751c1f1");
    check_field_offset(lv, s3751c1f2, ABISELECT(56,32), "S3751C1.s3751c1f2");
    check_field_offset(lv, s3751c1f3, ABISELECT(72,44), "S3751C1.s3751c1f3");
    check_field_offset(lv, s3751c1f4, ABISELECT(88,56), "S3751C1.s3751c1f4");
    check_field_offset(lv, s3751c1f5, ABISELECT(96,60), "S3751C1.s3751c1f5");
    check_field_offset(lv, s3751c1f6, ABISELECT(120,76), "S3751C1.s3751c1f6");
    check_field_offset(lv, s3751c1f7, ABISELECT(144,92), "S3751C1.s3751c1f7");
    check_field_offset(lv, s3751c1f8, ABISELECT(184,116), "S3751C1.s3751c1f8");
    check_field_offset(lv, s3751c1f9, ABISELECT(192,120), "S3751C1.s3751c1f9");
    test_class_info(&lv, &cd_S3751C1);
    dp->~S3751C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3751C1(Test_S3751C1, "S3751C1", ABISELECT(208,128));

#else // __cplusplus

extern void _ZN7S3751C1C1Ev();
extern void _ZN7S3751C1D1Ev();
Name_Map name_map_S3751C1[] = {
  NSPAIR(_ZN7S3751C1C1Ev),
  NSPAIR(_ZN7S3751C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6441C8_nt;
extern VTBL_ENTRY _ZTI10S6441C8_nt[];
extern  VTBL_ENTRY _ZTV10S6441C8_nt[];
extern Class_Descriptor cd_S3751C2_nt;
extern VTBL_ENTRY _ZTI10S3751C2_nt[];
extern  VTBL_ENTRY _ZTV10S3751C2_nt[];
static Base_Class bases_S3751C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6441C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3751C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3751C1[];
extern void _ZN7S3751C1D1Ev();
extern void _ZN7S3751C1D0Ev();
extern void _ZN10S3751C2_nt2v8Ev();
extern void _ZN10S3751C2_nt2v9Ev();
extern void _ZN10S3751C2_nt3v10Ev();
extern void _ZN10S3751C2_nt3v11Ev();
extern void _ZN10S3751C2_nt3v12Ev();
extern void _ZN10S3751C2_nt3v13Ev();
extern void _ZN10S3751C2_nt3v14Ev();
extern void _ZN10S3751C2_nt3v15Ev();
extern void _ZN10S3751C2_nt3v16Ev();
extern void _ZN10S3751C2_nt3v17Ev();
extern void _ZN10S3751C2_nt3v18Ev();
extern void _ZN10S3751C2_nt3v19Ev();
extern void _ZN7S3751C12v1Ev();
extern void _ZN7S3751C12v2Ev();
extern void _ZN7S3751C12v3Ev();
extern void _ZN7S3751C12v4Ev();
extern void _ZN7S3751C12v5Ev();
extern void _ZN7S3751C12v6Ev();
extern void _ZN7S3751C12v7Ev();
static  VTBL_ENTRY vtc_S3751C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3751C1[0]),
  (VTBL_ENTRY)&_ZN7S3751C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3751C1D0Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3751C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN7S3751C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3751C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3751C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3751C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3751C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3751C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3751C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S3751C1[];
extern  VTBL_ENTRY _ZTV7S3751C1[];
Class_Descriptor cd_S3751C1 = {  "S3751C1", // class name
  bases_S3751C1, 2,
  &(vtc_S3751C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(208,128), // object size
  NSPAIRA(_ZTI7S3751C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3751C1),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19634C2  : S343C6_nt {
  virtual  ~S19634C2(); // _ZN8S19634C2D1Ev
  S19634C2(); // tgen
};
//SIG(-1 S19634C2) C1{ BC2{ vd m} vd}


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

static void Test_S19634C2()
{
  extern Class_Descriptor cd_S19634C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19634C2, buf);
    S19634C2 *dp, &lv = *(dp=new (buf) S19634C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19634C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19634C2)");
    check_base_class_offset(lv, (S343C6_nt*), 0, "S19634C2");
    test_class_info(&lv, &cd_S19634C2);
    dp->~S19634C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19634C2(Test_S19634C2, "S19634C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19634C2C1Ev();
extern void _ZN8S19634C2D1Ev();
Name_Map name_map_S19634C2[] = {
  NSPAIR(_ZN8S19634C2C1Ev),
  NSPAIR(_ZN8S19634C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
static Base_Class bases_S19634C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19634C2[];
extern void _ZN8S19634C2D1Ev();
extern void _ZN8S19634C2D0Ev();
static  VTBL_ENTRY vtc_S19634C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C2[0]),
  (VTBL_ENTRY)&_ZN8S19634C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C2D0Ev,
};
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
Class_Descriptor cd_S19634C2 = {  "S19634C2", // class name
  bases_S19634C2, 1,
  &(vtc_S19634C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19634C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19634C2),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  S19634C6  : S343C6_nt , S19634C2 , virtual S731C17_nt {
  virtual  ~S19634C6(); // _ZN8S19634C6D2Ev
  S19634C6(); // tgen
};
//SIG(-1 S19634C6) C1{ BC2{ vd m} BC3{ BC2 vd} VBC4{ m} vd}


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

static void Test_S19634C6()
{
  extern Class_Descriptor cd_S19634C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19634C6, buf);
    S19634C6 *dp, &lv = *(dp=new (buf) S19634C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19634C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19634C6)");
    /*is_ambiguous_... S19634C6::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*), 0, "S19634C6");
    check_base_class_offset(lv, (S343C6_nt*)(S19634C2*), ABISELECT(8,4), "S19634C6");
    check_base_class_offset(lv, (S19634C2*), ABISELECT(8,4), "S19634C6");
    check_base_class_offset(lv, (S731C17_nt*), 0, "S19634C6");
    test_class_info(&lv, &cd_S19634C6);
    dp->~S19634C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19634C6(Test_S19634C6, "S19634C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19634C6C1Ev();
extern void _ZN8S19634C6D2Ev();
Name_Map name_map_S19634C6[] = {
  NSPAIR(_ZN8S19634C6C1Ev),
  NSPAIR(_ZN8S19634C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S19634C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S343C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19634C2,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19634C6[];
extern void _ZN8S19634C6D1Ev();
extern void _ZN8S19634C6D0Ev();
extern void ABISELECT(_ZThn8_N8S19634C6D1Ev,_ZThn4_N8S19634C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S19634C6D0Ev,_ZThn4_N8S19634C6D0Ev)();
static  VTBL_ENTRY vtc_S19634C6[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C6[0]),
  (VTBL_ENTRY)&_ZN8S19634C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C6D0Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19634C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S19634C6D1Ev,_ZThn4_N8S19634C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S19634C6D0Ev,_ZThn4_N8S19634C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S19634C6[];
static  VTT_ENTRY vtt_S19634C6[] = {
  {&(_ZTV8S19634C6[3]),  3,9},
};
extern VTBL_ENTRY _ZTI8S19634C6[];
extern  VTBL_ENTRY _ZTV8S19634C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C6[];
Class_Descriptor cd_S19634C6 = {  "S19634C6", // class name
  bases_S19634C6, 4,
  &(vtc_S19634C6[0]), // expected_vtbl_contents
  &(vtt_S19634C6[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19634C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19634C6),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19634C6),1, //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  S19634C8  : virtual S731C17_nt , S19634C2 , S343C6_nt {
  virtual void  v1(); // _ZN8S19634C82v1Ev
  ~S19634C8(); // tgen
  S19634C8(); // tgen
};
//SIG(-1 S19634C8) C1{ VBC2{ m} BC3{ BC4{ vd m} vd} BC4 v1}


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

static void Test_S19634C8()
{
  extern Class_Descriptor cd_S19634C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19634C8, buf);
    S19634C8 *dp, &lv = *(dp=new (buf) S19634C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19634C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19634C8)");
    check_base_class_offset(lv, (S731C17_nt*), 0, "S19634C8");
    check_base_class_offset(lv, (S343C6_nt*)(S19634C2*), 0, "S19634C8");
    check_base_class_offset(lv, (S19634C2*), 0, "S19634C8");
    /*is_ambiguous_... S19634C8::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*), ABISELECT(8,4), "S19634C8");
    test_class_info(&lv, &cd_S19634C8);
    dp->~S19634C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19634C8(Test_S19634C8, "S19634C8", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19634C8C1Ev();
extern void _ZN8S19634C8D1Ev();
Name_Map name_map_S19634C8[] = {
  NSPAIR(_ZN8S19634C8C1Ev),
  NSPAIR(_ZN8S19634C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
static Base_Class bases_S19634C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19634C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S343C6_nt,    ABISELECT(8,4), //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},
  {0}};
extern VTBL_ENTRY _ZTI8S19634C8[];
extern void _ZN8S19634C8D1Ev();
extern void _ZN8S19634C8D0Ev();
extern void _ZN8S19634C82v1Ev();
extern void ABISELECT(_ZThn8_N8S19634C8D1Ev,_ZThn4_N8S19634C8D1Ev)();
extern void ABISELECT(_ZThn8_N8S19634C8D0Ev,_ZThn4_N8S19634C8D0Ev)();
static  VTBL_ENTRY vtc_S19634C8[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C8[0]),
  (VTBL_ENTRY)&_ZN8S19634C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19634C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S19634C8D1Ev,_ZThn4_N8S19634C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S19634C8D0Ev,_ZThn4_N8S19634C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19634C8[];
static  VTT_ENTRY vtt_S19634C8[] = {
  {&(_ZTV8S19634C8[3]),  3,10},
};
extern VTBL_ENTRY _ZTI8S19634C8[];
extern  VTBL_ENTRY _ZTV8S19634C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C8[];
Class_Descriptor cd_S19634C8 = {  "S19634C8", // class name
  bases_S19634C8, 4,
  &(vtc_S19634C8[0]), // expected_vtbl_contents
  &(vtt_S19634C8[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19634C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19634C8),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19634C8),1, //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  S19634C7  : S19634C8 , virtual S19634C2 , S343C6_nt , S731C17_nt {
  virtual  ~S19634C7(); // _ZN8S19634C7D2Ev
  virtual void  v2(); // _ZN8S19634C72v2Ev
  S19634C7(); // tgen
};
//SIG(-1 S19634C7) C1{ BC2{ VBC3{ m} BC4{ BC5{ vd m} vd} BC5 v2} VBC4 BC5 BC3 vd v1}


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

static void Test_S19634C7()
{
  extern Class_Descriptor cd_S19634C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19634C7, buf);
    S19634C7 *dp, &lv = *(dp=new (buf) S19634C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19634C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19634C7)");
    check_base_class_offset(lv, (S731C17_nt*)(S19634C8*), ABISELECT(24,12), "S19634C7");
    check_base_class_offset(lv, (S343C6_nt*)(S19634C2*)(S19634C8*), 0, "S19634C7");
    check_base_class_offset(lv, (S19634C2*)(S19634C8*), 0, "S19634C7");
    /*is_ambiguous_... S19634C8::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C8*), ABISELECT(8,4), "S19634C7");
    check_base_class_offset(lv, (S19634C8*), 0, "S19634C7");
    /*is_ambiguous_... S19634C7::S19634C2 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C2*), ABISELECT(24,12), "S19634C7");
    /*is_ambiguous_... S19634C7::S19634C2 */ AMB_check_base_class_offset(lv, (S19634C2*), ABISELECT(24,12), "S19634C7");
    /*is_ambiguous_... S19634C7::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*), ABISELECT(16,8), "S19634C7");
    /*is_ambiguous_... S19634C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), 0, "S19634C7");
    test_class_info(&lv, &cd_S19634C7);
    dp->~S19634C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19634C7(Test_S19634C7, "S19634C7", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19634C7C1Ev();
extern void _ZN8S19634C7D2Ev();
Name_Map name_map_S19634C7[] = {
  NSPAIR(_ZN8S19634C7C1Ev),
  NSPAIR(_ZN8S19634C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C8;
extern VTBL_ENTRY _ZTI8S19634C8[];
extern  VTBL_ENTRY _ZTV8S19634C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C8[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S19634C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_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, 1},
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19634C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S343C6_nt,    ABISELECT(8,4), //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
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19634C8,    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_S343C6_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
    6, //immediately_derived
  0, 0},
  {&cd_S19634C2,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_nt,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19634C7[];
extern void _ZN8S19634C7D1Ev();
extern void _ZN8S19634C7D0Ev();
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
extern void ABISELECT(_ZThn8_N8S19634C7D1Ev,_ZThn4_N8S19634C7D1Ev)();
extern void ABISELECT(_ZThn8_N8S19634C7D0Ev,_ZThn4_N8S19634C7D0Ev)();
extern void ABISELECT(_ZThn16_N8S19634C7D1Ev,_ZThn8_N8S19634C7D1Ev)();
extern void ABISELECT(_ZThn16_N8S19634C7D0Ev,_ZThn8_N8S19634C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev)();
extern void ABISELECT(_ZThn24_N8S19634C7D1Ev,_ZThn12_N8S19634C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev)();
extern void ABISELECT(_ZThn24_N8S19634C7D0Ev,_ZThn12_N8S19634C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19634C7[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C7[0]),
  (VTBL_ENTRY)&_ZN8S19634C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19634C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S19634C7D1Ev,_ZThn4_N8S19634C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S19634C7D0Ev,_ZThn4_N8S19634C7D0Ev),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19634C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19634C7D1Ev,_ZThn8_N8S19634C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19634C7D0Ev,_ZThn8_N8S19634C7D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19634C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S19634C7[];
extern void _ZN8S19634C8D1Ev();
extern void _ZN8S19634C8D0Ev();
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C8__8S19634C7[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C8[0]),
  (VTBL_ENTRY)&_ZN8S19634C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
static  VTT_ENTRY vtt_S19634C7[] = {
  {&(_ZTV8S19634C7[4]),  4,21},
  {&(_tg__ZTV8S19634C8__8S19634C7[3]),  3,6},
  {&(_ZTV8S19634C7[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S19634C7[];
extern  VTBL_ENTRY _ZTV8S19634C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C7[];
static VTBL_ENTRY alt_thunk_names69[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19634C7D0Ev,_ZThn12_N8S19634C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19634C7D1Ev,_ZThn12_N8S19634C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19634C7 = {  "S19634C7", // class name
  bases_S19634C7, 9,
  &(vtc_S19634C7[0]), // expected_vtbl_contents
  &(vtt_S19634C7[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19634C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19634C7),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19634C7),3, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names69,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19634C11  : virtual S19634C8 {
  ~S19634C11(); // tgen
  S19634C11(); // tgen
};
//SIG(-1 S19634C11) C1{ VBC2{ VBC3{ m} BC4{ BC5{ vd m} vd} BC5 v1}}


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

static void Test_S19634C11()
{
  extern Class_Descriptor cd_S19634C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19634C11, buf);
    S19634C11 *dp, &lv = *(dp=new (buf) S19634C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19634C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19634C11)");
    check_base_class_offset(lv, (S731C17_nt*)(S19634C8*), 0, "S19634C11");
    check_base_class_offset(lv, (S343C6_nt*)(S19634C2*)(S19634C8*), ABISELECT(8,4), "S19634C11");
    check_base_class_offset(lv, (S19634C2*)(S19634C8*), ABISELECT(8,4), "S19634C11");
    /*is_ambiguous_... S19634C8::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C8*), ABISELECT(16,8), "S19634C11");
    check_base_class_offset(lv, (S19634C8*), ABISELECT(8,4), "S19634C11");
    test_class_info(&lv, &cd_S19634C11);
    dp->~S19634C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19634C11(Test_S19634C11, "S19634C11", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S19634C11C1Ev();
extern void _ZN9S19634C11D1Ev();
Name_Map name_map_S19634C11[] = {
  NSPAIR(_ZN9S19634C11C1Ev),
  NSPAIR(_ZN9S19634C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C8;
extern VTBL_ENTRY _ZTI8S19634C8[];
extern  VTBL_ENTRY _ZTV8S19634C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C8[];
static Base_Class bases_S19634C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S343C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19634C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S343C6_nt,    ABISELECT(16,8), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19634C8,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19634C11[];
extern void _ZN9S19634C11D1Ev();
extern void _ZN9S19634C11D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19634C11D1Ev,_ZTv0_n16_N9S19634C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S19634C11D1Ev,_ZThn4_N9S19634C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19634C11D0Ev,_ZTv0_n16_N9S19634C11D0Ev)();
extern void ABISELECT(_ZThn8_N9S19634C11D0Ev,_ZThn4_N9S19634C11D0Ev)() __attribute__((weak));
extern void _ZN8S19634C82v1Ev();
extern void ABISELECT(_ZTvn8_n32_N9S19634C11D1Ev,_ZTvn4_n16_N9S19634C11D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N9S19634C11D0Ev,_ZTvn4_n16_N9S19634C11D0Ev)();
static  VTBL_ENTRY vtc_S19634C11[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19634C11[0]),
  (VTBL_ENTRY)&_ZN9S19634C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19634C11D0Ev,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19634C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19634C11D1Ev,_ZTv0_n16_N9S19634C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19634C11D0Ev,_ZTv0_n16_N9S19634C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19634C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N9S19634C11D1Ev,_ZTvn4_n16_N9S19634C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N9S19634C11D0Ev,_ZTvn4_n16_N9S19634C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19634C11[];
extern void _ZN8S19634C8D1Ev();
extern void _ZN8S19634C8D0Ev();
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C8__9S19634C11[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C8[0]),
  (VTBL_ENTRY)&_ZN8S19634C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
static  VTT_ENTRY vtt_S19634C11[] = {
  {&(_ZTV9S19634C11[4]),  4,18},
  {&(_ZTV9S19634C11[11]),  11,18},
  {&(_ZTV9S19634C11[16]),  16,18},
  {&(_tg__ZTV8S19634C8__9S19634C11[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S19634C11[];
extern  VTBL_ENTRY _ZTV9S19634C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19634C11[];
static VTBL_ENTRY alt_thunk_names70[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19634C11D0Ev,_ZTv0_n16_N9S19634C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19634C11D0Ev,_ZThn4_N9S19634C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19634C11D1Ev,_ZTv0_n16_N9S19634C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19634C11D1Ev,_ZThn4_N9S19634C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19634C11 = {  "S19634C11", // class name
  bases_S19634C11, 5,
  &(vtc_S19634C11[0]), // expected_vtbl_contents
  &(vtt_S19634C11[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S19634C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19634C11),18, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19634C11),4, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names70,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19634C9  : S28C52_nt , S19634C7 , virtual S19634C11 {
  ~S19634C9(); // tgen
  S19634C9(); // tgen
};
//SIG(-1 S19634C9) C1{ BC2{ m} BC3{ BC4{ VBC5{ m} BC6{ BC7{ vd m} vd} BC7 v1} VBC6 BC7 BC5 vd v2} VBC8{ VBC4}}


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

static void Test_S19634C9()
{
  extern Class_Descriptor cd_S19634C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S19634C9, buf);
    S19634C9 *dp, &lv = *(dp=new (buf) S19634C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S19634C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19634C9)");
    check_base_class_offset(lv, (S28C52_nt*), 0, "S19634C9");
    check_base_class_offset(lv, (S731C17_nt*)(S19634C8*)(S19634C7*), ABISELECT(24,12), "S19634C9");
    /*is_ambiguous_... S19634C9::S19634C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19634C8*), ABISELECT(24,12), "S19634C9");
    check_base_class_offset(lv, (S343C6_nt*)(S19634C2*)(S19634C8*)(S19634C7*), 0, "S19634C9");
    check_base_class_offset(lv, (S19634C2*)(S19634C8*)(S19634C7*), 0, "S19634C9");
    /*is_ambiguous_... S19634C8::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C8*)(S19634C7*), ABISELECT(8,4), "S19634C9");
    check_base_class_offset(lv, (S19634C8*)(S19634C7*), 0, "S19634C9");
    /*is_ambiguous_... S19634C9::S19634C2 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C2*), ABISELECT(24,12), "S19634C9");
    /*is_ambiguous_... S19634C7::S19634C2 */ AMB_check_base_class_offset(lv, (S19634C2*)(S19634C7*), ABISELECT(24,12), "S19634C9");
    /*is_ambiguous_... S19634C7::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C7*), ABISELECT(16,8), "S19634C9");
    /*is_ambiguous_... S19634C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19634C7*), 0, "S19634C9");
    check_base_class_offset(lv, (S19634C7*), 0, "S19634C9");
    /*is_ambiguous_... S19634C9::S19634C8 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C2*)(S19634C8*), ABISELECT(40,20), "S19634C9");
    /*is_ambiguous_... S19634C9::S19634C8 */ AMB_check_base_class_offset(lv, (S19634C2*)(S19634C8*), ABISELECT(40,20), "S19634C9");
    /*is_ambiguous_... S19634C9::S19634C8 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C8*), ABISELECT(48,24), "S19634C9");
    check_base_class_offset(lv, (S19634C8*)(S19634C11*), ABISELECT(40,20), "S19634C9");
    check_base_class_offset(lv, (S19634C11*), ABISELECT(32,16), "S19634C9");
    test_class_info(&lv, &cd_S19634C9);
    dp->~S19634C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19634C9(Test_S19634C9, "S19634C9", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S19634C9C1Ev();
extern void _ZN8S19634C9D1Ev();
Name_Map name_map_S19634C9[] = {
  NSPAIR(_ZN8S19634C9C1Ev),
  NSPAIR(_ZN8S19634C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C8;
extern VTBL_ENTRY _ZTI8S19634C8[];
extern  VTBL_ENTRY _ZTV8S19634C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C8[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19634C7;
extern VTBL_ENTRY _ZTI8S19634C7[];
extern  VTBL_ENTRY _ZTV8S19634C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C7[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C8;
extern VTBL_ENTRY _ZTI8S19634C8[];
extern  VTBL_ENTRY _ZTV8S19634C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C8[];
extern Class_Descriptor cd_S19634C11;
extern VTBL_ENTRY _ZTI9S19634C11[];
extern  VTBL_ENTRY _ZTV9S19634C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19634C11[];
static Base_Class bases_S19634C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C52_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19634C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19634C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S343C6_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
    7, //immediately_derived
  0, 0},
  {&cd_S19634C2,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S343C6_nt,    ABISELECT(16,8), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19634C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S343C6_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
    12, //immediately_derived
  0, 0},
  {&cd_S19634C2,    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
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(48,24), //bcp->offset
    38, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19634C8,    ABISELECT(40,20), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19634C11,    ABISELECT(32,16), //bcp->offset
    23, //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
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19634C9[];
extern void _ZN8S19634C9D1Ev();
extern void _ZN8S19634C9D0Ev();
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
extern void ABISELECT(_ZThn8_N8S19634C9D1Ev,_ZThn4_N8S19634C9D1Ev)();
extern void ABISELECT(_ZThn8_N8S19634C9D0Ev,_ZThn4_N8S19634C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19634C9D1Ev,_ZThn8_N8S19634C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19634C9D0Ev,_ZThn8_N8S19634C9D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19634C9D1Ev,_ZTv0_n12_N8S19634C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S19634C9D1Ev,_ZThn12_N8S19634C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19634C9D0Ev,_ZTv0_n12_N8S19634C9D0Ev)();
extern void ABISELECT(_ZThn24_N8S19634C9D0Ev,_ZThn12_N8S19634C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19634C9D1Ev,_ZTv0_n20_N8S19634C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19634C9D1Ev,_ZThn16_N8S19634C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19634C9D0Ev,_ZTv0_n20_N8S19634C9D0Ev)();
extern void ABISELECT(_ZThn32_N8S19634C9D0Ev,_ZThn16_N8S19634C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19634C9D1Ev,_ZTv0_n16_N8S19634C9D1Ev)();
extern void ABISELECT(_ZThn40_N8S19634C9D1Ev,_ZThn20_N8S19634C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19634C9D0Ev,_ZTv0_n16_N8S19634C9D0Ev)();
extern void ABISELECT(_ZThn40_N8S19634C9D0Ev,_ZThn20_N8S19634C9D0Ev)() __attribute__((weak));
extern void _ZN8S19634C82v1Ev();
extern void ABISELECT(_ZTvn8_n32_N8S19634C9D1Ev,_ZTvn4_n16_N8S19634C9D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N8S19634C9D0Ev,_ZTvn4_n16_N8S19634C9D0Ev)();
static  VTBL_ENTRY vtc_S19634C9[] = {
  ABISELECT(40,20),
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C9[0]),
  (VTBL_ENTRY)&_ZN8S19634C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C9D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19634C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S19634C9D1Ev,_ZThn4_N8S19634C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S19634C9D0Ev,_ZThn4_N8S19634C9D0Ev),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19634C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19634C9D1Ev,_ZThn8_N8S19634C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19634C9D0Ev,_ZThn8_N8S19634C9D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19634C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C9D1Ev,_ZTv0_n12_N8S19634C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C9D0Ev,_ZTv0_n12_N8S19634C9D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19634C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19634C9D1Ev,_ZTv0_n20_N8S19634C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19634C9D0Ev,_ZTv0_n20_N8S19634C9D0Ev),
  0,
  ABISELECT(-40,-20),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19634C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19634C9D1Ev,_ZTv0_n16_N8S19634C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19634C9D0Ev,_ZTv0_n16_N8S19634C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19634C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S19634C9D1Ev,_ZTvn4_n16_N8S19634C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S19634C9D0Ev,_ZTvn4_n16_N8S19634C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19634C9[];
extern void _ZN8S19634C7D1Ev();
extern void _ZN8S19634C7D0Ev();
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C7__8S19634C9[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C7[0]),
  (VTBL_ENTRY)&_ZN8S19634C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
};
extern void _ZN8S19634C8D1Ev();
extern void _ZN8S19634C8D0Ev();
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C88S19634C7__8S19634C9[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C8[0]),
  (VTBL_ENTRY)&_ZN8S19634C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev)();
extern void ABISELECT(_ZThn24_N8S19634C7D1Ev,_ZThn12_N8S19634C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev)();
extern void ABISELECT(_ZThn24_N8S19634C7D0Ev,_ZThn12_N8S19634C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19634C2__A1__8S19634C7__8S19634C9[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19634C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev),
};
extern void _ZN9S19634C11D1Ev();
extern void _ZN9S19634C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19634C11__8S19634C9[] = {
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19634C11[0]),
  (VTBL_ENTRY)&_ZN9S19634C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19634C11D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19634C11D1Ev,_ZTv0_n16_N9S19634C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S19634C11D1Ev,_ZThn4_N9S19634C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19634C11D0Ev,_ZTv0_n16_N9S19634C11D0Ev)();
extern void ABISELECT(_ZThn8_N9S19634C11D0Ev,_ZThn4_N9S19634C11D0Ev)() __attribute__((weak));
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C8__9S19634C11__8S19634C9[] = {
  0,
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19634C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19634C11D1Ev,_ZTv0_n16_N9S19634C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19634C11D0Ev,_ZTv0_n16_N9S19634C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
extern void ABISELECT(_ZTvn8_n32_N9S19634C11D1Ev,_ZTvn4_n16_N9S19634C11D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N9S19634C11D0Ev,_ZTvn4_n16_N9S19634C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt8S19634C8__A1__9S19634C11__8S19634C9[] = {
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19634C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N9S19634C11D1Ev,_ZTvn4_n16_N9S19634C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N9S19634C11D0Ev,_ZTvn4_n16_N9S19634C11D0Ev),
};
extern void _ZN8S19634C8D1Ev();
extern void _ZN8S19634C8D0Ev();
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C8__A1__8S19634C9[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C8[0]),
  (VTBL_ENTRY)&_ZN8S19634C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
static  VTT_ENTRY vtt_S19634C9[] = {
  {&(_ZTV8S19634C9[6]),  6,42},
  {&(_tg__ZTV8S19634C7__8S19634C9[4]),  4,8},
  {&(_tg__ZTV8S19634C88S19634C7__8S19634C9[3]),  3,6},
  {&(_tg__ZTV8S19634C2__A1__8S19634C7__8S19634C9[3]),  3,5},
  {&(_ZTV8S19634C9[21]),  21,42},
  {&(_ZTV8S19634C9[28]),  28,42},
  {&(_ZTV8S19634C9[35]),  35,42},
  {&(_ZTV8S19634C9[40]),  40,42},
  {&(_tg__ZTV9S19634C11__8S19634C9[4]),  4,6},
  {&(_tg__ZTV8S19634C8__9S19634C11__8S19634C9[5]),  5,8},
  {&(_tg__ZTV9S343C6_nt8S19634C8__A1__9S19634C11__8S19634C9[2]),  2,4},
  {&(_tg__ZTV8S19634C8__A1__8S19634C9[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S19634C9[];
extern  VTBL_ENTRY _ZTV8S19634C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C9[];
static VTBL_ENTRY alt_thunk_names71[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19634C11D0Ev,_ZTv0_n16_N9S19634C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19634C11D0Ev,_ZThn4_N9S19634C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19634C11D1Ev,_ZTv0_n16_N9S19634C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19634C11D1Ev,_ZThn4_N9S19634C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19634C7D0Ev,_ZThn12_N8S19634C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19634C7D1Ev,_ZThn12_N8S19634C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19634C9D0Ev,_ZTv0_n16_N8S19634C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19634C9D0Ev,_ZThn20_N8S19634C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19634C9D1Ev,_ZTv0_n16_N8S19634C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19634C9D1Ev,_ZThn20_N8S19634C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19634C9D0Ev,_ZTv0_n20_N8S19634C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19634C9D0Ev,_ZThn16_N8S19634C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19634C9D1Ev,_ZTv0_n20_N8S19634C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19634C9D1Ev,_ZThn16_N8S19634C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19634C9D0Ev,_ZTv0_n12_N8S19634C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19634C9D0Ev,_ZThn12_N8S19634C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19634C9D1Ev,_ZTv0_n12_N8S19634C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19634C9D1Ev,_ZThn12_N8S19634C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19634C9 = {  "S19634C9", // class name
  bases_S19634C9, 16,
  &(vtc_S19634C9[0]), // expected_vtbl_contents
  &(vtt_S19634C9[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S19634C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19634C9),42, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19634C9),12, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names71,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19634C4  : S731C17_nt , S19634C6 , virtual S19634C7 , virtual S19634C9 {
  short s19634c4f0;
  virtual  ~S19634C4(); // _ZN8S19634C4D2Ev
  S19634C4(); // tgen
};
//SIG(-1 S19634C4) C1{ BC2{ m} BC3{ BC4{ vd m} BC5{ BC4 vd} VBC2 vd} VBC6{ BC7{ VBC2 BC5 BC4 v1} VBC5 BC4 BC2 vd v2} VBC8{ BC9{ m} BC6 VBC10{ VBC7}} vd Fs}


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

static void Test_S19634C4()
{
  extern Class_Descriptor cd_S19634C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[14];
    init_test(&cd_S19634C4, buf);
    S19634C4 *dp, &lv = *(dp=new (buf) S19634C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,52), "sizeof(S19634C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19634C4)");
    /*is_ambiguous_... S19634C4::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), 0, "S19634C4");
    /*is_ambiguous_... S19634C6::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C6*), 0, "S19634C4");
    check_base_class_offset(lv, (S343C6_nt*)(S19634C2*)(S19634C6*), ABISELECT(8,4), "S19634C4");
    check_base_class_offset(lv, (S19634C2*)(S19634C6*), ABISELECT(8,4), "S19634C4");
    check_base_class_offset(lv, (S731C17_nt*)(S19634C6*), ABISELECT(18,10), "S19634C4");
    /*is_ambiguous_... S19634C4::S19634C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19634C8*)(S19634C7*), ABISELECT(18,10), "S19634C4");
    check_base_class_offset(lv, (S731C17_nt*)(S19634C8*)(S19634C7*)(S19634C9*), ABISELECT(18,10), "S19634C4");
    /*is_ambiguous_... S19634C4::S19634C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19634C8*), ABISELECT(18,10), "S19634C4");
    check_base_class_offset(lv, (S19634C6*), 0, "S19634C4");
    /*is_ambiguous_... S19634C4::S19634C7 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C2*)(S19634C8*)(S19634C7*), ABISELECT(24,12), "S19634C4");
    /*is_ambiguous_... S19634C4::S19634C7 */ AMB_check_base_class_offset(lv, (S19634C2*)(S19634C8*)(S19634C7*), ABISELECT(24,12), "S19634C4");
    /*is_ambiguous_... S19634C4::S19634C7 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C8*)(S19634C7*), ABISELECT(32,16), "S19634C4");
    /*is_ambiguous_... S19634C4::S19634C7 */ AMB_check_base_class_offset(lv, (S19634C8*)(S19634C7*), ABISELECT(24,12), "S19634C4");
    /*is_ambiguous_... S19634C4::S19634C2 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C2*), ABISELECT(48,24), "S19634C4");
    /*is_ambiguous_... S19634C4::S19634C7 */ AMB_check_base_class_offset(lv, (S19634C2*)(S19634C7*), ABISELECT(48,24), "S19634C4");
    /*is_ambiguous_... S19634C7::S19634C2 */ AMB_check_base_class_offset(lv, (S19634C2*)(S19634C7*)(S19634C9*), ABISELECT(48,24), "S19634C4");
    /*is_ambiguous_... S19634C4::S19634C7 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C7*), ABISELECT(40,20), "S19634C4");
    /*is_ambiguous_... S19634C4::S19634C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19634C7*), ABISELECT(24,12), "S19634C4");
    /*is_ambiguous_... S19634C4::S19634C7 */ AMB_check_base_class_offset(lv, (S19634C7*), ABISELECT(24,12), "S19634C4");
    check_base_class_offset(lv, (S28C52_nt*)(S19634C9*), ABISELECT(56,28), "S19634C4");
    check_base_class_offset(lv, (S343C6_nt*)(S19634C2*)(S19634C8*)(S19634C7*)(S19634C9*), ABISELECT(56,28), "S19634C4");
    check_base_class_offset(lv, (S19634C2*)(S19634C8*)(S19634C7*)(S19634C9*), ABISELECT(56,28), "S19634C4");
    /*is_ambiguous_... S19634C8::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C8*)(S19634C7*)(S19634C9*), ABISELECT(64,32), "S19634C4");
    check_base_class_offset(lv, (S19634C8*)(S19634C7*)(S19634C9*), ABISELECT(56,28), "S19634C4");
    /*is_ambiguous_... S19634C7::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C7*)(S19634C9*), ABISELECT(72,36), "S19634C4");
    /*is_ambiguous_... S19634C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19634C7*)(S19634C9*), ABISELECT(56,28), "S19634C4");
    check_base_class_offset(lv, (S19634C7*)(S19634C9*), ABISELECT(56,28), "S19634C4");
    /*is_ambiguous_... S19634C4::S19634C8 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C2*)(S19634C8*), ABISELECT(88,44), "S19634C4");
    /*is_ambiguous_... S19634C4::S19634C8 */ AMB_check_base_class_offset(lv, (S19634C2*)(S19634C8*), ABISELECT(88,44), "S19634C4");
    /*is_ambiguous_... S19634C4::S19634C8 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C8*), ABISELECT(96,48), "S19634C4");
    check_base_class_offset(lv, (S19634C8*)(S19634C11*), ABISELECT(88,44), "S19634C4");
    check_base_class_offset(lv, (S19634C11*)(S19634C9*), ABISELECT(80,40), "S19634C4");
    check_base_class_offset(lv, (S19634C9*), ABISELECT(56,28), "S19634C4");
    check_field_offset(lv, s19634c4f0, ABISELECT(16,8), "S19634C4.s19634c4f0");
    test_class_info(&lv, &cd_S19634C4);
    dp->~S19634C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19634C4(Test_S19634C4, "S19634C4", ABISELECT(104,52));

#else // __cplusplus

extern void _ZN8S19634C4C1Ev();
extern void _ZN8S19634C4D2Ev();
Name_Map name_map_S19634C4[] = {
  NSPAIR(_ZN8S19634C4C1Ev),
  NSPAIR(_ZN8S19634C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19634C6;
extern VTBL_ENTRY _ZTI8S19634C6[];
extern  VTBL_ENTRY _ZTV8S19634C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C8;
extern VTBL_ENTRY _ZTI8S19634C8[];
extern  VTBL_ENTRY _ZTV8S19634C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C8[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19634C7;
extern VTBL_ENTRY _ZTI8S19634C7[];
extern  VTBL_ENTRY _ZTV8S19634C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C7[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C8;
extern VTBL_ENTRY _ZTI8S19634C8[];
extern  VTBL_ENTRY _ZTV8S19634C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C8[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19634C7;
extern VTBL_ENTRY _ZTI8S19634C7[];
extern  VTBL_ENTRY _ZTV8S19634C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C7[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C8;
extern VTBL_ENTRY _ZTI8S19634C8[];
extern  VTBL_ENTRY _ZTV8S19634C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C8[];
extern Class_Descriptor cd_S19634C11;
extern VTBL_ENTRY _ZTI9S19634C11[];
extern  VTBL_ENTRY _ZTV9S19634C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19634C11[];
extern Class_Descriptor cd_S19634C9;
extern VTBL_ENTRY _ZTI8S19634C9[];
extern  VTBL_ENTRY _ZTV8S19634C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C9[];
static Base_Class bases_S19634C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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
    3, //immediately_derived
  0, 0},
  {&cd_S19634C2,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(18,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
    5, //immediately_derived
  0, 1},
  {&cd_S19634C6,    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
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S343C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19634C2,    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
    9, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(32,16), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19634C8,    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
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19634C2,    ABISELECT(48,24), //bcp->offset
    33, //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
    14, //immediately_derived
  0, 1},
  {&cd_S343C6_nt,    ABISELECT(40,20), //bcp->offset
    29, //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
    7, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    14, //immediately_derived
  0, 0},
  {&cd_S19634C7,    ABISELECT(24,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S28C52_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19634C2,    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
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(64,32), //bcp->offset
    51, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19634C8,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(72,36), //bcp->offset
    55, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19634C7,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19634C2,    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
    10, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(96,48), //bcp->offset
    74, //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
    11, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19634C8,    ABISELECT(88,44), //bcp->offset
    66, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S19634C11,    ABISELECT(80,40), //bcp->offset
    59, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S19634C9,    ABISELECT(56,28), //bcp->offset
    38, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19634C4[];
extern void _ZN8S19634C4D1Ev();
extern void _ZN8S19634C4D0Ev();
extern void ABISELECT(_ZThn8_N8S19634C4D1Ev,_ZThn4_N8S19634C4D1Ev)();
extern void ABISELECT(_ZThn8_N8S19634C4D0Ev,_ZThn4_N8S19634C4D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19634C4D1Ev,_ZTv0_n20_N8S19634C4D1Ev)();
extern void ABISELECT(_ZThn24_N8S19634C4D1Ev,_ZThn12_N8S19634C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19634C4D0Ev,_ZTv0_n20_N8S19634C4D0Ev)();
extern void ABISELECT(_ZThn24_N8S19634C4D0Ev,_ZThn12_N8S19634C4D0Ev)() __attribute__((weak));
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
extern void ABISELECT(_ZTvn8_n40_N8S19634C4D1Ev,_ZTvn4_n20_N8S19634C4D1Ev)();
extern void ABISELECT(_ZTvn8_n40_N8S19634C4D0Ev,_ZTvn4_n20_N8S19634C4D0Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19634C4D1Ev,_ZTvn8_n20_N8S19634C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19634C4D0Ev,_ZTvn8_n20_N8S19634C4D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19634C4D1Ev,_ZTv0_n12_N8S19634C4D1Ev)();
extern void ABISELECT(_ZThn48_N8S19634C4D1Ev,_ZThn24_N8S19634C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19634C4D0Ev,_ZTv0_n12_N8S19634C4D0Ev)();
extern void ABISELECT(_ZThn48_N8S19634C4D0Ev,_ZThn24_N8S19634C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19634C4D1Ev,_ZTv0_n28_N8S19634C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S19634C4D1Ev,_ZThn28_N8S19634C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19634C4D0Ev,_ZTv0_n28_N8S19634C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S19634C4D0Ev,_ZThn28_N8S19634C4D0Ev)() __attribute__((weak));
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
extern void ABISELECT(_ZTvn8_n56_N8S19634C4D1Ev,_ZTvn4_n28_N8S19634C4D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S19634C4D0Ev,_ZTvn4_n28_N8S19634C4D0Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S19634C4D1Ev,_ZTvn8_n28_N8S19634C4D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S19634C4D0Ev,_ZTvn8_n28_N8S19634C4D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19634C4D1Ev,_ZTv0_n20_N8S19634C4D1Ev)();
extern void ABISELECT(_ZThn80_N8S19634C4D1Ev,_ZThn40_N8S19634C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19634C4D0Ev,_ZTv0_n20_N8S19634C4D0Ev)();
extern void ABISELECT(_ZThn80_N8S19634C4D0Ev,_ZThn40_N8S19634C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19634C4D1Ev,_ZTv0_n16_N8S19634C4D1Ev)();
extern void ABISELECT(_ZThn88_N8S19634C4D1Ev,_ZThn44_N8S19634C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19634C4D0Ev,_ZTv0_n16_N8S19634C4D0Ev)();
extern void ABISELECT(_ZThn88_N8S19634C4D0Ev,_ZThn44_N8S19634C4D0Ev)() __attribute__((weak));
extern void _ZN8S19634C82v1Ev();
extern void ABISELECT(_ZTvn8_n32_N8S19634C4D1Ev,_ZTvn4_n16_N8S19634C4D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N8S19634C4D0Ev,_ZTvn4_n16_N8S19634C4D0Ev)();
static  VTBL_ENTRY vtc_S19634C4[] = {
  ABISELECT(88,44),
  ABISELECT(80,40),
  ABISELECT(56,28),
  ABISELECT(48,24),
  ABISELECT(24,12),
  ABISELECT(18,10),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C4[0]),
  (VTBL_ENTRY)&_ZN8S19634C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C4D0Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19634C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S19634C4D1Ev,_ZThn4_N8S19634C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S19634C4D0Ev,_ZThn4_N8S19634C4D0Ev),
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(24,12),
  ABISELECT(-6,-2),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19634C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19634C4D1Ev,_ZTv0_n20_N8S19634C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19634C4D0Ev,_ZTv0_n20_N8S19634C4D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19634C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n40_N8S19634C4D1Ev,_ZTvn4_n20_N8S19634C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n40_N8S19634C4D0Ev,_ZTvn4_n20_N8S19634C4D0Ev),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19634C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19634C4D1Ev,_ZTvn8_n20_N8S19634C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19634C4D0Ev,_ZTvn8_n20_N8S19634C4D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19634C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C4D1Ev,_ZTv0_n12_N8S19634C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C4D0Ev,_ZTv0_n12_N8S19634C4D0Ev),
  0,
  0,
  ABISELECT(-56,-28),
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(-8,-4),
  ABISELECT(-38,-18),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19634C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19634C4D1Ev,_ZTv0_n28_N8S19634C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19634C4D0Ev,_ZTv0_n28_N8S19634C4D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S19634C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19634C4D1Ev,_ZTvn4_n28_N8S19634C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19634C4D0Ev,_ZTvn4_n28_N8S19634C4D0Ev),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S19634C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19634C4D1Ev,_ZTvn8_n28_N8S19634C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19634C4D0Ev,_ZTvn8_n28_N8S19634C4D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(-62,-30),
  ABISELECT(8,4),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S19634C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19634C4D1Ev,_ZTv0_n20_N8S19634C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19634C4D0Ev,_ZTv0_n20_N8S19634C4D0Ev),
  0,
  ABISELECT(-88,-44),
  ABISELECT(-70,-34),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S19634C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19634C4D1Ev,_ZTv0_n16_N8S19634C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19634C4D0Ev,_ZTv0_n16_N8S19634C4D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S19634C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S19634C4D1Ev,_ZTvn4_n16_N8S19634C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S19634C4D0Ev,_ZTvn4_n16_N8S19634C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19634C4[];
extern void _ZN8S19634C6D1Ev();
extern void _ZN8S19634C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C6__8S19634C4[] = {
  ABISELECT(18,10),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C6[0]),
  (VTBL_ENTRY)&_ZN8S19634C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C6D0Ev,
};
extern void _ZN8S19634C7D1Ev();
extern void _ZN8S19634C7D0Ev();
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C7__8S19634C4[] = {
  ABISELECT(24,12),
  ABISELECT(-6,-2),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C7[0]),
  (VTBL_ENTRY)&_ZN8S19634C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
};
extern void _ZN8S19634C8D1Ev();
extern void _ZN8S19634C8D0Ev();
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C88S19634C7__8S19634C4[] = {
  ABISELECT(-6,-2),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C8[0]),
  (VTBL_ENTRY)&_ZN8S19634C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev)();
extern void ABISELECT(_ZThn24_N8S19634C7D1Ev,_ZThn12_N8S19634C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev)();
extern void ABISELECT(_ZThn24_N8S19634C7D0Ev,_ZThn12_N8S19634C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19634C2__A1__8S19634C7__8S19634C4[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19634C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev),
};
extern void _ZN8S19634C9D1Ev();
extern void _ZN8S19634C9D0Ev();
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C9__8S19634C4[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(-8,-4),
  ABISELECT(-38,-18),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C9[0]),
  (VTBL_ENTRY)&_ZN8S19634C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C9D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
};
extern void _ZN8S19634C7D1Ev();
extern void _ZN8S19634C7D0Ev();
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C78S19634C9__A1__8S19634C4[] = {
  ABISELECT(-8,-4),
  ABISELECT(-38,-18),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C7[0]),
  (VTBL_ENTRY)&_ZN8S19634C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
};
extern void _ZN8S19634C8D1Ev();
extern void _ZN8S19634C8D0Ev();
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C88S19634C78S19634C9__A1__8S19634C4[] = {
  ABISELECT(-38,-18),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C8[0]),
  (VTBL_ENTRY)&_ZN8S19634C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19634C2__A1__8S19634C78S19634C9__A1__8S19634C4[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19634C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19634C9D1Ev,_ZTv0_n12_N8S19634C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19634C9D0Ev,_ZTv0_n12_N8S19634C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19634C2__A1__8S19634C9__8S19634C4[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19634C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C9D1Ev,_ZTv0_n12_N8S19634C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C9D0Ev,_ZTv0_n12_N8S19634C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19634C9D1Ev,_ZTv0_n20_N8S19634C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S19634C9D1Ev,_ZThn12_N8S19634C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19634C9D0Ev,_ZTv0_n20_N8S19634C9D0Ev)();
extern void ABISELECT(_ZThn24_N8S19634C9D0Ev,_ZThn12_N8S19634C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19634C11__8S19634C9__8S19634C4[] = {
  ABISELECT(-24,-12),
  ABISELECT(-62,-30),
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19634C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19634C9D1Ev,_ZTv0_n20_N8S19634C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19634C9D0Ev,_ZTv0_n20_N8S19634C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19634C9D1Ev,_ZTv0_n16_N8S19634C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19634C9D1Ev,_ZThn16_N8S19634C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19634C9D0Ev,_ZTv0_n16_N8S19634C9D0Ev)();
extern void ABISELECT(_ZThn32_N8S19634C9D0Ev,_ZThn16_N8S19634C9D0Ev)() __attribute__((weak));
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C8__A1__8S19634C9__8S19634C4[] = {
  0,
  ABISELECT(-32,-16),
  ABISELECT(-70,-34),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19634C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19634C9D1Ev,_ZTv0_n16_N8S19634C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19634C9D0Ev,_ZTv0_n16_N8S19634C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
extern void ABISELECT(_ZTvn8_n32_N8S19634C9D1Ev,_ZTvn4_n16_N8S19634C9D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N8S19634C9D0Ev,_ZTvn4_n16_N8S19634C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt8S19634C8__A5__8S19634C9__8S19634C4[] = {
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19634C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S19634C9D1Ev,_ZTvn4_n16_N8S19634C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S19634C9D0Ev,_ZTvn4_n16_N8S19634C9D0Ev),
};
extern void _ZN9S19634C11D1Ev();
extern void _ZN9S19634C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19634C11__8S19634C4[] = {
  ABISELECT(-62,-30),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19634C11[0]),
  (VTBL_ENTRY)&_ZN9S19634C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19634C11D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19634C11D1Ev,_ZTv0_n16_N9S19634C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S19634C11D1Ev,_ZThn4_N9S19634C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19634C11D0Ev,_ZTv0_n16_N9S19634C11D0Ev)();
extern void ABISELECT(_ZThn8_N9S19634C11D0Ev,_ZThn4_N9S19634C11D0Ev)() __attribute__((weak));
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C8__9S19634C11__8S19634C4[] = {
  0,
  ABISELECT(-8,-4),
  ABISELECT(-70,-34),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19634C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19634C11D1Ev,_ZTv0_n16_N9S19634C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19634C11D0Ev,_ZTv0_n16_N9S19634C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
extern void ABISELECT(_ZTvn8_n32_N9S19634C11D1Ev,_ZTvn4_n16_N9S19634C11D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N9S19634C11D0Ev,_ZTvn4_n16_N9S19634C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt8S19634C8__A1__9S19634C11__8S19634C4[] = {
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19634C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N9S19634C11D1Ev,_ZTvn4_n16_N9S19634C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N9S19634C11D0Ev,_ZTvn4_n16_N9S19634C11D0Ev),
};
extern void _ZN8S19634C8D1Ev();
extern void _ZN8S19634C8D0Ev();
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C8__A2__8S19634C4[] = {
  ABISELECT(-70,-34),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C8[0]),
  (VTBL_ENTRY)&_ZN8S19634C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
static  VTT_ENTRY vtt_S19634C4[] = {
  {&(_ZTV8S19634C4[8]),  8,78},
  {&(_tg__ZTV8S19634C6__8S19634C4[3]),  3,5},
  {&(_ZTV8S19634C4[21]),  21,78},
  {&(_ZTV8S19634C4[27]),  27,78},
  {&(_ZTV8S19634C4[36]),  36,78},
  {&(_ZTV8S19634C4[31]),  31,78},
  {&(_ZTV8S19634C4[47]),  47,78},
  {&(_ZTV8S19634C4[53]),  53,78},
  {&(_ZTV8S19634C4[57]),  57,78},
  {&(_ZTV8S19634C4[64]),  64,78},
  {&(_ZTV8S19634C4[71]),  71,78},
  {&(_ZTV8S19634C4[76]),  76,78},
  {&(_tg__ZTV8S19634C7__8S19634C4[4]),  4,8},
  {&(_tg__ZTV8S19634C88S19634C7__8S19634C4[3]),  3,6},
  {&(_tg__ZTV8S19634C2__A1__8S19634C7__8S19634C4[3]),  3,5},
  {&(_tg__ZTV8S19634C9__8S19634C4[6]),  6,10},
  {&(_tg__ZTV8S19634C78S19634C9__A1__8S19634C4[4]),  4,8},
  {&(_tg__ZTV8S19634C88S19634C78S19634C9__A1__8S19634C4[3]),  3,6},
  {&(_tg__ZTV8S19634C2__A1__8S19634C78S19634C9__A1__8S19634C4[3]),  3,5},
  {&(_tg__ZTV8S19634C2__A1__8S19634C9__8S19634C4[3]),  3,5},
  {&(_tg__ZTV9S19634C11__8S19634C9__8S19634C4[5]),  5,7},
  {&(_tg__ZTV8S19634C8__A1__8S19634C9__8S19634C4[5]),  5,8},
  {&(_tg__ZTV9S343C6_nt8S19634C8__A5__8S19634C9__8S19634C4[2]),  2,4},
  {&(_tg__ZTV9S19634C11__8S19634C4[4]),  4,6},
  {&(_tg__ZTV8S19634C8__9S19634C11__8S19634C4[5]),  5,8},
  {&(_tg__ZTV9S343C6_nt8S19634C8__A1__9S19634C11__8S19634C4[2]),  2,4},
  {&(_tg__ZTV8S19634C8__A2__8S19634C4[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S19634C4[];
extern  VTBL_ENTRY _ZTV8S19634C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C4[];
static VTBL_ENTRY alt_thunk_names72[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19634C11D0Ev,_ZTv0_n16_N9S19634C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19634C11D0Ev,_ZThn4_N9S19634C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19634C11D1Ev,_ZTv0_n16_N9S19634C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19634C11D1Ev,_ZThn4_N9S19634C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19634C9D0Ev,_ZTv0_n16_N8S19634C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19634C9D0Ev,_ZThn16_N8S19634C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19634C9D1Ev,_ZTv0_n16_N8S19634C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19634C9D1Ev,_ZThn16_N8S19634C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19634C9D0Ev,_ZTv0_n20_N8S19634C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19634C9D0Ev,_ZThn12_N8S19634C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19634C9D1Ev,_ZTv0_n20_N8S19634C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19634C9D1Ev,_ZThn12_N8S19634C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19634C7D0Ev,_ZThn12_N8S19634C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19634C7D1Ev,_ZThn12_N8S19634C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19634C4D0Ev,_ZTv0_n16_N8S19634C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19634C4D0Ev,_ZThn44_N8S19634C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19634C4D1Ev,_ZTv0_n16_N8S19634C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19634C4D1Ev,_ZThn44_N8S19634C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19634C4D0Ev,_ZTv0_n28_N8S19634C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19634C4D0Ev,_ZThn28_N8S19634C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19634C4D1Ev,_ZTv0_n28_N8S19634C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19634C4D1Ev,_ZThn28_N8S19634C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19634C4D0Ev,_ZTv0_n12_N8S19634C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19634C4D0Ev,_ZThn24_N8S19634C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19634C4D1Ev,_ZTv0_n12_N8S19634C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19634C4D1Ev,_ZThn24_N8S19634C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19634C4D0Ev,_ZTv0_n20_N8S19634C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19634C4D0Ev,_ZThn40_N8S19634C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19634C4D0Ev,_ZThn12_N8S19634C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19634C4D1Ev,_ZTv0_n20_N8S19634C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19634C4D1Ev,_ZThn40_N8S19634C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19634C4D1Ev,_ZThn12_N8S19634C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19634C4 = {  "S19634C4", // class name
  bases_S19634C4, 29,
  &(vtc_S19634C4[0]), // expected_vtbl_contents
  &(vtt_S19634C4[0]), // expected_vtt_contents
  ABISELECT(104,52), // object size
  NSPAIRA(_ZTI8S19634C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19634C4),78, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19634C4),27, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names72,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19634C14  : virtual S19634C2 {
  virtual void  v3(); // _ZN9S19634C142v3Ev
  ~S19634C14(); // tgen
  S19634C14(); // tgen
};
//SIG(-1 S19634C14) C1{ VBC2{ BC3{ vd m} vd} v1}


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

static void Test_S19634C14()
{
  extern Class_Descriptor cd_S19634C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19634C14, buf);
    S19634C14 *dp, &lv = *(dp=new (buf) S19634C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19634C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19634C14)");
    check_base_class_offset(lv, (S343C6_nt*)(S19634C2*), 0, "S19634C14");
    check_base_class_offset(lv, (S19634C2*), 0, "S19634C14");
    test_class_info(&lv, &cd_S19634C14);
    dp->~S19634C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19634C14(Test_S19634C14, "S19634C14", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S19634C14C1Ev();
extern void _ZN9S19634C14D1Ev();
Name_Map name_map_S19634C14[] = {
  NSPAIR(_ZN9S19634C14C1Ev),
  NSPAIR(_ZN9S19634C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
static Base_Class bases_S19634C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19634C2,    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},
  {0}};
extern VTBL_ENTRY _ZTI9S19634C14[];
extern void _ZN9S19634C14D1Ev();
extern void _ZN9S19634C14D0Ev();
extern void _ZN9S19634C142v3Ev();
static  VTBL_ENTRY vtc_S19634C14[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19634C14[0]),
  (VTBL_ENTRY)&_ZN9S19634C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19634C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19634C142v3Ev,
};
extern VTBL_ENTRY _ZTV9S19634C14[];
static  VTT_ENTRY vtt_S19634C14[] = {
  {&(_ZTV9S19634C14[4]),  4,7},
  {&(_ZTV9S19634C14[4]),  4,7},
};
extern VTBL_ENTRY _ZTI9S19634C14[];
extern  VTBL_ENTRY _ZTV9S19634C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19634C14[];
Class_Descriptor cd_S19634C14 = {  "S19634C14", // class name
  bases_S19634C14, 2,
  &(vtc_S19634C14[0]), // expected_vtbl_contents
  &(vtt_S19634C14[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S19634C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19634C14),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19634C14),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  S19634C13  : S343C6_nt , S19634C8 , S19634C14 , S19634C6 , virtual S19634C7 {
  virtual  ~S19634C13(); // _ZN9S19634C13D2Ev
  virtual void  v4(); // _ZN9S19634C132v4Ev
  virtual void  v5(); // _ZN9S19634C132v5Ev
  S19634C13(); // tgen
};
//SIG(-1 S19634C13) C1{ BC2{ vd m} BC3{ VBC4{ m} BC5{ BC2 vd} BC2 v3} BC6{ VBC5 v4} BC7{ BC2 BC5 VBC4 vd} VBC8{ BC3 VBC5 BC2 BC4 vd v5} vd v1 v2}


 S19634C13 ::~S19634C13(){ note_dtor("S19634C13", this);}
void  S19634C13 ::v4(){vfunc_called(this, "_ZN9S19634C132v4Ev");}
void  S19634C13 ::v5(){vfunc_called(this, "_ZN9S19634C132v5Ev");}
S19634C13 ::S19634C13(){ note_ctor("S19634C13", this);} // tgen

static void Test_S19634C13()
{
  extern Class_Descriptor cd_S19634C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S19634C13, buf);
    S19634C13 *dp, &lv = *(dp=new (buf) S19634C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S19634C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19634C13)");
    /*is_ambiguous_... S19634C13::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*), 0, "S19634C13");
    /*is_ambiguous_... S19634C13::S19634C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19634C8*), 0, "S19634C13");
    check_base_class_offset(lv, (S731C17_nt*)(S19634C6*), 0, "S19634C13");
    check_base_class_offset(lv, (S731C17_nt*)(S19634C8*)(S19634C7*), 0, "S19634C13");
    /*is_ambiguous_... S19634C13::S19634C8 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C2*)(S19634C8*), ABISELECT(8,4), "S19634C13");
    /*is_ambiguous_... S19634C13::S19634C8 */ AMB_check_base_class_offset(lv, (S19634C2*)(S19634C8*), ABISELECT(8,4), "S19634C13");
    /*is_ambiguous_... S19634C13::S19634C8 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C8*), ABISELECT(16,8), "S19634C13");
    /*is_ambiguous_... S19634C13::S19634C8 */ AMB_check_base_class_offset(lv, (S19634C8*), ABISELECT(8,4), "S19634C13");
    /*is_ambiguous_... S19634C13::S19634C2 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C2*), ABISELECT(24,12), "S19634C13");
    check_base_class_offset(lv, (S19634C2*)(S19634C14*), ABISELECT(24,12), "S19634C13");
    /*is_ambiguous_... S19634C7::S19634C2 */ AMB_check_base_class_offset(lv, (S19634C2*)(S19634C7*), ABISELECT(24,12), "S19634C13");
    check_base_class_offset(lv, (S19634C14*), ABISELECT(24,12), "S19634C13");
    /*is_ambiguous_... S19634C6::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C6*), ABISELECT(32,16), "S19634C13");
    check_base_class_offset(lv, (S343C6_nt*)(S19634C2*)(S19634C6*), ABISELECT(40,20), "S19634C13");
    check_base_class_offset(lv, (S19634C2*)(S19634C6*), ABISELECT(40,20), "S19634C13");
    check_base_class_offset(lv, (S19634C6*), ABISELECT(32,16), "S19634C13");
    check_base_class_offset(lv, (S343C6_nt*)(S19634C2*)(S19634C8*)(S19634C7*), ABISELECT(48,24), "S19634C13");
    check_base_class_offset(lv, (S19634C2*)(S19634C8*)(S19634C7*), ABISELECT(48,24), "S19634C13");
    /*is_ambiguous_... S19634C8::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C8*)(S19634C7*), ABISELECT(56,28), "S19634C13");
    check_base_class_offset(lv, (S19634C8*)(S19634C7*), ABISELECT(48,24), "S19634C13");
    /*is_ambiguous_... S19634C7::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C7*), ABISELECT(64,32), "S19634C13");
    /*is_ambiguous_... S19634C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19634C7*), ABISELECT(48,24), "S19634C13");
    check_base_class_offset(lv, (S19634C7*), ABISELECT(48,24), "S19634C13");
    test_class_info(&lv, &cd_S19634C13);
    dp->~S19634C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19634C13(Test_S19634C13, "S19634C13", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN9S19634C13C1Ev();
extern void _ZN9S19634C13D2Ev();
Name_Map name_map_S19634C13[] = {
  NSPAIR(_ZN9S19634C13C1Ev),
  NSPAIR(_ZN9S19634C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C8;
extern VTBL_ENTRY _ZTI8S19634C8[];
extern  VTBL_ENTRY _ZTV8S19634C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C8[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S19634C14;
extern VTBL_ENTRY _ZTI9S19634C14[];
extern  VTBL_ENTRY _ZTV9S19634C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19634C14[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S19634C6;
extern VTBL_ENTRY _ZTI8S19634C6[];
extern  VTBL_ENTRY _ZTV8S19634C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C8;
extern VTBL_ENTRY _ZTI8S19634C8[];
extern  VTBL_ENTRY _ZTV8S19634C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C8[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19634C7;
extern VTBL_ENTRY _ZTI8S19634C7[];
extern  VTBL_ENTRY _ZTV8S19634C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C7[];
static Base_Class bases_S19634C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S343C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19634C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(16,8), //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
    12, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19634C8,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S343C6_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
    7, //immediately_derived
  0, 0},
  {&cd_S19634C2,    ABISELECT(24,12), //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
    8, //immediately_derived
  0, 1},
  {&cd_S19634C14,    ABISELECT(24,12), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S343C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S343C6_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
    16, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19634C2,    ABISELECT(40,20), //bcp->offset
    31, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19634C6,    ABISELECT(32,16), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S343C6_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19634C2,    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
    4, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(56,28), //bcp->offset
    46, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19634C8,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(64,32), //bcp->offset
    50, //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
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19634C7,    ABISELECT(48,24), //bcp->offset
    35, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19634C13[];
extern void _ZN9S19634C13D1Ev();
extern void _ZN9S19634C13D0Ev();
extern void _ZN9S19634C132v4Ev();
extern void _ZN9S19634C132v5Ev();
extern void ABISELECT(_ZThn8_N9S19634C13D1Ev,_ZThn4_N9S19634C13D1Ev)();
extern void ABISELECT(_ZThn8_N9S19634C13D0Ev,_ZThn4_N9S19634C13D0Ev)();
extern void _ZN8S19634C82v1Ev();
extern void ABISELECT(_ZThn16_N9S19634C13D1Ev,_ZThn8_N9S19634C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S19634C13D0Ev,_ZThn8_N9S19634C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19634C13D1Ev,_ZTv0_n12_N9S19634C13D1Ev)();
extern void ABISELECT(_ZThn24_N9S19634C13D1Ev,_ZThn12_N9S19634C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19634C13D0Ev,_ZTv0_n12_N9S19634C13D0Ev)();
extern void ABISELECT(_ZThn24_N9S19634C13D0Ev,_ZThn12_N9S19634C13D0Ev)() __attribute__((weak));
extern void _ZN9S19634C142v3Ev();
extern void ABISELECT(_ZThn32_N9S19634C13D1Ev,_ZThn16_N9S19634C13D1Ev)();
extern void ABISELECT(_ZThn32_N9S19634C13D0Ev,_ZThn16_N9S19634C13D0Ev)();
extern void ABISELECT(_ZThn40_N9S19634C13D1Ev,_ZThn20_N9S19634C13D1Ev)();
extern void ABISELECT(_ZThn40_N9S19634C13D0Ev,_ZThn20_N9S19634C13D0Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19634C13D1Ev,_ZTv0_n20_N9S19634C13D1Ev)();
extern void ABISELECT(_ZThn48_N9S19634C13D1Ev,_ZThn24_N9S19634C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19634C13D0Ev,_ZTv0_n20_N9S19634C13D0Ev)();
extern void ABISELECT(_ZThn48_N9S19634C13D0Ev,_ZThn24_N9S19634C13D0Ev)() __attribute__((weak));
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
extern void ABISELECT(_ZTvn8_n40_N9S19634C13D1Ev,_ZTvn4_n20_N9S19634C13D1Ev)();
extern void ABISELECT(_ZTvn8_n40_N9S19634C13D0Ev,_ZTvn4_n20_N9S19634C13D0Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S19634C13D1Ev,_ZTvn8_n20_N9S19634C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S19634C13D0Ev,_ZTvn8_n20_N9S19634C13D0Ev)();
static  VTBL_ENTRY vtc_S19634C13[] = {
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19634C13[0]),
  (VTBL_ENTRY)&_ZN9S19634C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19634C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19634C132v4Ev,
  (VTBL_ENTRY)&_ZN9S19634C132v5Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19634C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19634C13D1Ev,_ZThn4_N9S19634C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19634C13D0Ev,_ZThn4_N9S19634C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19634C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19634C13D1Ev,_ZThn8_N9S19634C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19634C13D0Ev,_ZThn8_N9S19634C13D0Ev),
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19634C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19634C13D1Ev,_ZTv0_n12_N9S19634C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19634C13D0Ev,_ZTv0_n12_N9S19634C13D0Ev),
  (VTBL_ENTRY)&_ZN9S19634C142v3Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19634C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19634C13D1Ev,_ZThn16_N9S19634C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19634C13D0Ev,_ZThn16_N9S19634C13D0Ev),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19634C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19634C13D1Ev,_ZThn20_N9S19634C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19634C13D0Ev,_ZThn20_N9S19634C13D0Ev),
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19634C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19634C13D1Ev,_ZTv0_n20_N9S19634C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19634C13D0Ev,_ZTv0_n20_N9S19634C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19634C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n40_N9S19634C13D1Ev,_ZTvn4_n20_N9S19634C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n40_N9S19634C13D0Ev,_ZTvn4_n20_N9S19634C13D0Ev),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19634C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19634C13D1Ev,_ZTvn8_n20_N9S19634C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19634C13D0Ev,_ZTvn8_n20_N9S19634C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19634C13[];
extern void _ZN8S19634C8D1Ev();
extern void _ZN8S19634C8D0Ev();
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C8__9S19634C13[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C8[0]),
  (VTBL_ENTRY)&_ZN8S19634C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19634C14D1Ev,_ZTv0_n12_N9S19634C14D1Ev)();
extern void _ZN9S19634C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19634C14D0Ev,_ZTv0_n12_N9S19634C14D0Ev)();
extern void _ZN9S19634C14D0Ev() __attribute__((weak));
extern void _ZN9S19634C142v3Ev();
static  VTBL_ENTRY _tg__ZTV9S19634C14__9S19634C13[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19634C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19634C14D1Ev,_ZTv0_n12_N9S19634C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19634C14D0Ev,_ZTv0_n12_N9S19634C14D0Ev),
  (VTBL_ENTRY)&_ZN9S19634C142v3Ev,
};
extern void _ZN8S19634C6D1Ev();
extern void _ZN8S19634C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C6__9S19634C13[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C6[0]),
  (VTBL_ENTRY)&_ZN8S19634C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C6D0Ev,
};
extern void _ZN8S19634C7D1Ev();
extern void _ZN8S19634C7D0Ev();
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C7__9S19634C13[] = {
  ABISELECT(-24,-12),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C7[0]),
  (VTBL_ENTRY)&_ZN8S19634C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
};
extern void _ZN8S19634C8D1Ev();
extern void _ZN8S19634C8D0Ev();
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C88S19634C7__A1__9S19634C13[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C8[0]),
  (VTBL_ENTRY)&_ZN8S19634C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19634C2__A1__8S19634C7__9S19634C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19634C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev),
};
static  VTT_ENTRY vtt_S19634C13[] = {
  {&(_ZTV9S19634C13[5]),  5,54},
  {&(_tg__ZTV8S19634C8__9S19634C13[3]),  3,6},
  {&(_tg__ZTV9S19634C14__9S19634C13[4]),  4,7},
  {&(_tg__ZTV9S19634C14__9S19634C13[4]),  4,7},
  {&(_tg__ZTV8S19634C6__9S19634C13[3]),  3,5},
  {&(_ZTV9S19634C13[12]),  12,54},
  {&(_ZTV9S19634C13[23]),  23,54},
  {&(_ZTV9S19634C13[23]),  23,54},
  {&(_ZTV9S19634C13[29]),  29,54},
  {&(_ZTV9S19634C13[42]),  42,54},
  {&(_ZTV9S19634C13[48]),  48,54},
  {&(_ZTV9S19634C13[52]),  52,54},
  {&(_tg__ZTV8S19634C7__9S19634C13[4]),  4,8},
  {&(_tg__ZTV8S19634C88S19634C7__A1__9S19634C13[3]),  3,6},
  {&(_tg__ZTV8S19634C2__A1__8S19634C7__9S19634C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19634C13[];
extern  VTBL_ENTRY _ZTV9S19634C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19634C13[];
static VTBL_ENTRY alt_thunk_names73[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19634C14D0Ev,_ZTv0_n12_N9S19634C14D0Ev), // 
  (VTBL_ENTRY)_ZN9S19634C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19634C14D1Ev,_ZTv0_n12_N9S19634C14D1Ev), // 
  (VTBL_ENTRY)_ZN9S19634C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19634C13D0Ev,_ZTv0_n20_N9S19634C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19634C13D0Ev,_ZThn24_N9S19634C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19634C13D1Ev,_ZTv0_n20_N9S19634C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19634C13D1Ev,_ZThn24_N9S19634C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19634C13D0Ev,_ZTv0_n12_N9S19634C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19634C13D0Ev,_ZThn12_N9S19634C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19634C13D1Ev,_ZTv0_n12_N9S19634C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19634C13D1Ev,_ZThn12_N9S19634C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19634C13 = {  "S19634C13", // class name
  bases_S19634C13, 20,
  &(vtc_S19634C13[0]), // expected_vtbl_contents
  &(vtt_S19634C13[0]), // expected_vtt_contents
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI9S19634C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19634C13),54, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19634C13),15, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names73,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19634C12  : S19634C7 , virtual S19634C13 {
  virtual  ~S19634C12(); // _ZN9S19634C12D2Ev
  S19634C12(); // tgen
};
//SIG(-1 S19634C12) C1{ BC2{ BC3{ VBC4{ m} BC5{ BC6{ vd m} vd} BC6 v1} VBC5 BC6 BC4 vd v2} VBC7{ BC6 BC3 BC8{ VBC5 v3} BC9{ BC6 BC5 VBC4 vd} VBC2 vd v4 v5} vd}


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

static void Test_S19634C12()
{
  extern Class_Descriptor cd_S19634C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[13];
    init_test(&cd_S19634C12, buf);
    S19634C12 *dp, &lv = *(dp=new (buf) S19634C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,48), "sizeof(S19634C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19634C12)");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19634C8*)(S19634C7*), ABISELECT(24,12), "S19634C12");
    /*is_ambiguous_... S19634C13::S19634C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19634C8*)(S19634C13*), ABISELECT(24,12), "S19634C12");
    check_base_class_offset(lv, (S731C17_nt*)(S19634C6*)(S19634C13*), ABISELECT(24,12), "S19634C12");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19634C8*)(S19634C7*), ABISELECT(24,12), "S19634C12");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C2*)(S19634C8*)(S19634C7*), 0, "S19634C12");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S19634C2*)(S19634C8*)(S19634C7*), 0, "S19634C12");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C8*)(S19634C7*), ABISELECT(8,4), "S19634C12");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S19634C8*)(S19634C7*), 0, "S19634C12");
    /*is_ambiguous_... S19634C12::S19634C2 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C2*), ABISELECT(48,24), "S19634C12");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S19634C2*)(S19634C7*), ABISELECT(48,24), "S19634C12");
    check_base_class_offset(lv, (S19634C2*)(S19634C14*)(S19634C13*), ABISELECT(48,24), "S19634C12");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S19634C2*)(S19634C7*), ABISELECT(48,24), "S19634C12");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C7*), ABISELECT(16,8), "S19634C12");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19634C7*), 0, "S19634C12");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S19634C7*), 0, "S19634C12");
    /*is_ambiguous_... S19634C13::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C13*), ABISELECT(24,12), "S19634C12");
    /*is_ambiguous_... S19634C13::S19634C8 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C2*)(S19634C8*)(S19634C13*), ABISELECT(32,16), "S19634C12");
    /*is_ambiguous_... S19634C13::S19634C8 */ AMB_check_base_class_offset(lv, (S19634C2*)(S19634C8*)(S19634C13*), ABISELECT(32,16), "S19634C12");
    /*is_ambiguous_... S19634C13::S19634C8 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C8*)(S19634C13*), ABISELECT(40,20), "S19634C12");
    /*is_ambiguous_... S19634C13::S19634C8 */ AMB_check_base_class_offset(lv, (S19634C8*)(S19634C13*), ABISELECT(32,16), "S19634C12");
    check_base_class_offset(lv, (S19634C14*)(S19634C13*), ABISELECT(48,24), "S19634C12");
    /*is_ambiguous_... S19634C6::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C6*)(S19634C13*), ABISELECT(56,28), "S19634C12");
    check_base_class_offset(lv, (S343C6_nt*)(S19634C2*)(S19634C6*)(S19634C13*), ABISELECT(64,32), "S19634C12");
    check_base_class_offset(lv, (S19634C2*)(S19634C6*)(S19634C13*), ABISELECT(64,32), "S19634C12");
    check_base_class_offset(lv, (S19634C6*)(S19634C13*), ABISELECT(56,28), "S19634C12");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C2*)(S19634C8*)(S19634C7*), ABISELECT(72,36), "S19634C12");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S19634C2*)(S19634C8*)(S19634C7*), ABISELECT(72,36), "S19634C12");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C8*)(S19634C7*), ABISELECT(80,40), "S19634C12");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S19634C8*)(S19634C7*), ABISELECT(72,36), "S19634C12");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C7*), ABISELECT(88,44), "S19634C12");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19634C7*), ABISELECT(72,36), "S19634C12");
    check_base_class_offset(lv, (S19634C7*)(S19634C13*), ABISELECT(72,36), "S19634C12");
    check_base_class_offset(lv, (S19634C13*), ABISELECT(24,12), "S19634C12");
    test_class_info(&lv, &cd_S19634C12);
    dp->~S19634C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19634C12(Test_S19634C12, "S19634C12", ABISELECT(96,48));

#else // __cplusplus

extern void _ZN9S19634C12C1Ev();
extern void _ZN9S19634C12D2Ev();
Name_Map name_map_S19634C12[] = {
  NSPAIR(_ZN9S19634C12C1Ev),
  NSPAIR(_ZN9S19634C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C8;
extern VTBL_ENTRY _ZTI8S19634C8[];
extern  VTBL_ENTRY _ZTV8S19634C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C8[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19634C7;
extern VTBL_ENTRY _ZTI8S19634C7[];
extern  VTBL_ENTRY _ZTV8S19634C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C7[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C8;
extern VTBL_ENTRY _ZTI8S19634C8[];
extern  VTBL_ENTRY _ZTV8S19634C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C8[];
extern Class_Descriptor cd_S19634C14;
extern VTBL_ENTRY _ZTI9S19634C14[];
extern  VTBL_ENTRY _ZTV9S19634C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19634C14[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S19634C6;
extern VTBL_ENTRY _ZTI8S19634C6[];
extern  VTBL_ENTRY _ZTV8S19634C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C8;
extern VTBL_ENTRY _ZTI8S19634C8[];
extern  VTBL_ENTRY _ZTV8S19634C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C8[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19634C7;
extern VTBL_ENTRY _ZTI8S19634C7[];
extern  VTBL_ENTRY _ZTV8S19634C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C7[];
extern Class_Descriptor cd_S19634C13;
extern VTBL_ENTRY _ZTI9S19634C13[];
extern  VTBL_ENTRY _ZTV9S19634C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19634C13[];
static Base_Class bases_S19634C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_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, 1},
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S19634C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    4, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19634C8,    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
    23, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19634C2,    ABISELECT(48,24), //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
    9, //immediately_derived
  0, 1},
  {&cd_S343C6_nt,    ABISELECT(16,8), //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
    24, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19634C7,    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
    25, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S343C6_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
    9, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19634C2,    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
    11, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(40,20), //bcp->offset
    38, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19634C8,    ABISELECT(32,16), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19634C14,    ABISELECT(48,24), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19634C2,    ABISELECT(64,32), //bcp->offset
    54, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19634C6,    ABISELECT(56,28), //bcp->offset
    49, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19634C2,    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
    23, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(80,40), //bcp->offset
    69, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19634C8,    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
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(88,44), //bcp->offset
    73, //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
    7, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19634C7,    ABISELECT(72,36), //bcp->offset
    58, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S19634C13,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19634C12[];
extern void _ZN9S19634C12D1Ev();
extern void _ZN9S19634C12D0Ev();
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
extern void ABISELECT(_ZThn8_N9S19634C12D1Ev,_ZThn4_N9S19634C12D1Ev)();
extern void ABISELECT(_ZThn8_N9S19634C12D0Ev,_ZThn4_N9S19634C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S19634C12D1Ev,_ZThn8_N9S19634C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S19634C12D0Ev,_ZThn8_N9S19634C12D0Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19634C12D1Ev,_ZTv0_n24_N9S19634C12D1Ev)();
extern void ABISELECT(_ZThn24_N9S19634C12D1Ev,_ZThn12_N9S19634C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19634C12D0Ev,_ZTv0_n24_N9S19634C12D0Ev)();
extern void ABISELECT(_ZThn24_N9S19634C12D0Ev,_ZThn12_N9S19634C12D0Ev)() __attribute__((weak));
extern void _ZN9S19634C132v4Ev();
extern void _ZN9S19634C132v5Ev();
extern void ABISELECT(_ZTvn8_n48_N9S19634C12D1Ev,_ZTvn4_n24_N9S19634C12D1Ev)();
extern void ABISELECT(_ZTvn8_n48_N9S19634C12D0Ev,_ZTvn4_n24_N9S19634C12D0Ev)();
extern void _ZN8S19634C82v1Ev();
extern void ABISELECT(_ZTvn16_n48_N9S19634C12D1Ev,_ZTvn8_n24_N9S19634C12D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N9S19634C12D0Ev,_ZTvn8_n24_N9S19634C12D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19634C12D1Ev,_ZTv0_n12_N9S19634C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S19634C12D1Ev,_ZThn24_N9S19634C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19634C12D0Ev,_ZTv0_n12_N9S19634C12D0Ev)();
extern void ABISELECT(_ZThn48_N9S19634C12D0Ev,_ZThn24_N9S19634C12D0Ev)() __attribute__((weak));
extern void _ZN9S19634C142v3Ev();
extern void ABISELECT(_ZTvn32_n48_N9S19634C12D1Ev,_ZTvn16_n24_N9S19634C12D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N9S19634C12D0Ev,_ZTvn16_n24_N9S19634C12D0Ev)();
extern void ABISELECT(_ZTvn40_n48_N9S19634C12D1Ev,_ZTvn20_n24_N9S19634C12D1Ev)();
extern void ABISELECT(_ZTvn40_n48_N9S19634C12D0Ev,_ZTvn20_n24_N9S19634C12D0Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19634C12D1Ev,_ZTv0_n20_N9S19634C12D1Ev)();
extern void ABISELECT(_ZThn72_N9S19634C12D1Ev,_ZThn36_N9S19634C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19634C12D0Ev,_ZTv0_n20_N9S19634C12D0Ev)();
extern void ABISELECT(_ZThn72_N9S19634C12D0Ev,_ZThn36_N9S19634C12D0Ev)() __attribute__((weak));
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
extern void ABISELECT(_ZTvn8_n40_N9S19634C12D1Ev,_ZTvn4_n20_N9S19634C12D1Ev)();
extern void ABISELECT(_ZTvn8_n40_N9S19634C12D0Ev,_ZTvn4_n20_N9S19634C12D0Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S19634C12D1Ev,_ZTvn8_n20_N9S19634C12D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S19634C12D0Ev,_ZTvn8_n20_N9S19634C12D0Ev)();
static  VTBL_ENTRY vtc_S19634C12[] = {
  ABISELECT(72,36),
  ABISELECT(24,12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19634C12[0]),
  (VTBL_ENTRY)&_ZN9S19634C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19634C12D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19634C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19634C12D1Ev,_ZThn4_N9S19634C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19634C12D0Ev,_ZThn4_N9S19634C12D0Ev),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19634C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19634C12D1Ev,_ZThn8_N9S19634C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S19634C12D0Ev,_ZThn8_N9S19634C12D0Ev),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19634C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19634C12D1Ev,_ZTv0_n24_N9S19634C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19634C12D0Ev,_ZTv0_n24_N9S19634C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19634C132v4Ev,
  (VTBL_ENTRY)&_ZN9S19634C132v5Ev,
  ABISELECT(-8,-4),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19634C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n48_N9S19634C12D1Ev,_ZTvn4_n24_N9S19634C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n48_N9S19634C12D0Ev,_ZTvn4_n24_N9S19634C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19634C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S19634C12D1Ev,_ZTvn8_n24_N9S19634C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S19634C12D0Ev,_ZTvn8_n24_N9S19634C12D0Ev),
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19634C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19634C12D1Ev,_ZTv0_n12_N9S19634C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19634C12D0Ev,_ZTv0_n12_N9S19634C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19634C142v3Ev,
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19634C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N9S19634C12D1Ev,_ZTvn16_n24_N9S19634C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N9S19634C12D0Ev,_ZTvn16_n24_N9S19634C12D0Ev),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19634C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n48_N9S19634C12D1Ev,_ZTvn20_n24_N9S19634C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n48_N9S19634C12D0Ev,_ZTvn20_n24_N9S19634C12D0Ev),
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-24,-12),
  ABISELECT(-48,-24),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S19634C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19634C12D1Ev,_ZTv0_n20_N9S19634C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19634C12D0Ev,_ZTv0_n20_N9S19634C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S19634C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n40_N9S19634C12D1Ev,_ZTvn4_n20_N9S19634C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n40_N9S19634C12D0Ev,_ZTvn4_n20_N9S19634C12D0Ev),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S19634C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19634C12D1Ev,_ZTvn8_n20_N9S19634C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19634C12D0Ev,_ZTvn8_n20_N9S19634C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S19634C12[];
extern void _ZN8S19634C7D1Ev();
extern void _ZN8S19634C7D0Ev();
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C7__A__9S19634C12[] = {
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C7[0]),
  (VTBL_ENTRY)&_ZN8S19634C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
};
extern void _ZN8S19634C8D1Ev();
extern void _ZN8S19634C8D0Ev();
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C88S19634C7__9S19634C12[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C8[0]),
  (VTBL_ENTRY)&_ZN8S19634C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S19634C7D1Ev,_ZThn24_N8S19634C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev)();
extern void ABISELECT(_ZThn48_N8S19634C7D0Ev,_ZThn24_N8S19634C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19634C2__A1__8S19634C7__A__9S19634C12[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19634C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev),
};
extern void _ZN9S19634C13D1Ev();
extern void _ZN9S19634C13D0Ev();
extern void _ZN9S19634C132v4Ev();
extern void _ZN9S19634C132v5Ev();
static  VTBL_ENTRY _tg__ZTV9S19634C13__9S19634C12[] = {
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19634C13[0]),
  (VTBL_ENTRY)&_ZN9S19634C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19634C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19634C132v4Ev,
  (VTBL_ENTRY)&_ZN9S19634C132v5Ev,
};
extern void _ZN8S19634C8D1Ev();
extern void _ZN8S19634C8D0Ev();
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C89S19634C13__A1__9S19634C12[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C8[0]),
  (VTBL_ENTRY)&_ZN8S19634C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19634C14D1Ev,_ZTv0_n12_N9S19634C14D1Ev)();
extern void _ZN9S19634C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19634C14D0Ev,_ZTv0_n12_N9S19634C14D0Ev)();
extern void _ZN9S19634C14D0Ev() __attribute__((weak));
extern void _ZN9S19634C142v3Ev();
static  VTBL_ENTRY _tg__ZTV9S19634C149S19634C13__9S19634C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19634C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19634C14D1Ev,_ZTv0_n12_N9S19634C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19634C14D0Ev,_ZTv0_n12_N9S19634C14D0Ev),
  (VTBL_ENTRY)&_ZN9S19634C142v3Ev,
};
extern void _ZN8S19634C6D1Ev();
extern void _ZN8S19634C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C69S19634C13__9S19634C12[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C6[0]),
  (VTBL_ENTRY)&_ZN8S19634C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C6D0Ev,
};
extern void ABISELECT(_ZThn8_N9S19634C13D1Ev,_ZThn4_N9S19634C13D1Ev)();
extern void ABISELECT(_ZThn8_N9S19634C13D0Ev,_ZThn4_N9S19634C13D0Ev)();
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C8__9S19634C13__9S19634C12[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19634C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19634C13D1Ev,_ZThn4_N9S19634C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19634C13D0Ev,_ZThn4_N9S19634C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19634C13D1Ev,_ZTv0_n12_N9S19634C13D1Ev)();
extern void ABISELECT(_ZThn24_N9S19634C13D1Ev,_ZThn12_N9S19634C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19634C13D0Ev,_ZTv0_n12_N9S19634C13D0Ev)();
extern void ABISELECT(_ZThn24_N9S19634C13D0Ev,_ZThn12_N9S19634C13D0Ev)() __attribute__((weak));
extern void _ZN9S19634C142v3Ev();
static  VTBL_ENTRY _tg__ZTV9S19634C14__9S19634C13__9S19634C12[] = {
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19634C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19634C13D1Ev,_ZTv0_n12_N9S19634C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19634C13D0Ev,_ZTv0_n12_N9S19634C13D0Ev),
  (VTBL_ENTRY)&_ZN9S19634C142v3Ev,
};
extern void ABISELECT(_ZThn32_N9S19634C13D1Ev,_ZThn16_N9S19634C13D1Ev)();
extern void ABISELECT(_ZThn32_N9S19634C13D0Ev,_ZThn16_N9S19634C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19634C6__9S19634C13__9S19634C12[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19634C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19634C13D1Ev,_ZThn16_N9S19634C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19634C13D0Ev,_ZThn16_N9S19634C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19634C13D1Ev,_ZTv0_n20_N9S19634C13D1Ev)();
extern void ABISELECT(_ZThn48_N9S19634C13D1Ev,_ZThn24_N9S19634C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19634C13D0Ev,_ZTv0_n20_N9S19634C13D0Ev)();
extern void ABISELECT(_ZThn48_N9S19634C13D0Ev,_ZThn24_N9S19634C13D0Ev)() __attribute__((weak));
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C7__9S19634C13__9S19634C12[] = {
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-24,-12),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19634C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19634C13D1Ev,_ZTv0_n20_N9S19634C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19634C13D0Ev,_ZTv0_n20_N9S19634C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
};
extern void ABISELECT(_ZTvn8_n40_N9S19634C13D1Ev,_ZTvn4_n20_N9S19634C13D1Ev)();
extern void ABISELECT(_ZTvn8_n40_N9S19634C13D0Ev,_ZTvn4_n20_N9S19634C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt8S19634C88S19634C7__A7__9S19634C13__9S19634C12[] = {
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19634C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n40_N9S19634C13D1Ev,_ZTvn4_n20_N9S19634C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n40_N9S19634C13D0Ev,_ZTvn4_n20_N9S19634C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S19634C13D1Ev,_ZTvn8_n20_N9S19634C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S19634C13D0Ev,_ZTvn8_n20_N9S19634C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt8S19634C7__A8__9S19634C13__9S19634C12[] = {
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19634C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19634C13D1Ev,_ZTvn8_n20_N9S19634C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19634C13D0Ev,_ZTvn8_n20_N9S19634C13D0Ev),
};
extern void _ZN8S19634C7D1Ev();
extern void _ZN8S19634C7D0Ev();
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C7__A1__9S19634C12[] = {
  ABISELECT(-24,-12),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C7[0]),
  (VTBL_ENTRY)&_ZN8S19634C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
};
extern void _ZN8S19634C8D1Ev();
extern void _ZN8S19634C8D0Ev();
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C88S19634C7__A2__9S19634C12[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C8[0]),
  (VTBL_ENTRY)&_ZN8S19634C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19634C2__A1__8S19634C7__A1__9S19634C12[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19634C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev),
};
static  VTT_ENTRY vtt_S19634C12[] = {
  {&(_ZTV9S19634C12[6]),  6,77},
  {&(_tg__ZTV8S19634C7__A__9S19634C12[4]),  4,8},
  {&(_tg__ZTV8S19634C88S19634C7__9S19634C12[3]),  3,6},
  {&(_tg__ZTV8S19634C2__A1__8S19634C7__A__9S19634C12[3]),  3,5},
  {&(_ZTV9S19634C12[46]),  46,77},
  {&(_ZTV9S19634C12[28]),  28,77},
  {&(_ZTV9S19634C12[35]),  35,77},
  {&(_ZTV9S19634C12[40]),  40,77},
  {&(_ZTV9S19634C12[46]),  46,77},
  {&(_ZTV9S19634C12[52]),  52,77},
  {&(_ZTV9S19634C12[56]),  56,77},
  {&(_ZTV9S19634C12[65]),  65,77},
  {&(_ZTV9S19634C12[71]),  71,77},
  {&(_ZTV9S19634C12[75]),  75,77},
  {&(_tg__ZTV9S19634C13__9S19634C12[5]),  5,9},
  {&(_tg__ZTV8S19634C89S19634C13__A1__9S19634C12[3]),  3,6},
  {&(_tg__ZTV9S19634C149S19634C13__9S19634C12[4]),  4,7},
  {&(_tg__ZTV9S19634C149S19634C13__9S19634C12[4]),  4,7},
  {&(_tg__ZTV8S19634C69S19634C13__9S19634C12[3]),  3,5},
  {&(_tg__ZTV8S19634C8__9S19634C13__9S19634C12[3]),  3,6},
  {&(_tg__ZTV9S19634C14__9S19634C13__9S19634C12[4]),  4,7},
  {&(_tg__ZTV9S19634C14__9S19634C13__9S19634C12[4]),  4,7},
  {&(_tg__ZTV8S19634C6__9S19634C13__9S19634C12[3]),  3,5},
  {&(_tg__ZTV8S19634C7__9S19634C13__9S19634C12[7]),  7,11},
  {&(_tg__ZTV9S343C6_nt8S19634C88S19634C7__A7__9S19634C13__9S19634C12[2]),  2,4},
  {&(_tg__ZTV9S343C6_nt8S19634C7__A8__9S19634C13__9S19634C12[2]),  2,4},
  {&(_tg__ZTV8S19634C7__A1__9S19634C12[4]),  4,8},
  {&(_tg__ZTV8S19634C88S19634C7__A2__9S19634C12[3]),  3,6},
  {&(_tg__ZTV8S19634C2__A1__8S19634C7__A1__9S19634C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19634C12[];
extern  VTBL_ENTRY _ZTV9S19634C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19634C12[];
static VTBL_ENTRY alt_thunk_names74[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19634C13D0Ev,_ZTv0_n20_N9S19634C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19634C13D0Ev,_ZThn24_N9S19634C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19634C13D1Ev,_ZTv0_n20_N9S19634C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19634C13D1Ev,_ZThn24_N9S19634C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19634C13D0Ev,_ZTv0_n12_N9S19634C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19634C13D0Ev,_ZThn12_N9S19634C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19634C13D1Ev,_ZTv0_n12_N9S19634C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19634C13D1Ev,_ZThn12_N9S19634C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19634C14D0Ev,_ZTv0_n12_N9S19634C14D0Ev), // 
  (VTBL_ENTRY)_ZN9S19634C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19634C14D1Ev,_ZTv0_n12_N9S19634C14D1Ev), // 
  (VTBL_ENTRY)_ZN9S19634C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19634C7D0Ev,_ZThn24_N8S19634C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19634C7D1Ev,_ZThn24_N8S19634C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19634C12D0Ev,_ZTv0_n20_N9S19634C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19634C12D0Ev,_ZThn36_N9S19634C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19634C12D1Ev,_ZTv0_n20_N9S19634C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19634C12D1Ev,_ZThn36_N9S19634C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19634C12D0Ev,_ZTv0_n12_N9S19634C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19634C12D0Ev,_ZThn24_N9S19634C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19634C12D1Ev,_ZTv0_n12_N9S19634C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19634C12D1Ev,_ZThn24_N9S19634C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19634C12D0Ev,_ZTv0_n24_N9S19634C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19634C12D0Ev,_ZThn12_N9S19634C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19634C12D1Ev,_ZTv0_n24_N9S19634C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19634C12D1Ev,_ZThn12_N9S19634C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19634C12 = {  "S19634C12", // class name
  bases_S19634C12, 28,
  &(vtc_S19634C12[0]), // expected_vtbl_contents
  &(vtt_S19634C12[0]), // expected_vtt_contents
  ABISELECT(96,48), // object size
  NSPAIRA(_ZTI9S19634C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19634C12),77, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19634C12),29, //virtual table table var
  25, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names74,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19634C1  : virtual S19634C2 , S19634C4 , S19634C6 , virtual S343C6_nt , S19634C12 {
  int s19634c1f0;
  ~S19634C1(); // tgen
  S19634C1(); // tgen
};
//SIG(1 S19634C1) C1{ VBC2{ BC3{ vd m} vd} BC4{ BC5{ m} BC6{ BC3 BC2 VBC5 vd} VBC7{ BC8{ VBC5 BC2 BC3 v1} VBC2 BC3 BC5 vd v2} VBC9{ BC10{ m} BC7 VBC11{ VBC8}} vd Fs} BC6 VBC3 BC12{ BC7 VBC13{ BC3 BC8 BC14{ VBC2 v3} BC6 VBC7 vd v4 v5} vd} Fi}


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

static void Test_S19634C1()
{
  extern Class_Descriptor cd_S19634C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,27)];
    init_test(&cd_S19634C1, buf);
    S19634C1 *dp, &lv = *(dp=new (buf) S19634C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,104), "sizeof(S19634C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19634C1)");
    /*is_ambiguous_... S19634C1::S19634C2 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C2*), ABISELECT(176,92), "S19634C1");
    /*is_ambiguous_... S19634C1::S19634C2 */ AMB_check_base_class_offset(lv, (S19634C2*), ABISELECT(176,92), "S19634C1");
    /*is_ambiguous_... S19634C1::S19634C7 */ AMB_check_base_class_offset(lv, (S19634C2*)(S19634C7*), ABISELECT(176,92), "S19634C1");
    /*is_ambiguous_... S19634C7::S19634C2 */ AMB_check_base_class_offset(lv, (S19634C2*)(S19634C7*)(S19634C9*), ABISELECT(176,92), "S19634C1");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S19634C2*)(S19634C7*)(S19634C12*), ABISELECT(176,92), "S19634C1");
    check_base_class_offset(lv, (S19634C2*)(S19634C14*)(S19634C13*), ABISELECT(176,92), "S19634C1");
    /*is_ambiguous_... S19634C4::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19634C4*), 0, "S19634C1");
    /*is_ambiguous_... S19634C6::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C6*)(S19634C4*), 0, "S19634C1");
    check_base_class_offset(lv, (S343C6_nt*)(S19634C2*)(S19634C6*)(S19634C4*), ABISELECT(8,4), "S19634C1");
    check_base_class_offset(lv, (S19634C2*)(S19634C6*)(S19634C4*), ABISELECT(8,4), "S19634C1");
    check_base_class_offset(lv, (S731C17_nt*)(S19634C6*)(S19634C4*), ABISELECT(68,36), "S19634C1");
    /*is_ambiguous_... S19634C1::S19634C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19634C8*)(S19634C7*), ABISELECT(68,36), "S19634C1");
    check_base_class_offset(lv, (S731C17_nt*)(S19634C8*)(S19634C7*)(S19634C9*), ABISELECT(68,36), "S19634C1");
    /*is_ambiguous_... S19634C1::S19634C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19634C8*), ABISELECT(68,36), "S19634C1");
    /*is_ambiguous_... S19634C1::S19634C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19634C6*), ABISELECT(68,36), "S19634C1");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19634C8*)(S19634C7*)(S19634C12*), ABISELECT(68,36), "S19634C1");
    /*is_ambiguous_... S19634C13::S19634C8 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19634C8*)(S19634C13*), ABISELECT(68,36), "S19634C1");
    check_base_class_offset(lv, (S731C17_nt*)(S19634C6*)(S19634C13*), ABISELECT(68,36), "S19634C1");
    check_base_class_offset(lv, (S19634C6*)(S19634C4*), 0, "S19634C1");
    /*is_ambiguous_... S19634C1::S19634C7 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C2*)(S19634C8*)(S19634C7*), ABISELECT(72,40), "S19634C1");
    /*is_ambiguous_... S19634C1::S19634C7 */ AMB_check_base_class_offset(lv, (S19634C2*)(S19634C8*)(S19634C7*), ABISELECT(72,40), "S19634C1");
    /*is_ambiguous_... S19634C1::S19634C7 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C8*)(S19634C7*), ABISELECT(80,44), "S19634C1");
    /*is_ambiguous_... S19634C1::S19634C7 */ AMB_check_base_class_offset(lv, (S19634C8*)(S19634C7*), ABISELECT(72,40), "S19634C1");
    /*is_ambiguous_... S19634C1::S19634C7 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C7*), ABISELECT(88,48), "S19634C1");
    /*is_ambiguous_... S19634C1::S19634C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19634C7*), ABISELECT(72,40), "S19634C1");
    /*is_ambiguous_... S19634C4::S19634C7 */ AMB_check_base_class_offset(lv, (S19634C7*)(S19634C4*), ABISELECT(72,40), "S19634C1");
    check_base_class_offset(lv, (S19634C7*)(S19634C13*), ABISELECT(72,40), "S19634C1");
    check_base_class_offset(lv, (S28C52_nt*)(S19634C9*), ABISELECT(96,52), "S19634C1");
    check_base_class_offset(lv, (S343C6_nt*)(S19634C2*)(S19634C8*)(S19634C7*)(S19634C9*), ABISELECT(96,52), "S19634C1");
    check_base_class_offset(lv, (S19634C2*)(S19634C8*)(S19634C7*)(S19634C9*), ABISELECT(96,52), "S19634C1");
    /*is_ambiguous_... S19634C8::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C8*)(S19634C7*)(S19634C9*), ABISELECT(104,56), "S19634C1");
    check_base_class_offset(lv, (S19634C8*)(S19634C7*)(S19634C9*), ABISELECT(96,52), "S19634C1");
    /*is_ambiguous_... S19634C7::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C7*)(S19634C9*), ABISELECT(112,60), "S19634C1");
    /*is_ambiguous_... S19634C7::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19634C7*)(S19634C9*), ABISELECT(96,52), "S19634C1");
    check_base_class_offset(lv, (S19634C7*)(S19634C9*), ABISELECT(96,52), "S19634C1");
    /*is_ambiguous_... S19634C1::S19634C8 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C2*)(S19634C8*), ABISELECT(128,68), "S19634C1");
    /*is_ambiguous_... S19634C1::S19634C8 */ AMB_check_base_class_offset(lv, (S19634C2*)(S19634C8*), ABISELECT(128,68), "S19634C1");
    /*is_ambiguous_... S19634C1::S19634C8 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C8*), ABISELECT(136,72), "S19634C1");
    check_base_class_offset(lv, (S19634C8*)(S19634C11*), ABISELECT(128,68), "S19634C1");
    check_base_class_offset(lv, (S19634C11*)(S19634C9*), ABISELECT(120,64), "S19634C1");
    check_base_class_offset(lv, (S19634C9*)(S19634C4*), ABISELECT(96,52), "S19634C1");
    check_base_class_offset(lv, (S19634C4*), 0, "S19634C1");
    /*is_ambiguous_... S19634C1::S19634C6 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C6*), ABISELECT(24,12), "S19634C1");
    /*is_ambiguous_... S19634C1::S19634C6 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C2*)(S19634C6*), ABISELECT(32,16), "S19634C1");
    /*is_ambiguous_... S19634C1::S19634C6 */ AMB_check_base_class_offset(lv, (S19634C2*)(S19634C6*), ABISELECT(32,16), "S19634C1");
    /*is_ambiguous_... S19634C1::S19634C6 */ AMB_check_base_class_offset(lv, (S19634C6*), ABISELECT(24,12), "S19634C1");
    /*is_ambiguous_... S19634C1::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*), ABISELECT(144,76), "S19634C1");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C2*)(S19634C8*)(S19634C7*)(S19634C12*), ABISELECT(40,20), "S19634C1");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S19634C2*)(S19634C8*)(S19634C7*)(S19634C12*), ABISELECT(40,20), "S19634C1");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C8*)(S19634C7*)(S19634C12*), ABISELECT(48,24), "S19634C1");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S19634C8*)(S19634C7*)(S19634C12*), ABISELECT(40,20), "S19634C1");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C7*)(S19634C12*), ABISELECT(56,28), "S19634C1");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S19634C7*)(S19634C12*), ABISELECT(40,20), "S19634C1");
    /*is_ambiguous_... S19634C12::S19634C7 */ AMB_check_base_class_offset(lv, (S19634C7*)(S19634C12*), ABISELECT(40,20), "S19634C1");
    /*is_ambiguous_... S19634C13::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C13*), ABISELECT(152,80), "S19634C1");
    /*is_ambiguous_... S19634C13::S19634C8 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C2*)(S19634C8*)(S19634C13*), ABISELECT(160,84), "S19634C1");
    /*is_ambiguous_... S19634C13::S19634C8 */ AMB_check_base_class_offset(lv, (S19634C2*)(S19634C8*)(S19634C13*), ABISELECT(160,84), "S19634C1");
    /*is_ambiguous_... S19634C13::S19634C8 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C8*)(S19634C13*), ABISELECT(168,88), "S19634C1");
    /*is_ambiguous_... S19634C13::S19634C8 */ AMB_check_base_class_offset(lv, (S19634C8*)(S19634C13*), ABISELECT(160,84), "S19634C1");
    check_base_class_offset(lv, (S19634C14*)(S19634C13*), ABISELECT(176,92), "S19634C1");
    /*is_ambiguous_... S19634C6::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S19634C6*)(S19634C13*), ABISELECT(184,96), "S19634C1");
    check_base_class_offset(lv, (S343C6_nt*)(S19634C2*)(S19634C6*)(S19634C13*), ABISELECT(192,100), "S19634C1");
    check_base_class_offset(lv, (S19634C2*)(S19634C6*)(S19634C13*), ABISELECT(192,100), "S19634C1");
    check_base_class_offset(lv, (S19634C6*)(S19634C13*), ABISELECT(184,96), "S19634C1");
    check_base_class_offset(lv, (S19634C13*)(S19634C12*), ABISELECT(152,80), "S19634C1");
    check_base_class_offset(lv, (S19634C12*), ABISELECT(40,20), "S19634C1");
    check_field_offset(lv, s19634c1f0, ABISELECT(64,32), "S19634C1.s19634c1f0");
    test_class_info(&lv, &cd_S19634C1);
    dp->~S19634C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19634C1(Test_S19634C1, "S19634C1", ABISELECT(200,104));

#else // __cplusplus

extern void _ZN8S19634C1C1Ev();
extern void _ZN8S19634C1D1Ev();
Name_Map name_map_S19634C1[] = {
  NSPAIR(_ZN8S19634C1C1Ev),
  NSPAIR(_ZN8S19634C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19634C6;
extern VTBL_ENTRY _ZTI8S19634C6[];
extern  VTBL_ENTRY _ZTV8S19634C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C8;
extern VTBL_ENTRY _ZTI8S19634C8[];
extern  VTBL_ENTRY _ZTV8S19634C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C8[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19634C7;
extern VTBL_ENTRY _ZTI8S19634C7[];
extern  VTBL_ENTRY _ZTV8S19634C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C7[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C8;
extern VTBL_ENTRY _ZTI8S19634C8[];
extern  VTBL_ENTRY _ZTV8S19634C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C8[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19634C7;
extern VTBL_ENTRY _ZTI8S19634C7[];
extern  VTBL_ENTRY _ZTV8S19634C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C7[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C8;
extern VTBL_ENTRY _ZTI8S19634C8[];
extern  VTBL_ENTRY _ZTV8S19634C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C8[];
extern Class_Descriptor cd_S19634C11;
extern VTBL_ENTRY _ZTI9S19634C11[];
extern  VTBL_ENTRY _ZTV9S19634C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19634C11[];
extern Class_Descriptor cd_S19634C9;
extern VTBL_ENTRY _ZTI8S19634C9[];
extern  VTBL_ENTRY _ZTV8S19634C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C9[];
extern Class_Descriptor cd_S19634C4;
extern VTBL_ENTRY _ZTI8S19634C4[];
extern  VTBL_ENTRY _ZTV8S19634C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C4[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S19634C6;
extern VTBL_ENTRY _ZTI8S19634C6[];
extern  VTBL_ENTRY _ZTV8S19634C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C8;
extern VTBL_ENTRY _ZTI8S19634C8[];
extern  VTBL_ENTRY _ZTV8S19634C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C8[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S19634C7;
extern VTBL_ENTRY _ZTI8S19634C7[];
extern  VTBL_ENTRY _ZTV8S19634C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C7[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C8;
extern VTBL_ENTRY _ZTI8S19634C8[];
extern  VTBL_ENTRY _ZTV8S19634C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C8[];
extern Class_Descriptor cd_S19634C14;
extern VTBL_ENTRY _ZTI9S19634C14[];
extern  VTBL_ENTRY _ZTV9S19634C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19634C14[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S19634C2;
extern VTBL_ENTRY _ZTI8S19634C2[];
extern  VTBL_ENTRY _ZTV8S19634C2[];
extern Class_Descriptor cd_S19634C6;
extern VTBL_ENTRY _ZTI8S19634C6[];
extern  VTBL_ENTRY _ZTV8S19634C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C6[];
extern Class_Descriptor cd_S19634C13;
extern VTBL_ENTRY _ZTI9S19634C13[];
extern  VTBL_ENTRY _ZTV9S19634C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19634C13[];
extern Class_Descriptor cd_S19634C12;
extern VTBL_ENTRY _ZTI9S19634C12[];
extern  VTBL_ENTRY _ZTV9S19634C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19634C12[];
static Base_Class bases_S19634C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    ABISELECT(176,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19634C2,    ABISELECT(176,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    7, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S19634C2,    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
    35, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(68,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19634C6,    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
    36, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S343C6_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
    9, //immediately_derived
  0, 0},
  {&cd_S19634C2,    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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(80,44), //bcp->offset
    54, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19634C8,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(88,48), //bcp->offset
    58, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    14, //immediately_derived
  0, 0},
  {&cd_S19634C7,    ABISELECT(72,40), //bcp->offset
    43, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S28C52_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
    28, //immediately_derived
  0, 0},
  {&cd_S343C6_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
    14, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19634C2,    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
    15, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(104,56), //bcp->offset
    75, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19634C8,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(112,60), //bcp->offset
    79, //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
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    22, //immediately_derived
  0, 0},
  {&cd_S19634C7,    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
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19634C2,    ABISELECT(128,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(136,72), //bcp->offset
    98, //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
    26, //immediately_derived
  0, 0},
  {&cd_S19634C8,    ABISELECT(128,68), //bcp->offset
    90, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S19634C11,    ABISELECT(120,64), //bcp->offset
    83, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S19634C9,    ABISELECT(96,52), //bcp->offset
    62, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19634C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S343C6_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
    38, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19634C2,    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
    40, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19634C6,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S343C6_nt,    ABISELECT(144,76), //bcp->offset
    102, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_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
    42, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19634C2,    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
    43, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(48,24), //bcp->offset
    35, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19634C8,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(56,28), //bcp->offset
    39, //bcp->virtual_function_table_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
    41, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19634C7,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(152,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(160,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19634C2,    ABISELECT(160,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(168,88), //bcp->offset
    127, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19634C8,    ABISELECT(160,84), //bcp->offset
    121, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S19634C14,    ABISELECT(176,92), //bcp->offset
    131, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(184,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(192,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S19634C2,    ABISELECT(192,100), //bcp->offset
    143, //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
    30, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S19634C6,    ABISELECT(184,96), //bcp->offset
    138, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S19634C13,    ABISELECT(152,80), //bcp->offset
    107, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    53, //immediately_derived
  0, 1},
  {&cd_S19634C12,    ABISELECT(40,20), //bcp->offset
    25, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19634C1[];
extern void _ZN8S19634C1D1Ev();
extern void _ZN8S19634C1D0Ev();
extern void ABISELECT(_ZThn8_N8S19634C1D1Ev,_ZThn4_N8S19634C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S19634C1D0Ev,_ZThn4_N8S19634C1D0Ev)();
extern void ABISELECT(_ZThn24_N8S19634C1D1Ev,_ZThn12_N8S19634C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S19634C1D0Ev,_ZThn12_N8S19634C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S19634C1D1Ev,_ZThn16_N8S19634C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19634C1D0Ev,_ZThn16_N8S19634C1D0Ev)();
extern void ABISELECT(_ZThn40_N8S19634C1D1Ev,_ZThn20_N8S19634C1D1Ev)();
extern void ABISELECT(_ZThn40_N8S19634C1D0Ev,_ZThn20_N8S19634C1D0Ev)();
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
extern void ABISELECT(_ZThn48_N8S19634C1D1Ev,_ZThn24_N8S19634C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S19634C1D0Ev,_ZThn24_N8S19634C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S19634C1D1Ev,_ZThn28_N8S19634C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S19634C1D0Ev,_ZThn28_N8S19634C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19634C1D1Ev,_ZTv0_n20_N8S19634C1D1Ev)();
extern void ABISELECT(_ZThn72_N8S19634C1D1Ev,_ZThn40_N8S19634C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19634C1D0Ev,_ZTv0_n20_N8S19634C1D0Ev)();
extern void ABISELECT(_ZThn72_N8S19634C1D0Ev,_ZThn40_N8S19634C1D0Ev)() __attribute__((weak));
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
extern void ABISELECT(_ZTvn8_n40_N8S19634C1D1Ev,_ZTvn4_n20_N8S19634C1D1Ev)();
extern void ABISELECT(_ZTvn8_n40_N8S19634C1D0Ev,_ZTvn4_n20_N8S19634C1D0Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19634C1D1Ev,_ZTvn8_n20_N8S19634C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19634C1D0Ev,_ZTvn8_n20_N8S19634C1D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S19634C1D1Ev,_ZTv0_n28_N8S19634C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S19634C1D1Ev,_ZThn52_N8S19634C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19634C1D0Ev,_ZTv0_n28_N8S19634C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S19634C1D0Ev,_ZThn52_N8S19634C1D0Ev)() __attribute__((weak));
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
extern void ABISELECT(_ZTvn8_n56_N8S19634C1D1Ev,_ZTvn4_n28_N8S19634C1D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S19634C1D0Ev,_ZTvn4_n28_N8S19634C1D0Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S19634C1D1Ev,_ZTvn8_n28_N8S19634C1D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S19634C1D0Ev,_ZTvn8_n28_N8S19634C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19634C1D1Ev,_ZTv0_n20_N8S19634C1D1Ev)();
extern void ABISELECT(_ZThn120_N8S19634C1D1Ev,_ZThn64_N8S19634C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19634C1D0Ev,_ZTv0_n20_N8S19634C1D0Ev)();
extern void ABISELECT(_ZThn120_N8S19634C1D0Ev,_ZThn64_N8S19634C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19634C1D1Ev,_ZTv0_n16_N8S19634C1D1Ev)();
extern void ABISELECT(_ZThn128_N8S19634C1D1Ev,_ZThn68_N8S19634C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19634C1D0Ev,_ZTv0_n16_N8S19634C1D0Ev)();
extern void ABISELECT(_ZThn128_N8S19634C1D0Ev,_ZThn68_N8S19634C1D0Ev)() __attribute__((weak));
extern void _ZN8S19634C82v1Ev();
extern void ABISELECT(_ZTvn8_n32_N8S19634C1D1Ev,_ZTvn4_n16_N8S19634C1D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N8S19634C1D0Ev,_ZTvn4_n16_N8S19634C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19634C1D1Ev,_ZTv0_n12_N8S19634C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S19634C1D1Ev,_ZThn76_N8S19634C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19634C1D0Ev,_ZTv0_n12_N8S19634C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S19634C1D0Ev,_ZThn76_N8S19634C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19634C1D1Ev,_ZTv0_n24_N8S19634C1D1Ev)();
extern void ABISELECT(_ZThn152_N8S19634C1D1Ev,_ZThn80_N8S19634C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19634C1D0Ev,_ZTv0_n24_N8S19634C1D0Ev)();
extern void ABISELECT(_ZThn152_N8S19634C1D0Ev,_ZThn80_N8S19634C1D0Ev)() __attribute__((weak));
extern void _ZN9S19634C132v4Ev();
extern void _ZN9S19634C132v5Ev();
extern void ABISELECT(_ZTvn8_n48_N8S19634C1D1Ev,_ZTvn4_n24_N8S19634C1D1Ev)();
extern void ABISELECT(_ZTvn8_n48_N8S19634C1D0Ev,_ZTvn4_n24_N8S19634C1D0Ev)();
extern void _ZN8S19634C82v1Ev();
extern void ABISELECT(_ZTvn16_n48_N8S19634C1D1Ev,_ZTvn8_n24_N8S19634C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S19634C1D0Ev,_ZTvn8_n24_N8S19634C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19634C1D1Ev,_ZTv0_n12_N8S19634C1D1Ev)();
extern void ABISELECT(_ZThn176_N8S19634C1D1Ev,_ZThn92_N8S19634C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19634C1D0Ev,_ZTv0_n12_N8S19634C1D0Ev)();
extern void ABISELECT(_ZThn176_N8S19634C1D0Ev,_ZThn92_N8S19634C1D0Ev)() __attribute__((weak));
extern void _ZN9S19634C142v3Ev();
extern void ABISELECT(_ZTvn32_n48_N8S19634C1D1Ev,_ZTvn16_n24_N8S19634C1D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N8S19634C1D0Ev,_ZTvn16_n24_N8S19634C1D0Ev)();
extern void ABISELECT(_ZTvn40_n48_N8S19634C1D1Ev,_ZTvn20_n24_N8S19634C1D1Ev)();
extern void ABISELECT(_ZTvn40_n48_N8S19634C1D0Ev,_ZTvn20_n24_N8S19634C1D0Ev)();
static  VTBL_ENTRY vtc_S19634C1[] = {
  ABISELECT(152,80),
  ABISELECT(144,76),
  ABISELECT(128,68),
  ABISELECT(120,64),
  ABISELECT(96,52),
  ABISELECT(176,92),
  ABISELECT(72,40),
  ABISELECT(68,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C1[0]),
  (VTBL_ENTRY)&_ZN8S19634C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C1D0Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19634C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S19634C1D1Ev,_ZThn4_N8S19634C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S19634C1D0Ev,_ZThn4_N8S19634C1D0Ev),
  ABISELECT(44,24),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19634C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19634C1D1Ev,_ZThn12_N8S19634C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19634C1D0Ev,_ZThn12_N8S19634C1D0Ev),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19634C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19634C1D1Ev,_ZThn16_N8S19634C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S19634C1D0Ev,_ZThn16_N8S19634C1D0Ev),
  ABISELECT(32,20),
  ABISELECT(112,60),
  ABISELECT(136,72),
  ABISELECT(28,16),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19634C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19634C1D1Ev,_ZThn20_N8S19634C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19634C1D0Ev,_ZThn20_N8S19634C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19634C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S19634C1D1Ev,_ZThn24_N8S19634C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S19634C1D0Ev,_ZThn24_N8S19634C1D0Ev),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19634C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19634C1D1Ev,_ZThn28_N8S19634C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19634C1D0Ev,_ZThn28_N8S19634C1D0Ev),
  0,
  0,
  ABISELECT(-72,-40),
  ABISELECT(104,52),
  -4,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S19634C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19634C1D1Ev,_ZTv0_n20_N8S19634C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19634C1D0Ev,_ZTv0_n20_N8S19634C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19634C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n40_N8S19634C1D1Ev,_ZTvn4_n20_N8S19634C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n40_N8S19634C1D0Ev,_ZTvn4_n20_N8S19634C1D0Ev),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S19634C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19634C1D1Ev,_ZTvn8_n20_N8S19634C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19634C1D0Ev,_ZTvn8_n20_N8S19634C1D0Ev),
  0,
  0,
  ABISELECT(-96,-52),
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(80,40),
  ABISELECT(-28,-16),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S19634C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19634C1D1Ev,_ZTv0_n28_N8S19634C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19634C1D0Ev,_ZTv0_n28_N8S19634C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19634C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19634C1D1Ev,_ZTvn4_n28_N8S19634C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19634C1D0Ev,_ZTvn4_n28_N8S19634C1D0Ev),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19634C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19634C1D1Ev,_ZTvn8_n28_N8S19634C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19634C1D0Ev,_ZTvn8_n28_N8S19634C1D0Ev),
  ABISELECT(-120,-64),
  ABISELECT(-52,-28),
  ABISELECT(8,4),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S19634C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19634C1D1Ev,_ZTv0_n20_N8S19634C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19634C1D0Ev,_ZTv0_n20_N8S19634C1D0Ev),
  0,
  ABISELECT(-128,-68),
  ABISELECT(-60,-32),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S19634C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19634C1D1Ev,_ZTv0_n16_N8S19634C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19634C1D0Ev,_ZTv0_n16_N8S19634C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S19634C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S19634C1D1Ev,_ZTvn4_n16_N8S19634C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S19634C1D0Ev,_ZTvn4_n16_N8S19634C1D0Ev),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI8S19634C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C1D1Ev,_ZTv0_n12_N8S19634C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C1D0Ev,_ZTv0_n12_N8S19634C1D0Ev),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(-152,-80),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-84,-44),
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI8S19634C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19634C1D1Ev,_ZTv0_n24_N8S19634C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19634C1D0Ev,_ZTv0_n24_N8S19634C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19634C132v4Ev,
  (VTBL_ENTRY)&_ZN9S19634C132v5Ev,
  ABISELECT(-92,-48),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI8S19634C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n48_N8S19634C1D1Ev,_ZTvn4_n24_N8S19634C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n48_N8S19634C1D0Ev,_ZTvn4_n24_N8S19634C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI8S19634C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19634C1D1Ev,_ZTvn8_n24_N8S19634C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S19634C1D0Ev,_ZTvn8_n24_N8S19634C1D0Ev),
  0,
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S19634C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C1D1Ev,_ZTv0_n12_N8S19634C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C1D0Ev,_ZTv0_n12_N8S19634C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19634C142v3Ev,
  ABISELECT(-116,-60),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI8S19634C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N8S19634C1D1Ev,_ZTvn16_n24_N8S19634C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N8S19634C1D0Ev,_ZTvn16_n24_N8S19634C1D0Ev),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI8S19634C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n48_N8S19634C1D1Ev,_ZTvn20_n24_N8S19634C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n48_N8S19634C1D0Ev,_ZTvn20_n24_N8S19634C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19634C1[];
extern void _ZN8S19634C4D1Ev();
extern void _ZN8S19634C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C4__8S19634C1[] = {
  ABISELECT(128,68),
  ABISELECT(120,64),
  ABISELECT(96,52),
  ABISELECT(176,92),
  ABISELECT(72,40),
  ABISELECT(68,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C4[0]),
  (VTBL_ENTRY)&_ZN8S19634C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C4D0Ev,
};
extern void _ZN8S19634C6D1Ev();
extern void _ZN8S19634C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C68S19634C4__8S19634C1[] = {
  ABISELECT(68,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C6[0]),
  (VTBL_ENTRY)&_ZN8S19634C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C6D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S19634C4D1Ev,_ZTv0_n20_N8S19634C4D1Ev)();
extern void ABISELECT(_ZThn72_N8S19634C4D1Ev,_ZThn40_N8S19634C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19634C4D0Ev,_ZTv0_n20_N8S19634C4D0Ev)();
extern void ABISELECT(_ZThn72_N8S19634C4D0Ev,_ZThn40_N8S19634C4D0Ev)() __attribute__((weak));
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C7__8S19634C4__8S19634C1[] = {
  0,
  0,
  ABISELECT(-72,-40),
  ABISELECT(104,52),
  -4,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S19634C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19634C4D1Ev,_ZTv0_n20_N8S19634C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19634C4D0Ev,_ZTv0_n20_N8S19634C4D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
};
extern void ABISELECT(_ZTvn8_n40_N8S19634C4D1Ev,_ZTvn4_n20_N8S19634C4D1Ev)();
extern void ABISELECT(_ZTvn8_n40_N8S19634C4D0Ev,_ZTvn4_n20_N8S19634C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt8S19634C88S19634C7__A3__8S19634C4__8S19634C1[] = {
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19634C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n40_N8S19634C4D1Ev,_ZTvn4_n20_N8S19634C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n40_N8S19634C4D0Ev,_ZTvn4_n20_N8S19634C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19634C4D1Ev,_ZTv0_n12_N8S19634C4D1Ev)();
extern void ABISELECT(_ZThn176_N8S19634C4D1Ev,_ZThn92_N8S19634C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19634C4D0Ev,_ZTv0_n12_N8S19634C4D0Ev)();
extern void ABISELECT(_ZThn176_N8S19634C4D0Ev,_ZThn92_N8S19634C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19634C2__A2__8S19634C4__8S19634C1[] = {
  ABISELECT(-176,-92),
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI8S19634C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C4D1Ev,_ZTv0_n12_N8S19634C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C4D0Ev,_ZTv0_n12_N8S19634C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19634C4D1Ev,_ZTvn8_n20_N8S19634C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19634C4D0Ev,_ZTvn8_n20_N8S19634C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt8S19634C7__A5__8S19634C4__8S19634C1[] = {
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S19634C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19634C4D1Ev,_ZTvn8_n20_N8S19634C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19634C4D0Ev,_ZTvn8_n20_N8S19634C4D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S19634C4D1Ev,_ZTv0_n28_N8S19634C4D1Ev)();
extern void ABISELECT(_ZThn96_N8S19634C4D1Ev,_ZThn52_N8S19634C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19634C4D0Ev,_ZTv0_n28_N8S19634C4D0Ev)();
extern void ABISELECT(_ZThn96_N8S19634C4D0Ev,_ZThn52_N8S19634C4D0Ev)() __attribute__((weak));
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C9__8S19634C4__8S19634C1[] = {
  0,
  0,
  ABISELECT(-96,-52),
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(80,40),
  ABISELECT(-28,-16),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S19634C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19634C4D1Ev,_ZTv0_n28_N8S19634C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19634C4D0Ev,_ZTv0_n28_N8S19634C4D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
};
extern void ABISELECT(_ZTvn8_n56_N8S19634C4D1Ev,_ZTvn4_n28_N8S19634C4D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S19634C4D0Ev,_ZTvn4_n28_N8S19634C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt8S19634C88S19634C78S19634C9__A7__8S19634C4__8S19634C1[] = {
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19634C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19634C4D1Ev,_ZTvn4_n28_N8S19634C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19634C4D0Ev,_ZTvn4_n28_N8S19634C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N8S19634C4D1Ev,_ZTvn8_n28_N8S19634C4D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S19634C4D0Ev,_ZTvn8_n28_N8S19634C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt8S19634C78S19634C9__A8__8S19634C4__8S19634C1[] = {
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19634C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19634C4D1Ev,_ZTvn8_n28_N8S19634C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19634C4D0Ev,_ZTvn8_n28_N8S19634C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19634C4D1Ev,_ZTv0_n20_N8S19634C4D1Ev)();
extern void ABISELECT(_ZThn120_N8S19634C4D1Ev,_ZThn64_N8S19634C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19634C4D0Ev,_ZTv0_n20_N8S19634C4D0Ev)();
extern void ABISELECT(_ZThn120_N8S19634C4D0Ev,_ZThn64_N8S19634C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19634C11__8S19634C4__8S19634C1[] = {
  ABISELECT(-120,-64),
  ABISELECT(-52,-28),
  ABISELECT(8,4),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S19634C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19634C4D1Ev,_ZTv0_n20_N8S19634C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19634C4D0Ev,_ZTv0_n20_N8S19634C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19634C4D1Ev,_ZTv0_n16_N8S19634C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S19634C4D1Ev,_ZThn68_N8S19634C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19634C4D0Ev,_ZTv0_n16_N8S19634C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S19634C4D0Ev,_ZThn68_N8S19634C4D0Ev)() __attribute__((weak));
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C8__A2__8S19634C4__8S19634C1[] = {
  0,
  ABISELECT(-128,-68),
  ABISELECT(-60,-32),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S19634C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19634C4D1Ev,_ZTv0_n16_N8S19634C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19634C4D0Ev,_ZTv0_n16_N8S19634C4D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
extern void ABISELECT(_ZTvn8_n32_N8S19634C4D1Ev,_ZTvn4_n16_N8S19634C4D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N8S19634C4D0Ev,_ZTvn4_n16_N8S19634C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt8S19634C8__A10__8S19634C4__8S19634C1[] = {
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S19634C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S19634C4D1Ev,_ZTvn4_n16_N8S19634C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S19634C4D0Ev,_ZTvn4_n16_N8S19634C4D0Ev),
};
extern void _ZN8S19634C6D1Ev();
extern void _ZN8S19634C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C6__A1__8S19634C1[] = {
  ABISELECT(44,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C6[0]),
  (VTBL_ENTRY)&_ZN8S19634C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C6D0Ev,
};
extern void _ZN9S19634C12D1Ev();
extern void _ZN9S19634C12D0Ev();
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19634C12__8S19634C1[] = {
  ABISELECT(32,20),
  ABISELECT(112,60),
  ABISELECT(136,72),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19634C12[0]),
  (VTBL_ENTRY)&_ZN9S19634C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19634C12D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
};
extern void _ZN8S19634C7D1Ev();
extern void _ZN8S19634C7D0Ev();
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C79S19634C12__A2__8S19634C1[] = {
  ABISELECT(136,72),
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C7[0]),
  (VTBL_ENTRY)&_ZN8S19634C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
};
extern void _ZN8S19634C8D1Ev();
extern void _ZN8S19634C8D0Ev();
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C88S19634C79S19634C12__A3__8S19634C1[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C8[0]),
  (VTBL_ENTRY)&_ZN8S19634C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev)();
extern void ABISELECT(_ZThn136_N8S19634C7D1Ev,_ZThn72_N8S19634C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev)();
extern void ABISELECT(_ZThn136_N8S19634C7D0Ev,_ZThn72_N8S19634C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19634C2__A1__8S19634C79S19634C12__A2__8S19634C1[] = {
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI8S19634C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19634C12D1Ev,_ZTv0_n12_N9S19634C12D1Ev)();
extern void ABISELECT(_ZThn136_N9S19634C12D1Ev,_ZThn72_N9S19634C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19634C12D0Ev,_ZTv0_n12_N9S19634C12D0Ev)();
extern void ABISELECT(_ZThn136_N9S19634C12D0Ev,_ZThn72_N9S19634C12D0Ev)() __attribute__((weak));
extern void _ZN9S19634C142v3Ev();
static  VTBL_ENTRY _tg__ZTV9S19634C149S19634C13__9S19634C12__8S19634C1[] = {
  0,
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI9S19634C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19634C12D1Ev,_ZTv0_n12_N9S19634C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19634C12D0Ev,_ZTv0_n12_N9S19634C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19634C142v3Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19634C12D1Ev,_ZTv0_n24_N9S19634C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S19634C12D1Ev,_ZThn60_N9S19634C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19634C12D0Ev,_ZTv0_n24_N9S19634C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S19634C12D0Ev,_ZThn60_N9S19634C12D0Ev)() __attribute__((weak));
extern void _ZN9S19634C132v4Ev();
extern void _ZN9S19634C132v5Ev();
static  VTBL_ENTRY _tg__ZTV9S19634C13__9S19634C12__8S19634C1[] = {
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(-112,-60),
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-84,-44),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S19634C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19634C12D1Ev,_ZTv0_n24_N9S19634C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19634C12D0Ev,_ZTv0_n24_N9S19634C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19634C132v4Ev,
  (VTBL_ENTRY)&_ZN9S19634C132v5Ev,
};
extern void ABISELECT(_ZTvn8_n48_N9S19634C12D1Ev,_ZTvn4_n24_N9S19634C12D1Ev)();
extern void ABISELECT(_ZTvn8_n48_N9S19634C12D0Ev,_ZTvn4_n24_N9S19634C12D0Ev)();
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C89S19634C13__A1__9S19634C12__8S19634C1[] = {
  ABISELECT(-92,-48),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI9S19634C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n48_N9S19634C12D1Ev,_ZTvn4_n24_N9S19634C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n48_N9S19634C12D0Ev,_ZTvn4_n24_N9S19634C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
extern void ABISELECT(_ZTvn16_n48_N9S19634C12D1Ev,_ZTvn8_n24_N9S19634C12D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N9S19634C12D0Ev,_ZTvn8_n24_N9S19634C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt8S19634C89S19634C13__A6__9S19634C12__8S19634C1[] = {
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI9S19634C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S19634C12D1Ev,_ZTvn8_n24_N9S19634C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S19634C12D0Ev,_ZTvn8_n24_N9S19634C12D0Ev),
};
extern void ABISELECT(_ZTvn32_n48_N9S19634C12D1Ev,_ZTvn16_n24_N9S19634C12D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N9S19634C12D0Ev,_ZTvn16_n24_N9S19634C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19634C69S19634C13__9S19634C12__8S19634C1[] = {
  ABISELECT(-116,-60),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI9S19634C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N9S19634C12D1Ev,_ZTvn16_n24_N9S19634C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N9S19634C12D0Ev,_ZTvn16_n24_N9S19634C12D0Ev),
};
extern void ABISELECT(_ZTvn40_n48_N9S19634C12D1Ev,_ZTvn20_n24_N9S19634C12D1Ev)();
extern void ABISELECT(_ZTvn40_n48_N9S19634C12D0Ev,_ZTvn20_n24_N9S19634C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19634C28S19634C69S19634C13__A3__9S19634C12__8S19634C1[] = {
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI9S19634C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n48_N9S19634C12D1Ev,_ZTvn20_n24_N9S19634C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n48_N9S19634C12D0Ev,_ZTvn20_n24_N9S19634C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19634C12D1Ev,_ZTv0_n20_N9S19634C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S19634C12D1Ev,_ZThn20_N9S19634C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19634C12D0Ev,_ZTv0_n20_N9S19634C12D0Ev)();
extern void ABISELECT(_ZThn32_N9S19634C12D0Ev,_ZThn20_N9S19634C12D0Ev)() __attribute__((weak));
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C7__A1__9S19634C12__8S19634C1[] = {
  0,
  0,
  ABISELECT(-32,-20),
  ABISELECT(104,52),
  -4,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19634C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19634C12D1Ev,_ZTv0_n20_N9S19634C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19634C12D0Ev,_ZTv0_n20_N9S19634C12D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
};
extern void ABISELECT(_ZTvn8_n40_N9S19634C12D1Ev,_ZTvn4_n20_N9S19634C12D1Ev)();
extern void ABISELECT(_ZTvn8_n40_N9S19634C12D0Ev,_ZTvn4_n20_N9S19634C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt8S19634C88S19634C7__A10__9S19634C12__8S19634C1[] = {
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S19634C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n40_N9S19634C12D1Ev,_ZTvn4_n20_N9S19634C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n40_N9S19634C12D0Ev,_ZTvn4_n20_N9S19634C12D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S19634C12D1Ev,_ZTvn8_n20_N9S19634C12D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S19634C12D0Ev,_ZTvn8_n20_N9S19634C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt8S19634C7__A11__9S19634C12__8S19634C1[] = {
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19634C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19634C12D1Ev,_ZTvn8_n20_N9S19634C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19634C12D0Ev,_ZTvn8_n20_N9S19634C12D0Ev),
};
extern void _ZN8S19634C7D1Ev();
extern void _ZN8S19634C7D0Ev();
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C7__8S19634C1[] = {
  ABISELECT(104,52),
  -4,
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C7[0]),
  (VTBL_ENTRY)&_ZN8S19634C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
};
extern void _ZN8S19634C8D1Ev();
extern void _ZN8S19634C8D0Ev();
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C88S19634C7__8S19634C1[] = {
  -4,
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C8[0]),
  (VTBL_ENTRY)&_ZN8S19634C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev)();
extern void ABISELECT(_ZThn104_N8S19634C7D1Ev,_ZThn52_N8S19634C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev)();
extern void ABISELECT(_ZThn104_N8S19634C7D0Ev,_ZThn52_N8S19634C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19634C2__A1__8S19634C7__8S19634C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S19634C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev),
};
extern void _ZN8S19634C9D1Ev();
extern void _ZN8S19634C9D0Ev();
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C9__8S19634C1[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(80,40),
  ABISELECT(-28,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C9[0]),
  (VTBL_ENTRY)&_ZN8S19634C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C9D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
};
extern void _ZN8S19634C7D1Ev();
extern void _ZN8S19634C7D0Ev();
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C78S19634C9__A1__8S19634C1[] = {
  ABISELECT(80,40),
  ABISELECT(-28,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C7[0]),
  (VTBL_ENTRY)&_ZN8S19634C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
};
extern void _ZN8S19634C8D1Ev();
extern void _ZN8S19634C8D0Ev();
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C88S19634C78S19634C9__A1__8S19634C1[] = {
  ABISELECT(-28,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C8[0]),
  (VTBL_ENTRY)&_ZN8S19634C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev)();
extern void ABISELECT(_ZThn80_N8S19634C7D1Ev,_ZThn40_N8S19634C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev)();
extern void ABISELECT(_ZThn80_N8S19634C7D0Ev,_ZThn40_N8S19634C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19634C2__A1__8S19634C78S19634C9__A1__8S19634C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S19634C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19634C9D1Ev,_ZTv0_n12_N8S19634C9D1Ev)();
extern void ABISELECT(_ZThn80_N8S19634C9D1Ev,_ZThn40_N8S19634C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19634C9D0Ev,_ZTv0_n12_N8S19634C9D0Ev)();
extern void ABISELECT(_ZThn80_N8S19634C9D0Ev,_ZThn40_N8S19634C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19634C2__A1__8S19634C9__8S19634C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S19634C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C9D1Ev,_ZTv0_n12_N8S19634C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19634C9D0Ev,_ZTv0_n12_N8S19634C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19634C9D1Ev,_ZTv0_n20_N8S19634C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S19634C9D1Ev,_ZThn12_N8S19634C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19634C9D0Ev,_ZTv0_n20_N8S19634C9D0Ev)();
extern void ABISELECT(_ZThn24_N8S19634C9D0Ev,_ZThn12_N8S19634C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19634C11__8S19634C9__8S19634C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-52,-28),
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19634C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19634C9D1Ev,_ZTv0_n20_N8S19634C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19634C9D0Ev,_ZTv0_n20_N8S19634C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19634C9D1Ev,_ZTv0_n16_N8S19634C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S19634C9D1Ev,_ZThn16_N8S19634C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19634C9D0Ev,_ZTv0_n16_N8S19634C9D0Ev)();
extern void ABISELECT(_ZThn32_N8S19634C9D0Ev,_ZThn16_N8S19634C9D0Ev)() __attribute__((weak));
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C8__A1__8S19634C9__8S19634C1[] = {
  0,
  ABISELECT(-32,-16),
  ABISELECT(-60,-32),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19634C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19634C9D1Ev,_ZTv0_n16_N8S19634C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19634C9D0Ev,_ZTv0_n16_N8S19634C9D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
extern void ABISELECT(_ZTvn8_n32_N8S19634C9D1Ev,_ZTvn4_n16_N8S19634C9D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N8S19634C9D0Ev,_ZTvn4_n16_N8S19634C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt8S19634C8__A5__8S19634C9__8S19634C1[] = {
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19634C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S19634C9D1Ev,_ZTvn4_n16_N8S19634C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S19634C9D0Ev,_ZTvn4_n16_N8S19634C9D0Ev),
};
extern void _ZN9S19634C11D1Ev();
extern void _ZN9S19634C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19634C11__8S19634C1[] = {
  ABISELECT(-52,-28),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19634C11[0]),
  (VTBL_ENTRY)&_ZN9S19634C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19634C11D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19634C11D1Ev,_ZTv0_n16_N9S19634C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S19634C11D1Ev,_ZThn4_N9S19634C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19634C11D0Ev,_ZTv0_n16_N9S19634C11D0Ev)();
extern void ABISELECT(_ZThn8_N9S19634C11D0Ev,_ZThn4_N9S19634C11D0Ev)() __attribute__((weak));
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C8__9S19634C11__8S19634C1[] = {
  0,
  ABISELECT(-8,-4),
  ABISELECT(-60,-32),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19634C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19634C11D1Ev,_ZTv0_n16_N9S19634C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19634C11D0Ev,_ZTv0_n16_N9S19634C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
extern void ABISELECT(_ZTvn8_n32_N9S19634C11D1Ev,_ZTvn4_n16_N9S19634C11D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N9S19634C11D0Ev,_ZTvn4_n16_N9S19634C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt8S19634C8__A1__9S19634C11__8S19634C1[] = {
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19634C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N9S19634C11D1Ev,_ZTvn4_n16_N9S19634C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N9S19634C11D0Ev,_ZTvn4_n16_N9S19634C11D0Ev),
};
extern void _ZN8S19634C8D1Ev();
extern void _ZN8S19634C8D0Ev();
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C8__A2__8S19634C1[] = {
  ABISELECT(-60,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C8[0]),
  (VTBL_ENTRY)&_ZN8S19634C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
extern void _ZN9S19634C13D1Ev();
extern void _ZN9S19634C13D0Ev();
extern void _ZN9S19634C132v4Ev();
extern void _ZN9S19634C132v5Ev();
static  VTBL_ENTRY _tg__ZTV9S19634C13__8S19634C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(24,12),
  ABISELECT(-84,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19634C13[0]),
  (VTBL_ENTRY)&_ZN9S19634C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19634C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19634C132v4Ev,
  (VTBL_ENTRY)&_ZN9S19634C132v5Ev,
};
extern void _ZN8S19634C8D1Ev();
extern void _ZN8S19634C8D0Ev();
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C89S19634C13__A4__8S19634C1[] = {
  ABISELECT(-92,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C8[0]),
  (VTBL_ENTRY)&_ZN8S19634C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19634C14D1Ev,_ZTv0_n12_N9S19634C14D1Ev)();
extern void _ZN9S19634C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19634C14D0Ev,_ZTv0_n12_N9S19634C14D0Ev)();
extern void _ZN9S19634C14D0Ev() __attribute__((weak));
extern void _ZN9S19634C142v3Ev();
static  VTBL_ENTRY _tg__ZTV9S19634C149S19634C13__8S19634C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19634C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19634C14D1Ev,_ZTv0_n12_N9S19634C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19634C14D0Ev,_ZTv0_n12_N9S19634C14D0Ev),
  (VTBL_ENTRY)&_ZN9S19634C142v3Ev,
};
extern void _ZN8S19634C6D1Ev();
extern void _ZN8S19634C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C69S19634C13__A2__8S19634C1[] = {
  ABISELECT(-116,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19634C6[0]),
  (VTBL_ENTRY)&_ZN8S19634C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19634C6D0Ev,
};
extern void ABISELECT(_ZThn8_N9S19634C13D1Ev,_ZThn4_N9S19634C13D1Ev)();
extern void ABISELECT(_ZThn8_N9S19634C13D0Ev,_ZThn4_N9S19634C13D0Ev)();
extern void _ZN8S19634C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C8__9S19634C13__8S19634C1[] = {
  ABISELECT(-92,-48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19634C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19634C13D1Ev,_ZThn4_N9S19634C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19634C13D0Ev,_ZThn4_N9S19634C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19634C13D1Ev,_ZTv0_n12_N9S19634C13D1Ev)();
extern void ABISELECT(_ZThn24_N9S19634C13D1Ev,_ZThn12_N9S19634C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19634C13D0Ev,_ZTv0_n12_N9S19634C13D0Ev)();
extern void ABISELECT(_ZThn24_N9S19634C13D0Ev,_ZThn12_N9S19634C13D0Ev)() __attribute__((weak));
extern void _ZN9S19634C142v3Ev();
static  VTBL_ENTRY _tg__ZTV9S19634C14__9S19634C13__8S19634C1[] = {
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S19634C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19634C13D1Ev,_ZTv0_n12_N9S19634C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19634C13D0Ev,_ZTv0_n12_N9S19634C13D0Ev),
  (VTBL_ENTRY)&_ZN9S19634C142v3Ev,
};
extern void ABISELECT(_ZThn32_N9S19634C13D1Ev,_ZThn16_N9S19634C13D1Ev)();
extern void ABISELECT(_ZThn32_N9S19634C13D0Ev,_ZThn16_N9S19634C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19634C6__9S19634C13__8S19634C1[] = {
  ABISELECT(-116,-60),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19634C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19634C13D1Ev,_ZThn16_N9S19634C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19634C13D0Ev,_ZThn16_N9S19634C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19634C13D1Ev,_ZTv0_n20_N9S19634C13D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19634C13D0Ev,_ZTv0_n20_N9S19634C13D0Ev)();
extern void _ZN8S19634C82v1Ev();
extern void _ZN8S19634C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19634C7__9S19634C13__8S19634C1[] = {
  0,
  0,
  ABISELECT(80,40),
  ABISELECT(104,52),
  -4,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S19634C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19634C13D1Ev,_ZTv0_n20_N9S19634C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19634C13D0Ev,_ZTv0_n20_N9S19634C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19634C82v1Ev,
  (VTBL_ENTRY)&_ZN8S19634C72v2Ev,
};
extern void ABISELECT(_ZTvn8_n40_N9S19634C13D1Ev,_ZTvn4_n20_N9S19634C13D1Ev)();
extern void ABISELECT(_ZTvn8_n40_N9S19634C13D0Ev,_ZTvn4_n20_N9S19634C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt8S19634C88S19634C7__A7__9S19634C13__8S19634C1[] = {
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI9S19634C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n40_N9S19634C13D1Ev,_ZTvn4_n20_N9S19634C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n40_N9S19634C13D0Ev,_ZTvn4_n20_N9S19634C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S19634C13D1Ev,_ZTvn8_n20_N9S19634C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S19634C13D0Ev,_ZTvn8_n20_N9S19634C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt8S19634C7__A8__9S19634C13__8S19634C1[] = {
  ABISELECT(64,32),
  (VTBL_ENTRY)&(_ZTI9S19634C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19634C13D1Ev,_ZTvn8_n20_N9S19634C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19634C13D0Ev,_ZTvn8_n20_N9S19634C13D0Ev),
};
static  VTT_ENTRY vtt_S19634C1[] = {
  {&(_ZTV8S19634C1[10]),  10,147},
  {&(_tg__ZTV8S19634C4__8S19634C1[8]),  8,10},
  {&(_tg__ZTV8S19634C68S19634C4__8S19634C1[3]),  3,5},
  {&(_tg__ZTV8S19634C7__8S19634C4__8S19634C1[7]),  7,11},
  {&(_tg__ZTV9S343C6_nt8S19634C88S19634C7__A3__8S19634C4__8S19634C1[2]),  2,4},
  {&(_tg__ZTV8S19634C2__A2__8S19634C4__8S19634C1[3]),  3,5},
  {&(_tg__ZTV9S343C6_nt8S19634C7__A5__8S19634C4__8S19634C1[2]),  2,4},
  {&(_tg__ZTV8S19634C9__8S19634C4__8S19634C1[9]),  9,13},
  {&(_tg__ZTV9S343C6_nt8S19634C88S19634C78S19634C9__A7__8S19634C4__8S19634C1[2]),  2,4},
  {&(_tg__ZTV9S343C6_nt8S19634C78S19634C9__A8__8S19634C4__8S19634C1[2]),  2,4},
  {&(_tg__ZTV9S19634C11__8S19634C4__8S19634C1[5]),  5,7},
  {&(_tg__ZTV8S19634C8__A2__8S19634C4__8S19634C1[5]),  5,8},
  {&(_tg__ZTV9S343C6_nt8S19634C8__A10__8S19634C4__8S19634C1[2]),  2,4},
  {&(_tg__ZTV8S19634C6__A1__8S19634C1[3]),  3,5},
  {&(_tg__ZTV9S19634C12__8S19634C1[6]),  6,10},
  {&(_tg__ZTV8S19634C79S19634C12__A2__8S19634C1[4]),  4,8},
  {&(_tg__ZTV8S19634C88S19634C79S19634C12__A3__8S19634C1[3]),  3,6},
  {&(_tg__ZTV8S19634C2__A1__8S19634C79S19634C12__A2__8S19634C1[3]),  3,5},
  {&(_tg__ZTV9S19634C149S19634C13__9S19634C12__8S19634C1[4]),  4,7},
  {&(_tg__ZTV9S19634C13__9S19634C12__8S19634C1[10]),  10,14},
  {&(_tg__ZTV8S19634C89S19634C13__A1__9S19634C12__8S19634C1[3]),  3,6},
  {&(_tg__ZTV9S343C6_nt8S19634C89S19634C13__A6__9S19634C12__8S19634C1[2]),  2,4},
  {&(_tg__ZTV9S19634C149S19634C13__9S19634C12__8S19634C1[4]),  4,7},
  {&(_tg__ZTV8S19634C69S19634C13__9S19634C12__8S19634C1[3]),  3,5},
  {&(_tg__ZTV8S19634C28S19634C69S19634C13__A3__9S19634C12__8S19634C1[2]),  2,4},
  {&(_tg__ZTV8S19634C7__A1__9S19634C12__8S19634C1[7]),  7,11},
  {&(_tg__ZTV9S343C6_nt8S19634C88S19634C7__A10__9S19634C12__8S19634C1[2]),  2,4},
  {&(_tg__ZTV9S343C6_nt8S19634C7__A11__9S19634C12__8S19634C1[2]),  2,4},
  {&(_ZTV8S19634C1[135]),  135,147},
  {&(_ZTV8S19634C1[50]),  50,147},
  {&(_ZTV8S19634C1[56]),  56,147},
  {&(_ZTV8S19634C1[60]),  60,147},
  {&(_ZTV8S19634C1[71]),  71,147},
  {&(_ZTV8S19634C1[77]),  77,147},
  {&(_ZTV8S19634C1[81]),  81,147},
  {&(_ZTV8S19634C1[88]),  88,147},
  {&(_ZTV8S19634C1[95]),  95,147},
  {&(_ZTV8S19634C1[100]),  100,147},
  {&(_ZTV8S19634C1[19]),  19,147},
  {&(_ZTV8S19634C1[105]),  105,147},
  {&(_ZTV8S19634C1[31]),  31,147},
  {&(_ZTV8S19634C1[117]),  117,147},
  {&(_ZTV8S19634C1[124]),  124,147},
  {&(_ZTV8S19634C1[129]),  129,147},
  {&(_ZTV8S19634C1[135]),  135,147},
  {&(_ZTV8S19634C1[141]),  141,147},
  {&(_ZTV8S19634C1[145]),  145,147},
  {&(_tg__ZTV8S19634C7__8S19634C1[4]),  4,8},
  {&(_tg__ZTV8S19634C88S19634C7__8S19634C1[3]),  3,6},
  {&(_tg__ZTV8S19634C2__A1__8S19634C7__8S19634C1[3]),  3,5},
  {&(_tg__ZTV8S19634C9__8S19634C1[6]),  6,10},
  {&(_tg__ZTV8S19634C78S19634C9__A1__8S19634C1[4]),  4,8},
  {&(_tg__ZTV8S19634C88S19634C78S19634C9__A1__8S19634C1[3]),  3,6},
  {&(_tg__ZTV8S19634C2__A1__8S19634C78S19634C9__A1__8S19634C1[3]),  3,5},
  {&(_tg__ZTV8S19634C2__A1__8S19634C9__8S19634C1[3]),  3,5},
  {&(_tg__ZTV9S19634C11__8S19634C9__8S19634C1[5]),  5,7},
  {&(_tg__ZTV8S19634C8__A1__8S19634C9__8S19634C1[5]),  5,8},
  {&(_tg__ZTV9S343C6_nt8S19634C8__A5__8S19634C9__8S19634C1[2]),  2,4},
  {&(_tg__ZTV9S19634C11__8S19634C1[4]),  4,6},
  {&(_tg__ZTV8S19634C8__9S19634C11__8S19634C1[5]),  5,8},
  {&(_tg__ZTV9S343C6_nt8S19634C8__A1__9S19634C11__8S19634C1[2]),  2,4},
  {&(_tg__ZTV8S19634C8__A2__8S19634C1[3]),  3,6},
  {&(_tg__ZTV9S19634C13__8S19634C1[5]),  5,9},
  {&(_tg__ZTV8S19634C89S19634C13__A4__8S19634C1[3]),  3,6},
  {&(_tg__ZTV9S19634C149S19634C13__8S19634C1[4]),  4,7},
  {&(_tg__ZTV9S19634C149S19634C13__8S19634C1[4]),  4,7},
  {&(_tg__ZTV8S19634C69S19634C13__A2__8S19634C1[3]),  3,5},
  {&(_tg__ZTV8S19634C8__9S19634C13__8S19634C1[3]),  3,6},
  {&(_tg__ZTV9S19634C14__9S19634C13__8S19634C1[4]),  4,7},
  {&(_tg__ZTV9S19634C14__9S19634C13__8S19634C1[4]),  4,7},
  {&(_tg__ZTV8S19634C6__9S19634C13__8S19634C1[3]),  3,5},
  {&(_tg__ZTV8S19634C7__9S19634C13__8S19634C1[7]),  7,11},
  {&(_tg__ZTV9S343C6_nt8S19634C88S19634C7__A7__9S19634C13__8S19634C1[2]),  2,4},
  {&(_tg__ZTV9S343C6_nt8S19634C7__A8__9S19634C13__8S19634C1[2]),  2,4},
};
extern VTBL_ENTRY _ZTI8S19634C1[];
extern  VTBL_ENTRY _ZTV8S19634C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19634C1[];
static VTBL_ENTRY alt_thunk_names75[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19634C13D0Ev,_ZTv0_n12_N9S19634C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19634C13D0Ev,_ZThn12_N9S19634C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19634C13D1Ev,_ZTv0_n12_N9S19634C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S19634C13D1Ev,_ZThn12_N9S19634C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19634C14D0Ev,_ZTv0_n12_N9S19634C14D0Ev), // 
  (VTBL_ENTRY)_ZN9S19634C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19634C14D1Ev,_ZTv0_n12_N9S19634C14D1Ev), // 
  (VTBL_ENTRY)_ZN9S19634C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19634C11D0Ev,_ZTv0_n16_N9S19634C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19634C11D0Ev,_ZThn4_N9S19634C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19634C11D1Ev,_ZTv0_n16_N9S19634C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19634C11D1Ev,_ZThn4_N9S19634C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19634C9D0Ev,_ZTv0_n16_N8S19634C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19634C9D0Ev,_ZThn16_N8S19634C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19634C9D1Ev,_ZTv0_n16_N8S19634C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19634C9D1Ev,_ZThn16_N8S19634C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19634C9D0Ev,_ZTv0_n20_N8S19634C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19634C9D0Ev,_ZThn12_N8S19634C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19634C9D1Ev,_ZTv0_n20_N8S19634C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19634C9D1Ev,_ZThn12_N8S19634C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19634C9D0Ev,_ZTv0_n12_N8S19634C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19634C9D0Ev,_ZThn40_N8S19634C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19634C9D1Ev,_ZTv0_n12_N8S19634C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19634C9D1Ev,_ZThn40_N8S19634C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19634C12D0Ev,_ZTv0_n20_N9S19634C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19634C12D0Ev,_ZThn20_N9S19634C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19634C12D1Ev,_ZTv0_n20_N9S19634C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19634C12D1Ev,_ZThn20_N9S19634C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19634C12D0Ev,_ZTv0_n24_N9S19634C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19634C12D0Ev,_ZThn60_N9S19634C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19634C12D1Ev,_ZTv0_n24_N9S19634C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19634C12D1Ev,_ZThn60_N9S19634C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19634C12D0Ev,_ZTv0_n12_N9S19634C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19634C12D0Ev,_ZThn72_N9S19634C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19634C12D1Ev,_ZTv0_n12_N9S19634C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19634C12D1Ev,_ZThn72_N9S19634C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19634C7D0Ev,_ZTv0_n12_N8S19634C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19634C7D0Ev,_ZThn40_N8S19634C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19634C7D0Ev,_ZThn52_N8S19634C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19634C7D0Ev,_ZThn72_N8S19634C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19634C7D1Ev,_ZTv0_n12_N8S19634C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19634C7D1Ev,_ZThn40_N8S19634C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19634C7D1Ev,_ZThn52_N8S19634C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19634C7D1Ev,_ZThn72_N8S19634C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19634C4D0Ev,_ZTv0_n16_N8S19634C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19634C4D0Ev,_ZThn68_N8S19634C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19634C4D1Ev,_ZTv0_n16_N8S19634C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19634C4D1Ev,_ZThn68_N8S19634C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19634C4D0Ev,_ZTv0_n28_N8S19634C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19634C4D0Ev,_ZThn52_N8S19634C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19634C4D1Ev,_ZTv0_n28_N8S19634C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19634C4D1Ev,_ZThn52_N8S19634C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19634C4D0Ev,_ZTv0_n12_N8S19634C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19634C4D0Ev,_ZThn92_N8S19634C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19634C4D1Ev,_ZTv0_n12_N8S19634C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19634C4D1Ev,_ZThn92_N8S19634C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19634C4D0Ev,_ZTv0_n20_N8S19634C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19634C4D0Ev,_ZThn64_N8S19634C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19634C4D0Ev,_ZThn40_N8S19634C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19634C4D1Ev,_ZTv0_n20_N8S19634C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19634C4D1Ev,_ZThn64_N8S19634C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19634C4D1Ev,_ZThn40_N8S19634C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19634C1D0Ev,_ZTv0_n24_N8S19634C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19634C1D0Ev,_ZThn80_N8S19634C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19634C1D1Ev,_ZTv0_n24_N8S19634C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19634C1D1Ev,_ZThn80_N8S19634C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19634C1D0Ev,_ZTv0_n12_N8S19634C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19634C1D0Ev,_ZThn92_N8S19634C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19634C1D0Ev,_ZThn76_N8S19634C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19634C1D1Ev,_ZTv0_n12_N8S19634C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19634C1D1Ev,_ZThn92_N8S19634C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19634C1D1Ev,_ZThn76_N8S19634C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19634C1D0Ev,_ZTv0_n16_N8S19634C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19634C1D0Ev,_ZThn68_N8S19634C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19634C1D1Ev,_ZTv0_n16_N8S19634C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19634C1D1Ev,_ZThn68_N8S19634C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19634C1D0Ev,_ZTv0_n28_N8S19634C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19634C1D0Ev,_ZThn52_N8S19634C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19634C1D1Ev,_ZTv0_n28_N8S19634C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19634C1D1Ev,_ZThn52_N8S19634C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19634C1D0Ev,_ZTv0_n20_N8S19634C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19634C1D0Ev,_ZThn64_N8S19634C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19634C1D0Ev,_ZThn40_N8S19634C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19634C1D1Ev,_ZTv0_n20_N8S19634C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19634C1D1Ev,_ZThn64_N8S19634C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19634C1D1Ev,_ZThn40_N8S19634C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19634C1 = {  "S19634C1", // class name
  bases_S19634C1, 54,
  &(vtc_S19634C1[0]), // expected_vtbl_contents
  &(vtt_S19634C1[0]), // expected_vtt_contents
  ABISELECT(200,104), // object size
  NSPAIRA(_ZTI8S19634C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19634C1),147, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19634C1),74, //virtual table table var
  48, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names75,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20665C2  : virtual S3461C5_nt , S731C17_nt {
  virtual void  v1(); // _ZN8S20665C22v1Ev
  ~S20665C2(); // tgen
  S20665C2(); // tgen
};
//SIG(-1 S20665C2) C1{ VBC2{ m FL} BC3{ m} v1}


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

static void Test_S20665C2()
{
  extern Class_Descriptor cd_S20665C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20665C2, buf);
    S20665C2 *dp, &lv = *(dp=new (buf) S20665C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20665C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20665C2)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S20665C2");
    check_base_class_offset(lv, (S731C17_nt*), 0, "S20665C2");
    test_class_info(&lv, &cd_S20665C2);
    dp->~S20665C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20665C2(Test_S20665C2, "S20665C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S20665C2C1Ev();
extern void _ZN8S20665C2D1Ev();
Name_Map name_map_S20665C2[] = {
  NSPAIR(_ZN8S20665C2C1Ev),
  NSPAIR(_ZN8S20665C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S20665C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20665C2[];
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY vtc_S20665C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern VTBL_ENTRY _ZTV8S20665C2[];
static  VTT_ENTRY vtt_S20665C2[] = {
  {&(_ZTV8S20665C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
Class_Descriptor cd_S20665C2 = {  "S20665C2", // class name
  bases_S20665C2, 2,
  &(vtc_S20665C2[0]), // expected_vtbl_contents
  &(vtt_S20665C2[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S20665C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20665C2),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20665C2),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  S20665C7  : S20665C2 {
  ~S20665C7(); // tgen
  S20665C7(); // tgen
};
//SIG(-1 S20665C7) C1{ BC2{ VBC3{ m FL} BC4{ m} v1}}


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

static void Test_S20665C7()
{
  extern Class_Descriptor cd_S20665C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20665C7, buf);
    S20665C7 *dp, &lv = *(dp=new (buf) S20665C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20665C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20665C7)");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*), ABISELECT(8,4), "S20665C7");
    check_base_class_offset(lv, (S731C17_nt*)(S20665C2*), 0, "S20665C7");
    check_base_class_offset(lv, (S20665C2*), 0, "S20665C7");
    test_class_info(&lv, &cd_S20665C7);
    dp->~S20665C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20665C7(Test_S20665C7, "S20665C7", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S20665C7C1Ev();
extern void _ZN8S20665C7D1Ev();
Name_Map name_map_S20665C7[] = {
  NSPAIR(_ZN8S20665C7C1Ev),
  NSPAIR(_ZN8S20665C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
static Base_Class bases_S20665C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20665C2,    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 _ZTI8S20665C7[];
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY vtc_S20665C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C7[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern VTBL_ENTRY _ZTV8S20665C7[];
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C2__8S20665C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
static  VTT_ENTRY vtt_S20665C7[] = {
  {&(_ZTV8S20665C7[3]),  3,4},
  {&(_tg__ZTV8S20665C2__8S20665C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20665C7[];
extern  VTBL_ENTRY _ZTV8S20665C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C7[];
Class_Descriptor cd_S20665C7 = {  "S20665C7", // class name
  bases_S20665C7, 3,
  &(vtc_S20665C7[0]), // expected_vtbl_contents
  &(vtt_S20665C7[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S20665C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20665C7),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20665C7),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  S20665C6  : S3461C5_nt , virtual S731C17_nt , S20665C7 {
  virtual  ~S20665C6(); // _ZN8S20665C6D2Ev
  virtual void  v2(); // _ZN8S20665C62v2Ev
  S20665C6(); // tgen
};
//SIG(-1 S20665C6) C1{ BC2{ m FL} VBC3{ m} BC4{ BC5{ VBC2 BC3 v2}} vd v1}


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

static void Test_S20665C6()
{
  extern Class_Descriptor cd_S20665C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S20665C6, buf);
    S20665C6 *dp, &lv = *(dp=new (buf) S20665C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S20665C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20665C6)");
    /*is_ambiguous_... S20665C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S20665C6");
    /*is_ambiguous_... S20665C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(16,12), "S20665C6");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*)(S20665C7*), ABISELECT(16,12), "S20665C6");
    check_base_class_offset(lv, (S731C17_nt*)(S20665C2*)(S20665C7*), 0, "S20665C6");
    check_base_class_offset(lv, (S20665C2*)(S20665C7*), 0, "S20665C6");
    check_base_class_offset(lv, (S20665C7*), 0, "S20665C6");
    test_class_info(&lv, &cd_S20665C6);
    dp->~S20665C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20665C6(Test_S20665C6, "S20665C6", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN8S20665C6C1Ev();
extern void _ZN8S20665C6D2Ev();
Name_Map name_map_S20665C6[] = {
  NSPAIR(_ZN8S20665C6C1Ev),
  NSPAIR(_ZN8S20665C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S20665C7;
extern VTBL_ENTRY _ZTI8S20665C7[];
extern  VTBL_ENTRY _ZTV8S20665C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C7[];
static Base_Class bases_S20665C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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_S3461C5_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
    4, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20665C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20665C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20665C6[];
extern void _ZN8S20665C22v1Ev();
extern void _ZN8S20665C6D1Ev();
extern void _ZN8S20665C6D0Ev();
extern void _ZN8S20665C62v2Ev();
static  VTBL_ENTRY vtc_S20665C6[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C6[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN8S20665C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20665C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
};
extern VTBL_ENTRY _ZTV8S20665C6[];
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C7__8S20665C6[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C7[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C28S20665C7__8S20665C6[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
static  VTT_ENTRY vtt_S20665C6[] = {
  {&(_ZTV8S20665C6[4]),  4,8},
  {&(_tg__ZTV8S20665C7__8S20665C6[3]),  3,4},
  {&(_tg__ZTV8S20665C28S20665C7__8S20665C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20665C6[];
extern  VTBL_ENTRY _ZTV8S20665C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C6[];
Class_Descriptor cd_S20665C6 = {  "S20665C6", // class name
  bases_S20665C6, 6,
  &(vtc_S20665C6[0]), // expected_vtbl_contents
  &(vtt_S20665C6[0]), // expected_vtt_contents
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI8S20665C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20665C6),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20665C6),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  S20665C9  : virtual S3461C5_nt , S20665C2 , S731C17_nt {
  ~S20665C9(); // tgen
  S20665C9(); // tgen
};
//SIG(-1 S20665C9) C1{ VBC2{ m FL} BC3{ VBC2 BC4{ m} v1} BC4}


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

static void Test_S20665C9()
{
  extern Class_Descriptor cd_S20665C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20665C9, buf);
    S20665C9 *dp, &lv = *(dp=new (buf) S20665C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20665C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20665C9)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S20665C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*), ABISELECT(8,4), "S20665C9");
    check_base_class_offset(lv, (S731C17_nt*)(S20665C2*), 0, "S20665C9");
    check_base_class_offset(lv, (S20665C2*), 0, "S20665C9");
    /*is_ambiguous_... S20665C9::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(8,4), "S20665C9");
    test_class_info(&lv, &cd_S20665C9);
    dp->~S20665C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20665C9(Test_S20665C9, "S20665C9", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S20665C9C1Ev();
extern void _ZN8S20665C9D1Ev();
Name_Map name_map_S20665C9[] = {
  NSPAIR(_ZN8S20665C9C1Ev),
  NSPAIR(_ZN8S20665C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S20665C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20665C2,    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_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20665C9[];
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY vtc_S20665C9[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C9[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern VTBL_ENTRY _ZTV8S20665C9[];
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C2__8S20665C9[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
static  VTT_ENTRY vtt_S20665C9[] = {
  {&(_ZTV8S20665C9[3]),  3,4},
  {&(_tg__ZTV8S20665C2__8S20665C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20665C9[];
extern  VTBL_ENTRY _ZTV8S20665C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C9[];
Class_Descriptor cd_S20665C9 = {  "S20665C9", // class name
  bases_S20665C9, 4,
  &(vtc_S20665C9[0]), // expected_vtbl_contents
  &(vtt_S20665C9[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S20665C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20665C9),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20665C9),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  S20665C10  : S3461C5_nt , virtual S20665C2 , S731C17_nt {
  virtual  ~S20665C10(); // _ZN9S20665C10D2Ev
  S20665C10(); // tgen
};
//SIG(-1 S20665C10) C1{ BC2{ m FL} VBC3{ VBC2 BC4{ m} v1} BC4 vd}


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

static void Test_S20665C10()
{
  extern Class_Descriptor cd_S20665C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S20665C10, buf);
    S20665C10 *dp, &lv = *(dp=new (buf) S20665C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S20665C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20665C10)");
    /*is_ambiguous_... S20665C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S20665C10");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*), ABISELECT(16,12), "S20665C10");
    check_base_class_offset(lv, (S731C17_nt*)(S20665C2*), 0, "S20665C10");
    check_base_class_offset(lv, (S20665C2*), 0, "S20665C10");
    /*is_ambiguous_... S20665C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(16,12), "S20665C10");
    test_class_info(&lv, &cd_S20665C10);
    dp->~S20665C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20665C10(Test_S20665C10, "S20665C10", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN9S20665C10C1Ev();
extern void _ZN9S20665C10D2Ev();
Name_Map name_map_S20665C10[] = {
  NSPAIR(_ZN9S20665C10C1Ev),
  NSPAIR(_ZN9S20665C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S20665C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20665C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20665C10[];
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C10D1Ev();
extern void _ZN9S20665C10D0Ev();
static  VTBL_ENTRY vtc_S20665C10[] = {
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20665C10[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20665C10D0Ev,
};
extern VTBL_ENTRY _ZTV9S20665C10[];
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C2__9S20665C10[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
static  VTT_ENTRY vtt_S20665C10[] = {
  {&(_ZTV9S20665C10[5]),  5,8},
  {&(_ZTV9S20665C10[5]),  5,8},
  {&(_tg__ZTV8S20665C2__9S20665C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20665C10[];
extern  VTBL_ENTRY _ZTV9S20665C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20665C10[];
Class_Descriptor cd_S20665C10 = {  "S20665C10", // class name
  bases_S20665C10, 5,
  &(vtc_S20665C10[0]), // expected_vtbl_contents
  &(vtt_S20665C10[0]), // expected_vtt_contents
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI9S20665C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20665C10),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20665C10),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  S20665C13  : virtual S3461C5_nt , S20665C9 , virtual S20665C2 {
  virtual void  v3(); // _ZN9S20665C132v3Ev
  ~S20665C13(); // tgen
  S20665C13(); // tgen
};
//SIG(-1 S20665C13) C1{ VBC2{ m FL} BC3{ VBC2 BC4{ VBC2 BC5{ m} v2} BC5} VBC4 v1}


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

static void Test_S20665C13()
{
  extern Class_Descriptor cd_S20665C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20665C13, buf);
    S20665C13 *dp, &lv = *(dp=new (buf) S20665C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20665C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20665C13)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(16,8), "S20665C13");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C9*), ABISELECT(16,8), "S20665C13");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*)(S20665C9*), ABISELECT(16,8), "S20665C13");
    /*is_ambiguous_... S20665C13::S20665C2 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*), ABISELECT(16,8), "S20665C13");
    check_base_class_offset(lv, (S731C17_nt*)(S20665C2*)(S20665C9*), 0, "S20665C13");
    check_base_class_offset(lv, (S20665C2*)(S20665C9*), 0, "S20665C13");
    /*is_ambiguous_... S20665C9::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C9*), ABISELECT(8,4), "S20665C13");
    check_base_class_offset(lv, (S20665C9*), 0, "S20665C13");
    /*is_ambiguous_... S20665C13::S20665C2 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C2*), ABISELECT(24,16), "S20665C13");
    /*is_ambiguous_... S20665C13::S20665C2 */ AMB_check_base_class_offset(lv, (S20665C2*), ABISELECT(24,16), "S20665C13");
    test_class_info(&lv, &cd_S20665C13);
    dp->~S20665C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20665C13(Test_S20665C13, "S20665C13", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN9S20665C13C1Ev();
extern void _ZN9S20665C13D1Ev();
Name_Map name_map_S20665C13[] = {
  NSPAIR(_ZN9S20665C13C1Ev),
  NSPAIR(_ZN9S20665C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C9;
extern VTBL_ENTRY _ZTI8S20665C9[];
extern  VTBL_ENTRY _ZTV8S20665C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
static Base_Class bases_S20665C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20665C2,    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_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20665C9,    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_S731C17_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_S20665C2,    ABISELECT(24,16), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20665C13[];
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C132v3Ev();
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY vtc_S20665C13[] = {
  ABISELECT(24,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20665C13[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C132v3Ev,
  0,
  -8,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20665C13[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern VTBL_ENTRY _ZTV9S20665C13[];
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C9__9S20665C13[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C9[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C28S20665C9__9S20665C13[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C2__A1__9S20665C13[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
static  VTT_ENTRY vtt_S20665C13[] = {
  {&(_ZTV9S20665C13[4]),  4,11},
  {&(_tg__ZTV8S20665C9__9S20665C13[3]),  3,4},
  {&(_tg__ZTV8S20665C28S20665C9__9S20665C13[3]),  3,4},
  {&(_ZTV9S20665C13[10]),  10,11},
  {&(_tg__ZTV8S20665C2__A1__9S20665C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20665C13[];
extern  VTBL_ENTRY _ZTV9S20665C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20665C13[];
Class_Descriptor cd_S20665C13 = {  "S20665C13", // class name
  bases_S20665C13, 7,
  &(vtc_S20665C13[0]), // expected_vtbl_contents
  &(vtt_S20665C13[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI9S20665C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20665C13),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20665C13),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  S20665C11  : S3461C5_nt , S20665C6 , S28C52_nt , virtual S20665C13 , virtual S20665C10 {
  virtual  ~S20665C11(); // _ZN9S20665C11D2Ev
  S20665C11(); // tgen
};
//SIG(-1 S20665C11) C1{ BC2{ m FL} BC3{ BC2 VBC4{ m} BC5{ BC6{ VBC2 BC4 v1}} vd v2} BC7{ m} VBC8{ VBC2 BC9{ VBC2 BC6 BC4} VBC6 v3} VBC10{ BC2 VBC6 BC4 vd} vd}


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

static void Test_S20665C11()
{
  extern Class_Descriptor cd_S20665C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,14)];
    init_test(&cd_S20665C11, buf);
    S20665C11 *dp, &lv = *(dp=new (buf) S20665C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S20665C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20665C11)");
    /*is_ambiguous_... S20665C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(16,12), "S20665C11");
    /*is_ambiguous_... S20665C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C6*), ABISELECT(8,4), "S20665C11");
    /*is_ambiguous_... S20665C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C6*), ABISELECT(24,20), "S20665C11");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*)(S20665C7*)(S20665C6*), ABISELECT(24,20), "S20665C11");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C13*), ABISELECT(24,20), "S20665C11");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C9*)(S20665C13*), ABISELECT(24,20), "S20665C11");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*)(S20665C9*)(S20665C13*), ABISELECT(24,20), "S20665C11");
    /*is_ambiguous_... S20665C11::S20665C2 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*), ABISELECT(24,20), "S20665C11");
    check_base_class_offset(lv, (S731C17_nt*)(S20665C2*)(S20665C7*)(S20665C6*), 0, "S20665C11");
    check_base_class_offset(lv, (S20665C2*)(S20665C7*)(S20665C6*), 0, "S20665C11");
    check_base_class_offset(lv, (S20665C7*)(S20665C6*), 0, "S20665C11");
    check_base_class_offset(lv, (S20665C6*), 0, "S20665C11");
    check_base_class_offset(lv, (S28C52_nt*), 0, "S20665C11");
    check_base_class_offset(lv, (S731C17_nt*)(S20665C2*)(S20665C9*)(S20665C13*), ABISELECT(32,28), "S20665C11");
    check_base_class_offset(lv, (S20665C2*)(S20665C9*)(S20665C13*), ABISELECT(32,28), "S20665C11");
    /*is_ambiguous_... S20665C9::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C9*)(S20665C13*), ABISELECT(40,32), "S20665C11");
    check_base_class_offset(lv, (S20665C9*)(S20665C13*), ABISELECT(32,28), "S20665C11");
    /*is_ambiguous_... S20665C11::S20665C2 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C2*), ABISELECT(48,36), "S20665C11");
    /*is_ambiguous_... S20665C13::S20665C2 */ AMB_check_base_class_offset(lv, (S20665C2*)(S20665C13*), ABISELECT(48,36), "S20665C11");
    check_base_class_offset(lv, (S20665C2*)(S20665C10*), ABISELECT(48,36), "S20665C11");
    check_base_class_offset(lv, (S20665C13*), ABISELECT(32,28), "S20665C11");
    /*is_ambiguous_... S20665C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C10*), ABISELECT(56,40), "S20665C11");
    /*is_ambiguous_... S20665C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C10*), ABISELECT(64,48), "S20665C11");
    check_base_class_offset(lv, (S20665C10*), ABISELECT(48,36), "S20665C11");
    test_class_info(&lv, &cd_S20665C11);
    dp->~S20665C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20665C11(Test_S20665C11, "S20665C11", ABISELECT(72,52));

#else // __cplusplus

extern void _ZN9S20665C11C1Ev();
extern void _ZN9S20665C11D2Ev();
Name_Map name_map_S20665C11[] = {
  NSPAIR(_ZN9S20665C11C1Ev),
  NSPAIR(_ZN9S20665C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S20665C7;
extern VTBL_ENTRY _ZTI8S20665C7[];
extern  VTBL_ENTRY _ZTV8S20665C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C7[];
extern Class_Descriptor cd_S20665C6;
extern VTBL_ENTRY _ZTI8S20665C6[];
extern  VTBL_ENTRY _ZTV8S20665C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C9;
extern VTBL_ENTRY _ZTI8S20665C9[];
extern  VTBL_ENTRY _ZTV8S20665C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S20665C13;
extern VTBL_ENTRY _ZTI9S20665C13[];
extern  VTBL_ENTRY _ZTV9S20665C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20665C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C10;
extern VTBL_ENTRY _ZTI9S20665C10[];
extern  VTBL_ENTRY _ZTV9S20665C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20665C10[];
static Base_Class bases_S20665C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20665C2,    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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20665C7,    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_S20665C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S28C52_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20665C2,    ABISELECT(32,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20665C9,    ABISELECT(32,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
    3, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    14, //immediately_derived
  0, 0},
  {&cd_S20665C2,    ABISELECT(48,36), //bcp->offset
    -1, //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
    1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20665C13,    ABISELECT(32,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_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
    18, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    18, //immediately_derived
  0, 0},
  {&cd_S20665C10,    ABISELECT(48,36), //bcp->offset
    19, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20665C11[];
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C11D1Ev();
extern void _ZN9S20665C11D0Ev();
extern void _ZN8S20665C62v2Ev();
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C132v3Ev();
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20665C11D1Ev,_ZTv0_n24_N9S20665C11D1Ev)();
extern void ABISELECT(_ZThn48_N9S20665C11D1Ev,_ZThn36_N9S20665C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20665C11D0Ev,_ZTv0_n24_N9S20665C11D0Ev)();
extern void ABISELECT(_ZThn48_N9S20665C11D0Ev,_ZThn36_N9S20665C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20665C11[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20665C11[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20665C11D0Ev,
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI9S20665C11[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C132v3Ev,
  ABISELECT(-48,-36),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S20665C11[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20665C11D1Ev,_ZTv0_n24_N9S20665C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20665C11D0Ev,_ZTv0_n24_N9S20665C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S20665C11[];
extern void _ZN8S20665C22v1Ev();
extern void _ZN8S20665C6D1Ev();
extern void _ZN8S20665C6D0Ev();
extern void _ZN8S20665C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C6__9S20665C11[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C6[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN8S20665C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20665C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C78S20665C6__9S20665C11[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C7[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C28S20665C78S20665C6__9S20665C11[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C132v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C13__9S20665C11[] = {
  ABISELECT(16,8),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S20665C13[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C132v3Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C99S20665C13__9S20665C11[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C9[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C28S20665C99S20665C13__A1__9S20665C11[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C2__A1__9S20665C13__9S20665C11[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20665C13[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C2__A2__9S20665C11[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C10D1Ev();
extern void _ZN9S20665C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C10__9S20665C11[] = {
  0,
  0,
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20665C10[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20665C10D0Ev,
};
static  VTT_ENTRY vtt_S20665C11[] = {
  {&(_ZTV9S20665C11[7]),  7,28},
  {&(_tg__ZTV8S20665C6__9S20665C11[4]),  4,8},
  {&(_tg__ZTV8S20665C78S20665C6__9S20665C11[3]),  3,4},
  {&(_tg__ZTV8S20665C28S20665C78S20665C6__9S20665C11[3]),  3,4},
  {&(_ZTV9S20665C11[17]),  17,28},
  {&(_ZTV9S20665C11[25]),  25,28},
  {&(_ZTV9S20665C11[25]),  25,28},
  {&(_tg__ZTV9S20665C13__9S20665C11[4]),  4,6},
  {&(_tg__ZTV8S20665C99S20665C13__9S20665C11[3]),  3,4},
  {&(_tg__ZTV8S20665C28S20665C99S20665C13__A1__9S20665C11[3]),  3,4},
  {&(_tg__ZTV8S20665C2__A1__9S20665C13__9S20665C11[4]),  4,5},
  {&(_tg__ZTV8S20665C2__A2__9S20665C11[3]),  3,4},
  {&(_tg__ZTV9S20665C10__9S20665C11[5]),  5,8},
  {&(_tg__ZTV9S20665C10__9S20665C11[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20665C11[];
extern  VTBL_ENTRY _ZTV9S20665C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20665C11[];
static VTBL_ENTRY alt_thunk_names76[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20665C11D0Ev,_ZTv0_n24_N9S20665C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20665C11D0Ev,_ZThn36_N9S20665C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20665C11D1Ev,_ZTv0_n24_N9S20665C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20665C11D1Ev,_ZThn36_N9S20665C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20665C11 = {  "S20665C11", // class name
  bases_S20665C11, 19,
  &(vtc_S20665C11[0]), // expected_vtbl_contents
  &(vtt_S20665C11[0]), // expected_vtt_contents
  ABISELECT(72,52), // object size
  NSPAIRA(_ZTI9S20665C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20665C11),28, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20665C11),14, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names76,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20665C8  : virtual S3461C5_nt , virtual S20665C9 , S20665C10 , virtual S20665C6 , S20665C11 {
  ~S20665C8(); // tgen
  S20665C8(); // tgen
};
//SIG(-1 S20665C8) C1{ VBC2{ m FL} VBC3{ VBC2 BC4{ VBC2 BC5{ m} v1} BC5} BC6{ BC2 VBC4 BC5 vd} VBC7{ BC2 VBC5 BC8{ BC4} vd v2} BC9{ BC2 BC7 BC10{ m} VBC11{ VBC2 BC3 VBC4 v3} VBC6 vd}}


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

static void Test_S20665C8()
{
  extern Class_Descriptor cd_S20665C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,24)];
    init_test(&cd_S20665C8, buf);
    S20665C8 *dp, &lv = *(dp=new (buf) S20665C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S20665C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20665C8)");
    /*is_ambiguous_... S20665C8::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(48,36), "S20665C8");
    /*is_ambiguous_... S20665C8::S20665C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C9*), ABISELECT(48,36), "S20665C8");
    /*is_ambiguous_... S20665C8::S20665C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*)(S20665C9*), ABISELECT(48,36), "S20665C8");
    /*is_ambiguous_... S20665C8::S20665C2 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*), ABISELECT(48,36), "S20665C8");
    /*is_ambiguous_... S20665C8::S20665C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*)(S20665C7*)(S20665C6*), ABISELECT(48,36), "S20665C8");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*)(S20665C7*)(S20665C6*)(S20665C11*), ABISELECT(48,36), "S20665C8");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C13*), ABISELECT(48,36), "S20665C8");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C9*)(S20665C13*), ABISELECT(48,36), "S20665C8");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*)(S20665C9*)(S20665C13*), ABISELECT(48,36), "S20665C8");
    /*is_ambiguous_... S20665C8::S20665C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C2*)(S20665C9*), ABISELECT(56,44), "S20665C8");
    /*is_ambiguous_... S20665C8::S20665C9 */ AMB_check_base_class_offset(lv, (S20665C2*)(S20665C9*), ABISELECT(56,44), "S20665C8");
    /*is_ambiguous_... S20665C8::S20665C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C9*), ABISELECT(64,48), "S20665C8");
    /*is_ambiguous_... S20665C8::S20665C9 */ AMB_check_base_class_offset(lv, (S20665C9*), ABISELECT(56,44), "S20665C8");
    /*is_ambiguous_... S20665C8::S20665C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C10*), ABISELECT(8,4), "S20665C8");
    /*is_ambiguous_... S20665C8::S20665C2 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C2*), 0, "S20665C8");
    /*is_ambiguous_... S20665C8::S20665C10 */ AMB_check_base_class_offset(lv, (S20665C2*)(S20665C10*), 0, "S20665C8");
    /*is_ambiguous_... S20665C13::S20665C2 */ AMB_check_base_class_offset(lv, (S20665C2*)(S20665C13*), 0, "S20665C8");
    /*is_ambiguous_... S20665C8::S20665C10 */ AMB_check_base_class_offset(lv, (S20665C2*)(S20665C10*), 0, "S20665C8");
    /*is_ambiguous_... S20665C8::S20665C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C10*), ABISELECT(16,12), "S20665C8");
    /*is_ambiguous_... S20665C8::S20665C10 */ AMB_check_base_class_offset(lv, (S20665C10*), 0, "S20665C8");
    /*is_ambiguous_... S20665C8::S20665C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C6*), ABISELECT(80,56), "S20665C8");
    /*is_ambiguous_... S20665C8::S20665C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C6*), ABISELECT(88,64), "S20665C8");
    /*is_ambiguous_... S20665C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C6*)(S20665C11*), ABISELECT(88,64), "S20665C8");
    /*is_ambiguous_... S20665C8::S20665C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C2*)(S20665C7*)(S20665C6*), ABISELECT(72,52), "S20665C8");
    /*is_ambiguous_... S20665C8::S20665C6 */ AMB_check_base_class_offset(lv, (S20665C2*)(S20665C7*)(S20665C6*), ABISELECT(72,52), "S20665C8");
    /*is_ambiguous_... S20665C8::S20665C6 */ AMB_check_base_class_offset(lv, (S20665C7*)(S20665C6*), ABISELECT(72,52), "S20665C8");
    /*is_ambiguous_... S20665C8::S20665C6 */ AMB_check_base_class_offset(lv, (S20665C6*), ABISELECT(72,52), "S20665C8");
    /*is_ambiguous_... S20665C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C11*), ABISELECT(40,28), "S20665C8");
    /*is_ambiguous_... S20665C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C6*)(S20665C11*), ABISELECT(32,20), "S20665C8");
    check_base_class_offset(lv, (S731C17_nt*)(S20665C2*)(S20665C7*)(S20665C6*)(S20665C11*), ABISELECT(24,16), "S20665C8");
    check_base_class_offset(lv, (S20665C2*)(S20665C7*)(S20665C6*)(S20665C11*), ABISELECT(24,16), "S20665C8");
    check_base_class_offset(lv, (S20665C7*)(S20665C6*)(S20665C11*), ABISELECT(24,16), "S20665C8");
    check_base_class_offset(lv, (S20665C6*)(S20665C11*), ABISELECT(24,16), "S20665C8");
    check_base_class_offset(lv, (S28C52_nt*)(S20665C11*), ABISELECT(24,16), "S20665C8");
    check_base_class_offset(lv, (S731C17_nt*)(S20665C2*)(S20665C9*)(S20665C13*), ABISELECT(96,68), "S20665C8");
    check_base_class_offset(lv, (S20665C2*)(S20665C9*)(S20665C13*), ABISELECT(96,68), "S20665C8");
    /*is_ambiguous_... S20665C9::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C9*)(S20665C13*), ABISELECT(104,72), "S20665C8");
    check_base_class_offset(lv, (S20665C9*)(S20665C13*), ABISELECT(96,68), "S20665C8");
    check_base_class_offset(lv, (S20665C13*)(S20665C11*), ABISELECT(96,68), "S20665C8");
    /*is_ambiguous_... S20665C8::S20665C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C10*), ABISELECT(120,80), "S20665C8");
    /*is_ambiguous_... S20665C8::S20665C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C10*), ABISELECT(128,88), "S20665C8");
    check_base_class_offset(lv, (S20665C10*)(S20665C11*), ABISELECT(112,76), "S20665C8");
    check_base_class_offset(lv, (S20665C11*), ABISELECT(24,16), "S20665C8");
    test_class_info(&lv, &cd_S20665C8);
    dp->~S20665C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20665C8(Test_S20665C8, "S20665C8", ABISELECT(136,92));

#else // __cplusplus

extern void _ZN8S20665C8C1Ev();
extern void _ZN8S20665C8D1Ev();
Name_Map name_map_S20665C8[] = {
  NSPAIR(_ZN8S20665C8C1Ev),
  NSPAIR(_ZN8S20665C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C9;
extern VTBL_ENTRY _ZTI8S20665C9[];
extern  VTBL_ENTRY _ZTV8S20665C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C10;
extern VTBL_ENTRY _ZTI9S20665C10[];
extern  VTBL_ENTRY _ZTV9S20665C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20665C10[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S20665C7;
extern VTBL_ENTRY _ZTI8S20665C7[];
extern  VTBL_ENTRY _ZTV8S20665C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C7[];
extern Class_Descriptor cd_S20665C6;
extern VTBL_ENTRY _ZTI8S20665C6[];
extern  VTBL_ENTRY _ZTV8S20665C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C6[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S20665C7;
extern VTBL_ENTRY _ZTI8S20665C7[];
extern  VTBL_ENTRY _ZTV8S20665C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C7[];
extern Class_Descriptor cd_S20665C6;
extern VTBL_ENTRY _ZTI8S20665C6[];
extern  VTBL_ENTRY _ZTV8S20665C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C9;
extern VTBL_ENTRY _ZTI8S20665C9[];
extern  VTBL_ENTRY _ZTV8S20665C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C9[];
extern Class_Descriptor cd_S20665C13;
extern VTBL_ENTRY _ZTI9S20665C13[];
extern  VTBL_ENTRY _ZTV9S20665C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20665C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C10;
extern VTBL_ENTRY _ZTI9S20665C10[];
extern  VTBL_ENTRY _ZTV9S20665C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20665C10[];
extern Class_Descriptor cd_S20665C11;
extern VTBL_ENTRY _ZTI9S20665C11[];
extern  VTBL_ENTRY _ZTV9S20665C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20665C11[];
static Base_Class bases_S20665C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20665C2,    ABISELECT(56,44), //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
    4, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(64,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20665C9,    ABISELECT(56,44), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20665C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20665C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(88,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_S731C17_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
    13, //immediately_derived
  0, 0},
  {&cd_S20665C2,    ABISELECT(72,52), //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
    14, //immediately_derived
  0, 0},
  {&cd_S20665C7,    ABISELECT(72,52), //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
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20665C6,    ABISELECT(72,52), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_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
    31, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20665C2,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20665C7,    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
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20665C6,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20665C2,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(104,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20665C9,    ABISELECT(96,68), //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
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20665C13,    ABISELECT(96,68), //bcp->offset
    40, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(120,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(128,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20665C10,    ABISELECT(112,76), //bcp->offset
    48, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S20665C11,    ABISELECT(24,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20665C8[];
extern void _ZN8S20665C22v1Ev();
extern void _ZN8S20665C8D1Ev();
extern void _ZN8S20665C8D0Ev();
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZThn24_N8S20665C8D1Ev,_ZThn16_N8S20665C8D1Ev)();
extern void ABISELECT(_ZThn24_N8S20665C8D0Ev,_ZThn16_N8S20665C8D0Ev)();
extern void _ZN8S20665C62v2Ev();
extern void _ZN8S20665C22v1Ev();
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20665C8D1Ev,_ZTv0_n24_N8S20665C8D1Ev)();
extern void ABISELECT(_ZThn72_N8S20665C8D1Ev,_ZThn52_N8S20665C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20665C8D0Ev,_ZTv0_n24_N8S20665C8D0Ev)();
extern void ABISELECT(_ZThn72_N8S20665C8D0Ev,_ZThn52_N8S20665C8D0Ev)() __attribute__((weak));
extern void _ZN8S20665C62v2Ev();
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C132v3Ev();
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20665C8D1Ev,_ZTv0_n24_N8S20665C8D1Ev)();
extern void ABISELECT(_ZThn112_N8S20665C8D1Ev,_ZThn76_N8S20665C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20665C8D0Ev,_ZTv0_n24_N8S20665C8D0Ev)();
extern void ABISELECT(_ZThn112_N8S20665C8D0Ev,_ZThn76_N8S20665C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20665C8[] = {
  ABISELECT(112,76),
  ABISELECT(96,68),
  ABISELECT(88,64),
  ABISELECT(72,52),
  ABISELECT(56,44),
  0,
  0,
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C8[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN8S20665C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20665C8D0Ev,
  ABISELECT(88,60),
  ABISELECT(-24,-16),
  ABISELECT(72,52),
  ABISELECT(64,48),
  ABISELECT(24,20),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20665C8[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20665C8D1Ev,_ZThn16_N8S20665C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20665C8D0Ev,_ZThn16_N8S20665C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
  0,
  -8,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S20665C8[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI8S20665C8[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20665C8D1Ev,_ZTv0_n24_N8S20665C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20665C8D0Ev,_ZTv0_n24_N8S20665C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
  0,
  0,
  ABISELECT(-96,-68),
  ABISELECT(-48,-32),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S20665C8[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C132v3Ev,
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-64,-40),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S20665C8[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20665C8D1Ev,_ZTv0_n24_N8S20665C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20665C8D0Ev,_ZTv0_n24_N8S20665C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S20665C8[];
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C10D1Ev();
extern void _ZN9S20665C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C10__A__8S20665C8[] = {
  0,
  0,
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20665C10[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20665C10D0Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C11D1Ev();
extern void _ZN9S20665C11D0Ev();
extern void _ZN8S20665C62v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C11__8S20665C8[] = {
  ABISELECT(88,60),
  ABISELECT(-24,-16),
  ABISELECT(72,52),
  ABISELECT(64,48),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20665C11[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20665C11D0Ev,
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN8S20665C6D1Ev();
extern void _ZN8S20665C6D0Ev();
extern void _ZN8S20665C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C69S20665C11__A1__8S20665C8[] = {
  ABISELECT(64,48),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C6[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN8S20665C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20665C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C78S20665C69S20665C11__A1__8S20665C8[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C7[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C28S20665C78S20665C69S20665C11__A3__8S20665C8[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C132v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C13__9S20665C11__8S20665C8[] = {
  0,
  0,
  ABISELECT(-96,-68),
  ABISELECT(-48,-32),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI9S20665C11[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C132v3Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C2__A2__9S20665C11__8S20665C8[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20665C11[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20665C11D1Ev,_ZTv0_n24_N9S20665C11D1Ev)();
extern void ABISELECT(_ZThn88_N9S20665C11D1Ev,_ZThn60_N9S20665C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20665C11D0Ev,_ZTv0_n24_N9S20665C11D0Ev)();
extern void ABISELECT(_ZThn88_N9S20665C11D0Ev,_ZThn60_N9S20665C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20665C10__9S20665C11__8S20665C8[] = {
  ABISELECT(-88,-60),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-64,-40),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI9S20665C11[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20665C11D1Ev,_ZTv0_n24_N9S20665C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20665C11D0Ev,_ZTv0_n24_N9S20665C11D0Ev),
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C9__8S20665C8[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C9[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C28S20665C9__8S20665C8[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C2__A1__8S20665C8[] = {
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN8S20665C6D1Ev();
extern void _ZN8S20665C6D0Ev();
extern void _ZN8S20665C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C6__8S20665C8[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C6[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN8S20665C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20665C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C78S20665C6__8S20665C8[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C7[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C28S20665C78S20665C6__A2__8S20665C8[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C132v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C13__8S20665C8[] = {
  ABISELECT(-96,-68),
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20665C13[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C132v3Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C99S20665C13__A1__8S20665C8[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C9[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C28S20665C99S20665C13__A4__8S20665C8[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C2__A1__9S20665C13__8S20665C8[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S20665C13[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C10D1Ev();
extern void _ZN9S20665C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C10__A1__8S20665C8[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20665C10[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20665C10D0Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C2__9S20665C10__A1__8S20665C8[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(112,76),
  (VTBL_ENTRY)&(_ZTI9S20665C10[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
static  VTT_ENTRY vtt_S20665C8[] = {
  {&(_ZTV8S20665C8[10]),  10,57},
  {&(_tg__ZTV9S20665C10__A__8S20665C8[5]),  5,8},
  {&(_tg__ZTV9S20665C10__A__8S20665C8[5]),  5,8},
  {&(_tg__ZTV9S20665C11__8S20665C8[7]),  7,11},
  {&(_tg__ZTV8S20665C69S20665C11__A1__8S20665C8[4]),  4,8},
  {&(_tg__ZTV8S20665C78S20665C69S20665C11__A1__8S20665C8[3]),  3,4},
  {&(_tg__ZTV8S20665C28S20665C78S20665C69S20665C11__A3__8S20665C8[3]),  3,4},
  {&(_tg__ZTV9S20665C13__9S20665C11__8S20665C8[6]),  6,8},
  {&(_tg__ZTV8S20665C2__A2__9S20665C11__8S20665C8[4]),  4,5},
  {&(_tg__ZTV9S20665C10__9S20665C11__8S20665C8[6]),  6,9},
  {&(_ZTV8S20665C8[28]),  28,57},
  {&(_ZTV8S20665C8[10]),  10,57},
  {&(_ZTV8S20665C8[36]),  36,57},
  {&(_ZTV8S20665C8[20]),  20,57},
  {&(_ZTV8S20665C8[46]),  46,57},
  {&(_ZTV8S20665C8[54]),  54,57},
  {&(_tg__ZTV8S20665C9__8S20665C8[3]),  3,4},
  {&(_tg__ZTV8S20665C28S20665C9__8S20665C8[3]),  3,4},
  {&(_tg__ZTV8S20665C2__A1__8S20665C8[3]),  3,4},
  {&(_tg__ZTV8S20665C6__8S20665C8[4]),  4,8},
  {&(_tg__ZTV8S20665C78S20665C6__8S20665C8[3]),  3,4},
  {&(_tg__ZTV8S20665C28S20665C78S20665C6__A2__8S20665C8[3]),  3,4},
  {&(_tg__ZTV9S20665C13__8S20665C8[4]),  4,6},
  {&(_tg__ZTV8S20665C99S20665C13__A1__8S20665C8[3]),  3,4},
  {&(_tg__ZTV8S20665C28S20665C99S20665C13__A4__8S20665C8[3]),  3,4},
  {&(_tg__ZTV8S20665C2__A1__9S20665C13__8S20665C8[4]),  4,5},
  {&(_tg__ZTV9S20665C10__A1__8S20665C8[5]),  5,8},
  {&(_tg__ZTV8S20665C2__9S20665C10__A1__8S20665C8[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S20665C8[];
extern  VTBL_ENTRY _ZTV8S20665C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C8[];
static VTBL_ENTRY alt_thunk_names77[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20665C11D0Ev,_ZTv0_n24_N9S20665C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20665C11D0Ev,_ZThn60_N9S20665C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20665C11D1Ev,_ZTv0_n24_N9S20665C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20665C11D1Ev,_ZThn60_N9S20665C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20665C8D0Ev,_ZTv0_n24_N8S20665C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20665C8D0Ev,_ZThn76_N8S20665C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20665C8D0Ev,_ZThn52_N8S20665C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20665C8D1Ev,_ZTv0_n24_N8S20665C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20665C8D1Ev,_ZThn76_N8S20665C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20665C8D1Ev,_ZThn52_N8S20665C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20665C8 = {  "S20665C8", // class name
  bases_S20665C8, 32,
  &(vtc_S20665C8[0]), // expected_vtbl_contents
  &(vtt_S20665C8[0]), // expected_vtt_contents
  ABISELECT(136,92), // object size
  NSPAIRA(_ZTI8S20665C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20665C8),57, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20665C8),28, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names77,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20665C14  : virtual S20665C2 , S20665C6 {
  virtual  ~S20665C14(); // _ZN9S20665C14D2Ev
  virtual void  v4(); // _ZN9S20665C142v4Ev
  S20665C14(); // tgen
};
//SIG(-1 S20665C14) C1{ VBC2{ VBC3{ m FL} BC4{ m} v2} BC5{ BC3 VBC4 BC6{ BC2} vd v3} vd v1}


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

static void Test_S20665C14()
{
  extern Class_Descriptor cd_S20665C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S20665C14, buf);
    S20665C14 *dp, &lv = *(dp=new (buf) S20665C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S20665C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20665C14)");
    /*is_ambiguous_... S20665C14::S20665C2 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*), ABISELECT(24,16), "S20665C14");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*)(S20665C7*)(S20665C6*), ABISELECT(24,16), "S20665C14");
    /*is_ambiguous_... S20665C14::S20665C2 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C2*), ABISELECT(16,12), "S20665C14");
    /*is_ambiguous_... S20665C14::S20665C2 */ AMB_check_base_class_offset(lv, (S20665C2*), ABISELECT(16,12), "S20665C14");
    /*is_ambiguous_... S20665C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C6*), ABISELECT(8,4), "S20665C14");
    /*is_ambiguous_... S20665C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C6*), ABISELECT(32,24), "S20665C14");
    check_base_class_offset(lv, (S731C17_nt*)(S20665C2*)(S20665C7*)(S20665C6*), 0, "S20665C14");
    check_base_class_offset(lv, (S20665C2*)(S20665C7*)(S20665C6*), 0, "S20665C14");
    check_base_class_offset(lv, (S20665C7*)(S20665C6*), 0, "S20665C14");
    check_base_class_offset(lv, (S20665C6*), 0, "S20665C14");
    test_class_info(&lv, &cd_S20665C14);
    dp->~S20665C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20665C14(Test_S20665C14, "S20665C14", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN9S20665C14C1Ev();
extern void _ZN9S20665C14D2Ev();
Name_Map name_map_S20665C14[] = {
  NSPAIR(_ZN9S20665C14C1Ev),
  NSPAIR(_ZN9S20665C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S20665C7;
extern VTBL_ENTRY _ZTI8S20665C7[];
extern  VTBL_ENTRY _ZTV8S20665C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C7[];
extern Class_Descriptor cd_S20665C6;
extern VTBL_ENTRY _ZTI8S20665C6[];
extern  VTBL_ENTRY _ZTV8S20665C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C6[];
static Base_Class bases_S20665C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20665C2,    ABISELECT(16,12), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20665C2,    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
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20665C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20665C6,    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 _ZTI9S20665C14[];
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C14D1Ev();
extern void _ZN9S20665C14D0Ev();
extern void _ZN8S20665C62v2Ev();
extern void _ZN9S20665C142v4Ev();
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY vtc_S20665C14[] = {
  ABISELECT(16,12),
  ABISELECT(32,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20665C14[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20665C14D0Ev,
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
  (VTBL_ENTRY)&_ZN9S20665C142v4Ev,
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20665C14[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern VTBL_ENTRY _ZTV9S20665C14[];
extern void _ZN8S20665C22v1Ev();
extern void _ZN8S20665C6D1Ev();
extern void _ZN8S20665C6D0Ev();
extern void _ZN8S20665C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C6__9S20665C14[] = {
  ABISELECT(32,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C6[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN8S20665C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20665C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C78S20665C6__9S20665C14[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C7[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C28S20665C78S20665C6__A1__9S20665C14[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C2__9S20665C14[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
static  VTT_ENTRY vtt_S20665C14[] = {
  {&(_ZTV9S20665C14[5]),  5,15},
  {&(_tg__ZTV8S20665C6__9S20665C14[4]),  4,8},
  {&(_tg__ZTV8S20665C78S20665C6__9S20665C14[3]),  3,4},
  {&(_tg__ZTV8S20665C28S20665C78S20665C6__A1__9S20665C14[3]),  3,4},
  {&(_ZTV9S20665C14[14]),  14,15},
  {&(_tg__ZTV8S20665C2__9S20665C14[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20665C14[];
extern  VTBL_ENTRY _ZTV9S20665C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20665C14[];
Class_Descriptor cd_S20665C14 = {  "S20665C14", // class name
  bases_S20665C14, 9,
  &(vtc_S20665C14[0]), // expected_vtbl_contents
  &(vtt_S20665C14[0]), // expected_vtt_contents
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI9S20665C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20665C14),15, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20665C14),6, //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  S20665C5  : virtual S20665C6 , S20665C8 , S20665C14 {
  int s20665c5f0;
  ~S20665C5(); // tgen
  S20665C5(); // tgen
};
//SIG(-1 S20665C5) C1{ VBC2{ BC3{ m FL} VBC4{ m} BC5{ BC6{ VBC3 BC4 v1}} vd v2} BC7{ VBC3 VBC8{ VBC3 BC6 BC4} BC9{ BC3 VBC6 BC4 vd} VBC2 BC10{ BC3 BC2 BC11{ m} VBC12{ VBC3 BC8 VBC6 v3} VBC9 vd}} BC13{ VBC6 BC2 vd v4} Fi}


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

static void Test_S20665C5()
{
  extern Class_Descriptor cd_S20665C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,27)];
    init_test(&cd_S20665C5, buf);
    S20665C5 *dp, &lv = *(dp=new (buf) S20665C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,104), "sizeof(S20665C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20665C5)");
    /*is_ambiguous_... S20665C5::S20665C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C6*), ABISELECT(80,56), "S20665C5");
    /*is_ambiguous_... S20665C5::S20665C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C6*), ABISELECT(88,64), "S20665C5");
    /*is_ambiguous_... S20665C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C6*)(S20665C11*)(S20665C8*), ABISELECT(88,64), "S20665C5");
    /*is_ambiguous_... S20665C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C6*)(S20665C14*), ABISELECT(88,64), "S20665C5");
    /*is_ambiguous_... S20665C5::S20665C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*)(S20665C7*)(S20665C6*), ABISELECT(88,64), "S20665C5");
    /*is_ambiguous_... S20665C8::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C8*), ABISELECT(88,64), "S20665C5");
    /*is_ambiguous_... S20665C5::S20665C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C9*), ABISELECT(88,64), "S20665C5");
    /*is_ambiguous_... S20665C5::S20665C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*)(S20665C9*), ABISELECT(88,64), "S20665C5");
    /*is_ambiguous_... S20665C5::S20665C2 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*), ABISELECT(88,64), "S20665C5");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*)(S20665C7*)(S20665C6*)(S20665C11*)(S20665C8*), ABISELECT(88,64), "S20665C5");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C13*), ABISELECT(88,64), "S20665C5");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C9*)(S20665C13*), ABISELECT(88,64), "S20665C5");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*)(S20665C9*)(S20665C13*), ABISELECT(88,64), "S20665C5");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*)(S20665C7*)(S20665C6*)(S20665C14*), ABISELECT(88,64), "S20665C5");
    /*is_ambiguous_... S20665C5::S20665C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C2*)(S20665C7*)(S20665C6*), ABISELECT(72,52), "S20665C5");
    /*is_ambiguous_... S20665C5::S20665C6 */ AMB_check_base_class_offset(lv, (S20665C2*)(S20665C7*)(S20665C6*), ABISELECT(72,52), "S20665C5");
    /*is_ambiguous_... S20665C5::S20665C6 */ AMB_check_base_class_offset(lv, (S20665C7*)(S20665C6*), ABISELECT(72,52), "S20665C5");
    /*is_ambiguous_... S20665C5::S20665C6 */ AMB_check_base_class_offset(lv, (S20665C6*), ABISELECT(72,52), "S20665C5");
    /*is_ambiguous_... S20665C8::S20665C6 */ AMB_check_base_class_offset(lv, (S20665C6*)(S20665C8*), ABISELECT(72,52), "S20665C5");
    /*is_ambiguous_... S20665C5::S20665C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C2*)(S20665C9*), ABISELECT(96,72), "S20665C5");
    /*is_ambiguous_... S20665C5::S20665C9 */ AMB_check_base_class_offset(lv, (S20665C2*)(S20665C9*), ABISELECT(96,72), "S20665C5");
    /*is_ambiguous_... S20665C5::S20665C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C9*), ABISELECT(104,76), "S20665C5");
    /*is_ambiguous_... S20665C8::S20665C9 */ AMB_check_base_class_offset(lv, (S20665C9*)(S20665C8*), ABISELECT(96,72), "S20665C5");
    /*is_ambiguous_... S20665C8::S20665C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C10*)(S20665C8*), ABISELECT(8,4), "S20665C5");
    /*is_ambiguous_... S20665C5::S20665C2 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C2*), 0, "S20665C5");
    /*is_ambiguous_... S20665C8::S20665C10 */ AMB_check_base_class_offset(lv, (S20665C2*)(S20665C10*)(S20665C8*), 0, "S20665C5");
    /*is_ambiguous_... S20665C13::S20665C2 */ AMB_check_base_class_offset(lv, (S20665C2*)(S20665C13*), 0, "S20665C5");
    /*is_ambiguous_... S20665C5::S20665C10 */ AMB_check_base_class_offset(lv, (S20665C2*)(S20665C10*), 0, "S20665C5");
    /*is_ambiguous_... S20665C14::S20665C2 */ AMB_check_base_class_offset(lv, (S20665C2*)(S20665C14*), 0, "S20665C5");
    /*is_ambiguous_... S20665C8::S20665C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C10*)(S20665C8*), ABISELECT(16,12), "S20665C5");
    /*is_ambiguous_... S20665C8::S20665C10 */ AMB_check_base_class_offset(lv, (S20665C10*)(S20665C8*), 0, "S20665C5");
    /*is_ambiguous_... S20665C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C11*)(S20665C8*), ABISELECT(40,28), "S20665C5");
    /*is_ambiguous_... S20665C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C6*)(S20665C11*)(S20665C8*), ABISELECT(32,20), "S20665C5");
    check_base_class_offset(lv, (S731C17_nt*)(S20665C2*)(S20665C7*)(S20665C6*)(S20665C11*)(S20665C8*), ABISELECT(24,16), "S20665C5");
    check_base_class_offset(lv, (S20665C2*)(S20665C7*)(S20665C6*)(S20665C11*)(S20665C8*), ABISELECT(24,16), "S20665C5");
    check_base_class_offset(lv, (S20665C7*)(S20665C6*)(S20665C11*)(S20665C8*), ABISELECT(24,16), "S20665C5");
    check_base_class_offset(lv, (S20665C6*)(S20665C11*)(S20665C8*), ABISELECT(24,16), "S20665C5");
    check_base_class_offset(lv, (S28C52_nt*)(S20665C11*)(S20665C8*), ABISELECT(24,16), "S20665C5");
    check_base_class_offset(lv, (S731C17_nt*)(S20665C2*)(S20665C9*)(S20665C13*), ABISELECT(112,80), "S20665C5");
    check_base_class_offset(lv, (S20665C2*)(S20665C9*)(S20665C13*), ABISELECT(112,80), "S20665C5");
    /*is_ambiguous_... S20665C9::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C9*)(S20665C13*), ABISELECT(120,84), "S20665C5");
    check_base_class_offset(lv, (S20665C9*)(S20665C13*), ABISELECT(112,80), "S20665C5");
    check_base_class_offset(lv, (S20665C13*)(S20665C11*)(S20665C8*), ABISELECT(112,80), "S20665C5");
    /*is_ambiguous_... S20665C5::S20665C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C10*), ABISELECT(136,92), "S20665C5");
    /*is_ambiguous_... S20665C5::S20665C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C10*), ABISELECT(144,100), "S20665C5");
    check_base_class_offset(lv, (S20665C10*)(S20665C11*)(S20665C8*), ABISELECT(128,88), "S20665C5");
    check_base_class_offset(lv, (S20665C11*)(S20665C8*), ABISELECT(24,16), "S20665C5");
    check_base_class_offset(lv, (S20665C8*), 0, "S20665C5");
    /*is_ambiguous_... S20665C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C6*)(S20665C14*), ABISELECT(56,40), "S20665C5");
    check_base_class_offset(lv, (S731C17_nt*)(S20665C2*)(S20665C7*)(S20665C6*)(S20665C14*), ABISELECT(48,36), "S20665C5");
    check_base_class_offset(lv, (S20665C2*)(S20665C7*)(S20665C6*)(S20665C14*), ABISELECT(48,36), "S20665C5");
    check_base_class_offset(lv, (S20665C7*)(S20665C6*)(S20665C14*), ABISELECT(48,36), "S20665C5");
    check_base_class_offset(lv, (S20665C6*)(S20665C14*), ABISELECT(48,36), "S20665C5");
    check_base_class_offset(lv, (S20665C14*), ABISELECT(48,36), "S20665C5");
    check_field_offset(lv, s20665c5f0, ABISELECT(64,48), "S20665C5.s20665c5f0");
    test_class_info(&lv, &cd_S20665C5);
    dp->~S20665C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20665C5(Test_S20665C5, "S20665C5", ABISELECT(152,104));

#else // __cplusplus

extern void _ZN8S20665C5C1Ev();
extern void _ZN8S20665C5D1Ev();
Name_Map name_map_S20665C5[] = {
  NSPAIR(_ZN8S20665C5C1Ev),
  NSPAIR(_ZN8S20665C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S20665C7;
extern VTBL_ENTRY _ZTI8S20665C7[];
extern  VTBL_ENTRY _ZTV8S20665C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C7[];
extern Class_Descriptor cd_S20665C6;
extern VTBL_ENTRY _ZTI8S20665C6[];
extern  VTBL_ENTRY _ZTV8S20665C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C6[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C9;
extern VTBL_ENTRY _ZTI8S20665C9[];
extern  VTBL_ENTRY _ZTV8S20665C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C10;
extern VTBL_ENTRY _ZTI9S20665C10[];
extern  VTBL_ENTRY _ZTV9S20665C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20665C10[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S20665C7;
extern VTBL_ENTRY _ZTI8S20665C7[];
extern  VTBL_ENTRY _ZTV8S20665C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C7[];
extern Class_Descriptor cd_S20665C6;
extern VTBL_ENTRY _ZTI8S20665C6[];
extern  VTBL_ENTRY _ZTV8S20665C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C9;
extern VTBL_ENTRY _ZTI8S20665C9[];
extern  VTBL_ENTRY _ZTV8S20665C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C9[];
extern Class_Descriptor cd_S20665C13;
extern VTBL_ENTRY _ZTI9S20665C13[];
extern  VTBL_ENTRY _ZTV9S20665C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20665C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C10;
extern VTBL_ENTRY _ZTI9S20665C10[];
extern  VTBL_ENTRY _ZTV9S20665C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20665C10[];
extern Class_Descriptor cd_S20665C11;
extern VTBL_ENTRY _ZTI9S20665C11[];
extern  VTBL_ENTRY _ZTV9S20665C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20665C11[];
extern Class_Descriptor cd_S20665C8;
extern VTBL_ENTRY _ZTI8S20665C8[];
extern  VTBL_ENTRY _ZTV8S20665C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C8[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S20665C7;
extern VTBL_ENTRY _ZTI8S20665C7[];
extern  VTBL_ENTRY _ZTV8S20665C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C7[];
extern Class_Descriptor cd_S20665C6;
extern VTBL_ENTRY _ZTI8S20665C6[];
extern  VTBL_ENTRY _ZTV8S20665C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C6[];
extern Class_Descriptor cd_S20665C14;
extern VTBL_ENTRY _ZTI9S20665C14[];
extern  VTBL_ENTRY _ZTV9S20665C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20665C14[];
static Base_Class bases_S20665C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(88,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(88,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    4, //immediately_derived
  0, 0},
  {&cd_S20665C2,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20665C7,    ABISELECT(72,52), //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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20665C6,    ABISELECT(72,52), //bcp->offset
    34, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20665C2,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(104,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20665C9,    ABISELECT(96,72), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20665C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    15, //immediately_derived
  0, 0},
  {&cd_S20665C10,    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
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    31, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20665C2,    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
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20665C7,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20665C6,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(112,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20665C2,    ABISELECT(112,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(120,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
    26, //immediately_derived
  0, 0},
  {&cd_S20665C9,    ABISELECT(112,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20665C13,    ABISELECT(112,80), //bcp->offset
    50, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(136,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(144,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20665C10,    ABISELECT(128,88), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S20665C11,    ABISELECT(24,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S20665C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_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
    37, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    35, //immediately_derived
  0, 0},
  {&cd_S20665C2,    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
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20665C7,    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
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20665C6,    ABISELECT(48,36), //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
    19, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20665C14,    ABISELECT(48,36), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20665C5[];
extern void _ZN8S20665C22v1Ev();
extern void _ZN8S20665C5D1Ev();
extern void _ZN8S20665C5D0Ev();
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZThn24_N8S20665C5D1Ev,_ZThn16_N8S20665C5D1Ev)();
extern void ABISELECT(_ZThn24_N8S20665C5D0Ev,_ZThn16_N8S20665C5D0Ev)();
extern void _ZN8S20665C62v2Ev();
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZThn48_N8S20665C5D1Ev,_ZThn36_N8S20665C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S20665C5D0Ev,_ZThn36_N8S20665C5D0Ev)();
extern void _ZN8S20665C62v2Ev();
extern void _ZN9S20665C142v4Ev();
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20665C5D1Ev,_ZTv0_n24_N8S20665C5D1Ev)();
extern void ABISELECT(_ZThn72_N8S20665C5D1Ev,_ZThn52_N8S20665C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20665C5D0Ev,_ZTv0_n24_N8S20665C5D0Ev)();
extern void ABISELECT(_ZThn72_N8S20665C5D0Ev,_ZThn52_N8S20665C5D0Ev)() __attribute__((weak));
extern void _ZN8S20665C62v2Ev();
extern void _ZN8S20665C22v1Ev();
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C132v3Ev();
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20665C5D1Ev,_ZTv0_n24_N8S20665C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S20665C5D1Ev,_ZThn88_N8S20665C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20665C5D0Ev,_ZTv0_n24_N8S20665C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S20665C5D0Ev,_ZThn88_N8S20665C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20665C5[] = {
  ABISELECT(128,88),
  ABISELECT(112,80),
  ABISELECT(88,64),
  ABISELECT(72,52),
  ABISELECT(96,72),
  0,
  0,
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C5[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN8S20665C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20665C5D0Ev,
  ABISELECT(104,72),
  ABISELECT(-24,-16),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(64,48),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20665C5[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20665C5D1Ev,_ZThn16_N8S20665C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20665C5D0Ev,_ZThn16_N8S20665C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
  ABISELECT(-48,-36),
  ABISELECT(40,28),
  ABISELECT(40,28),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S20665C5[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20665C5D1Ev,_ZThn36_N8S20665C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20665C5D0Ev,_ZThn36_N8S20665C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
  (VTBL_ENTRY)&_ZN9S20665C142v4Ev,
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI8S20665C5[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20665C5D1Ev,_ZTv0_n24_N8S20665C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20665C5D0Ev,_ZTv0_n24_N8S20665C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
  0,
  -8,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S20665C5[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  0,
  0,
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S20665C5[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C132v3Ev,
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S20665C5[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20665C5D1Ev,_ZTv0_n24_N8S20665C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20665C5D0Ev,_ZTv0_n24_N8S20665C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S20665C5[];
extern void _ZN8S20665C22v1Ev();
extern void _ZN8S20665C8D1Ev();
extern void _ZN8S20665C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C8__8S20665C5[] = {
  ABISELECT(128,88),
  ABISELECT(112,80),
  ABISELECT(88,64),
  ABISELECT(72,52),
  ABISELECT(96,72),
  0,
  0,
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C8[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN8S20665C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20665C8D0Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C10D1Ev();
extern void _ZN9S20665C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C108S20665C8__8S20665C5[] = {
  0,
  0,
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20665C10[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20665C10D0Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C11D1Ev();
extern void _ZN9S20665C11D0Ev();
extern void _ZN8S20665C62v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C118S20665C8__8S20665C5[] = {
  ABISELECT(104,72),
  ABISELECT(-24,-16),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20665C11[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20665C11D0Ev,
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN8S20665C6D1Ev();
extern void _ZN8S20665C6D0Ev();
extern void _ZN8S20665C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C69S20665C118S20665C8__A1__8S20665C5[] = {
  ABISELECT(64,48),
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C6[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN8S20665C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20665C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C78S20665C69S20665C118S20665C8__A1__8S20665C5[] = {
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C7[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C28S20665C78S20665C69S20665C118S20665C8__A3__8S20665C5[] = {
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C132v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C13__9S20665C118S20665C8__8S20665C5[] = {
  0,
  0,
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI9S20665C11[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C132v3Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C2__A2__9S20665C118S20665C8__8S20665C5[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20665C11[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20665C11D1Ev,_ZTv0_n24_N9S20665C11D1Ev)();
extern void ABISELECT(_ZThn104_N9S20665C11D1Ev,_ZThn72_N9S20665C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20665C11D0Ev,_ZTv0_n24_N9S20665C11D0Ev)();
extern void ABISELECT(_ZThn104_N9S20665C11D0Ev,_ZThn72_N9S20665C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20665C10__9S20665C118S20665C8__8S20665C5[] = {
  ABISELECT(-104,-72),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI9S20665C11[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20665C11D1Ev,_ZTv0_n24_N9S20665C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20665C11D0Ev,_ZTv0_n24_N9S20665C11D0Ev),
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C9__8S20665C8__8S20665C5[] = {
  0,
  -8,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S20665C8[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20665C8D1Ev,_ZTv0_n24_N8S20665C8D1Ev)();
extern void ABISELECT(_ZThn72_N8S20665C8D1Ev,_ZThn52_N8S20665C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20665C8D0Ev,_ZTv0_n24_N8S20665C8D0Ev)();
extern void ABISELECT(_ZThn72_N8S20665C8D0Ev,_ZThn52_N8S20665C8D0Ev)() __attribute__((weak));
extern void _ZN8S20665C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C6__8S20665C8__8S20665C5[] = {
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI8S20665C8[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20665C8D1Ev,_ZTv0_n24_N8S20665C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20665C8D0Ev,_ZTv0_n24_N8S20665C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZThn24_N8S20665C8D1Ev,_ZThn16_N8S20665C8D1Ev)();
extern void ABISELECT(_ZThn24_N8S20665C8D0Ev,_ZThn16_N8S20665C8D0Ev)();
extern void _ZN8S20665C62v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C11__8S20665C8__8S20665C5[] = {
  ABISELECT(104,72),
  ABISELECT(-24,-16),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(64,48),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20665C8[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20665C8D1Ev,_ZThn16_N8S20665C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20665C8D0Ev,_ZThn16_N8S20665C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C132v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C13__8S20665C8__8S20665C5[] = {
  0,
  0,
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S20665C8[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C132v3Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20665C8D1Ev,_ZTv0_n24_N8S20665C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S20665C8D1Ev,_ZThn88_N8S20665C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20665C8D0Ev,_ZTv0_n24_N8S20665C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S20665C8D0Ev,_ZThn88_N8S20665C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20665C10__A1__8S20665C8__8S20665C5[] = {
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S20665C8[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20665C8D1Ev,_ZTv0_n24_N8S20665C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20665C8D0Ev,_ZTv0_n24_N8S20665C8D0Ev),
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C14D1Ev();
extern void _ZN9S20665C14D0Ev();
extern void _ZN8S20665C62v2Ev();
extern void _ZN9S20665C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C14__8S20665C5[] = {
  ABISELECT(-48,-36),
  ABISELECT(40,28),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20665C14[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20665C14D0Ev,
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
  (VTBL_ENTRY)&_ZN9S20665C142v4Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN8S20665C6D1Ev();
extern void _ZN8S20665C6D0Ev();
extern void _ZN8S20665C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C69S20665C14__A2__8S20665C5[] = {
  ABISELECT(40,28),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C6[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN8S20665C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20665C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C78S20665C69S20665C14__A2__8S20665C5[] = {
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C7[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C28S20665C78S20665C69S20665C14__A5__8S20665C5[] = {
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C2__9S20665C14__8S20665C5[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI9S20665C14[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN8S20665C6D1Ev();
extern void _ZN8S20665C6D0Ev();
extern void _ZN8S20665C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C6__8S20665C5[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C6[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN8S20665C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20665C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C78S20665C6__8S20665C5[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C7[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C28S20665C78S20665C6__8S20665C5[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C9__8S20665C5[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C9[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C28S20665C9__A1__8S20665C5[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C2__A2__8S20665C5[] = {
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C132v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C13__8S20665C5[] = {
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20665C13[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C132v3Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C99S20665C13__A1__8S20665C5[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C9[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C28S20665C99S20665C13__A4__8S20665C5[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C2__A1__9S20665C13__8S20665C5[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(112,80),
  (VTBL_ENTRY)&(_ZTI9S20665C13[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C10D1Ev();
extern void _ZN9S20665C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C10__A1__8S20665C5[] = {
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20665C10[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20665C10D0Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C2__9S20665C10__A1__8S20665C5[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI9S20665C10[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
static  VTT_ENTRY vtt_S20665C5[] = {
  {&(_ZTV8S20665C5[10]),  10,67},
  {&(_tg__ZTV8S20665C8__8S20665C5[10]),  10,13},
  {&(_tg__ZTV9S20665C108S20665C8__8S20665C5[5]),  5,8},
  {&(_tg__ZTV9S20665C108S20665C8__8S20665C5[5]),  5,8},
  {&(_tg__ZTV9S20665C118S20665C8__8S20665C5[7]),  7,11},
  {&(_tg__ZTV8S20665C69S20665C118S20665C8__A1__8S20665C5[4]),  4,8},
  {&(_tg__ZTV8S20665C78S20665C69S20665C118S20665C8__A1__8S20665C5[3]),  3,4},
  {&(_tg__ZTV8S20665C28S20665C78S20665C69S20665C118S20665C8__A3__8S20665C5[3]),  3,4},
  {&(_tg__ZTV9S20665C13__9S20665C118S20665C8__8S20665C5[6]),  6,8},
  {&(_tg__ZTV8S20665C2__A2__9S20665C118S20665C8__8S20665C5[4]),  4,5},
  {&(_tg__ZTV9S20665C10__9S20665C118S20665C8__8S20665C5[6]),  6,9},
  {&(_tg__ZTV8S20665C9__8S20665C8__8S20665C5[4]),  4,5},
  {&(_tg__ZTV8S20665C8__8S20665C5[10]),  10,13},
  {&(_tg__ZTV8S20665C6__8S20665C8__8S20665C5[7]),  7,11},
  {&(_tg__ZTV9S20665C11__8S20665C8__8S20665C5[7]),  7,11},
  {&(_tg__ZTV9S20665C13__8S20665C8__8S20665C5[6]),  6,8},
  {&(_tg__ZTV9S20665C10__A1__8S20665C8__8S20665C5[6]),  6,9},
  {&(_tg__ZTV9S20665C14__8S20665C5[5]),  5,10},
  {&(_tg__ZTV8S20665C69S20665C14__A2__8S20665C5[4]),  4,8},
  {&(_tg__ZTV8S20665C78S20665C69S20665C14__A2__8S20665C5[3]),  3,4},
  {&(_tg__ZTV8S20665C28S20665C78S20665C69S20665C14__A5__8S20665C5[3]),  3,4},
  {&(_tg__ZTV8S20665C2__9S20665C14__8S20665C5[4]),  4,5},
  {&(_ZTV8S20665C5[41]),  41,67},
  {&(_ZTV8S20665C5[49]),  49,67},
  {&(_ZTV8S20665C5[10]),  10,67},
  {&(_ZTV8S20665C5[20]),  20,67},
  {&(_ZTV8S20665C5[56]),  56,67},
  {&(_ZTV8S20665C5[64]),  64,67},
  {&(_ZTV8S20665C5[29]),  29,67},
  {&(_tg__ZTV8S20665C6__8S20665C5[4]),  4,8},
  {&(_tg__ZTV8S20665C78S20665C6__8S20665C5[3]),  3,4},
  {&(_tg__ZTV8S20665C28S20665C78S20665C6__8S20665C5[3]),  3,4},
  {&(_tg__ZTV8S20665C9__8S20665C5[3]),  3,4},
  {&(_tg__ZTV8S20665C28S20665C9__A1__8S20665C5[3]),  3,4},
  {&(_tg__ZTV8S20665C2__A2__8S20665C5[3]),  3,4},
  {&(_tg__ZTV9S20665C13__8S20665C5[4]),  4,6},
  {&(_tg__ZTV8S20665C99S20665C13__A1__8S20665C5[3]),  3,4},
  {&(_tg__ZTV8S20665C28S20665C99S20665C13__A4__8S20665C5[3]),  3,4},
  {&(_tg__ZTV8S20665C2__A1__9S20665C13__8S20665C5[4]),  4,5},
  {&(_tg__ZTV9S20665C10__A1__8S20665C5[5]),  5,8},
  {&(_tg__ZTV8S20665C2__9S20665C10__A1__8S20665C5[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S20665C5[];
extern  VTBL_ENTRY _ZTV8S20665C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C5[];
static VTBL_ENTRY alt_thunk_names78[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20665C8D0Ev,_ZTv0_n24_N8S20665C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20665C8D0Ev,_ZThn88_N8S20665C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20665C8D0Ev,_ZThn52_N8S20665C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20665C8D1Ev,_ZTv0_n24_N8S20665C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20665C8D1Ev,_ZThn88_N8S20665C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20665C8D1Ev,_ZThn52_N8S20665C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20665C11D0Ev,_ZTv0_n24_N9S20665C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20665C11D0Ev,_ZThn72_N9S20665C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20665C11D1Ev,_ZTv0_n24_N9S20665C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20665C11D1Ev,_ZThn72_N9S20665C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20665C5D0Ev,_ZTv0_n24_N8S20665C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20665C5D0Ev,_ZThn88_N8S20665C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20665C5D0Ev,_ZThn52_N8S20665C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20665C5D1Ev,_ZTv0_n24_N8S20665C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20665C5D1Ev,_ZThn88_N8S20665C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20665C5D1Ev,_ZThn52_N8S20665C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20665C5 = {  "S20665C5", // class name
  bases_S20665C5, 39,
  &(vtc_S20665C5[0]), // expected_vtbl_contents
  &(vtt_S20665C5[0]), // expected_vtt_contents
  ABISELECT(152,104), // object size
  NSPAIRA(_ZTI8S20665C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20665C5),67, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20665C5),41, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names78,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20665C1  : virtual S20665C2 , S20665C5 , virtual S20665C11 {
  virtual  ~S20665C1(); // _ZN8S20665C1D2Ev
  S20665C1(); // tgen
};
//SIG(1 S20665C1) C1{ VBC2{ VBC3{ m FL} BC4{ m} v1} BC5{ VBC6{ BC3 VBC4 BC7{ BC2} vd v2} BC8{ VBC3 VBC9{ VBC3 BC2 BC4} BC10{ BC3 VBC2 BC4 vd} VBC6 BC11{ BC3 BC6 BC12{ m} VBC13{ VBC3 BC9 VBC2 v3} VBC10 vd}} BC14{ VBC2 BC6 vd v4} Fi} VBC11 vd}


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

static void Test_S20665C1()
{
  extern Class_Descriptor cd_S20665C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,33)];
    init_test(&cd_S20665C1, buf);
    S20665C1 *dp, &lv = *(dp=new (buf) S20665C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,128), "sizeof(S20665C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20665C1)");
    /*is_ambiguous_... S20665C1::S20665C2 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*), ABISELECT(72,52), "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*)(S20665C7*)(S20665C6*), ABISELECT(72,52), "S20665C1");
    /*is_ambiguous_... S20665C8::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C8*)(S20665C5*), ABISELECT(72,52), "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C9*), ABISELECT(72,52), "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*)(S20665C9*), ABISELECT(72,52), "S20665C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*)(S20665C7*)(S20665C6*)(S20665C11*)(S20665C8*)(S20665C5*), ABISELECT(72,52), "S20665C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C13*), ABISELECT(72,52), "S20665C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C9*)(S20665C13*), ABISELECT(72,52), "S20665C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*)(S20665C9*)(S20665C13*), ABISELECT(72,52), "S20665C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*)(S20665C7*)(S20665C6*)(S20665C14*)(S20665C5*), ABISELECT(72,52), "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C2*)(S20665C7*)(S20665C6*)(S20665C11*), ABISELECT(72,52), "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C2 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C2*), 0, "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C2 */ AMB_check_base_class_offset(lv, (S20665C2*), 0, "S20665C1");
    /*is_ambiguous_... S20665C8::S20665C10 */ AMB_check_base_class_offset(lv, (S20665C2*)(S20665C10*)(S20665C8*)(S20665C5*), 0, "S20665C1");
    /*is_ambiguous_... S20665C13::S20665C2 */ AMB_check_base_class_offset(lv, (S20665C2*)(S20665C13*), 0, "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C10 */ AMB_check_base_class_offset(lv, (S20665C2*)(S20665C10*), 0, "S20665C1");
    /*is_ambiguous_... S20665C14::S20665C2 */ AMB_check_base_class_offset(lv, (S20665C2*)(S20665C14*)(S20665C5*), 0, "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C6 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C6*), ABISELECT(88,64), "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C6*), ABISELECT(96,72), "S20665C1");
    /*is_ambiguous_... S20665C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C6*)(S20665C11*)(S20665C8*)(S20665C5*), ABISELECT(96,72), "S20665C1");
    /*is_ambiguous_... S20665C6::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C6*)(S20665C14*)(S20665C5*), ABISELECT(96,72), "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C6*)(S20665C11*), ABISELECT(96,72), "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C6 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C2*)(S20665C7*)(S20665C6*), ABISELECT(80,60), "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C6 */ AMB_check_base_class_offset(lv, (S20665C2*)(S20665C7*)(S20665C6*), ABISELECT(80,60), "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C6 */ AMB_check_base_class_offset(lv, (S20665C7*)(S20665C6*), ABISELECT(80,60), "S20665C1");
    /*is_ambiguous_... S20665C5::S20665C6 */ AMB_check_base_class_offset(lv, (S20665C6*)(S20665C5*), ABISELECT(80,60), "S20665C1");
    /*is_ambiguous_... S20665C8::S20665C6 */ AMB_check_base_class_offset(lv, (S20665C6*)(S20665C8*)(S20665C5*), ABISELECT(80,60), "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C2*)(S20665C9*), ABISELECT(104,76), "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C9 */ AMB_check_base_class_offset(lv, (S20665C2*)(S20665C9*), ABISELECT(104,76), "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C9*), ABISELECT(112,80), "S20665C1");
    /*is_ambiguous_... S20665C8::S20665C9 */ AMB_check_base_class_offset(lv, (S20665C9*)(S20665C8*)(S20665C5*), ABISELECT(104,76), "S20665C1");
    /*is_ambiguous_... S20665C8::S20665C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C10*)(S20665C8*)(S20665C5*), ABISELECT(8,4), "S20665C1");
    /*is_ambiguous_... S20665C8::S20665C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C10*)(S20665C8*)(S20665C5*), ABISELECT(16,12), "S20665C1");
    /*is_ambiguous_... S20665C8::S20665C10 */ AMB_check_base_class_offset(lv, (S20665C10*)(S20665C8*)(S20665C5*), 0, "S20665C1");
    /*is_ambiguous_... S20665C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C11*)(S20665C8*)(S20665C5*), ABISELECT(40,28), "S20665C1");
    /*is_ambiguous_... S20665C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C6*)(S20665C11*)(S20665C8*)(S20665C5*), ABISELECT(32,20), "S20665C1");
    check_base_class_offset(lv, (S731C17_nt*)(S20665C2*)(S20665C7*)(S20665C6*)(S20665C11*)(S20665C8*)(S20665C5*), ABISELECT(24,16), "S20665C1");
    check_base_class_offset(lv, (S20665C2*)(S20665C7*)(S20665C6*)(S20665C11*)(S20665C8*)(S20665C5*), ABISELECT(24,16), "S20665C1");
    check_base_class_offset(lv, (S20665C7*)(S20665C6*)(S20665C11*)(S20665C8*)(S20665C5*), ABISELECT(24,16), "S20665C1");
    check_base_class_offset(lv, (S20665C6*)(S20665C11*)(S20665C8*)(S20665C5*), ABISELECT(24,16), "S20665C1");
    check_base_class_offset(lv, (S28C52_nt*)(S20665C11*)(S20665C8*)(S20665C5*), ABISELECT(24,16), "S20665C1");
    check_base_class_offset(lv, (S731C17_nt*)(S20665C2*)(S20665C9*)(S20665C13*), ABISELECT(120,84), "S20665C1");
    check_base_class_offset(lv, (S20665C2*)(S20665C9*)(S20665C13*), ABISELECT(120,84), "S20665C1");
    /*is_ambiguous_... S20665C9::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C9*)(S20665C13*), ABISELECT(128,88), "S20665C1");
    check_base_class_offset(lv, (S20665C9*)(S20665C13*), ABISELECT(120,84), "S20665C1");
    check_base_class_offset(lv, (S20665C13*)(S20665C11*)(S20665C8*)(S20665C5*), ABISELECT(120,84), "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C11 */ AMB_check_base_class_offset(lv, (S20665C13*)(S20665C11*), ABISELECT(120,84), "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C10*), ABISELECT(144,96), "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C10*), ABISELECT(152,104), "S20665C1");
    check_base_class_offset(lv, (S20665C10*)(S20665C11*)(S20665C8*)(S20665C5*), ABISELECT(136,92), "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C11 */ AMB_check_base_class_offset(lv, (S20665C10*)(S20665C11*), ABISELECT(136,92), "S20665C1");
    check_base_class_offset(lv, (S20665C11*)(S20665C8*)(S20665C5*), ABISELECT(24,16), "S20665C1");
    check_base_class_offset(lv, (S20665C8*)(S20665C5*), 0, "S20665C1");
    /*is_ambiguous_... S20665C6::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C6*)(S20665C14*)(S20665C5*), ABISELECT(56,40), "S20665C1");
    check_base_class_offset(lv, (S731C17_nt*)(S20665C2*)(S20665C7*)(S20665C6*)(S20665C14*)(S20665C5*), ABISELECT(48,36), "S20665C1");
    check_base_class_offset(lv, (S20665C2*)(S20665C7*)(S20665C6*)(S20665C14*)(S20665C5*), ABISELECT(48,36), "S20665C1");
    check_base_class_offset(lv, (S20665C7*)(S20665C6*)(S20665C14*)(S20665C5*), ABISELECT(48,36), "S20665C1");
    check_base_class_offset(lv, (S20665C6*)(S20665C14*)(S20665C5*), ABISELECT(48,36), "S20665C1");
    check_base_class_offset(lv, (S20665C14*)(S20665C5*), ABISELECT(48,36), "S20665C1");
    check_base_class_offset(lv, (S20665C5*), 0, "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C11*), ABISELECT(176,120), "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20665C6*)(S20665C11*), ABISELECT(168,112), "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20665C2*)(S20665C7*)(S20665C6*)(S20665C11*), ABISELECT(160,108), "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C11 */ AMB_check_base_class_offset(lv, (S20665C2*)(S20665C7*)(S20665C6*)(S20665C11*), ABISELECT(160,108), "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C11 */ AMB_check_base_class_offset(lv, (S20665C7*)(S20665C6*)(S20665C11*), ABISELECT(160,108), "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C11 */ AMB_check_base_class_offset(lv, (S20665C6*)(S20665C11*), ABISELECT(160,108), "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C11 */ AMB_check_base_class_offset(lv, (S28C52_nt*)(S20665C11*), ABISELECT(160,108), "S20665C1");
    /*is_ambiguous_... S20665C1::S20665C11 */ AMB_check_base_class_offset(lv, (S20665C11*), ABISELECT(160,108), "S20665C1");
    test_class_info(&lv, &cd_S20665C1);
    dp->~S20665C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20665C1(Test_S20665C1, "S20665C1", ABISELECT(184,128));

#else // __cplusplus

extern void _ZN8S20665C1C1Ev();
extern void _ZN8S20665C1D2Ev();
Name_Map name_map_S20665C1[] = {
  NSPAIR(_ZN8S20665C1C1Ev),
  NSPAIR(_ZN8S20665C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S20665C7;
extern VTBL_ENTRY _ZTI8S20665C7[];
extern  VTBL_ENTRY _ZTV8S20665C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C7[];
extern Class_Descriptor cd_S20665C6;
extern VTBL_ENTRY _ZTI8S20665C6[];
extern  VTBL_ENTRY _ZTV8S20665C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C6[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C9;
extern VTBL_ENTRY _ZTI8S20665C9[];
extern  VTBL_ENTRY _ZTV8S20665C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C10;
extern VTBL_ENTRY _ZTI9S20665C10[];
extern  VTBL_ENTRY _ZTV9S20665C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20665C10[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S20665C7;
extern VTBL_ENTRY _ZTI8S20665C7[];
extern  VTBL_ENTRY _ZTV8S20665C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C7[];
extern Class_Descriptor cd_S20665C6;
extern VTBL_ENTRY _ZTI8S20665C6[];
extern  VTBL_ENTRY _ZTV8S20665C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C9;
extern VTBL_ENTRY _ZTI8S20665C9[];
extern  VTBL_ENTRY _ZTV8S20665C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C9[];
extern Class_Descriptor cd_S20665C13;
extern VTBL_ENTRY _ZTI9S20665C13[];
extern  VTBL_ENTRY _ZTV9S20665C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20665C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C10;
extern VTBL_ENTRY _ZTI9S20665C10[];
extern  VTBL_ENTRY _ZTV9S20665C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20665C10[];
extern Class_Descriptor cd_S20665C11;
extern VTBL_ENTRY _ZTI9S20665C11[];
extern  VTBL_ENTRY _ZTV9S20665C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20665C11[];
extern Class_Descriptor cd_S20665C8;
extern VTBL_ENTRY _ZTI8S20665C8[];
extern  VTBL_ENTRY _ZTV8S20665C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C8[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S20665C7;
extern VTBL_ENTRY _ZTI8S20665C7[];
extern  VTBL_ENTRY _ZTV8S20665C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C7[];
extern Class_Descriptor cd_S20665C6;
extern VTBL_ENTRY _ZTI8S20665C6[];
extern  VTBL_ENTRY _ZTV8S20665C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C6[];
extern Class_Descriptor cd_S20665C14;
extern VTBL_ENTRY _ZTI9S20665C14[];
extern  VTBL_ENTRY _ZTV9S20665C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20665C14[];
extern Class_Descriptor cd_S20665C5;
extern VTBL_ENTRY _ZTI8S20665C5[];
extern  VTBL_ENTRY _ZTV8S20665C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C5[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20665C2;
extern VTBL_ENTRY _ZTI8S20665C2[];
extern  VTBL_ENTRY _ZTV8S20665C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C2[];
extern Class_Descriptor cd_S20665C7;
extern VTBL_ENTRY _ZTI8S20665C7[];
extern  VTBL_ENTRY _ZTV8S20665C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C7[];
extern Class_Descriptor cd_S20665C6;
extern VTBL_ENTRY _ZTI8S20665C6[];
extern  VTBL_ENTRY _ZTV8S20665C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C6[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S20665C11;
extern VTBL_ENTRY _ZTI9S20665C11[];
extern  VTBL_ENTRY _ZTV9S20665C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20665C11[];
static Base_Class bases_S20665C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20665C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(88,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_S731C17_nt,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20665C2,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20665C7,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20665C6,    ABISELECT(80,60), //bcp->offset
    35, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(104,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20665C2,    ABISELECT(104,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(112,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
    12, //immediately_derived
  0, 0},
  {&cd_S20665C9,    ABISELECT(104,76), //bcp->offset
    46, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_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
    15, //immediately_derived
  0, 0},
  {&cd_S20665C10,    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
    15, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    31, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20665C2,    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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20665C7,    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
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20665C6,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(120,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
    24, //immediately_derived
  0, 0},
  {&cd_S20665C2,    ABISELECT(120,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(128,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20665C9,    ABISELECT(120,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20665C13,    ABISELECT(120,84), //bcp->offset
    51, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(152,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
    30, //immediately_derived
  0, 0},
  {&cd_S20665C10,    ABISELECT(136,92), //bcp->offset
    59, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S20665C11,    ABISELECT(24,16), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S20665C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    37, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    35, //immediately_derived
  0, 0},
  {&cd_S20665C2,    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
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20665C7,    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
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20665C6,    ABISELECT(48,36), //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
    23, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20665C14,    ABISELECT(48,36), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20665C5,    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
    25, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(176,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    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
    45, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(160,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S20665C2,    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
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S20665C7,    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
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20665C6,    ABISELECT(160,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(160,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20665C11,    ABISELECT(160,108), //bcp->offset
    68, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20665C1[];
extern void _ZN8S20665C22v1Ev();
extern void _ZN8S20665C1D1Ev();
extern void _ZN8S20665C1D0Ev();
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZThn24_N8S20665C1D1Ev,_ZThn16_N8S20665C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S20665C1D0Ev,_ZThn16_N8S20665C1D0Ev)();
extern void _ZN8S20665C62v2Ev();
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZThn48_N8S20665C1D1Ev,_ZThn36_N8S20665C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S20665C1D0Ev,_ZThn36_N8S20665C1D0Ev)();
extern void _ZN8S20665C62v2Ev();
extern void _ZN9S20665C142v4Ev();
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20665C1D1Ev,_ZTv0_n24_N8S20665C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S20665C1D1Ev,_ZThn60_N8S20665C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20665C1D0Ev,_ZTv0_n24_N8S20665C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S20665C1D0Ev,_ZThn60_N8S20665C1D0Ev)() __attribute__((weak));
extern void _ZN8S20665C62v2Ev();
extern void _ZN8S20665C22v1Ev();
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C132v3Ev();
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20665C1D1Ev,_ZTv0_n24_N8S20665C1D1Ev)();
extern void ABISELECT(_ZThn136_N8S20665C1D1Ev,_ZThn92_N8S20665C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20665C1D0Ev,_ZTv0_n24_N8S20665C1D0Ev)();
extern void ABISELECT(_ZThn136_N8S20665C1D0Ev,_ZThn92_N8S20665C1D0Ev)() __attribute__((weak));
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S20665C1D1Ev,_ZTv0_n36_N8S20665C1D1Ev)();
extern void ABISELECT(_ZThn160_N8S20665C1D1Ev,_ZThn108_N8S20665C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20665C1D0Ev,_ZTv0_n36_N8S20665C1D0Ev)();
extern void ABISELECT(_ZThn160_N8S20665C1D0Ev,_ZThn108_N8S20665C1D0Ev)() __attribute__((weak));
extern void _ZN8S20665C62v2Ev();
static  VTBL_ENTRY vtc_S20665C1[] = {
  ABISELECT(160,108),
  ABISELECT(136,92),
  ABISELECT(120,84),
  ABISELECT(96,72),
  ABISELECT(80,60),
  ABISELECT(104,76),
  0,
  0,
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C1[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN8S20665C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20665C1D0Ev,
  ABISELECT(112,76),
  ABISELECT(-24,-16),
  ABISELECT(96,68),
  ABISELECT(72,56),
  ABISELECT(48,36),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20665C1[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20665C1D1Ev,_ZThn16_N8S20665C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20665C1D0Ev,_ZThn16_N8S20665C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
  ABISELECT(-48,-36),
  ABISELECT(48,36),
  ABISELECT(24,16),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S20665C1[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20665C1D1Ev,_ZThn36_N8S20665C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20665C1D0Ev,_ZThn36_N8S20665C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
  (VTBL_ENTRY)&_ZN9S20665C142v4Ev,
  0,
  ABISELECT(-80,-60),
  0,
  ABISELECT(16,12),
  -8,
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S20665C1[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20665C1D1Ev,_ZTv0_n24_N8S20665C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20665C1D0Ev,_ZTv0_n24_N8S20665C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
  0,
  ABISELECT(-32,-24),
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI8S20665C1[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  0,
  0,
  ABISELECT(-120,-84),
  ABISELECT(-48,-32),
  ABISELECT(-120,-84),
  (VTBL_ENTRY)&(_ZTI8S20665C1[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C132v3Ev,
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  ABISELECT(-64,-40),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S20665C1[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20665C1D1Ev,_ZTv0_n24_N8S20665C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20665C1D0Ev,_ZTv0_n24_N8S20665C1D0Ev),
  0,
  ABISELECT(-160,-108),
  0,
  ABISELECT(-24,-16),
  ABISELECT(-160,-108),
  ABISELECT(-40,-24),
  ABISELECT(-64,-36),
  ABISELECT(-88,-56),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI8S20665C1[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20665C1D1Ev,_ZTv0_n36_N8S20665C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20665C1D0Ev,_ZTv0_n36_N8S20665C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
};
extern VTBL_ENTRY _ZTV8S20665C1[];
extern void _ZN8S20665C22v1Ev();
extern void _ZN8S20665C5D1Ev();
extern void _ZN8S20665C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C5__8S20665C1[] = {
  ABISELECT(136,92),
  ABISELECT(120,84),
  ABISELECT(96,72),
  ABISELECT(80,60),
  ABISELECT(104,76),
  0,
  0,
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C5[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN8S20665C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20665C5D0Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN8S20665C8D1Ev();
extern void _ZN8S20665C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C88S20665C5__8S20665C1[] = {
  ABISELECT(136,92),
  ABISELECT(120,84),
  ABISELECT(96,72),
  ABISELECT(80,60),
  ABISELECT(104,76),
  0,
  0,
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C8[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN8S20665C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20665C8D0Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C10D1Ev();
extern void _ZN9S20665C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C108S20665C88S20665C5__8S20665C1[] = {
  0,
  0,
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20665C10[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20665C10D0Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C11D1Ev();
extern void _ZN9S20665C11D0Ev();
extern void _ZN8S20665C62v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C118S20665C88S20665C5__8S20665C1[] = {
  ABISELECT(112,76),
  ABISELECT(-24,-16),
  ABISELECT(96,68),
  ABISELECT(72,56),
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20665C11[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20665C11D0Ev,
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN8S20665C6D1Ev();
extern void _ZN8S20665C6D0Ev();
extern void _ZN8S20665C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C69S20665C118S20665C88S20665C5__A1__8S20665C1[] = {
  ABISELECT(72,56),
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C6[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN8S20665C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20665C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C78S20665C69S20665C118S20665C88S20665C5__A1__8S20665C1[] = {
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C7[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C28S20665C78S20665C69S20665C118S20665C88S20665C5__A3__8S20665C1[] = {
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C132v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C13__9S20665C118S20665C88S20665C5__8S20665C1[] = {
  0,
  0,
  ABISELECT(-120,-84),
  ABISELECT(-48,-32),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI9S20665C11[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C132v3Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C2__A2__9S20665C118S20665C88S20665C5__8S20665C1[] = {
  0,
  ABISELECT(72,52),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20665C11[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20665C11D1Ev,_ZTv0_n24_N9S20665C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S20665C11D1Ev,_ZThn76_N9S20665C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20665C11D0Ev,_ZTv0_n24_N9S20665C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S20665C11D0Ev,_ZThn76_N9S20665C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20665C10__9S20665C118S20665C88S20665C5__8S20665C1[] = {
  ABISELECT(-112,-76),
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  ABISELECT(-64,-40),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S20665C11[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20665C11D1Ev,_ZTv0_n24_N9S20665C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20665C11D0Ev,_ZTv0_n24_N9S20665C11D0Ev),
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C9__8S20665C88S20665C5__8S20665C1[] = {
  0,
  ABISELECT(-32,-24),
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI8S20665C8[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20665C8D1Ev,_ZTv0_n24_N8S20665C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S20665C8D1Ev,_ZThn60_N8S20665C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20665C8D0Ev,_ZTv0_n24_N8S20665C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S20665C8D0Ev,_ZThn60_N8S20665C8D0Ev)() __attribute__((weak));
extern void _ZN8S20665C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C6__8S20665C88S20665C5__8S20665C1[] = {
  0,
  ABISELECT(-80,-60),
  0,
  ABISELECT(16,12),
  -8,
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S20665C8[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20665C8D1Ev,_ZTv0_n24_N8S20665C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20665C8D0Ev,_ZTv0_n24_N8S20665C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZThn24_N8S20665C8D1Ev,_ZThn16_N8S20665C8D1Ev)();
extern void ABISELECT(_ZThn24_N8S20665C8D0Ev,_ZThn16_N8S20665C8D0Ev)();
extern void _ZN8S20665C62v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C11__8S20665C88S20665C5__8S20665C1[] = {
  ABISELECT(112,76),
  ABISELECT(-24,-16),
  ABISELECT(96,68),
  ABISELECT(72,56),
  ABISELECT(48,36),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20665C8[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20665C8D1Ev,_ZThn16_N8S20665C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20665C8D0Ev,_ZThn16_N8S20665C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C132v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C13__8S20665C88S20665C5__8S20665C1[] = {
  0,
  0,
  ABISELECT(-120,-84),
  ABISELECT(-48,-32),
  ABISELECT(-120,-84),
  (VTBL_ENTRY)&(_ZTI8S20665C8[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C132v3Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20665C8D1Ev,_ZTv0_n24_N8S20665C8D1Ev)();
extern void ABISELECT(_ZThn136_N8S20665C8D1Ev,_ZThn92_N8S20665C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20665C8D0Ev,_ZTv0_n24_N8S20665C8D0Ev)();
extern void ABISELECT(_ZThn136_N8S20665C8D0Ev,_ZThn92_N8S20665C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20665C10__A1__8S20665C88S20665C5__8S20665C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  ABISELECT(-64,-40),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S20665C8[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20665C8D1Ev,_ZTv0_n24_N8S20665C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20665C8D0Ev,_ZTv0_n24_N8S20665C8D0Ev),
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C14D1Ev();
extern void _ZN9S20665C14D0Ev();
extern void _ZN8S20665C62v2Ev();
extern void _ZN9S20665C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C148S20665C5__8S20665C1[] = {
  ABISELECT(-48,-36),
  ABISELECT(48,36),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20665C14[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20665C14D0Ev,
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
  (VTBL_ENTRY)&_ZN9S20665C142v4Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN8S20665C6D1Ev();
extern void _ZN8S20665C6D0Ev();
extern void _ZN8S20665C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C69S20665C148S20665C5__A2__8S20665C1[] = {
  ABISELECT(48,36),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C6[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN8S20665C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20665C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C78S20665C69S20665C148S20665C5__A2__8S20665C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C7[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C28S20665C78S20665C69S20665C148S20665C5__A5__8S20665C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C2__9S20665C148S20665C5__8S20665C1[] = {
  0,
  ABISELECT(72,52),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI9S20665C14[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20665C5D1Ev,_ZTv0_n24_N8S20665C5D1Ev)();
extern void ABISELECT(_ZThn80_N8S20665C5D1Ev,_ZThn60_N8S20665C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20665C5D0Ev,_ZTv0_n24_N8S20665C5D0Ev)();
extern void ABISELECT(_ZThn80_N8S20665C5D0Ev,_ZThn60_N8S20665C5D0Ev)() __attribute__((weak));
extern void _ZN8S20665C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C6__8S20665C5__8S20665C1[] = {
  0,
  ABISELECT(-80,-60),
  0,
  ABISELECT(16,12),
  -8,
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S20665C5[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20665C5D1Ev,_ZTv0_n24_N8S20665C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20665C5D0Ev,_ZTv0_n24_N8S20665C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C9__8S20665C5__8S20665C1[] = {
  0,
  ABISELECT(-32,-24),
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI8S20665C5[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZThn24_N8S20665C5D1Ev,_ZThn16_N8S20665C5D1Ev)();
extern void ABISELECT(_ZThn24_N8S20665C5D0Ev,_ZThn16_N8S20665C5D0Ev)();
extern void _ZN8S20665C62v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C118S20665C8__8S20665C5__8S20665C1[] = {
  ABISELECT(112,76),
  ABISELECT(-24,-16),
  ABISELECT(96,68),
  ABISELECT(72,56),
  ABISELECT(48,36),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20665C5[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20665C5D1Ev,_ZThn16_N8S20665C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20665C5D0Ev,_ZThn16_N8S20665C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C132v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C13__8S20665C5__8S20665C1[] = {
  0,
  0,
  ABISELECT(-120,-84),
  ABISELECT(-48,-32),
  ABISELECT(-120,-84),
  (VTBL_ENTRY)&(_ZTI8S20665C5[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C132v3Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20665C5D1Ev,_ZTv0_n24_N8S20665C5D1Ev)();
extern void ABISELECT(_ZThn136_N8S20665C5D1Ev,_ZThn92_N8S20665C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20665C5D0Ev,_ZTv0_n24_N8S20665C5D0Ev)();
extern void ABISELECT(_ZThn136_N8S20665C5D0Ev,_ZThn92_N8S20665C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20665C10__A1__8S20665C5__8S20665C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  ABISELECT(-64,-40),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S20665C5[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20665C5D1Ev,_ZTv0_n24_N8S20665C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20665C5D0Ev,_ZTv0_n24_N8S20665C5D0Ev),
};
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZThn48_N8S20665C5D1Ev,_ZThn36_N8S20665C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S20665C5D0Ev,_ZThn36_N8S20665C5D0Ev)();
extern void _ZN8S20665C62v2Ev();
extern void _ZN9S20665C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C14__8S20665C5__8S20665C1[] = {
  ABISELECT(-48,-36),
  ABISELECT(48,36),
  ABISELECT(24,16),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S20665C5[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20665C5D1Ev,_ZThn36_N8S20665C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20665C5D0Ev,_ZThn36_N8S20665C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
  (VTBL_ENTRY)&_ZN9S20665C142v4Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C2__8S20665C1[] = {
  ABISELECT(72,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN8S20665C6D1Ev();
extern void _ZN8S20665C6D0Ev();
extern void _ZN8S20665C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C6__8S20665C1[] = {
  ABISELECT(16,12),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C6[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN8S20665C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20665C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C78S20665C6__8S20665C1[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C7[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C28S20665C78S20665C6__A1__8S20665C1[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C9__8S20665C1[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C9[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C28S20665C9__A2__8S20665C1[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C132v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C13__8S20665C1[] = {
  ABISELECT(-120,-84),
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20665C13[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C132v3Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C99S20665C13__A1__8S20665C1[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C9[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C28S20665C99S20665C13__A4__8S20665C1[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C2__A1__9S20665C13__8S20665C1[] = {
  0,
  ABISELECT(72,52),
  ABISELECT(120,84),
  (VTBL_ENTRY)&(_ZTI9S20665C13[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C10D1Ev();
extern void _ZN9S20665C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C10__A1__8S20665C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20665C10[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20665C10D0Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C2__9S20665C10__A1__8S20665C1[] = {
  0,
  ABISELECT(72,52),
  ABISELECT(136,92),
  (VTBL_ENTRY)&(_ZTI9S20665C10[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C11D1Ev();
extern void _ZN9S20665C11D0Ev();
extern void _ZN8S20665C62v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C11__A1__8S20665C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-160,-108),
  ABISELECT(-40,-24),
  ABISELECT(-64,-36),
  ABISELECT(-88,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20665C11[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20665C11D0Ev,
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN8S20665C6D1Ev();
extern void _ZN8S20665C6D0Ev();
extern void _ZN8S20665C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C69S20665C11__A3__8S20665C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-88,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C6[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN8S20665C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20665C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20665C62v2Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C78S20665C69S20665C11__A3__8S20665C1[] = {
  ABISELECT(-88,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C7[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C28S20665C78S20665C69S20665C11__A6__8S20665C1[] = {
  ABISELECT(-88,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20665C2[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void _ZN9S20665C132v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20665C13__9S20665C11__A1__8S20665C1[] = {
  0,
  0,
  ABISELECT(-120,-84),
  ABISELECT(-48,-32),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20665C11[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&_ZN9S20665C132v3Ev,
};
extern void _ZN8S20665C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20665C2__A2__9S20665C11__A1__8S20665C1[] = {
  0,
  ABISELECT(72,52),
  ABISELECT(160,108),
  (VTBL_ENTRY)&(_ZTI9S20665C11[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
};
extern void _ZN8S20665C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20665C11D1Ev,_ZTv0_n24_N9S20665C11D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20665C11D0Ev,_ZTv0_n24_N9S20665C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20665C10__9S20665C11__A1__8S20665C1[] = {
  ABISELECT(24,16),
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  ABISELECT(-64,-40),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20665C11[0]),
  (VTBL_ENTRY)&_ZN8S20665C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20665C11D1Ev,_ZTv0_n24_N9S20665C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20665C11D0Ev,_ZTv0_n24_N9S20665C11D0Ev),
};
static  VTT_ENTRY vtt_S20665C1[] = {
  {&(_ZTV8S20665C1[11]),  11,82},
  {&(_tg__ZTV8S20665C5__8S20665C1[10]),  10,13},
  {&(_tg__ZTV8S20665C88S20665C5__8S20665C1[10]),  10,13},
  {&(_tg__ZTV9S20665C108S20665C88S20665C5__8S20665C1[5]),  5,8},
  {&(_tg__ZTV9S20665C108S20665C88S20665C5__8S20665C1[5]),  5,8},
  {&(_tg__ZTV9S20665C118S20665C88S20665C5__8S20665C1[7]),  7,11},
  {&(_tg__ZTV8S20665C69S20665C118S20665C88S20665C5__A1__8S20665C1[4]),  4,8},
  {&(_tg__ZTV8S20665C78S20665C69S20665C118S20665C88S20665C5__A1__8S20665C1[3]),  3,4},
  {&(_tg__ZTV8S20665C28S20665C78S20665C69S20665C118S20665C88S20665C5__A3__8S20665C1[3]),  3,4},
  {&(_tg__ZTV9S20665C13__9S20665C118S20665C88S20665C5__8S20665C1[6]),  6,8},
  {&(_tg__ZTV8S20665C2__A2__9S20665C118S20665C88S20665C5__8S20665C1[4]),  4,5},
  {&(_tg__ZTV9S20665C10__9S20665C118S20665C88S20665C5__8S20665C1[6]),  6,9},
  {&(_tg__ZTV8S20665C9__8S20665C88S20665C5__8S20665C1[4]),  4,5},
  {&(_tg__ZTV8S20665C88S20665C5__8S20665C1[10]),  10,13},
  {&(_tg__ZTV8S20665C6__8S20665C88S20665C5__8S20665C1[7]),  7,11},
  {&(_tg__ZTV9S20665C11__8S20665C88S20665C5__8S20665C1[7]),  7,11},
  {&(_tg__ZTV9S20665C13__8S20665C88S20665C5__8S20665C1[6]),  6,8},
  {&(_tg__ZTV9S20665C10__A1__8S20665C88S20665C5__8S20665C1[6]),  6,9},
  {&(_tg__ZTV9S20665C148S20665C5__8S20665C1[5]),  5,10},
  {&(_tg__ZTV8S20665C69S20665C148S20665C5__A2__8S20665C1[4]),  4,8},
  {&(_tg__ZTV8S20665C78S20665C69S20665C148S20665C5__A2__8S20665C1[3]),  3,4},
  {&(_tg__ZTV8S20665C28S20665C78S20665C69S20665C148S20665C5__A5__8S20665C1[3]),  3,4},
  {&(_tg__ZTV8S20665C2__9S20665C148S20665C5__8S20665C1[4]),  4,5},
  {&(_tg__ZTV8S20665C6__8S20665C5__8S20665C1[7]),  7,11},
  {&(_tg__ZTV8S20665C9__8S20665C5__8S20665C1[4]),  4,5},
  {&(_tg__ZTV8S20665C5__8S20665C1[10]),  10,13},
  {&(_tg__ZTV9S20665C118S20665C8__8S20665C5__8S20665C1[7]),  7,11},
  {&(_tg__ZTV9S20665C13__8S20665C5__8S20665C1[6]),  6,8},
  {&(_tg__ZTV9S20665C10__A1__8S20665C5__8S20665C1[6]),  6,9},
  {&(_tg__ZTV9S20665C14__8S20665C5__8S20665C1[5]),  5,10},
  {&(_ZTV8S20665C1[11]),  11,82},
  {&(_ZTV8S20665C1[42]),  42,82},
  {&(_ZTV8S20665C1[50]),  50,82},
  {&(_ZTV8S20665C1[21]),  21,82},
  {&(_ZTV8S20665C1[57]),  57,82},
  {&(_ZTV8S20665C1[65]),  65,82},
  {&(_ZTV8S20665C1[30]),  30,82},
  {&(_ZTV8S20665C1[78]),  78,82},
  {&(_tg__ZTV8S20665C2__8S20665C1[3]),  3,4},
  {&(_tg__ZTV8S20665C6__8S20665C1[4]),  4,8},
  {&(_tg__ZTV8S20665C78S20665C6__8S20665C1[3]),  3,4},
  {&(_tg__ZTV8S20665C28S20665C78S20665C6__A1__8S20665C1[3]),  3,4},
  {&(_tg__ZTV8S20665C9__8S20665C1[3]),  3,4},
  {&(_tg__ZTV8S20665C28S20665C9__A2__8S20665C1[3]),  3,4},
  {&(_tg__ZTV9S20665C13__8S20665C1[4]),  4,6},
  {&(_tg__ZTV8S20665C99S20665C13__A1__8S20665C1[3]),  3,4},
  {&(_tg__ZTV8S20665C28S20665C99S20665C13__A4__8S20665C1[3]),  3,4},
  {&(_tg__ZTV8S20665C2__A1__9S20665C13__8S20665C1[4]),  4,5},
  {&(_tg__ZTV9S20665C10__A1__8S20665C1[5]),  5,8},
  {&(_tg__ZTV8S20665C2__9S20665C10__A1__8S20665C1[4]),  4,5},
  {&(_tg__ZTV9S20665C11__A1__8S20665C1[7]),  7,11},
  {&(_tg__ZTV8S20665C69S20665C11__A3__8S20665C1[4]),  4,8},
  {&(_tg__ZTV8S20665C78S20665C69S20665C11__A3__8S20665C1[3]),  3,4},
  {&(_tg__ZTV8S20665C28S20665C78S20665C69S20665C11__A6__8S20665C1[3]),  3,4},
  {&(_tg__ZTV9S20665C13__9S20665C11__A1__8S20665C1[6]),  6,8},
  {&(_tg__ZTV8S20665C2__A2__9S20665C11__A1__8S20665C1[4]),  4,5},
  {&(_tg__ZTV9S20665C10__9S20665C11__A1__8S20665C1[6]),  6,9},
};
extern VTBL_ENTRY _ZTI8S20665C1[];
extern  VTBL_ENTRY _ZTV8S20665C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20665C1[];
static VTBL_ENTRY alt_thunk_names79[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20665C5D0Ev,_ZTv0_n24_N8S20665C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S20665C5D0Ev,_ZThn92_N8S20665C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20665C5D0Ev,_ZThn60_N8S20665C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20665C5D1Ev,_ZTv0_n24_N8S20665C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S20665C5D1Ev,_ZThn92_N8S20665C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20665C5D1Ev,_ZThn60_N8S20665C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20665C8D0Ev,_ZTv0_n24_N8S20665C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S20665C8D0Ev,_ZThn92_N8S20665C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20665C8D0Ev,_ZThn60_N8S20665C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20665C8D1Ev,_ZTv0_n24_N8S20665C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S20665C8D1Ev,_ZThn92_N8S20665C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20665C8D1Ev,_ZThn60_N8S20665C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20665C11D0Ev,_ZTv0_n24_N9S20665C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20665C11D0Ev,_ZThn76_N9S20665C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20665C11D1Ev,_ZTv0_n24_N9S20665C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20665C11D1Ev,_ZThn76_N9S20665C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20665C1D0Ev,_ZTv0_n36_N8S20665C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20665C1D0Ev,_ZThn108_N8S20665C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20665C1D1Ev,_ZTv0_n36_N8S20665C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20665C1D1Ev,_ZThn108_N8S20665C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20665C1D0Ev,_ZTv0_n24_N8S20665C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S20665C1D0Ev,_ZThn92_N8S20665C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20665C1D0Ev,_ZThn60_N8S20665C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20665C1D1Ev,_ZTv0_n24_N8S20665C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S20665C1D1Ev,_ZThn92_N8S20665C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20665C1D1Ev,_ZThn60_N8S20665C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20665C1 = {  "S20665C1", // class name
  bases_S20665C1, 48,
  &(vtc_S20665C1[0]), // expected_vtbl_contents
  &(vtt_S20665C1[0]), // expected_vtt_contents
  ABISELECT(184,128), // object size
  NSPAIRA(_ZTI8S20665C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20665C1),82, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20665C1),57, //virtual table table var
  25, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names79,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20479C7  : virtual S3461C5_nt , S731C17_nt {
  virtual void  v1(); // _ZN8S20479C72v1Ev
  ~S20479C7(); // tgen
  S20479C7(); // tgen
};
//SIG(-1 S20479C7) C1{ VBC2{ m FL} BC3{ m} v1}


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

static void Test_S20479C7()
{
  extern Class_Descriptor cd_S20479C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20479C7, buf);
    S20479C7 *dp, &lv = *(dp=new (buf) S20479C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20479C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20479C7)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S20479C7");
    check_base_class_offset(lv, (S731C17_nt*), 0, "S20479C7");
    test_class_info(&lv, &cd_S20479C7);
    dp->~S20479C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20479C7(Test_S20479C7, "S20479C7", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S20479C7C1Ev();
extern void _ZN8S20479C7D1Ev();
Name_Map name_map_S20479C7[] = {
  NSPAIR(_ZN8S20479C7C1Ev),
  NSPAIR(_ZN8S20479C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S20479C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20479C7[];
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY vtc_S20479C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern VTBL_ENTRY _ZTV8S20479C7[];
static  VTT_ENTRY vtt_S20479C7[] = {
  {&(_ZTV8S20479C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
Class_Descriptor cd_S20479C7 = {  "S20479C7", // class name
  bases_S20479C7, 2,
  &(vtc_S20479C7[0]), // expected_vtbl_contents
  &(vtt_S20479C7[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S20479C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20479C7),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20479C7),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  S20479C6  : S20479C7 {
  ~S20479C6(); // tgen
  S20479C6(); // tgen
};
//SIG(-1 S20479C6) C1{ BC2{ VBC3{ m FL} BC4{ m} v1}}


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

static void Test_S20479C6()
{
  extern Class_Descriptor cd_S20479C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20479C6, buf);
    S20479C6 *dp, &lv = *(dp=new (buf) S20479C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20479C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20479C6)");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*), ABISELECT(8,4), "S20479C6");
    check_base_class_offset(lv, (S731C17_nt*)(S20479C7*), 0, "S20479C6");
    check_base_class_offset(lv, (S20479C7*), 0, "S20479C6");
    test_class_info(&lv, &cd_S20479C6);
    dp->~S20479C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20479C6(Test_S20479C6, "S20479C6", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S20479C6C1Ev();
extern void _ZN8S20479C6D1Ev();
Name_Map name_map_S20479C6[] = {
  NSPAIR(_ZN8S20479C6C1Ev),
  NSPAIR(_ZN8S20479C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
static Base_Class bases_S20479C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20479C7,    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 _ZTI8S20479C6[];
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY vtc_S20479C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C6[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern VTBL_ENTRY _ZTV8S20479C6[];
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C7__8S20479C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
static  VTT_ENTRY vtt_S20479C6[] = {
  {&(_ZTV8S20479C6[3]),  3,4},
  {&(_tg__ZTV8S20479C7__8S20479C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20479C6[];
extern  VTBL_ENTRY _ZTV8S20479C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C6[];
Class_Descriptor cd_S20479C6 = {  "S20479C6", // class name
  bases_S20479C6, 3,
  &(vtc_S20479C6[0]), // expected_vtbl_contents
  &(vtt_S20479C6[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S20479C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20479C6),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20479C6),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  S20479C3  : S3461C5_nt , virtual S731C17_nt , S20479C6 {
  virtual  ~S20479C3(); // _ZN8S20479C3D2Ev
  virtual void  v2(); // _ZN8S20479C32v2Ev
  S20479C3(); // tgen
};
//SIG(-1 S20479C3) C1{ BC2{ m FL} VBC3{ m} BC4{ BC5{ VBC2 BC3 v2}} vd v1}


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

static void Test_S20479C3()
{
  extern Class_Descriptor cd_S20479C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S20479C3, buf);
    S20479C3 *dp, &lv = *(dp=new (buf) S20479C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S20479C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20479C3)");
    /*is_ambiguous_... S20479C3::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S20479C3");
    /*is_ambiguous_... S20479C3::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(16,12), "S20479C3");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*)(S20479C6*), ABISELECT(16,12), "S20479C3");
    check_base_class_offset(lv, (S731C17_nt*)(S20479C7*)(S20479C6*), 0, "S20479C3");
    check_base_class_offset(lv, (S20479C7*)(S20479C6*), 0, "S20479C3");
    check_base_class_offset(lv, (S20479C6*), 0, "S20479C3");
    test_class_info(&lv, &cd_S20479C3);
    dp->~S20479C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20479C3(Test_S20479C3, "S20479C3", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN8S20479C3C1Ev();
extern void _ZN8S20479C3D2Ev();
Name_Map name_map_S20479C3[] = {
  NSPAIR(_ZN8S20479C3C1Ev),
  NSPAIR(_ZN8S20479C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S20479C6;
extern VTBL_ENTRY _ZTI8S20479C6[];
extern  VTBL_ENTRY _ZTV8S20479C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C6[];
static Base_Class bases_S20479C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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_S3461C5_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
    4, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20479C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20479C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20479C3[];
extern void _ZN8S20479C72v1Ev();
extern void _ZN8S20479C3D1Ev();
extern void _ZN8S20479C3D0Ev();
extern void _ZN8S20479C32v2Ev();
static  VTBL_ENTRY vtc_S20479C3[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C3[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20479C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20479C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S20479C3[];
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C6__8S20479C3[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C6[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C78S20479C6__8S20479C3[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
static  VTT_ENTRY vtt_S20479C3[] = {
  {&(_ZTV8S20479C3[4]),  4,8},
  {&(_tg__ZTV8S20479C6__8S20479C3[3]),  3,4},
  {&(_tg__ZTV8S20479C78S20479C6__8S20479C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20479C3[];
extern  VTBL_ENTRY _ZTV8S20479C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C3[];
Class_Descriptor cd_S20479C3 = {  "S20479C3", // class name
  bases_S20479C3, 6,
  &(vtc_S20479C3[0]), // expected_vtbl_contents
  &(vtt_S20479C3[0]), // expected_vtt_contents
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI8S20479C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20479C3),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20479C3),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  S20479C9  : virtual S3461C5_nt , S20479C7 , S731C17_nt {
  ~S20479C9(); // tgen
  S20479C9(); // tgen
};
//SIG(-1 S20479C9) C1{ VBC2{ m FL} BC3{ VBC2 BC4{ m} v1} BC4}


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

static void Test_S20479C9()
{
  extern Class_Descriptor cd_S20479C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20479C9, buf);
    S20479C9 *dp, &lv = *(dp=new (buf) S20479C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20479C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20479C9)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S20479C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*), ABISELECT(8,4), "S20479C9");
    check_base_class_offset(lv, (S731C17_nt*)(S20479C7*), 0, "S20479C9");
    check_base_class_offset(lv, (S20479C7*), 0, "S20479C9");
    /*is_ambiguous_... S20479C9::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(8,4), "S20479C9");
    test_class_info(&lv, &cd_S20479C9);
    dp->~S20479C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20479C9(Test_S20479C9, "S20479C9", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S20479C9C1Ev();
extern void _ZN8S20479C9D1Ev();
Name_Map name_map_S20479C9[] = {
  NSPAIR(_ZN8S20479C9C1Ev),
  NSPAIR(_ZN8S20479C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S20479C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20479C7,    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_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20479C9[];
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY vtc_S20479C9[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C9[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern VTBL_ENTRY _ZTV8S20479C9[];
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C7__8S20479C9[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
static  VTT_ENTRY vtt_S20479C9[] = {
  {&(_ZTV8S20479C9[3]),  3,4},
  {&(_tg__ZTV8S20479C7__8S20479C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20479C9[];
extern  VTBL_ENTRY _ZTV8S20479C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C9[];
Class_Descriptor cd_S20479C9 = {  "S20479C9", // class name
  bases_S20479C9, 4,
  &(vtc_S20479C9[0]), // expected_vtbl_contents
  &(vtt_S20479C9[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S20479C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20479C9),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20479C9),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  S20479C10  : S3461C5_nt , virtual S20479C7 , S731C17_nt {
  virtual  ~S20479C10(); // _ZN9S20479C10D2Ev
  S20479C10(); // tgen
};
//SIG(-1 S20479C10) C1{ BC2{ m FL} VBC3{ VBC2 BC4{ m} v1} BC4 vd}


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

static void Test_S20479C10()
{
  extern Class_Descriptor cd_S20479C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S20479C10, buf);
    S20479C10 *dp, &lv = *(dp=new (buf) S20479C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S20479C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20479C10)");
    /*is_ambiguous_... S20479C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S20479C10");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*), ABISELECT(16,12), "S20479C10");
    check_base_class_offset(lv, (S731C17_nt*)(S20479C7*), 0, "S20479C10");
    check_base_class_offset(lv, (S20479C7*), 0, "S20479C10");
    /*is_ambiguous_... S20479C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(16,12), "S20479C10");
    test_class_info(&lv, &cd_S20479C10);
    dp->~S20479C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20479C10(Test_S20479C10, "S20479C10", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN9S20479C10C1Ev();
extern void _ZN9S20479C10D2Ev();
Name_Map name_map_S20479C10[] = {
  NSPAIR(_ZN9S20479C10C1Ev),
  NSPAIR(_ZN9S20479C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S20479C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20479C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20479C10[];
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C10D1Ev();
extern void _ZN9S20479C10D0Ev();
static  VTBL_ENTRY vtc_S20479C10[] = {
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20479C10[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20479C10D0Ev,
};
extern VTBL_ENTRY _ZTV9S20479C10[];
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C7__9S20479C10[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
static  VTT_ENTRY vtt_S20479C10[] = {
  {&(_ZTV9S20479C10[5]),  5,8},
  {&(_ZTV9S20479C10[5]),  5,8},
  {&(_tg__ZTV8S20479C7__9S20479C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20479C10[];
extern  VTBL_ENTRY _ZTV9S20479C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20479C10[];
Class_Descriptor cd_S20479C10 = {  "S20479C10", // class name
  bases_S20479C10, 5,
  &(vtc_S20479C10[0]), // expected_vtbl_contents
  &(vtt_S20479C10[0]), // expected_vtt_contents
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI9S20479C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20479C10),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20479C10),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  S20479C13  : virtual S3461C5_nt , S20479C9 , virtual S20479C7 {
  virtual void  v3(); // _ZN9S20479C132v3Ev
  ~S20479C13(); // tgen
  S20479C13(); // tgen
};
//SIG(-1 S20479C13) C1{ VBC2{ m FL} BC3{ VBC2 BC4{ VBC2 BC5{ m} v2} BC5} VBC4 v1}


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

static void Test_S20479C13()
{
  extern Class_Descriptor cd_S20479C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20479C13, buf);
    S20479C13 *dp, &lv = *(dp=new (buf) S20479C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20479C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20479C13)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(16,8), "S20479C13");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C9*), ABISELECT(16,8), "S20479C13");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*)(S20479C9*), ABISELECT(16,8), "S20479C13");
    /*is_ambiguous_... S20479C13::S20479C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*), ABISELECT(16,8), "S20479C13");
    check_base_class_offset(lv, (S731C17_nt*)(S20479C7*)(S20479C9*), 0, "S20479C13");
    check_base_class_offset(lv, (S20479C7*)(S20479C9*), 0, "S20479C13");
    /*is_ambiguous_... S20479C9::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C9*), ABISELECT(8,4), "S20479C13");
    check_base_class_offset(lv, (S20479C9*), 0, "S20479C13");
    /*is_ambiguous_... S20479C13::S20479C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C7*), ABISELECT(24,16), "S20479C13");
    /*is_ambiguous_... S20479C13::S20479C7 */ AMB_check_base_class_offset(lv, (S20479C7*), ABISELECT(24,16), "S20479C13");
    test_class_info(&lv, &cd_S20479C13);
    dp->~S20479C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20479C13(Test_S20479C13, "S20479C13", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN9S20479C13C1Ev();
extern void _ZN9S20479C13D1Ev();
Name_Map name_map_S20479C13[] = {
  NSPAIR(_ZN9S20479C13C1Ev),
  NSPAIR(_ZN9S20479C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C9;
extern VTBL_ENTRY _ZTI8S20479C9[];
extern  VTBL_ENTRY _ZTV8S20479C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
static Base_Class bases_S20479C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20479C7,    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_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20479C9,    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_S731C17_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_S20479C7,    ABISELECT(24,16), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20479C13[];
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C132v3Ev();
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY vtc_S20479C13[] = {
  ABISELECT(24,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20479C13[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C132v3Ev,
  0,
  -8,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20479C13[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern VTBL_ENTRY _ZTV9S20479C13[];
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C9__9S20479C13[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C9[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C78S20479C9__9S20479C13[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C7__A1__9S20479C13[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
static  VTT_ENTRY vtt_S20479C13[] = {
  {&(_ZTV9S20479C13[4]),  4,11},
  {&(_tg__ZTV8S20479C9__9S20479C13[3]),  3,4},
  {&(_tg__ZTV8S20479C78S20479C9__9S20479C13[3]),  3,4},
  {&(_ZTV9S20479C13[10]),  10,11},
  {&(_tg__ZTV8S20479C7__A1__9S20479C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20479C13[];
extern  VTBL_ENTRY _ZTV9S20479C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20479C13[];
Class_Descriptor cd_S20479C13 = {  "S20479C13", // class name
  bases_S20479C13, 7,
  &(vtc_S20479C13[0]), // expected_vtbl_contents
  &(vtt_S20479C13[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI9S20479C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20479C13),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20479C13),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  S20479C11  : S3461C5_nt , S20479C3 , S28C52_nt , virtual S20479C13 , virtual S20479C10 {
  virtual  ~S20479C11(); // _ZN9S20479C11D2Ev
  S20479C11(); // tgen
};
//SIG(-1 S20479C11) C1{ BC2{ m FL} BC3{ BC2 VBC4{ m} BC5{ BC6{ VBC2 BC4 v1}} vd v2} BC7{ m} VBC8{ VBC2 BC9{ VBC2 BC6 BC4} VBC6 v3} VBC10{ BC2 VBC6 BC4 vd} vd}


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

static void Test_S20479C11()
{
  extern Class_Descriptor cd_S20479C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,14)];
    init_test(&cd_S20479C11, buf);
    S20479C11 *dp, &lv = *(dp=new (buf) S20479C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S20479C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20479C11)");
    /*is_ambiguous_... S20479C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(16,12), "S20479C11");
    /*is_ambiguous_... S20479C3::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C3*), ABISELECT(8,4), "S20479C11");
    /*is_ambiguous_... S20479C3::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C3*), ABISELECT(24,20), "S20479C11");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*)(S20479C6*)(S20479C3*), ABISELECT(24,20), "S20479C11");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C13*), ABISELECT(24,20), "S20479C11");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C9*)(S20479C13*), ABISELECT(24,20), "S20479C11");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*)(S20479C9*)(S20479C13*), ABISELECT(24,20), "S20479C11");
    /*is_ambiguous_... S20479C11::S20479C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*), ABISELECT(24,20), "S20479C11");
    check_base_class_offset(lv, (S731C17_nt*)(S20479C7*)(S20479C6*)(S20479C3*), 0, "S20479C11");
    check_base_class_offset(lv, (S20479C7*)(S20479C6*)(S20479C3*), 0, "S20479C11");
    check_base_class_offset(lv, (S20479C6*)(S20479C3*), 0, "S20479C11");
    check_base_class_offset(lv, (S20479C3*), 0, "S20479C11");
    check_base_class_offset(lv, (S28C52_nt*), 0, "S20479C11");
    check_base_class_offset(lv, (S731C17_nt*)(S20479C7*)(S20479C9*)(S20479C13*), ABISELECT(32,28), "S20479C11");
    check_base_class_offset(lv, (S20479C7*)(S20479C9*)(S20479C13*), ABISELECT(32,28), "S20479C11");
    /*is_ambiguous_... S20479C9::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C9*)(S20479C13*), ABISELECT(40,32), "S20479C11");
    check_base_class_offset(lv, (S20479C9*)(S20479C13*), ABISELECT(32,28), "S20479C11");
    /*is_ambiguous_... S20479C11::S20479C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C7*), ABISELECT(48,36), "S20479C11");
    /*is_ambiguous_... S20479C13::S20479C7 */ AMB_check_base_class_offset(lv, (S20479C7*)(S20479C13*), ABISELECT(48,36), "S20479C11");
    check_base_class_offset(lv, (S20479C7*)(S20479C10*), ABISELECT(48,36), "S20479C11");
    check_base_class_offset(lv, (S20479C13*), ABISELECT(32,28), "S20479C11");
    /*is_ambiguous_... S20479C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C10*), ABISELECT(56,40), "S20479C11");
    /*is_ambiguous_... S20479C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C10*), ABISELECT(64,48), "S20479C11");
    check_base_class_offset(lv, (S20479C10*), ABISELECT(48,36), "S20479C11");
    test_class_info(&lv, &cd_S20479C11);
    dp->~S20479C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20479C11(Test_S20479C11, "S20479C11", ABISELECT(72,52));

#else // __cplusplus

extern void _ZN9S20479C11C1Ev();
extern void _ZN9S20479C11D2Ev();
Name_Map name_map_S20479C11[] = {
  NSPAIR(_ZN9S20479C11C1Ev),
  NSPAIR(_ZN9S20479C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S20479C6;
extern VTBL_ENTRY _ZTI8S20479C6[];
extern  VTBL_ENTRY _ZTV8S20479C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C6[];
extern Class_Descriptor cd_S20479C3;
extern VTBL_ENTRY _ZTI8S20479C3[];
extern  VTBL_ENTRY _ZTV8S20479C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C3[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C9;
extern VTBL_ENTRY _ZTI8S20479C9[];
extern  VTBL_ENTRY _ZTV8S20479C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S20479C13;
extern VTBL_ENTRY _ZTI9S20479C13[];
extern  VTBL_ENTRY _ZTV9S20479C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20479C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C10;
extern VTBL_ENTRY _ZTI9S20479C10[];
extern  VTBL_ENTRY _ZTV9S20479C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20479C10[];
static Base_Class bases_S20479C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20479C7,    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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20479C6,    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_S20479C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S28C52_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20479C7,    ABISELECT(32,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20479C9,    ABISELECT(32,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
    3, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    14, //immediately_derived
  0, 0},
  {&cd_S20479C7,    ABISELECT(48,36), //bcp->offset
    -1, //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
    1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20479C13,    ABISELECT(32,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_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
    18, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    18, //immediately_derived
  0, 0},
  {&cd_S20479C10,    ABISELECT(48,36), //bcp->offset
    19, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20479C11[];
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C11D1Ev();
extern void _ZN9S20479C11D0Ev();
extern void _ZN8S20479C32v2Ev();
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C132v3Ev();
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20479C11D1Ev,_ZTv0_n24_N9S20479C11D1Ev)();
extern void ABISELECT(_ZThn48_N9S20479C11D1Ev,_ZThn36_N9S20479C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20479C11D0Ev,_ZTv0_n24_N9S20479C11D0Ev)();
extern void ABISELECT(_ZThn48_N9S20479C11D0Ev,_ZThn36_N9S20479C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20479C11[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20479C11[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20479C11D0Ev,
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI9S20479C11[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C132v3Ev,
  ABISELECT(-48,-36),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S20479C11[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20479C11D1Ev,_ZTv0_n24_N9S20479C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20479C11D0Ev,_ZTv0_n24_N9S20479C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S20479C11[];
extern void _ZN8S20479C72v1Ev();
extern void _ZN8S20479C3D1Ev();
extern void _ZN8S20479C3D0Ev();
extern void _ZN8S20479C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C3__9S20479C11[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C3[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20479C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20479C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C68S20479C3__9S20479C11[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C6[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C78S20479C68S20479C3__9S20479C11[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C132v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C13__9S20479C11[] = {
  ABISELECT(16,8),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI9S20479C13[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C132v3Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C99S20479C13__9S20479C11[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C9[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C78S20479C99S20479C13__A1__9S20479C11[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C7__A1__9S20479C13__9S20479C11[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20479C13[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C7__A2__9S20479C11[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C10D1Ev();
extern void _ZN9S20479C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C10__9S20479C11[] = {
  0,
  0,
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20479C10[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20479C10D0Ev,
};
static  VTT_ENTRY vtt_S20479C11[] = {
  {&(_ZTV9S20479C11[7]),  7,28},
  {&(_tg__ZTV8S20479C3__9S20479C11[4]),  4,8},
  {&(_tg__ZTV8S20479C68S20479C3__9S20479C11[3]),  3,4},
  {&(_tg__ZTV8S20479C78S20479C68S20479C3__9S20479C11[3]),  3,4},
  {&(_ZTV9S20479C11[17]),  17,28},
  {&(_ZTV9S20479C11[25]),  25,28},
  {&(_ZTV9S20479C11[25]),  25,28},
  {&(_tg__ZTV9S20479C13__9S20479C11[4]),  4,6},
  {&(_tg__ZTV8S20479C99S20479C13__9S20479C11[3]),  3,4},
  {&(_tg__ZTV8S20479C78S20479C99S20479C13__A1__9S20479C11[3]),  3,4},
  {&(_tg__ZTV8S20479C7__A1__9S20479C13__9S20479C11[4]),  4,5},
  {&(_tg__ZTV8S20479C7__A2__9S20479C11[3]),  3,4},
  {&(_tg__ZTV9S20479C10__9S20479C11[5]),  5,8},
  {&(_tg__ZTV9S20479C10__9S20479C11[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20479C11[];
extern  VTBL_ENTRY _ZTV9S20479C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20479C11[];
static VTBL_ENTRY alt_thunk_names80[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20479C11D0Ev,_ZTv0_n24_N9S20479C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20479C11D0Ev,_ZThn36_N9S20479C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20479C11D1Ev,_ZTv0_n24_N9S20479C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20479C11D1Ev,_ZThn36_N9S20479C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20479C11 = {  "S20479C11", // class name
  bases_S20479C11, 19,
  &(vtc_S20479C11[0]), // expected_vtbl_contents
  &(vtt_S20479C11[0]), // expected_vtt_contents
  ABISELECT(72,52), // object size
  NSPAIRA(_ZTI9S20479C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20479C11),28, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20479C11),14, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names80,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20479C8  : virtual S3461C5_nt , virtual S20479C9 , S20479C10 , virtual S20479C3 , S20479C11 {
  ~S20479C8(); // tgen
  S20479C8(); // tgen
};
//SIG(-1 S20479C8) C1{ VBC2{ m FL} VBC3{ VBC2 BC4{ VBC2 BC5{ m} v1} BC5} BC6{ BC2 VBC4 BC5 vd} VBC7{ BC2 VBC5 BC8{ BC4} vd v2} BC9{ BC2 BC7 BC10{ m} VBC11{ VBC2 BC3 VBC4 v3} VBC6 vd}}


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

static void Test_S20479C8()
{
  extern Class_Descriptor cd_S20479C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,24)];
    init_test(&cd_S20479C8, buf);
    S20479C8 *dp, &lv = *(dp=new (buf) S20479C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S20479C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20479C8)");
    /*is_ambiguous_... S20479C8::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(48,36), "S20479C8");
    /*is_ambiguous_... S20479C8::S20479C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C9*), ABISELECT(48,36), "S20479C8");
    /*is_ambiguous_... S20479C8::S20479C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*)(S20479C9*), ABISELECT(48,36), "S20479C8");
    /*is_ambiguous_... S20479C8::S20479C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*), ABISELECT(48,36), "S20479C8");
    /*is_ambiguous_... S20479C8::S20479C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*)(S20479C6*)(S20479C3*), ABISELECT(48,36), "S20479C8");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*)(S20479C6*)(S20479C3*)(S20479C11*), ABISELECT(48,36), "S20479C8");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C13*), ABISELECT(48,36), "S20479C8");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C9*)(S20479C13*), ABISELECT(48,36), "S20479C8");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*)(S20479C9*)(S20479C13*), ABISELECT(48,36), "S20479C8");
    /*is_ambiguous_... S20479C8::S20479C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C7*)(S20479C9*), ABISELECT(56,44), "S20479C8");
    /*is_ambiguous_... S20479C8::S20479C9 */ AMB_check_base_class_offset(lv, (S20479C7*)(S20479C9*), ABISELECT(56,44), "S20479C8");
    /*is_ambiguous_... S20479C8::S20479C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C9*), ABISELECT(64,48), "S20479C8");
    /*is_ambiguous_... S20479C8::S20479C9 */ AMB_check_base_class_offset(lv, (S20479C9*), ABISELECT(56,44), "S20479C8");
    /*is_ambiguous_... S20479C8::S20479C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C10*), ABISELECT(8,4), "S20479C8");
    /*is_ambiguous_... S20479C8::S20479C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C7*), 0, "S20479C8");
    /*is_ambiguous_... S20479C8::S20479C10 */ AMB_check_base_class_offset(lv, (S20479C7*)(S20479C10*), 0, "S20479C8");
    /*is_ambiguous_... S20479C13::S20479C7 */ AMB_check_base_class_offset(lv, (S20479C7*)(S20479C13*), 0, "S20479C8");
    /*is_ambiguous_... S20479C8::S20479C10 */ AMB_check_base_class_offset(lv, (S20479C7*)(S20479C10*), 0, "S20479C8");
    /*is_ambiguous_... S20479C8::S20479C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C10*), ABISELECT(16,12), "S20479C8");
    /*is_ambiguous_... S20479C8::S20479C10 */ AMB_check_base_class_offset(lv, (S20479C10*), 0, "S20479C8");
    /*is_ambiguous_... S20479C8::S20479C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C3*), ABISELECT(80,56), "S20479C8");
    /*is_ambiguous_... S20479C8::S20479C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C3*), ABISELECT(88,64), "S20479C8");
    /*is_ambiguous_... S20479C3::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C3*)(S20479C11*), ABISELECT(88,64), "S20479C8");
    /*is_ambiguous_... S20479C8::S20479C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C7*)(S20479C6*)(S20479C3*), ABISELECT(72,52), "S20479C8");
    /*is_ambiguous_... S20479C8::S20479C3 */ AMB_check_base_class_offset(lv, (S20479C7*)(S20479C6*)(S20479C3*), ABISELECT(72,52), "S20479C8");
    /*is_ambiguous_... S20479C8::S20479C3 */ AMB_check_base_class_offset(lv, (S20479C6*)(S20479C3*), ABISELECT(72,52), "S20479C8");
    /*is_ambiguous_... S20479C8::S20479C3 */ AMB_check_base_class_offset(lv, (S20479C3*), ABISELECT(72,52), "S20479C8");
    /*is_ambiguous_... S20479C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C11*), ABISELECT(40,28), "S20479C8");
    /*is_ambiguous_... S20479C3::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C3*)(S20479C11*), ABISELECT(32,20), "S20479C8");
    check_base_class_offset(lv, (S731C17_nt*)(S20479C7*)(S20479C6*)(S20479C3*)(S20479C11*), ABISELECT(24,16), "S20479C8");
    check_base_class_offset(lv, (S20479C7*)(S20479C6*)(S20479C3*)(S20479C11*), ABISELECT(24,16), "S20479C8");
    check_base_class_offset(lv, (S20479C6*)(S20479C3*)(S20479C11*), ABISELECT(24,16), "S20479C8");
    check_base_class_offset(lv, (S20479C3*)(S20479C11*), ABISELECT(24,16), "S20479C8");
    check_base_class_offset(lv, (S28C52_nt*)(S20479C11*), ABISELECT(24,16), "S20479C8");
    check_base_class_offset(lv, (S731C17_nt*)(S20479C7*)(S20479C9*)(S20479C13*), ABISELECT(96,68), "S20479C8");
    check_base_class_offset(lv, (S20479C7*)(S20479C9*)(S20479C13*), ABISELECT(96,68), "S20479C8");
    /*is_ambiguous_... S20479C9::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C9*)(S20479C13*), ABISELECT(104,72), "S20479C8");
    check_base_class_offset(lv, (S20479C9*)(S20479C13*), ABISELECT(96,68), "S20479C8");
    check_base_class_offset(lv, (S20479C13*)(S20479C11*), ABISELECT(96,68), "S20479C8");
    /*is_ambiguous_... S20479C8::S20479C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C10*), ABISELECT(120,80), "S20479C8");
    /*is_ambiguous_... S20479C8::S20479C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C10*), ABISELECT(128,88), "S20479C8");
    check_base_class_offset(lv, (S20479C10*)(S20479C11*), ABISELECT(112,76), "S20479C8");
    check_base_class_offset(lv, (S20479C11*), ABISELECT(24,16), "S20479C8");
    test_class_info(&lv, &cd_S20479C8);
    dp->~S20479C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20479C8(Test_S20479C8, "S20479C8", ABISELECT(136,92));

#else // __cplusplus

extern void _ZN8S20479C8C1Ev();
extern void _ZN8S20479C8D1Ev();
Name_Map name_map_S20479C8[] = {
  NSPAIR(_ZN8S20479C8C1Ev),
  NSPAIR(_ZN8S20479C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C9;
extern VTBL_ENTRY _ZTI8S20479C9[];
extern  VTBL_ENTRY _ZTV8S20479C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C10;
extern VTBL_ENTRY _ZTI9S20479C10[];
extern  VTBL_ENTRY _ZTV9S20479C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20479C10[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S20479C6;
extern VTBL_ENTRY _ZTI8S20479C6[];
extern  VTBL_ENTRY _ZTV8S20479C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C6[];
extern Class_Descriptor cd_S20479C3;
extern VTBL_ENTRY _ZTI8S20479C3[];
extern  VTBL_ENTRY _ZTV8S20479C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S20479C6;
extern VTBL_ENTRY _ZTI8S20479C6[];
extern  VTBL_ENTRY _ZTV8S20479C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C6[];
extern Class_Descriptor cd_S20479C3;
extern VTBL_ENTRY _ZTI8S20479C3[];
extern  VTBL_ENTRY _ZTV8S20479C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C3[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C9;
extern VTBL_ENTRY _ZTI8S20479C9[];
extern  VTBL_ENTRY _ZTV8S20479C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C9[];
extern Class_Descriptor cd_S20479C13;
extern VTBL_ENTRY _ZTI9S20479C13[];
extern  VTBL_ENTRY _ZTV9S20479C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20479C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C10;
extern VTBL_ENTRY _ZTI9S20479C10[];
extern  VTBL_ENTRY _ZTV9S20479C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20479C10[];
extern Class_Descriptor cd_S20479C11;
extern VTBL_ENTRY _ZTI9S20479C11[];
extern  VTBL_ENTRY _ZTV9S20479C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20479C11[];
static Base_Class bases_S20479C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20479C7,    ABISELECT(56,44), //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
    4, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(64,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20479C9,    ABISELECT(56,44), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20479C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20479C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(88,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_S731C17_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
    13, //immediately_derived
  0, 0},
  {&cd_S20479C7,    ABISELECT(72,52), //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
    14, //immediately_derived
  0, 0},
  {&cd_S20479C6,    ABISELECT(72,52), //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
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20479C3,    ABISELECT(72,52), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_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
    31, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20479C7,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20479C6,    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
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20479C3,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20479C7,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(104,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20479C9,    ABISELECT(96,68), //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
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20479C13,    ABISELECT(96,68), //bcp->offset
    40, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(120,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(128,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20479C10,    ABISELECT(112,76), //bcp->offset
    48, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S20479C11,    ABISELECT(24,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20479C8[];
extern void _ZN8S20479C72v1Ev();
extern void _ZN8S20479C8D1Ev();
extern void _ZN8S20479C8D0Ev();
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZThn24_N8S20479C8D1Ev,_ZThn16_N8S20479C8D1Ev)();
extern void ABISELECT(_ZThn24_N8S20479C8D0Ev,_ZThn16_N8S20479C8D0Ev)();
extern void _ZN8S20479C32v2Ev();
extern void _ZN8S20479C72v1Ev();
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20479C8D1Ev,_ZTv0_n24_N8S20479C8D1Ev)();
extern void ABISELECT(_ZThn72_N8S20479C8D1Ev,_ZThn52_N8S20479C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20479C8D0Ev,_ZTv0_n24_N8S20479C8D0Ev)();
extern void ABISELECT(_ZThn72_N8S20479C8D0Ev,_ZThn52_N8S20479C8D0Ev)() __attribute__((weak));
extern void _ZN8S20479C32v2Ev();
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C132v3Ev();
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20479C8D1Ev,_ZTv0_n24_N8S20479C8D1Ev)();
extern void ABISELECT(_ZThn112_N8S20479C8D1Ev,_ZThn76_N8S20479C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20479C8D0Ev,_ZTv0_n24_N8S20479C8D0Ev)();
extern void ABISELECT(_ZThn112_N8S20479C8D0Ev,_ZThn76_N8S20479C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20479C8[] = {
  ABISELECT(112,76),
  ABISELECT(96,68),
  ABISELECT(88,64),
  ABISELECT(72,52),
  ABISELECT(56,44),
  0,
  0,
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C8[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20479C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20479C8D0Ev,
  ABISELECT(88,60),
  ABISELECT(-24,-16),
  ABISELECT(72,52),
  ABISELECT(64,48),
  ABISELECT(24,20),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20479C8[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20479C8D1Ev,_ZThn16_N8S20479C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20479C8D0Ev,_ZThn16_N8S20479C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
  0,
  -8,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S20479C8[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI8S20479C8[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20479C8D1Ev,_ZTv0_n24_N8S20479C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20479C8D0Ev,_ZTv0_n24_N8S20479C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
  0,
  0,
  ABISELECT(-96,-68),
  ABISELECT(-48,-32),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S20479C8[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C132v3Ev,
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-64,-40),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S20479C8[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20479C8D1Ev,_ZTv0_n24_N8S20479C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20479C8D0Ev,_ZTv0_n24_N8S20479C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S20479C8[];
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C10D1Ev();
extern void _ZN9S20479C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C10__A__8S20479C8[] = {
  0,
  0,
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20479C10[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20479C10D0Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C11D1Ev();
extern void _ZN9S20479C11D0Ev();
extern void _ZN8S20479C32v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C11__8S20479C8[] = {
  ABISELECT(88,60),
  ABISELECT(-24,-16),
  ABISELECT(72,52),
  ABISELECT(64,48),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20479C11[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20479C11D0Ev,
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN8S20479C3D1Ev();
extern void _ZN8S20479C3D0Ev();
extern void _ZN8S20479C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C39S20479C11__A1__8S20479C8[] = {
  ABISELECT(64,48),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C3[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20479C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20479C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C68S20479C39S20479C11__A1__8S20479C8[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C6[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C78S20479C68S20479C39S20479C11__A3__8S20479C8[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C132v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C13__9S20479C11__8S20479C8[] = {
  0,
  0,
  ABISELECT(-96,-68),
  ABISELECT(-48,-32),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI9S20479C11[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C132v3Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C7__A2__9S20479C11__8S20479C8[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20479C11[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20479C11D1Ev,_ZTv0_n24_N9S20479C11D1Ev)();
extern void ABISELECT(_ZThn88_N9S20479C11D1Ev,_ZThn60_N9S20479C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20479C11D0Ev,_ZTv0_n24_N9S20479C11D0Ev)();
extern void ABISELECT(_ZThn88_N9S20479C11D0Ev,_ZThn60_N9S20479C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20479C10__9S20479C11__8S20479C8[] = {
  ABISELECT(-88,-60),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-64,-40),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI9S20479C11[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20479C11D1Ev,_ZTv0_n24_N9S20479C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20479C11D0Ev,_ZTv0_n24_N9S20479C11D0Ev),
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C9__8S20479C8[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C9[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C78S20479C9__8S20479C8[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C7__A1__8S20479C8[] = {
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN8S20479C3D1Ev();
extern void _ZN8S20479C3D0Ev();
extern void _ZN8S20479C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C3__8S20479C8[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C3[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20479C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20479C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C68S20479C3__8S20479C8[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C6[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C78S20479C68S20479C3__A2__8S20479C8[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C132v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C13__8S20479C8[] = {
  ABISELECT(-96,-68),
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20479C13[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C132v3Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C99S20479C13__A1__8S20479C8[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C9[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C78S20479C99S20479C13__A4__8S20479C8[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C7__A1__9S20479C13__8S20479C8[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S20479C13[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C10D1Ev();
extern void _ZN9S20479C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C10__A1__8S20479C8[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20479C10[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20479C10D0Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C7__9S20479C10__A1__8S20479C8[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(112,76),
  (VTBL_ENTRY)&(_ZTI9S20479C10[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
static  VTT_ENTRY vtt_S20479C8[] = {
  {&(_ZTV8S20479C8[10]),  10,57},
  {&(_tg__ZTV9S20479C10__A__8S20479C8[5]),  5,8},
  {&(_tg__ZTV9S20479C10__A__8S20479C8[5]),  5,8},
  {&(_tg__ZTV9S20479C11__8S20479C8[7]),  7,11},
  {&(_tg__ZTV8S20479C39S20479C11__A1__8S20479C8[4]),  4,8},
  {&(_tg__ZTV8S20479C68S20479C39S20479C11__A1__8S20479C8[3]),  3,4},
  {&(_tg__ZTV8S20479C78S20479C68S20479C39S20479C11__A3__8S20479C8[3]),  3,4},
  {&(_tg__ZTV9S20479C13__9S20479C11__8S20479C8[6]),  6,8},
  {&(_tg__ZTV8S20479C7__A2__9S20479C11__8S20479C8[4]),  4,5},
  {&(_tg__ZTV9S20479C10__9S20479C11__8S20479C8[6]),  6,9},
  {&(_ZTV8S20479C8[28]),  28,57},
  {&(_ZTV8S20479C8[10]),  10,57},
  {&(_ZTV8S20479C8[36]),  36,57},
  {&(_ZTV8S20479C8[20]),  20,57},
  {&(_ZTV8S20479C8[46]),  46,57},
  {&(_ZTV8S20479C8[54]),  54,57},
  {&(_tg__ZTV8S20479C9__8S20479C8[3]),  3,4},
  {&(_tg__ZTV8S20479C78S20479C9__8S20479C8[3]),  3,4},
  {&(_tg__ZTV8S20479C7__A1__8S20479C8[3]),  3,4},
  {&(_tg__ZTV8S20479C3__8S20479C8[4]),  4,8},
  {&(_tg__ZTV8S20479C68S20479C3__8S20479C8[3]),  3,4},
  {&(_tg__ZTV8S20479C78S20479C68S20479C3__A2__8S20479C8[3]),  3,4},
  {&(_tg__ZTV9S20479C13__8S20479C8[4]),  4,6},
  {&(_tg__ZTV8S20479C99S20479C13__A1__8S20479C8[3]),  3,4},
  {&(_tg__ZTV8S20479C78S20479C99S20479C13__A4__8S20479C8[3]),  3,4},
  {&(_tg__ZTV8S20479C7__A1__9S20479C13__8S20479C8[4]),  4,5},
  {&(_tg__ZTV9S20479C10__A1__8S20479C8[5]),  5,8},
  {&(_tg__ZTV8S20479C7__9S20479C10__A1__8S20479C8[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S20479C8[];
extern  VTBL_ENTRY _ZTV8S20479C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C8[];
static VTBL_ENTRY alt_thunk_names81[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20479C11D0Ev,_ZTv0_n24_N9S20479C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20479C11D0Ev,_ZThn60_N9S20479C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20479C11D1Ev,_ZTv0_n24_N9S20479C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20479C11D1Ev,_ZThn60_N9S20479C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20479C8D0Ev,_ZTv0_n24_N8S20479C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20479C8D0Ev,_ZThn76_N8S20479C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20479C8D0Ev,_ZThn52_N8S20479C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20479C8D1Ev,_ZTv0_n24_N8S20479C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20479C8D1Ev,_ZThn76_N8S20479C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20479C8D1Ev,_ZThn52_N8S20479C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20479C8 = {  "S20479C8", // class name
  bases_S20479C8, 32,
  &(vtc_S20479C8[0]), // expected_vtbl_contents
  &(vtt_S20479C8[0]), // expected_vtt_contents
  ABISELECT(136,92), // object size
  NSPAIRA(_ZTI8S20479C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20479C8),57, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20479C8),28, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names81,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20479C14  : virtual S20479C7 , S20479C3 {
  virtual  ~S20479C14(); // _ZN9S20479C14D2Ev
  virtual void  v4(); // _ZN9S20479C142v4Ev
  S20479C14(); // tgen
};
//SIG(-1 S20479C14) C1{ VBC2{ VBC3{ m FL} BC4{ m} v2} BC5{ BC3 VBC4 BC6{ BC2} vd v3} vd v1}


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

static void Test_S20479C14()
{
  extern Class_Descriptor cd_S20479C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S20479C14, buf);
    S20479C14 *dp, &lv = *(dp=new (buf) S20479C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S20479C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20479C14)");
    /*is_ambiguous_... S20479C14::S20479C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*), ABISELECT(24,16), "S20479C14");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*)(S20479C6*)(S20479C3*), ABISELECT(24,16), "S20479C14");
    /*is_ambiguous_... S20479C14::S20479C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C7*), ABISELECT(16,12), "S20479C14");
    /*is_ambiguous_... S20479C14::S20479C7 */ AMB_check_base_class_offset(lv, (S20479C7*), ABISELECT(16,12), "S20479C14");
    /*is_ambiguous_... S20479C3::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C3*), ABISELECT(8,4), "S20479C14");
    /*is_ambiguous_... S20479C3::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C3*), ABISELECT(32,24), "S20479C14");
    check_base_class_offset(lv, (S731C17_nt*)(S20479C7*)(S20479C6*)(S20479C3*), 0, "S20479C14");
    check_base_class_offset(lv, (S20479C7*)(S20479C6*)(S20479C3*), 0, "S20479C14");
    check_base_class_offset(lv, (S20479C6*)(S20479C3*), 0, "S20479C14");
    check_base_class_offset(lv, (S20479C3*), 0, "S20479C14");
    test_class_info(&lv, &cd_S20479C14);
    dp->~S20479C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20479C14(Test_S20479C14, "S20479C14", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN9S20479C14C1Ev();
extern void _ZN9S20479C14D2Ev();
Name_Map name_map_S20479C14[] = {
  NSPAIR(_ZN9S20479C14C1Ev),
  NSPAIR(_ZN9S20479C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S20479C6;
extern VTBL_ENTRY _ZTI8S20479C6[];
extern  VTBL_ENTRY _ZTV8S20479C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C6[];
extern Class_Descriptor cd_S20479C3;
extern VTBL_ENTRY _ZTI8S20479C3[];
extern  VTBL_ENTRY _ZTV8S20479C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C3[];
static Base_Class bases_S20479C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20479C7,    ABISELECT(16,12), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20479C7,    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
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20479C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20479C3,    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 _ZTI9S20479C14[];
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C14D1Ev();
extern void _ZN9S20479C14D0Ev();
extern void _ZN8S20479C32v2Ev();
extern void _ZN9S20479C142v4Ev();
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY vtc_S20479C14[] = {
  ABISELECT(16,12),
  ABISELECT(32,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20479C14[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20479C14D0Ev,
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
  (VTBL_ENTRY)&_ZN9S20479C142v4Ev,
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20479C14[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern VTBL_ENTRY _ZTV9S20479C14[];
extern void _ZN8S20479C72v1Ev();
extern void _ZN8S20479C3D1Ev();
extern void _ZN8S20479C3D0Ev();
extern void _ZN8S20479C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C3__9S20479C14[] = {
  ABISELECT(32,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C3[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20479C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20479C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C68S20479C3__9S20479C14[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C6[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C78S20479C68S20479C3__A1__9S20479C14[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C7__9S20479C14[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
static  VTT_ENTRY vtt_S20479C14[] = {
  {&(_ZTV9S20479C14[5]),  5,15},
  {&(_tg__ZTV8S20479C3__9S20479C14[4]),  4,8},
  {&(_tg__ZTV8S20479C68S20479C3__9S20479C14[3]),  3,4},
  {&(_tg__ZTV8S20479C78S20479C68S20479C3__A1__9S20479C14[3]),  3,4},
  {&(_ZTV9S20479C14[14]),  14,15},
  {&(_tg__ZTV8S20479C7__9S20479C14[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20479C14[];
extern  VTBL_ENTRY _ZTV9S20479C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20479C14[];
Class_Descriptor cd_S20479C14 = {  "S20479C14", // class name
  bases_S20479C14, 9,
  &(vtc_S20479C14[0]), // expected_vtbl_contents
  &(vtt_S20479C14[0]), // expected_vtt_contents
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI9S20479C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20479C14),15, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20479C14),6, //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  S20479C2  : virtual S20479C3 , S20479C8 , S20479C14 {
  int s20479c2f0;
  ~S20479C2(); // tgen
  S20479C2(); // tgen
};
//SIG(-1 S20479C2) C1{ VBC2{ BC3{ m FL} VBC4{ m} BC5{ BC6{ VBC3 BC4 v1}} vd v2} BC7{ VBC3 VBC8{ VBC3 BC6 BC4} BC9{ BC3 VBC6 BC4 vd} VBC2 BC10{ BC3 BC2 BC11{ m} VBC12{ VBC3 BC8 VBC6 v3} VBC9 vd}} BC13{ VBC6 BC2 vd v4} Fi}


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

static void Test_S20479C2()
{
  extern Class_Descriptor cd_S20479C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,27)];
    init_test(&cd_S20479C2, buf);
    S20479C2 *dp, &lv = *(dp=new (buf) S20479C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,104), "sizeof(S20479C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20479C2)");
    /*is_ambiguous_... S20479C2::S20479C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C3*), ABISELECT(80,56), "S20479C2");
    /*is_ambiguous_... S20479C2::S20479C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C3*), ABISELECT(88,64), "S20479C2");
    /*is_ambiguous_... S20479C3::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C3*)(S20479C11*)(S20479C8*), ABISELECT(88,64), "S20479C2");
    /*is_ambiguous_... S20479C3::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C3*)(S20479C14*), ABISELECT(88,64), "S20479C2");
    /*is_ambiguous_... S20479C2::S20479C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*)(S20479C6*)(S20479C3*), ABISELECT(88,64), "S20479C2");
    /*is_ambiguous_... S20479C8::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C8*), ABISELECT(88,64), "S20479C2");
    /*is_ambiguous_... S20479C2::S20479C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C9*), ABISELECT(88,64), "S20479C2");
    /*is_ambiguous_... S20479C2::S20479C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*)(S20479C9*), ABISELECT(88,64), "S20479C2");
    /*is_ambiguous_... S20479C2::S20479C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*), ABISELECT(88,64), "S20479C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*)(S20479C6*)(S20479C3*)(S20479C11*)(S20479C8*), ABISELECT(88,64), "S20479C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C13*), ABISELECT(88,64), "S20479C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C9*)(S20479C13*), ABISELECT(88,64), "S20479C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*)(S20479C9*)(S20479C13*), ABISELECT(88,64), "S20479C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*)(S20479C6*)(S20479C3*)(S20479C14*), ABISELECT(88,64), "S20479C2");
    /*is_ambiguous_... S20479C2::S20479C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C7*)(S20479C6*)(S20479C3*), ABISELECT(72,52), "S20479C2");
    /*is_ambiguous_... S20479C2::S20479C3 */ AMB_check_base_class_offset(lv, (S20479C7*)(S20479C6*)(S20479C3*), ABISELECT(72,52), "S20479C2");
    /*is_ambiguous_... S20479C2::S20479C3 */ AMB_check_base_class_offset(lv, (S20479C6*)(S20479C3*), ABISELECT(72,52), "S20479C2");
    /*is_ambiguous_... S20479C2::S20479C3 */ AMB_check_base_class_offset(lv, (S20479C3*), ABISELECT(72,52), "S20479C2");
    /*is_ambiguous_... S20479C8::S20479C3 */ AMB_check_base_class_offset(lv, (S20479C3*)(S20479C8*), ABISELECT(72,52), "S20479C2");
    /*is_ambiguous_... S20479C2::S20479C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C7*)(S20479C9*), ABISELECT(96,72), "S20479C2");
    /*is_ambiguous_... S20479C2::S20479C9 */ AMB_check_base_class_offset(lv, (S20479C7*)(S20479C9*), ABISELECT(96,72), "S20479C2");
    /*is_ambiguous_... S20479C2::S20479C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C9*), ABISELECT(104,76), "S20479C2");
    /*is_ambiguous_... S20479C8::S20479C9 */ AMB_check_base_class_offset(lv, (S20479C9*)(S20479C8*), ABISELECT(96,72), "S20479C2");
    /*is_ambiguous_... S20479C8::S20479C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C10*)(S20479C8*), ABISELECT(8,4), "S20479C2");
    /*is_ambiguous_... S20479C2::S20479C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C7*), 0, "S20479C2");
    /*is_ambiguous_... S20479C8::S20479C10 */ AMB_check_base_class_offset(lv, (S20479C7*)(S20479C10*)(S20479C8*), 0, "S20479C2");
    /*is_ambiguous_... S20479C13::S20479C7 */ AMB_check_base_class_offset(lv, (S20479C7*)(S20479C13*), 0, "S20479C2");
    /*is_ambiguous_... S20479C2::S20479C10 */ AMB_check_base_class_offset(lv, (S20479C7*)(S20479C10*), 0, "S20479C2");
    /*is_ambiguous_... S20479C14::S20479C7 */ AMB_check_base_class_offset(lv, (S20479C7*)(S20479C14*), 0, "S20479C2");
    /*is_ambiguous_... S20479C8::S20479C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C10*)(S20479C8*), ABISELECT(16,12), "S20479C2");
    /*is_ambiguous_... S20479C8::S20479C10 */ AMB_check_base_class_offset(lv, (S20479C10*)(S20479C8*), 0, "S20479C2");
    /*is_ambiguous_... S20479C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C11*)(S20479C8*), ABISELECT(40,28), "S20479C2");
    /*is_ambiguous_... S20479C3::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C3*)(S20479C11*)(S20479C8*), ABISELECT(32,20), "S20479C2");
    check_base_class_offset(lv, (S731C17_nt*)(S20479C7*)(S20479C6*)(S20479C3*)(S20479C11*)(S20479C8*), ABISELECT(24,16), "S20479C2");
    check_base_class_offset(lv, (S20479C7*)(S20479C6*)(S20479C3*)(S20479C11*)(S20479C8*), ABISELECT(24,16), "S20479C2");
    check_base_class_offset(lv, (S20479C6*)(S20479C3*)(S20479C11*)(S20479C8*), ABISELECT(24,16), "S20479C2");
    check_base_class_offset(lv, (S20479C3*)(S20479C11*)(S20479C8*), ABISELECT(24,16), "S20479C2");
    check_base_class_offset(lv, (S28C52_nt*)(S20479C11*)(S20479C8*), ABISELECT(24,16), "S20479C2");
    check_base_class_offset(lv, (S731C17_nt*)(S20479C7*)(S20479C9*)(S20479C13*), ABISELECT(112,80), "S20479C2");
    check_base_class_offset(lv, (S20479C7*)(S20479C9*)(S20479C13*), ABISELECT(112,80), "S20479C2");
    /*is_ambiguous_... S20479C9::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C9*)(S20479C13*), ABISELECT(120,84), "S20479C2");
    check_base_class_offset(lv, (S20479C9*)(S20479C13*), ABISELECT(112,80), "S20479C2");
    check_base_class_offset(lv, (S20479C13*)(S20479C11*)(S20479C8*), ABISELECT(112,80), "S20479C2");
    /*is_ambiguous_... S20479C2::S20479C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C10*), ABISELECT(136,92), "S20479C2");
    /*is_ambiguous_... S20479C2::S20479C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C10*), ABISELECT(144,100), "S20479C2");
    check_base_class_offset(lv, (S20479C10*)(S20479C11*)(S20479C8*), ABISELECT(128,88), "S20479C2");
    check_base_class_offset(lv, (S20479C11*)(S20479C8*), ABISELECT(24,16), "S20479C2");
    check_base_class_offset(lv, (S20479C8*), 0, "S20479C2");
    /*is_ambiguous_... S20479C3::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C3*)(S20479C14*), ABISELECT(56,40), "S20479C2");
    check_base_class_offset(lv, (S731C17_nt*)(S20479C7*)(S20479C6*)(S20479C3*)(S20479C14*), ABISELECT(48,36), "S20479C2");
    check_base_class_offset(lv, (S20479C7*)(S20479C6*)(S20479C3*)(S20479C14*), ABISELECT(48,36), "S20479C2");
    check_base_class_offset(lv, (S20479C6*)(S20479C3*)(S20479C14*), ABISELECT(48,36), "S20479C2");
    check_base_class_offset(lv, (S20479C3*)(S20479C14*), ABISELECT(48,36), "S20479C2");
    check_base_class_offset(lv, (S20479C14*), ABISELECT(48,36), "S20479C2");
    check_field_offset(lv, s20479c2f0, ABISELECT(64,48), "S20479C2.s20479c2f0");
    test_class_info(&lv, &cd_S20479C2);
    dp->~S20479C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20479C2(Test_S20479C2, "S20479C2", ABISELECT(152,104));

#else // __cplusplus

extern void _ZN8S20479C2C1Ev();
extern void _ZN8S20479C2D1Ev();
Name_Map name_map_S20479C2[] = {
  NSPAIR(_ZN8S20479C2C1Ev),
  NSPAIR(_ZN8S20479C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S20479C6;
extern VTBL_ENTRY _ZTI8S20479C6[];
extern  VTBL_ENTRY _ZTV8S20479C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C6[];
extern Class_Descriptor cd_S20479C3;
extern VTBL_ENTRY _ZTI8S20479C3[];
extern  VTBL_ENTRY _ZTV8S20479C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C9;
extern VTBL_ENTRY _ZTI8S20479C9[];
extern  VTBL_ENTRY _ZTV8S20479C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C10;
extern VTBL_ENTRY _ZTI9S20479C10[];
extern  VTBL_ENTRY _ZTV9S20479C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20479C10[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S20479C6;
extern VTBL_ENTRY _ZTI8S20479C6[];
extern  VTBL_ENTRY _ZTV8S20479C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C6[];
extern Class_Descriptor cd_S20479C3;
extern VTBL_ENTRY _ZTI8S20479C3[];
extern  VTBL_ENTRY _ZTV8S20479C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C3[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C9;
extern VTBL_ENTRY _ZTI8S20479C9[];
extern  VTBL_ENTRY _ZTV8S20479C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C9[];
extern Class_Descriptor cd_S20479C13;
extern VTBL_ENTRY _ZTI9S20479C13[];
extern  VTBL_ENTRY _ZTV9S20479C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20479C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C10;
extern VTBL_ENTRY _ZTI9S20479C10[];
extern  VTBL_ENTRY _ZTV9S20479C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20479C10[];
extern Class_Descriptor cd_S20479C11;
extern VTBL_ENTRY _ZTI9S20479C11[];
extern  VTBL_ENTRY _ZTV9S20479C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20479C11[];
extern Class_Descriptor cd_S20479C8;
extern VTBL_ENTRY _ZTI8S20479C8[];
extern  VTBL_ENTRY _ZTV8S20479C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C8[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S20479C6;
extern VTBL_ENTRY _ZTI8S20479C6[];
extern  VTBL_ENTRY _ZTV8S20479C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C6[];
extern Class_Descriptor cd_S20479C3;
extern VTBL_ENTRY _ZTI8S20479C3[];
extern  VTBL_ENTRY _ZTV8S20479C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C3[];
extern Class_Descriptor cd_S20479C14;
extern VTBL_ENTRY _ZTI9S20479C14[];
extern  VTBL_ENTRY _ZTV9S20479C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20479C14[];
static Base_Class bases_S20479C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(88,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(88,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    4, //immediately_derived
  0, 0},
  {&cd_S20479C7,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20479C6,    ABISELECT(72,52), //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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20479C3,    ABISELECT(72,52), //bcp->offset
    34, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20479C7,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(104,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20479C9,    ABISELECT(96,72), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20479C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    15, //immediately_derived
  0, 0},
  {&cd_S20479C10,    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
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    31, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20479C7,    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
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20479C6,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20479C3,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(112,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20479C7,    ABISELECT(112,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(120,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
    26, //immediately_derived
  0, 0},
  {&cd_S20479C9,    ABISELECT(112,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20479C13,    ABISELECT(112,80), //bcp->offset
    50, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(136,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(144,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20479C10,    ABISELECT(128,88), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S20479C11,    ABISELECT(24,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S20479C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_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
    37, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    35, //immediately_derived
  0, 0},
  {&cd_S20479C7,    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
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20479C6,    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
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20479C3,    ABISELECT(48,36), //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
    19, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20479C14,    ABISELECT(48,36), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20479C2[];
extern void _ZN8S20479C72v1Ev();
extern void _ZN8S20479C2D1Ev();
extern void _ZN8S20479C2D0Ev();
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZThn24_N8S20479C2D1Ev,_ZThn16_N8S20479C2D1Ev)();
extern void ABISELECT(_ZThn24_N8S20479C2D0Ev,_ZThn16_N8S20479C2D0Ev)();
extern void _ZN8S20479C32v2Ev();
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZThn48_N8S20479C2D1Ev,_ZThn36_N8S20479C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20479C2D0Ev,_ZThn36_N8S20479C2D0Ev)();
extern void _ZN8S20479C32v2Ev();
extern void _ZN9S20479C142v4Ev();
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20479C2D1Ev,_ZTv0_n24_N8S20479C2D1Ev)();
extern void ABISELECT(_ZThn72_N8S20479C2D1Ev,_ZThn52_N8S20479C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20479C2D0Ev,_ZTv0_n24_N8S20479C2D0Ev)();
extern void ABISELECT(_ZThn72_N8S20479C2D0Ev,_ZThn52_N8S20479C2D0Ev)() __attribute__((weak));
extern void _ZN8S20479C32v2Ev();
extern void _ZN8S20479C72v1Ev();
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C132v3Ev();
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20479C2D1Ev,_ZTv0_n24_N8S20479C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S20479C2D1Ev,_ZThn88_N8S20479C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20479C2D0Ev,_ZTv0_n24_N8S20479C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S20479C2D0Ev,_ZThn88_N8S20479C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20479C2[] = {
  ABISELECT(128,88),
  ABISELECT(112,80),
  ABISELECT(88,64),
  ABISELECT(72,52),
  ABISELECT(96,72),
  0,
  0,
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C2[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20479C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20479C2D0Ev,
  ABISELECT(104,72),
  ABISELECT(-24,-16),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(64,48),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20479C2[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20479C2D1Ev,_ZThn16_N8S20479C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20479C2D0Ev,_ZThn16_N8S20479C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
  ABISELECT(-48,-36),
  ABISELECT(40,28),
  ABISELECT(40,28),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S20479C2[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20479C2D1Ev,_ZThn36_N8S20479C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20479C2D0Ev,_ZThn36_N8S20479C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
  (VTBL_ENTRY)&_ZN9S20479C142v4Ev,
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI8S20479C2[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20479C2D1Ev,_ZTv0_n24_N8S20479C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20479C2D0Ev,_ZTv0_n24_N8S20479C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
  0,
  -8,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S20479C2[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  0,
  0,
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S20479C2[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C132v3Ev,
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S20479C2[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20479C2D1Ev,_ZTv0_n24_N8S20479C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20479C2D0Ev,_ZTv0_n24_N8S20479C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S20479C2[];
extern void _ZN8S20479C72v1Ev();
extern void _ZN8S20479C8D1Ev();
extern void _ZN8S20479C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C8__8S20479C2[] = {
  ABISELECT(128,88),
  ABISELECT(112,80),
  ABISELECT(88,64),
  ABISELECT(72,52),
  ABISELECT(96,72),
  0,
  0,
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C8[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20479C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20479C8D0Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C10D1Ev();
extern void _ZN9S20479C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C108S20479C8__8S20479C2[] = {
  0,
  0,
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20479C10[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20479C10D0Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C11D1Ev();
extern void _ZN9S20479C11D0Ev();
extern void _ZN8S20479C32v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C118S20479C8__8S20479C2[] = {
  ABISELECT(104,72),
  ABISELECT(-24,-16),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20479C11[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20479C11D0Ev,
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN8S20479C3D1Ev();
extern void _ZN8S20479C3D0Ev();
extern void _ZN8S20479C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C39S20479C118S20479C8__A1__8S20479C2[] = {
  ABISELECT(64,48),
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C3[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20479C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20479C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C68S20479C39S20479C118S20479C8__A1__8S20479C2[] = {
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C6[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C78S20479C68S20479C39S20479C118S20479C8__A3__8S20479C2[] = {
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C132v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C13__9S20479C118S20479C8__8S20479C2[] = {
  0,
  0,
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI9S20479C11[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C132v3Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C7__A2__9S20479C118S20479C8__8S20479C2[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20479C11[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20479C11D1Ev,_ZTv0_n24_N9S20479C11D1Ev)();
extern void ABISELECT(_ZThn104_N9S20479C11D1Ev,_ZThn72_N9S20479C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20479C11D0Ev,_ZTv0_n24_N9S20479C11D0Ev)();
extern void ABISELECT(_ZThn104_N9S20479C11D0Ev,_ZThn72_N9S20479C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20479C10__9S20479C118S20479C8__8S20479C2[] = {
  ABISELECT(-104,-72),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI9S20479C11[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20479C11D1Ev,_ZTv0_n24_N9S20479C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20479C11D0Ev,_ZTv0_n24_N9S20479C11D0Ev),
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C9__8S20479C8__8S20479C2[] = {
  0,
  -8,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S20479C8[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20479C8D1Ev,_ZTv0_n24_N8S20479C8D1Ev)();
extern void ABISELECT(_ZThn72_N8S20479C8D1Ev,_ZThn52_N8S20479C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20479C8D0Ev,_ZTv0_n24_N8S20479C8D0Ev)();
extern void ABISELECT(_ZThn72_N8S20479C8D0Ev,_ZThn52_N8S20479C8D0Ev)() __attribute__((weak));
extern void _ZN8S20479C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C3__8S20479C8__8S20479C2[] = {
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI8S20479C8[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20479C8D1Ev,_ZTv0_n24_N8S20479C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20479C8D0Ev,_ZTv0_n24_N8S20479C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZThn24_N8S20479C8D1Ev,_ZThn16_N8S20479C8D1Ev)();
extern void ABISELECT(_ZThn24_N8S20479C8D0Ev,_ZThn16_N8S20479C8D0Ev)();
extern void _ZN8S20479C32v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C11__8S20479C8__8S20479C2[] = {
  ABISELECT(104,72),
  ABISELECT(-24,-16),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(64,48),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20479C8[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20479C8D1Ev,_ZThn16_N8S20479C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20479C8D0Ev,_ZThn16_N8S20479C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C132v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C13__8S20479C8__8S20479C2[] = {
  0,
  0,
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S20479C8[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C132v3Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20479C8D1Ev,_ZTv0_n24_N8S20479C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S20479C8D1Ev,_ZThn88_N8S20479C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20479C8D0Ev,_ZTv0_n24_N8S20479C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S20479C8D0Ev,_ZThn88_N8S20479C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20479C10__A1__8S20479C8__8S20479C2[] = {
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S20479C8[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20479C8D1Ev,_ZTv0_n24_N8S20479C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20479C8D0Ev,_ZTv0_n24_N8S20479C8D0Ev),
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C14D1Ev();
extern void _ZN9S20479C14D0Ev();
extern void _ZN8S20479C32v2Ev();
extern void _ZN9S20479C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C14__8S20479C2[] = {
  ABISELECT(-48,-36),
  ABISELECT(40,28),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20479C14[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20479C14D0Ev,
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
  (VTBL_ENTRY)&_ZN9S20479C142v4Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN8S20479C3D1Ev();
extern void _ZN8S20479C3D0Ev();
extern void _ZN8S20479C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C39S20479C14__A2__8S20479C2[] = {
  ABISELECT(40,28),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C3[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20479C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20479C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C68S20479C39S20479C14__A2__8S20479C2[] = {
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C6[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C78S20479C68S20479C39S20479C14__A5__8S20479C2[] = {
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C7__9S20479C14__8S20479C2[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI9S20479C14[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN8S20479C3D1Ev();
extern void _ZN8S20479C3D0Ev();
extern void _ZN8S20479C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C3__8S20479C2[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C3[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20479C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20479C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C68S20479C3__8S20479C2[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C6[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C78S20479C68S20479C3__8S20479C2[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C9__8S20479C2[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C9[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C78S20479C9__A1__8S20479C2[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C7__A2__8S20479C2[] = {
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C132v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C13__8S20479C2[] = {
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20479C13[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C132v3Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C99S20479C13__A1__8S20479C2[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C9[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C78S20479C99S20479C13__A4__8S20479C2[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C7__A1__9S20479C13__8S20479C2[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(112,80),
  (VTBL_ENTRY)&(_ZTI9S20479C13[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C10D1Ev();
extern void _ZN9S20479C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C10__A1__8S20479C2[] = {
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20479C10[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20479C10D0Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C7__9S20479C10__A1__8S20479C2[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI9S20479C10[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
static  VTT_ENTRY vtt_S20479C2[] = {
  {&(_ZTV8S20479C2[10]),  10,67},
  {&(_tg__ZTV8S20479C8__8S20479C2[10]),  10,13},
  {&(_tg__ZTV9S20479C108S20479C8__8S20479C2[5]),  5,8},
  {&(_tg__ZTV9S20479C108S20479C8__8S20479C2[5]),  5,8},
  {&(_tg__ZTV9S20479C118S20479C8__8S20479C2[7]),  7,11},
  {&(_tg__ZTV8S20479C39S20479C118S20479C8__A1__8S20479C2[4]),  4,8},
  {&(_tg__ZTV8S20479C68S20479C39S20479C118S20479C8__A1__8S20479C2[3]),  3,4},
  {&(_tg__ZTV8S20479C78S20479C68S20479C39S20479C118S20479C8__A3__8S20479C2[3]),  3,4},
  {&(_tg__ZTV9S20479C13__9S20479C118S20479C8__8S20479C2[6]),  6,8},
  {&(_tg__ZTV8S20479C7__A2__9S20479C118S20479C8__8S20479C2[4]),  4,5},
  {&(_tg__ZTV9S20479C10__9S20479C118S20479C8__8S20479C2[6]),  6,9},
  {&(_tg__ZTV8S20479C9__8S20479C8__8S20479C2[4]),  4,5},
  {&(_tg__ZTV8S20479C8__8S20479C2[10]),  10,13},
  {&(_tg__ZTV8S20479C3__8S20479C8__8S20479C2[7]),  7,11},
  {&(_tg__ZTV9S20479C11__8S20479C8__8S20479C2[7]),  7,11},
  {&(_tg__ZTV9S20479C13__8S20479C8__8S20479C2[6]),  6,8},
  {&(_tg__ZTV9S20479C10__A1__8S20479C8__8S20479C2[6]),  6,9},
  {&(_tg__ZTV9S20479C14__8S20479C2[5]),  5,10},
  {&(_tg__ZTV8S20479C39S20479C14__A2__8S20479C2[4]),  4,8},
  {&(_tg__ZTV8S20479C68S20479C39S20479C14__A2__8S20479C2[3]),  3,4},
  {&(_tg__ZTV8S20479C78S20479C68S20479C39S20479C14__A5__8S20479C2[3]),  3,4},
  {&(_tg__ZTV8S20479C7__9S20479C14__8S20479C2[4]),  4,5},
  {&(_ZTV8S20479C2[41]),  41,67},
  {&(_ZTV8S20479C2[49]),  49,67},
  {&(_ZTV8S20479C2[10]),  10,67},
  {&(_ZTV8S20479C2[20]),  20,67},
  {&(_ZTV8S20479C2[56]),  56,67},
  {&(_ZTV8S20479C2[64]),  64,67},
  {&(_ZTV8S20479C2[29]),  29,67},
  {&(_tg__ZTV8S20479C3__8S20479C2[4]),  4,8},
  {&(_tg__ZTV8S20479C68S20479C3__8S20479C2[3]),  3,4},
  {&(_tg__ZTV8S20479C78S20479C68S20479C3__8S20479C2[3]),  3,4},
  {&(_tg__ZTV8S20479C9__8S20479C2[3]),  3,4},
  {&(_tg__ZTV8S20479C78S20479C9__A1__8S20479C2[3]),  3,4},
  {&(_tg__ZTV8S20479C7__A2__8S20479C2[3]),  3,4},
  {&(_tg__ZTV9S20479C13__8S20479C2[4]),  4,6},
  {&(_tg__ZTV8S20479C99S20479C13__A1__8S20479C2[3]),  3,4},
  {&(_tg__ZTV8S20479C78S20479C99S20479C13__A4__8S20479C2[3]),  3,4},
  {&(_tg__ZTV8S20479C7__A1__9S20479C13__8S20479C2[4]),  4,5},
  {&(_tg__ZTV9S20479C10__A1__8S20479C2[5]),  5,8},
  {&(_tg__ZTV8S20479C7__9S20479C10__A1__8S20479C2[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S20479C2[];
extern  VTBL_ENTRY _ZTV8S20479C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C2[];
static VTBL_ENTRY alt_thunk_names82[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20479C8D0Ev,_ZTv0_n24_N8S20479C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20479C8D0Ev,_ZThn88_N8S20479C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20479C8D0Ev,_ZThn52_N8S20479C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20479C8D1Ev,_ZTv0_n24_N8S20479C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20479C8D1Ev,_ZThn88_N8S20479C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20479C8D1Ev,_ZThn52_N8S20479C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20479C11D0Ev,_ZTv0_n24_N9S20479C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20479C11D0Ev,_ZThn72_N9S20479C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20479C11D1Ev,_ZTv0_n24_N9S20479C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20479C11D1Ev,_ZThn72_N9S20479C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20479C2D0Ev,_ZTv0_n24_N8S20479C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20479C2D0Ev,_ZThn88_N8S20479C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20479C2D0Ev,_ZThn52_N8S20479C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20479C2D1Ev,_ZTv0_n24_N8S20479C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20479C2D1Ev,_ZThn88_N8S20479C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20479C2D1Ev,_ZThn52_N8S20479C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20479C2 = {  "S20479C2", // class name
  bases_S20479C2, 39,
  &(vtc_S20479C2[0]), // expected_vtbl_contents
  &(vtt_S20479C2[0]), // expected_vtt_contents
  ABISELECT(152,104), // object size
  NSPAIRA(_ZTI8S20479C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20479C2),67, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20479C2),41, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names82,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20479C1  : virtual S20479C2 , S20479C3 , S3461C5_nt {
  virtual  ~S20479C1(); // _ZN8S20479C1D2Ev
  S20479C1(); // tgen
};
//SIG(1 S20479C1) C1{ VBC2{ VBC3{ BC4{ m FL} VBC5{ m} BC6{ BC7{ VBC4 BC5 v1}} vd v2} BC8{ VBC4 VBC9{ VBC4 BC7 BC5} BC10{ BC4 VBC7 BC5 vd} VBC3 BC11{ BC4 BC3 BC12{ m} VBC13{ VBC4 BC9 VBC7 v3} VBC10 vd}} BC14{ VBC7 BC3 vd v4} Fi} BC3 BC4 vd}


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

static void Test_S20479C1()
{
  extern Class_Descriptor cd_S20479C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,32)];
    init_test(&cd_S20479C1, buf);
    S20479C1 *dp, &lv = *(dp=new (buf) S20479C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,124), "sizeof(S20479C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20479C1)");
    /*is_ambiguous_... S20479C1::S20479C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C3*), ABISELECT(104,76), "S20479C1");
    /*is_ambiguous_... S20479C1::S20479C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C3*), ABISELECT(112,84), "S20479C1");
    /*is_ambiguous_... S20479C3::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C3*)(S20479C11*)(S20479C8*)(S20479C2*), ABISELECT(112,84), "S20479C1");
    /*is_ambiguous_... S20479C3::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C3*)(S20479C14*)(S20479C2*), ABISELECT(112,84), "S20479C1");
    /*is_ambiguous_... S20479C1::S20479C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C3*), ABISELECT(112,84), "S20479C1");
    /*is_ambiguous_... S20479C1::S20479C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*)(S20479C6*)(S20479C3*), ABISELECT(112,84), "S20479C1");
    /*is_ambiguous_... S20479C8::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C8*)(S20479C2*), ABISELECT(112,84), "S20479C1");
    /*is_ambiguous_... S20479C1::S20479C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C9*), ABISELECT(112,84), "S20479C1");
    /*is_ambiguous_... S20479C1::S20479C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*)(S20479C9*), ABISELECT(112,84), "S20479C1");
    /*is_ambiguous_... S20479C1::S20479C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*), ABISELECT(112,84), "S20479C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*)(S20479C6*)(S20479C3*)(S20479C11*)(S20479C8*)(S20479C2*), ABISELECT(112,84), "S20479C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C13*), ABISELECT(112,84), "S20479C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C9*)(S20479C13*), ABISELECT(112,84), "S20479C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*)(S20479C9*)(S20479C13*), ABISELECT(112,84), "S20479C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*)(S20479C6*)(S20479C3*)(S20479C14*)(S20479C2*), ABISELECT(112,84), "S20479C1");
    /*is_ambiguous_... S20479C1::S20479C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C7*)(S20479C6*)(S20479C3*), ABISELECT(112,84), "S20479C1");
    /*is_ambiguous_... S20479C1::S20479C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C7*)(S20479C6*)(S20479C3*), ABISELECT(96,72), "S20479C1");
    /*is_ambiguous_... S20479C1::S20479C3 */ AMB_check_base_class_offset(lv, (S20479C7*)(S20479C6*)(S20479C3*), ABISELECT(96,72), "S20479C1");
    /*is_ambiguous_... S20479C1::S20479C3 */ AMB_check_base_class_offset(lv, (S20479C6*)(S20479C3*), ABISELECT(96,72), "S20479C1");
    /*is_ambiguous_... S20479C2::S20479C3 */ AMB_check_base_class_offset(lv, (S20479C3*)(S20479C2*), ABISELECT(96,72), "S20479C1");
    /*is_ambiguous_... S20479C8::S20479C3 */ AMB_check_base_class_offset(lv, (S20479C3*)(S20479C8*)(S20479C2*), ABISELECT(96,72), "S20479C1");
    /*is_ambiguous_... S20479C1::S20479C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C7*)(S20479C9*), ABISELECT(120,92), "S20479C1");
    /*is_ambiguous_... S20479C1::S20479C9 */ AMB_check_base_class_offset(lv, (S20479C7*)(S20479C9*), ABISELECT(120,92), "S20479C1");
    /*is_ambiguous_... S20479C1::S20479C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C9*), ABISELECT(128,96), "S20479C1");
    /*is_ambiguous_... S20479C8::S20479C9 */ AMB_check_base_class_offset(lv, (S20479C9*)(S20479C8*)(S20479C2*), ABISELECT(120,92), "S20479C1");
    /*is_ambiguous_... S20479C8::S20479C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C10*)(S20479C8*)(S20479C2*), ABISELECT(32,24), "S20479C1");
    /*is_ambiguous_... S20479C1::S20479C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C7*), ABISELECT(24,20), "S20479C1");
    /*is_ambiguous_... S20479C8::S20479C10 */ AMB_check_base_class_offset(lv, (S20479C7*)(S20479C10*)(S20479C8*)(S20479C2*), ABISELECT(24,20), "S20479C1");
    /*is_ambiguous_... S20479C13::S20479C7 */ AMB_check_base_class_offset(lv, (S20479C7*)(S20479C13*), ABISELECT(24,20), "S20479C1");
    /*is_ambiguous_... S20479C1::S20479C10 */ AMB_check_base_class_offset(lv, (S20479C7*)(S20479C10*), ABISELECT(24,20), "S20479C1");
    /*is_ambiguous_... S20479C14::S20479C7 */ AMB_check_base_class_offset(lv, (S20479C7*)(S20479C14*)(S20479C2*), ABISELECT(24,20), "S20479C1");
    /*is_ambiguous_... S20479C8::S20479C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C10*)(S20479C8*)(S20479C2*), ABISELECT(40,32), "S20479C1");
    /*is_ambiguous_... S20479C8::S20479C10 */ AMB_check_base_class_offset(lv, (S20479C10*)(S20479C8*)(S20479C2*), ABISELECT(24,20), "S20479C1");
    /*is_ambiguous_... S20479C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C11*)(S20479C8*)(S20479C2*), ABISELECT(64,48), "S20479C1");
    /*is_ambiguous_... S20479C3::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C3*)(S20479C11*)(S20479C8*)(S20479C2*), ABISELECT(56,40), "S20479C1");
    check_base_class_offset(lv, (S731C17_nt*)(S20479C7*)(S20479C6*)(S20479C3*)(S20479C11*)(S20479C8*)(S20479C2*), ABISELECT(48,36), "S20479C1");
    check_base_class_offset(lv, (S20479C7*)(S20479C6*)(S20479C3*)(S20479C11*)(S20479C8*)(S20479C2*), ABISELECT(48,36), "S20479C1");
    check_base_class_offset(lv, (S20479C6*)(S20479C3*)(S20479C11*)(S20479C8*)(S20479C2*), ABISELECT(48,36), "S20479C1");
    check_base_class_offset(lv, (S20479C3*)(S20479C11*)(S20479C8*)(S20479C2*), ABISELECT(48,36), "S20479C1");
    check_base_class_offset(lv, (S28C52_nt*)(S20479C11*)(S20479C8*)(S20479C2*), ABISELECT(48,36), "S20479C1");
    check_base_class_offset(lv, (S731C17_nt*)(S20479C7*)(S20479C9*)(S20479C13*), ABISELECT(136,100), "S20479C1");
    check_base_class_offset(lv, (S20479C7*)(S20479C9*)(S20479C13*), ABISELECT(136,100), "S20479C1");
    /*is_ambiguous_... S20479C9::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C9*)(S20479C13*), ABISELECT(144,104), "S20479C1");
    check_base_class_offset(lv, (S20479C9*)(S20479C13*), ABISELECT(136,100), "S20479C1");
    check_base_class_offset(lv, (S20479C13*)(S20479C11*)(S20479C8*)(S20479C2*), ABISELECT(136,100), "S20479C1");
    /*is_ambiguous_... S20479C1::S20479C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C10*), ABISELECT(160,112), "S20479C1");
    /*is_ambiguous_... S20479C1::S20479C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C10*), ABISELECT(168,120), "S20479C1");
    check_base_class_offset(lv, (S20479C10*)(S20479C11*)(S20479C8*)(S20479C2*), ABISELECT(152,108), "S20479C1");
    check_base_class_offset(lv, (S20479C11*)(S20479C8*)(S20479C2*), ABISELECT(48,36), "S20479C1");
    check_base_class_offset(lv, (S20479C8*)(S20479C2*), ABISELECT(24,20), "S20479C1");
    /*is_ambiguous_... S20479C3::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C3*)(S20479C14*)(S20479C2*), ABISELECT(80,60), "S20479C1");
    check_base_class_offset(lv, (S731C17_nt*)(S20479C7*)(S20479C6*)(S20479C3*)(S20479C14*)(S20479C2*), ABISELECT(72,56), "S20479C1");
    check_base_class_offset(lv, (S20479C7*)(S20479C6*)(S20479C3*)(S20479C14*)(S20479C2*), ABISELECT(72,56), "S20479C1");
    check_base_class_offset(lv, (S20479C6*)(S20479C3*)(S20479C14*)(S20479C2*), ABISELECT(72,56), "S20479C1");
    check_base_class_offset(lv, (S20479C3*)(S20479C14*)(S20479C2*), ABISELECT(72,56), "S20479C1");
    check_base_class_offset(lv, (S20479C14*)(S20479C2*), ABISELECT(72,56), "S20479C1");
    check_base_class_offset(lv, (S20479C2*), ABISELECT(24,20), "S20479C1");
    /*is_ambiguous_... S20479C1::S20479C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S20479C3*), ABISELECT(8,4), "S20479C1");
    /*is_ambiguous_... S20479C1::S20479C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S20479C7*)(S20479C6*)(S20479C3*), 0, "S20479C1");
    /*is_ambiguous_... S20479C1::S20479C3 */ AMB_check_base_class_offset(lv, (S20479C7*)(S20479C6*)(S20479C3*), 0, "S20479C1");
    /*is_ambiguous_... S20479C1::S20479C3 */ AMB_check_base_class_offset(lv, (S20479C6*)(S20479C3*), 0, "S20479C1");
    /*is_ambiguous_... S20479C1::S20479C3 */ AMB_check_base_class_offset(lv, (S20479C3*), 0, "S20479C1");
    /*is_ambiguous_... S20479C1::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(16,12), "S20479C1");
    test_class_info(&lv, &cd_S20479C1);
    dp->~S20479C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20479C1(Test_S20479C1, "S20479C1", ABISELECT(176,124));

#else // __cplusplus

extern void _ZN8S20479C1C1Ev();
extern void _ZN8S20479C1D2Ev();
Name_Map name_map_S20479C1[] = {
  NSPAIR(_ZN8S20479C1C1Ev),
  NSPAIR(_ZN8S20479C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S20479C6;
extern VTBL_ENTRY _ZTI8S20479C6[];
extern  VTBL_ENTRY _ZTV8S20479C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C6[];
extern Class_Descriptor cd_S20479C3;
extern VTBL_ENTRY _ZTI8S20479C3[];
extern  VTBL_ENTRY _ZTV8S20479C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C9;
extern VTBL_ENTRY _ZTI8S20479C9[];
extern  VTBL_ENTRY _ZTV8S20479C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C10;
extern VTBL_ENTRY _ZTI9S20479C10[];
extern  VTBL_ENTRY _ZTV9S20479C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20479C10[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S20479C6;
extern VTBL_ENTRY _ZTI8S20479C6[];
extern  VTBL_ENTRY _ZTV8S20479C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C6[];
extern Class_Descriptor cd_S20479C3;
extern VTBL_ENTRY _ZTI8S20479C3[];
extern  VTBL_ENTRY _ZTV8S20479C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C3[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C9;
extern VTBL_ENTRY _ZTI8S20479C9[];
extern  VTBL_ENTRY _ZTV8S20479C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C9[];
extern Class_Descriptor cd_S20479C13;
extern VTBL_ENTRY _ZTI9S20479C13[];
extern  VTBL_ENTRY _ZTV9S20479C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20479C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C10;
extern VTBL_ENTRY _ZTI9S20479C10[];
extern  VTBL_ENTRY _ZTV9S20479C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20479C10[];
extern Class_Descriptor cd_S20479C11;
extern VTBL_ENTRY _ZTI9S20479C11[];
extern  VTBL_ENTRY _ZTV9S20479C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20479C11[];
extern Class_Descriptor cd_S20479C8;
extern VTBL_ENTRY _ZTI8S20479C8[];
extern  VTBL_ENTRY _ZTV8S20479C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C8[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S20479C6;
extern VTBL_ENTRY _ZTI8S20479C6[];
extern  VTBL_ENTRY _ZTV8S20479C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C6[];
extern Class_Descriptor cd_S20479C3;
extern VTBL_ENTRY _ZTI8S20479C3[];
extern  VTBL_ENTRY _ZTV8S20479C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C3[];
extern Class_Descriptor cd_S20479C14;
extern VTBL_ENTRY _ZTI9S20479C14[];
extern  VTBL_ENTRY _ZTV9S20479C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20479C14[];
extern Class_Descriptor cd_S20479C2;
extern VTBL_ENTRY _ZTI8S20479C2[];
extern  VTBL_ENTRY _ZTV8S20479C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C2[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20479C7;
extern VTBL_ENTRY _ZTI8S20479C7[];
extern  VTBL_ENTRY _ZTV8S20479C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C7[];
extern Class_Descriptor cd_S20479C6;
extern VTBL_ENTRY _ZTI8S20479C6[];
extern  VTBL_ENTRY _ZTV8S20479C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C6[];
extern Class_Descriptor cd_S20479C3;
extern VTBL_ENTRY _ZTI8S20479C3[];
extern  VTBL_ENTRY _ZTV8S20479C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
static Base_Class bases_S20479C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(104,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(112,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(112,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20479C7,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20479C6,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20479C3,    ABISELECT(96,72), //bcp->offset
    51, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(120,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
    8, //immediately_derived
  0, 0},
  {&cd_S20479C7,    ABISELECT(120,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(128,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20479C9,    ABISELECT(120,92), //bcp->offset
    62, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20479C7,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20479C10,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    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
    31, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    19, //immediately_derived
  0, 0},
  {&cd_S20479C7,    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
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20479C6,    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
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20479C3,    ABISELECT(48,36), //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
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    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
    31, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(136,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20479C7,    ABISELECT(136,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20479C9,    ABISELECT(136,100), //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
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20479C13,    ABISELECT(136,100), //bcp->offset
    67, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(160,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(168,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20479C10,    ABISELECT(152,108), //bcp->offset
    75, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S20479C11,    ABISELECT(48,36), //bcp->offset
    30, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S20479C8,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(72,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20479C7,    ABISELECT(72,56), //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
    17, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20479C6,    ABISELECT(72,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20479C3,    ABISELECT(72,56), //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
    19, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20479C14,    ABISELECT(72,56), //bcp->offset
    41, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20479C2,    ABISELECT(24,20), //bcp->offset
    14, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20479C7,    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
    22, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S20479C6,    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
    23, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S20479C3,    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
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20479C1[];
extern void _ZN8S20479C72v1Ev();
extern void _ZN8S20479C1D1Ev();
extern void _ZN8S20479C1D0Ev();
extern void _ZN8S20479C32v2Ev();
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZTv0_n88_N8S20479C1D1Ev,_ZTv0_n44_N8S20479C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S20479C1D1Ev,_ZThn20_N8S20479C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20479C1D0Ev,_ZTv0_n44_N8S20479C1D0Ev)();
extern void ABISELECT(_ZThn24_N8S20479C1D0Ev,_ZThn20_N8S20479C1D0Ev)() __attribute__((weak));
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZTvn24_n88_N8S20479C1D1Ev,_ZTvn16_n44_N8S20479C1D1Ev)();
extern void ABISELECT(_ZTvn24_n88_N8S20479C1D0Ev,_ZTvn16_n44_N8S20479C1D0Ev)();
extern void _ZN8S20479C32v2Ev();
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZTvn48_n88_N8S20479C1D1Ev,_ZTvn36_n44_N8S20479C1D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N8S20479C1D0Ev,_ZTvn36_n44_N8S20479C1D0Ev)();
extern void _ZN8S20479C32v2Ev();
extern void _ZN9S20479C142v4Ev();
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20479C1D1Ev,_ZTv0_n24_N8S20479C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S20479C1D1Ev,_ZThn72_N8S20479C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20479C1D0Ev,_ZTv0_n24_N8S20479C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S20479C1D0Ev,_ZThn72_N8S20479C1D0Ev)() __attribute__((weak));
extern void _ZN8S20479C32v2Ev();
extern void _ZN8S20479C72v1Ev();
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C132v3Ev();
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20479C1D1Ev,_ZTv0_n24_N8S20479C1D1Ev)();
extern void ABISELECT(_ZThn152_N8S20479C1D1Ev,_ZThn108_N8S20479C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20479C1D0Ev,_ZTv0_n24_N8S20479C1D0Ev)();
extern void ABISELECT(_ZThn152_N8S20479C1D0Ev,_ZThn108_N8S20479C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20479C1[] = {
  ABISELECT(152,108),
  ABISELECT(136,100),
  ABISELECT(24,20),
  ABISELECT(120,92),
  ABISELECT(96,72),
  ABISELECT(24,20),
  ABISELECT(112,84),
  ABISELECT(112,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C1[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20479C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20479C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
  ABISELECT(48,36),
  ABISELECT(24,16),
  ABISELECT(-24,-20),
  ABISELECT(128,88),
  ABISELECT(112,80),
  ABISELECT(88,64),
  ABISELECT(72,52),
  ABISELECT(96,72),
  0,
  0,
  ABISELECT(88,64),
  ABISELECT(-24,-20),
  (VTBL_ENTRY)&(_ZTI8S20479C1[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20479C1D1Ev,_ZTv0_n44_N8S20479C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20479C1D0Ev,_ZTv0_n44_N8S20479C1D0Ev),
  ABISELECT(104,72),
  ABISELECT(-24,-16),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(64,48),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S20479C1[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S20479C1D1Ev,_ZTvn16_n44_N8S20479C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n88_N8S20479C1D0Ev,_ZTvn16_n44_N8S20479C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
  ABISELECT(-48,-36),
  ABISELECT(40,28),
  ABISELECT(40,28),
  ABISELECT(-72,-56),
  (VTBL_ENTRY)&(_ZTI8S20479C1[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S20479C1D1Ev,_ZTvn36_n44_N8S20479C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S20479C1D0Ev,_ZTvn36_n44_N8S20479C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
  (VTBL_ENTRY)&_ZN9S20479C142v4Ev,
  0,
  ABISELECT(-96,-72),
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S20479C1[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20479C1D1Ev,_ZTv0_n24_N8S20479C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20479C1D0Ev,_ZTv0_n24_N8S20479C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
  0,
  -8,
  ABISELECT(-120,-92),
  (VTBL_ENTRY)&(_ZTI8S20479C1[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  0,
  0,
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI8S20479C1[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C132v3Ev,
  ABISELECT(-152,-108),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S20479C1[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20479C1D1Ev,_ZTv0_n24_N8S20479C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20479C1D0Ev,_ZTv0_n24_N8S20479C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20479C1[];
extern void _ZN8S20479C72v1Ev();
extern void _ZN8S20479C3D1Ev();
extern void _ZN8S20479C3D0Ev();
extern void _ZN8S20479C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C3__A__8S20479C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C3[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20479C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20479C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C68S20479C3__A3__8S20479C1[] = {
  ABISELECT(112,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C6[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C78S20479C68S20479C3__A6__8S20479C1[] = {
  ABISELECT(112,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN8S20479C2D1Ev();
extern void _ZN8S20479C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C2__8S20479C1[] = {
  ABISELECT(128,88),
  ABISELECT(112,80),
  ABISELECT(88,64),
  ABISELECT(72,52),
  ABISELECT(96,72),
  0,
  0,
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C2[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20479C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20479C2D0Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN8S20479C8D1Ev();
extern void _ZN8S20479C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C88S20479C2__8S20479C1[] = {
  ABISELECT(128,88),
  ABISELECT(112,80),
  ABISELECT(88,64),
  ABISELECT(72,52),
  ABISELECT(96,72),
  0,
  0,
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C8[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20479C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20479C8D0Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C10D1Ev();
extern void _ZN9S20479C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C108S20479C88S20479C2__8S20479C1[] = {
  0,
  0,
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20479C10[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20479C10D0Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C11D1Ev();
extern void _ZN9S20479C11D0Ev();
extern void _ZN8S20479C32v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C118S20479C88S20479C2__8S20479C1[] = {
  ABISELECT(104,72),
  ABISELECT(-24,-16),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20479C11[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20479C11D0Ev,
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN8S20479C3D1Ev();
extern void _ZN8S20479C3D0Ev();
extern void _ZN8S20479C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C39S20479C118S20479C88S20479C2__A1__8S20479C1[] = {
  ABISELECT(64,48),
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C3[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20479C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20479C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C68S20479C39S20479C118S20479C88S20479C2__A1__8S20479C1[] = {
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C6[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C78S20479C68S20479C39S20479C118S20479C88S20479C2__A3__8S20479C1[] = {
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C132v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C13__9S20479C118S20479C88S20479C2__8S20479C1[] = {
  0,
  0,
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI9S20479C11[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C132v3Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C7__A2__9S20479C118S20479C88S20479C2__8S20479C1[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20479C11[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20479C11D1Ev,_ZTv0_n24_N9S20479C11D1Ev)();
extern void ABISELECT(_ZThn104_N9S20479C11D1Ev,_ZThn72_N9S20479C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20479C11D0Ev,_ZTv0_n24_N9S20479C11D0Ev)();
extern void ABISELECT(_ZThn104_N9S20479C11D0Ev,_ZThn72_N9S20479C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20479C10__9S20479C118S20479C88S20479C2__8S20479C1[] = {
  ABISELECT(-104,-72),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI9S20479C11[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20479C11D1Ev,_ZTv0_n24_N9S20479C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20479C11D0Ev,_ZTv0_n24_N9S20479C11D0Ev),
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C9__8S20479C88S20479C2__8S20479C1[] = {
  0,
  -8,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S20479C8[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20479C8D1Ev,_ZTv0_n24_N8S20479C8D1Ev)();
extern void ABISELECT(_ZThn72_N8S20479C8D1Ev,_ZThn52_N8S20479C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20479C8D0Ev,_ZTv0_n24_N8S20479C8D0Ev)();
extern void ABISELECT(_ZThn72_N8S20479C8D0Ev,_ZThn52_N8S20479C8D0Ev)() __attribute__((weak));
extern void _ZN8S20479C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C3__8S20479C88S20479C2__8S20479C1[] = {
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI8S20479C8[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20479C8D1Ev,_ZTv0_n24_N8S20479C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20479C8D0Ev,_ZTv0_n24_N8S20479C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZThn24_N8S20479C8D1Ev,_ZThn16_N8S20479C8D1Ev)();
extern void ABISELECT(_ZThn24_N8S20479C8D0Ev,_ZThn16_N8S20479C8D0Ev)();
extern void _ZN8S20479C32v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C11__8S20479C88S20479C2__8S20479C1[] = {
  ABISELECT(104,72),
  ABISELECT(-24,-16),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(64,48),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20479C8[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20479C8D1Ev,_ZThn16_N8S20479C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20479C8D0Ev,_ZThn16_N8S20479C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C132v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C13__8S20479C88S20479C2__8S20479C1[] = {
  0,
  0,
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S20479C8[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C132v3Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20479C8D1Ev,_ZTv0_n24_N8S20479C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S20479C8D1Ev,_ZThn88_N8S20479C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20479C8D0Ev,_ZTv0_n24_N8S20479C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S20479C8D0Ev,_ZThn88_N8S20479C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20479C10__A1__8S20479C88S20479C2__8S20479C1[] = {
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S20479C8[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20479C8D1Ev,_ZTv0_n24_N8S20479C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20479C8D0Ev,_ZTv0_n24_N8S20479C8D0Ev),
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C14D1Ev();
extern void _ZN9S20479C14D0Ev();
extern void _ZN8S20479C32v2Ev();
extern void _ZN9S20479C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C148S20479C2__8S20479C1[] = {
  ABISELECT(-48,-36),
  ABISELECT(40,28),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20479C14[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20479C14D0Ev,
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
  (VTBL_ENTRY)&_ZN9S20479C142v4Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN8S20479C3D1Ev();
extern void _ZN8S20479C3D0Ev();
extern void _ZN8S20479C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C39S20479C148S20479C2__A2__8S20479C1[] = {
  ABISELECT(40,28),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C3[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20479C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20479C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C68S20479C39S20479C148S20479C2__A2__8S20479C1[] = {
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C6[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C78S20479C68S20479C39S20479C148S20479C2__A5__8S20479C1[] = {
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C7__9S20479C148S20479C2__8S20479C1[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI9S20479C14[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20479C2D1Ev,_ZTv0_n24_N8S20479C2D1Ev)();
extern void ABISELECT(_ZThn72_N8S20479C2D1Ev,_ZThn52_N8S20479C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20479C2D0Ev,_ZTv0_n24_N8S20479C2D0Ev)();
extern void ABISELECT(_ZThn72_N8S20479C2D0Ev,_ZThn52_N8S20479C2D0Ev)() __attribute__((weak));
extern void _ZN8S20479C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C3__8S20479C2__8S20479C1[] = {
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI8S20479C2[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20479C2D1Ev,_ZTv0_n24_N8S20479C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20479C2D0Ev,_ZTv0_n24_N8S20479C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C9__8S20479C2__8S20479C1[] = {
  0,
  -8,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S20479C2[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZThn24_N8S20479C2D1Ev,_ZThn16_N8S20479C2D1Ev)();
extern void ABISELECT(_ZThn24_N8S20479C2D0Ev,_ZThn16_N8S20479C2D0Ev)();
extern void _ZN8S20479C32v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C118S20479C8__8S20479C2__8S20479C1[] = {
  ABISELECT(104,72),
  ABISELECT(-24,-16),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(64,48),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20479C2[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20479C2D1Ev,_ZThn16_N8S20479C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S20479C2D0Ev,_ZThn16_N8S20479C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C132v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C13__8S20479C2__8S20479C1[] = {
  0,
  0,
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S20479C2[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C132v3Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20479C2D1Ev,_ZTv0_n24_N8S20479C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S20479C2D1Ev,_ZThn88_N8S20479C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20479C2D0Ev,_ZTv0_n24_N8S20479C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S20479C2D0Ev,_ZThn88_N8S20479C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20479C10__A1__8S20479C2__8S20479C1[] = {
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S20479C2[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20479C2D1Ev,_ZTv0_n24_N8S20479C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20479C2D0Ev,_ZTv0_n24_N8S20479C2D0Ev),
};
extern void _ZN8S20479C72v1Ev();
extern void ABISELECT(_ZThn48_N8S20479C2D1Ev,_ZThn36_N8S20479C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20479C2D0Ev,_ZThn36_N8S20479C2D0Ev)();
extern void _ZN8S20479C32v2Ev();
extern void _ZN9S20479C142v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C14__8S20479C2__8S20479C1[] = {
  ABISELECT(-48,-36),
  ABISELECT(40,28),
  ABISELECT(40,28),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S20479C2[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20479C2D1Ev,_ZThn36_N8S20479C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20479C2D0Ev,_ZThn36_N8S20479C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
  (VTBL_ENTRY)&_ZN9S20479C142v4Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN8S20479C3D1Ev();
extern void _ZN8S20479C3D0Ev();
extern void _ZN8S20479C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C3__8S20479C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C3[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN8S20479C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20479C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20479C32v2Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C68S20479C3__8S20479C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C6[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C78S20479C68S20479C3__8S20479C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C9__8S20479C1[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C9[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C78S20479C9__A1__8S20479C1[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C7__A2__8S20479C1[] = {
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C132v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C13__8S20479C1[] = {
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20479C13[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C132v3Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C99S20479C13__A1__8S20479C1[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C9[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C78S20479C99S20479C13__A4__8S20479C1[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20479C7[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C7__A1__9S20479C13__8S20479C1[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(112,80),
  (VTBL_ENTRY)&(_ZTI9S20479C13[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
extern void _ZN8S20479C72v1Ev();
extern void _ZN9S20479C10D1Ev();
extern void _ZN9S20479C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20479C10__A1__8S20479C1[] = {
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20479C10[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
  (VTBL_ENTRY)&_ZN9S20479C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20479C10D0Ev,
};
extern void _ZN8S20479C72v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20479C7__9S20479C10__A1__8S20479C1[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI9S20479C10[0]),
  (VTBL_ENTRY)&_ZN8S20479C72v1Ev,
};
static  VTT_ENTRY vtt_S20479C1[] = {
  {&(_ZTV8S20479C1[10]),  10,84},
  {&(_tg__ZTV8S20479C3__A__8S20479C1[4]),  4,8},
  {&(_tg__ZTV8S20479C68S20479C3__A3__8S20479C1[3]),  3,4},
  {&(_tg__ZTV8S20479C78S20479C68S20479C3__A6__8S20479C1[3]),  3,4},
  {&(_ZTV8S20479C1[27]),  27,84},
  {&(_ZTV8S20479C1[58]),  58,84},
  {&(_ZTV8S20479C1[66]),  66,84},
  {&(_ZTV8S20479C1[27]),  27,84},
  {&(_ZTV8S20479C1[37]),  37,84},
  {&(_ZTV8S20479C1[73]),  73,84},
  {&(_ZTV8S20479C1[81]),  81,84},
  {&(_ZTV8S20479C1[46]),  46,84},
  {&(_tg__ZTV8S20479C2__8S20479C1[10]),  10,13},
  {&(_tg__ZTV8S20479C88S20479C2__8S20479C1[10]),  10,13},
  {&(_tg__ZTV9S20479C108S20479C88S20479C2__8S20479C1[5]),  5,8},
  {&(_tg__ZTV9S20479C108S20479C88S20479C2__8S20479C1[5]),  5,8},
  {&(_tg__ZTV9S20479C118S20479C88S20479C2__8S20479C1[7]),  7,11},
  {&(_tg__ZTV8S20479C39S20479C118S20479C88S20479C2__A1__8S20479C1[4]),  4,8},
  {&(_tg__ZTV8S20479C68S20479C39S20479C118S20479C88S20479C2__A1__8S20479C1[3]),  3,4},
  {&(_tg__ZTV8S20479C78S20479C68S20479C39S20479C118S20479C88S20479C2__A3__8S20479C1[3]),  3,4},
  {&(_tg__ZTV9S20479C13__9S20479C118S20479C88S20479C2__8S20479C1[6]),  6,8},
  {&(_tg__ZTV8S20479C7__A2__9S20479C118S20479C88S20479C2__8S20479C1[4]),  4,5},
  {&(_tg__ZTV9S20479C10__9S20479C118S20479C88S20479C2__8S20479C1[6]),  6,9},
  {&(_tg__ZTV8S20479C9__8S20479C88S20479C2__8S20479C1[4]),  4,5},
  {&(_tg__ZTV8S20479C88S20479C2__8S20479C1[10]),  10,13},
  {&(_tg__ZTV8S20479C3__8S20479C88S20479C2__8S20479C1[7]),  7,11},
  {&(_tg__ZTV9S20479C11__8S20479C88S20479C2__8S20479C1[7]),  7,11},
  {&(_tg__ZTV9S20479C13__8S20479C88S20479C2__8S20479C1[6]),  6,8},
  {&(_tg__ZTV9S20479C10__A1__8S20479C88S20479C2__8S20479C1[6]),  6,9},
  {&(_tg__ZTV9S20479C148S20479C2__8S20479C1[5]),  5,10},
  {&(_tg__ZTV8S20479C39S20479C148S20479C2__A2__8S20479C1[4]),  4,8},
  {&(_tg__ZTV8S20479C68S20479C39S20479C148S20479C2__A2__8S20479C1[3]),  3,4},
  {&(_tg__ZTV8S20479C78S20479C68S20479C39S20479C148S20479C2__A5__8S20479C1[3]),  3,4},
  {&(_tg__ZTV8S20479C7__9S20479C148S20479C2__8S20479C1[4]),  4,5},
  {&(_tg__ZTV8S20479C3__8S20479C2__8S20479C1[7]),  7,11},
  {&(_tg__ZTV8S20479C9__8S20479C2__8S20479C1[4]),  4,5},
  {&(_tg__ZTV8S20479C2__8S20479C1[10]),  10,13},
  {&(_tg__ZTV9S20479C118S20479C8__8S20479C2__8S20479C1[7]),  7,11},
  {&(_tg__ZTV9S20479C13__8S20479C2__8S20479C1[6]),  6,8},
  {&(_tg__ZTV9S20479C10__A1__8S20479C2__8S20479C1[6]),  6,9},
  {&(_tg__ZTV9S20479C14__8S20479C2__8S20479C1[5]),  5,10},
  {&(_tg__ZTV8S20479C3__8S20479C1[4]),  4,8},
  {&(_tg__ZTV8S20479C68S20479C3__8S20479C1[3]),  3,4},
  {&(_tg__ZTV8S20479C78S20479C68S20479C3__8S20479C1[3]),  3,4},
  {&(_tg__ZTV8S20479C9__8S20479C1[3]),  3,4},
  {&(_tg__ZTV8S20479C78S20479C9__A1__8S20479C1[3]),  3,4},
  {&(_tg__ZTV8S20479C7__A2__8S20479C1[3]),  3,4},
  {&(_tg__ZTV9S20479C13__8S20479C1[4]),  4,6},
  {&(_tg__ZTV8S20479C99S20479C13__A1__8S20479C1[3]),  3,4},
  {&(_tg__ZTV8S20479C78S20479C99S20479C13__A4__8S20479C1[3]),  3,4},
  {&(_tg__ZTV8S20479C7__A1__9S20479C13__8S20479C1[4]),  4,5},
  {&(_tg__ZTV9S20479C10__A1__8S20479C1[5]),  5,8},
  {&(_tg__ZTV8S20479C7__9S20479C10__A1__8S20479C1[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S20479C1[];
extern  VTBL_ENTRY _ZTV8S20479C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20479C1[];
static VTBL_ENTRY alt_thunk_names83[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20479C2D0Ev,_ZTv0_n24_N8S20479C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20479C2D0Ev,_ZThn88_N8S20479C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20479C2D0Ev,_ZThn52_N8S20479C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20479C2D1Ev,_ZTv0_n24_N8S20479C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20479C2D1Ev,_ZThn88_N8S20479C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20479C2D1Ev,_ZThn52_N8S20479C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20479C8D0Ev,_ZTv0_n24_N8S20479C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20479C8D0Ev,_ZThn88_N8S20479C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20479C8D0Ev,_ZThn52_N8S20479C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20479C8D1Ev,_ZTv0_n24_N8S20479C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20479C8D1Ev,_ZThn88_N8S20479C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20479C8D1Ev,_ZThn52_N8S20479C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20479C11D0Ev,_ZTv0_n24_N9S20479C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20479C11D0Ev,_ZThn72_N9S20479C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20479C11D1Ev,_ZTv0_n24_N9S20479C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20479C11D1Ev,_ZThn72_N9S20479C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20479C1D0Ev,_ZTv0_n24_N8S20479C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S20479C1D0Ev,_ZThn108_N8S20479C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20479C1D0Ev,_ZThn72_N8S20479C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20479C1D1Ev,_ZTv0_n24_N8S20479C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S20479C1D1Ev,_ZThn108_N8S20479C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20479C1D1Ev,_ZThn72_N8S20479C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20479C1D0Ev,_ZTv0_n44_N8S20479C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20479C1D0Ev,_ZThn20_N8S20479C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20479C1D1Ev,_ZTv0_n44_N8S20479C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20479C1D1Ev,_ZThn20_N8S20479C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20479C1 = {  "S20479C1", // class name
  bases_S20479C1, 46,
  &(vtc_S20479C1[0]), // expected_vtbl_contents
  &(vtt_S20479C1[0]), // expected_vtt_contents
  ABISELECT(176,124), // object size
  NSPAIRA(_ZTI8S20479C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20479C1),84, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20479C1),53, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names83,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20727C2_nt  : virtual S731C17_nt {
  virtual  ~S20727C2_nt(); // _ZN11S20727C2_ntD2Ev
  virtual void  v1(); // _ZN11S20727C2_nt2v1Ev
  S20727C2_nt(); // tgen
};
//SIG(-1 S20727C2_nt) C1{ VBC2{ m} vd v1}


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

//skip512 S20727C2_nt

#else // __cplusplus

extern void _ZN11S20727C2_ntC1Ev();
extern void _ZN11S20727C2_ntD2Ev();
Name_Map name_map_S20727C2_nt[] = {
  NSPAIR(_ZN11S20727C2_ntC1Ev),
  NSPAIR(_ZN11S20727C2_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S20727C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI11S20727C2_nt[];
extern void _ZN11S20727C2_ntD1Ev();
extern void _ZN11S20727C2_ntD0Ev();
extern void _ZN11S20727C2_nt2v1Ev();
static  VTBL_ENTRY vtc_S20727C2_nt[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S20727C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S20727C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20727C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S20727C2_nt2v1Ev,
};
extern VTBL_ENTRY _ZTV11S20727C2_nt[];
static  VTT_ENTRY vtt_S20727C2_nt[] = {
  {&(_ZTV11S20727C2_nt[3]),  3,6},
};
extern VTBL_ENTRY _ZTI11S20727C2_nt[];
VTBL_ENTRY *P__ZTI11S20727C2_nt = _ZTI11S20727C2_nt; 
extern  VTBL_ENTRY _ZTV11S20727C2_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20727C2_nt[];
Class_Descriptor cd_S20727C2_nt = {  "S20727C2_nt", // class name
  bases_S20727C2_nt, 1,
  &(vtc_S20727C2_nt[0]), // expected_vtbl_contents
  &(vtt_S20727C2_nt[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S20727C2_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV11S20727C2_nt),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S20727C2_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  S20727C7  : S343C6_nt {
  virtual  ~S20727C7(); // _ZN8S20727C7D1Ev
  S20727C7(); // tgen
};
//SIG(-1 S20727C7) C1{ BC2{ vd m} vd}


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

static void Test_S20727C7()
{
  extern Class_Descriptor cd_S20727C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20727C7, buf);
    S20727C7 *dp, &lv = *(dp=new (buf) S20727C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20727C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20727C7)");
    check_base_class_offset(lv, (S343C6_nt*), 0, "S20727C7");
    test_class_info(&lv, &cd_S20727C7);
    dp->~S20727C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20727C7(Test_S20727C7, "S20727C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20727C7C1Ev();
extern void _ZN8S20727C7D1Ev();
Name_Map name_map_S20727C7[] = {
  NSPAIR(_ZN8S20727C7C1Ev),
  NSPAIR(_ZN8S20727C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
static Base_Class bases_S20727C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20727C7[];
extern void _ZN8S20727C7D1Ev();
extern void _ZN8S20727C7D0Ev();
static  VTBL_ENTRY vtc_S20727C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20727C7[0]),
  (VTBL_ENTRY)&_ZN8S20727C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20727C7D0Ev,
};
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
Class_Descriptor cd_S20727C7 = {  "S20727C7", // class name
  bases_S20727C7, 1,
  &(vtc_S20727C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20727C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20727C7),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  S20727C6  : S20727C7 {
  ::S20727C7 s20727c6f0;
  virtual  ~S20727C6(); // _ZN8S20727C6D1Ev
  S20727C6(); // tgen
};
//SIG(-1 S20727C6) C1{ BC2{ BC3{ vd m} vd} vd FC2}


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

static void Test_S20727C6()
{
  extern Class_Descriptor cd_S20727C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20727C6, buf);
    S20727C6 *dp, &lv = *(dp=new (buf) S20727C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20727C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20727C6)");
    check_base_class_offset(lv, (S343C6_nt*)(S20727C7*), 0, "S20727C6");
    check_base_class_offset(lv, (S20727C7*), 0, "S20727C6");
    check_field_offset(lv, s20727c6f0, ABISELECT(8,4), "S20727C6.s20727c6f0");
    test_class_info(&lv, &cd_S20727C6);
    dp->~S20727C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20727C6(Test_S20727C6, "S20727C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20727C6C1Ev();
extern void _ZN8S20727C6D1Ev();
Name_Map name_map_S20727C6[] = {
  NSPAIR(_ZN8S20727C6C1Ev),
  NSPAIR(_ZN8S20727C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20727C7;
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
static Base_Class bases_S20727C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20727C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S20727C6[];
extern void _ZN8S20727C6D1Ev();
extern void _ZN8S20727C6D0Ev();
static  VTBL_ENTRY vtc_S20727C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20727C6[0]),
  (VTBL_ENTRY)&_ZN8S20727C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20727C6D0Ev,
};
extern VTBL_ENTRY _ZTI8S20727C6[];
extern  VTBL_ENTRY _ZTV8S20727C6[];
Class_Descriptor cd_S20727C6 = {  "S20727C6", // class name
  bases_S20727C6, 2,
  &(vtc_S20727C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20727C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20727C6),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  S20727C9  : S20727C7 , S343C6_nt , S731C17_nt , virtual S3461C5_nt {
  virtual  ~S20727C9(); // _ZN8S20727C9D2Ev
  S20727C9(); // tgen
};
//SIG(-1 S20727C9) C1{ BC2{ BC3{ vd m} vd} BC3 BC4{ m} VBC5{ m FL} vd}


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

static void Test_S20727C9()
{
  extern Class_Descriptor cd_S20727C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20727C9, buf);
    S20727C9 *dp, &lv = *(dp=new (buf) S20727C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20727C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20727C9)");
    check_base_class_offset(lv, (S343C6_nt*)(S20727C7*), 0, "S20727C9");
    check_base_class_offset(lv, (S20727C7*), 0, "S20727C9");
    /*is_ambiguous_... S20727C9::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*), ABISELECT(8,4), "S20727C9");
    check_base_class_offset(lv, (S731C17_nt*), 0, "S20727C9");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(16,8), "S20727C9");
    test_class_info(&lv, &cd_S20727C9);
    dp->~S20727C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20727C9(Test_S20727C9, "S20727C9", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S20727C9C1Ev();
extern void _ZN8S20727C9D2Ev();
Name_Map name_map_S20727C9[] = {
  NSPAIR(_ZN8S20727C9C1Ev),
  NSPAIR(_ZN8S20727C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20727C7;
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
static Base_Class bases_S20727C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20727C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S343C6_nt,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20727C9[];
extern void _ZN8S20727C9D1Ev();
extern void _ZN8S20727C9D0Ev();
extern void ABISELECT(_ZThn8_N8S20727C9D1Ev,_ZThn4_N8S20727C9D1Ev)();
extern void ABISELECT(_ZThn8_N8S20727C9D0Ev,_ZThn4_N8S20727C9D0Ev)();
static  VTBL_ENTRY vtc_S20727C9[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20727C9[0]),
  (VTBL_ENTRY)&_ZN8S20727C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20727C9D0Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20727C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S20727C9D1Ev,_ZThn4_N8S20727C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S20727C9D0Ev,_ZThn4_N8S20727C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S20727C9[];
static  VTT_ENTRY vtt_S20727C9[] = {
  {&(_ZTV8S20727C9[3]),  3,9},
};
extern VTBL_ENTRY _ZTI8S20727C9[];
extern  VTBL_ENTRY _ZTV8S20727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20727C9[];
Class_Descriptor cd_S20727C9 = {  "S20727C9", // class name
  bases_S20727C9, 5,
  &(vtc_S20727C9[0]), // expected_vtbl_contents
  &(vtt_S20727C9[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S20727C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20727C9),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20727C9),1, //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  S20727C5  : S20727C6 , virtual S20727C9 {
  int s20727c5f0;
  ~S20727C5(); // tgen
  S20727C5(); // tgen
};
//SIG(-1 S20727C5) C1{ BC2{ BC3{ BC4{ vd m} vd} vd FC3} VBC5{ BC3 BC4 BC6{ m} VBC7{ m FL} vd} Fi}


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

static void Test_S20727C5()
{
  extern Class_Descriptor cd_S20727C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S20727C5, buf);
    S20727C5 *dp, &lv = *(dp=new (buf) S20727C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S20727C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20727C5)");
    check_base_class_offset(lv, (S343C6_nt*)(S20727C7*)(S20727C6*), 0, "S20727C5");
    check_base_class_offset(lv, (S20727C7*)(S20727C6*), 0, "S20727C5");
    check_base_class_offset(lv, (S20727C6*), 0, "S20727C5");
    check_base_class_offset(lv, (S343C6_nt*)(S20727C7*)(S20727C9*), ABISELECT(24,12), "S20727C5");
    check_base_class_offset(lv, (S20727C7*)(S20727C9*), ABISELECT(24,12), "S20727C5");
    /*is_ambiguous_... S20727C9::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S20727C9*), ABISELECT(32,16), "S20727C5");
    check_base_class_offset(lv, (S731C17_nt*)(S20727C9*), ABISELECT(24,12), "S20727C5");
    check_base_class_offset(lv, (S3461C5_nt*)(S20727C9*), ABISELECT(40,20), "S20727C5");
    check_base_class_offset(lv, (S20727C9*), ABISELECT(24,12), "S20727C5");
    check_field_offset(lv, s20727c5f0, ABISELECT(16,8), "S20727C5.s20727c5f0");
    test_class_info(&lv, &cd_S20727C5);
    dp->~S20727C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20727C5(Test_S20727C5, "S20727C5", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S20727C5C1Ev();
extern void _ZN8S20727C5D1Ev();
Name_Map name_map_S20727C5[] = {
  NSPAIR(_ZN8S20727C5C1Ev),
  NSPAIR(_ZN8S20727C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20727C7;
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
extern Class_Descriptor cd_S20727C6;
extern VTBL_ENTRY _ZTI8S20727C6[];
extern  VTBL_ENTRY _ZTV8S20727C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20727C7;
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S20727C9;
extern VTBL_ENTRY _ZTI8S20727C9[];
extern  VTBL_ENTRY _ZTV8S20727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20727C9[];
static Base_Class bases_S20727C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S20727C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20727C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S343C6_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_S20727C7,    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
    8, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(32,16), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    8, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20727C9,    ABISELECT(24,12), //bcp->offset
    6, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20727C5[];
extern void _ZN8S20727C5D1Ev();
extern void _ZN8S20727C5D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S20727C5D1Ev,_ZTv0_n16_N8S20727C5D1Ev)();
extern void ABISELECT(_ZThn24_N8S20727C5D1Ev,_ZThn12_N8S20727C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20727C5D0Ev,_ZTv0_n16_N8S20727C5D0Ev)();
extern void ABISELECT(_ZThn24_N8S20727C5D0Ev,_ZThn12_N8S20727C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n32_N8S20727C5D1Ev,_ZTvn4_n16_N8S20727C5D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N8S20727C5D0Ev,_ZTvn4_n16_N8S20727C5D0Ev)();
static  VTBL_ENTRY vtc_S20727C5[] = {
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20727C5[0]),
  (VTBL_ENTRY)&_ZN8S20727C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20727C5D0Ev,
  ABISELECT(-24,-12),
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20727C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20727C5D1Ev,_ZTv0_n16_N8S20727C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20727C5D0Ev,_ZTv0_n16_N8S20727C5D0Ev),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20727C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20727C5D1Ev,_ZTvn4_n16_N8S20727C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20727C5D0Ev,_ZTvn4_n16_N8S20727C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S20727C5[];
extern void _ZN8S20727C9D1Ev();
extern void _ZN8S20727C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20727C9__8S20727C5[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20727C9[0]),
  (VTBL_ENTRY)&_ZN8S20727C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20727C9D0Ev,
};
static  VTT_ENTRY vtt_S20727C5[] = {
  {&(_ZTV8S20727C5[4]),  4,16},
  {&(_ZTV8S20727C5[10]),  10,16},
  {&(_ZTV8S20727C5[14]),  14,16},
  {&(_tg__ZTV8S20727C9__8S20727C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20727C5[];
extern  VTBL_ENTRY _ZTV8S20727C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20727C5[];
static VTBL_ENTRY alt_thunk_names84[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20727C5D0Ev,_ZTv0_n16_N8S20727C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20727C5D0Ev,_ZThn12_N8S20727C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20727C5D1Ev,_ZTv0_n16_N8S20727C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20727C5D1Ev,_ZThn12_N8S20727C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20727C5 = {  "S20727C5", // class name
  bases_S20727C5, 9,
  &(vtc_S20727C5[0]), // expected_vtbl_contents
  &(vtt_S20727C5[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S20727C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20727C5),16, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20727C5),4, //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  S20727C4  : S20727C5 , virtual S6441C4_nt , virtual S20727C7 , S343C9_nt {
  ~S20727C4(); // tgen
  S20727C4(); // tgen
};
//SIG(-1 S20727C4) C1{ BC2{ BC3{ BC4{ BC5{ vd m} vd} vd FC4} VBC6{ BC4 BC5 BC7{ m} VBC8{ m FL} vd} Fi} VBC9{ m Fp} VBC4 BC10{ m FC11{ BC5 vd}}}


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

static void Test_S20727C4()
{
  extern Class_Descriptor cd_S20727C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S20727C4, buf);
    S20727C4 *dp, &lv = *(dp=new (buf) S20727C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S20727C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20727C4)");
    check_base_class_offset(lv, (S343C6_nt*)(S20727C7*)(S20727C6*)(S20727C5*), 0, "S20727C4");
    check_base_class_offset(lv, (S20727C7*)(S20727C6*)(S20727C5*), 0, "S20727C4");
    check_base_class_offset(lv, (S20727C6*)(S20727C5*), 0, "S20727C4");
    check_base_class_offset(lv, (S343C6_nt*)(S20727C7*)(S20727C9*), ABISELECT(32,16), "S20727C4");
    check_base_class_offset(lv, (S20727C7*)(S20727C9*), ABISELECT(32,16), "S20727C4");
    /*is_ambiguous_... S20727C9::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S20727C9*), ABISELECT(40,20), "S20727C4");
    check_base_class_offset(lv, (S731C17_nt*)(S20727C9*), ABISELECT(32,16), "S20727C4");
    check_base_class_offset(lv, (S3461C5_nt*)(S20727C9*), ABISELECT(48,24), "S20727C4");
    check_base_class_offset(lv, (S20727C9*)(S20727C5*), ABISELECT(32,16), "S20727C4");
    check_base_class_offset(lv, (S20727C5*), 0, "S20727C4");
    check_base_class_offset(lv, (S6441C4_nt*), ABISELECT(56,32), "S20727C4");
    /*is_ambiguous_... S20727C4::S20727C7 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S20727C7*), ABISELECT(64,36), "S20727C4");
    /*is_ambiguous_... S20727C4::S20727C7 */ AMB_check_base_class_offset(lv, (S20727C7*), ABISELECT(64,36), "S20727C4");
    check_base_class_offset(lv, (S343C9_nt*), ABISELECT(24,12), "S20727C4");
    test_class_info(&lv, &cd_S20727C4);
    dp->~S20727C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20727C4(Test_S20727C4, "S20727C4", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN8S20727C4C1Ev();
extern void _ZN8S20727C4D1Ev();
Name_Map name_map_S20727C4[] = {
  NSPAIR(_ZN8S20727C4C1Ev),
  NSPAIR(_ZN8S20727C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20727C7;
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
extern Class_Descriptor cd_S20727C6;
extern VTBL_ENTRY _ZTI8S20727C6[];
extern  VTBL_ENTRY _ZTV8S20727C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20727C7;
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S20727C9;
extern VTBL_ENTRY _ZTI8S20727C9[];
extern  VTBL_ENTRY _ZTV8S20727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20727C9[];
extern Class_Descriptor cd_S20727C5;
extern VTBL_ENTRY _ZTI8S20727C5[];
extern  VTBL_ENTRY _ZTV8S20727C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20727C5[];
extern Class_Descriptor cd_S6441C4_nt;
extern VTBL_ENTRY _ZTI10S6441C4_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20727C7;
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
extern Class_Descriptor cd_S343C9_nt;
extern VTBL_ENTRY _ZTI9S343C9_nt[];
static Base_Class bases_S20727C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S20727C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S20727C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S343C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20727C7,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(40,20), //bcp->offset
    14, //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
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20727C9,    ABISELECT(32,16), //bcp->offset
    8, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20727C5,    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_S6441C4_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20727C7,    ABISELECT(64,36), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C9_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20727C4[];
extern void _ZN8S20727C4D1Ev();
extern void _ZN8S20727C4D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S20727C4D1Ev,_ZTv0_n16_N8S20727C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S20727C4D1Ev,_ZThn16_N8S20727C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20727C4D0Ev,_ZTv0_n16_N8S20727C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S20727C4D0Ev,_ZThn16_N8S20727C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n32_N8S20727C4D1Ev,_ZTvn4_n16_N8S20727C4D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N8S20727C4D0Ev,_ZTvn4_n16_N8S20727C4D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20727C4D1Ev,_ZTv0_n12_N8S20727C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S20727C4D1Ev,_ZThn36_N8S20727C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20727C4D0Ev,_ZTv0_n12_N8S20727C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S20727C4D0Ev,_ZThn36_N8S20727C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20727C4[] = {
  ABISELECT(64,36),
  ABISELECT(56,32),
  ABISELECT(48,24),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20727C4[0]),
  (VTBL_ENTRY)&_ZN8S20727C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20727C4D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20727C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20727C4D1Ev,_ZTv0_n16_N8S20727C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20727C4D0Ev,_ZTv0_n16_N8S20727C4D0Ev),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20727C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20727C4D1Ev,_ZTvn4_n16_N8S20727C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20727C4D0Ev,_ZTvn4_n16_N8S20727C4D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20727C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20727C4D1Ev,_ZTv0_n12_N8S20727C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20727C4D0Ev,_ZTv0_n12_N8S20727C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S20727C4[];
extern void _ZN8S20727C5D1Ev();
extern void _ZN8S20727C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20727C5__8S20727C4[] = {
  ABISELECT(48,24),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20727C5[0]),
  (VTBL_ENTRY)&_ZN8S20727C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20727C5D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20727C5D1Ev,_ZTv0_n16_N8S20727C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S20727C5D1Ev,_ZThn16_N8S20727C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20727C5D0Ev,_ZTv0_n16_N8S20727C5D0Ev)();
extern void ABISELECT(_ZThn32_N8S20727C5D0Ev,_ZThn16_N8S20727C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20727C9__8S20727C5__8S20727C4[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20727C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20727C5D1Ev,_ZTv0_n16_N8S20727C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20727C5D0Ev,_ZTv0_n16_N8S20727C5D0Ev),
};
extern void ABISELECT(_ZTvn8_n32_N8S20727C5D1Ev,_ZTvn4_n16_N8S20727C5D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N8S20727C5D0Ev,_ZTvn4_n16_N8S20727C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt8S20727C9__A2__8S20727C5__8S20727C4[] = {
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20727C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20727C5D1Ev,_ZTvn4_n16_N8S20727C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20727C5D0Ev,_ZTvn4_n16_N8S20727C5D0Ev),
};
extern void _ZN8S20727C9D1Ev();
extern void _ZN8S20727C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20727C9__8S20727C4[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20727C9[0]),
  (VTBL_ENTRY)&_ZN8S20727C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20727C9D0Ev,
};
static  VTT_ENTRY vtt_S20727C4[] = {
  {&(_ZTV8S20727C4[6]),  6,23},
  {&(_tg__ZTV8S20727C5__8S20727C4[4]),  4,6},
  {&(_tg__ZTV8S20727C9__8S20727C5__8S20727C4[4]),  4,6},
  {&(_tg__ZTV9S343C6_nt8S20727C9__A2__8S20727C5__8S20727C4[2]),  2,4},
  {&(_ZTV8S20727C4[12]),  12,23},
  {&(_ZTV8S20727C4[16]),  16,23},
  {&(_ZTV8S20727C4[21]),  21,23},
  {&(_tg__ZTV8S20727C9__8S20727C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20727C4[];
extern  VTBL_ENTRY _ZTV8S20727C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20727C4[];
static VTBL_ENTRY alt_thunk_names85[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20727C5D0Ev,_ZTv0_n16_N8S20727C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20727C5D0Ev,_ZThn16_N8S20727C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20727C5D1Ev,_ZTv0_n16_N8S20727C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20727C5D1Ev,_ZThn16_N8S20727C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20727C4D0Ev,_ZTv0_n12_N8S20727C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20727C4D0Ev,_ZThn36_N8S20727C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20727C4D1Ev,_ZTv0_n12_N8S20727C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20727C4D1Ev,_ZThn36_N8S20727C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20727C4D0Ev,_ZTv0_n16_N8S20727C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20727C4D0Ev,_ZThn16_N8S20727C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20727C4D1Ev,_ZTv0_n16_N8S20727C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20727C4D1Ev,_ZThn16_N8S20727C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20727C4 = {  "S20727C4", // class name
  bases_S20727C4, 14,
  &(vtc_S20727C4[0]), // expected_vtbl_contents
  &(vtt_S20727C4[0]), // expected_vtt_contents
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI8S20727C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20727C4),23, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20727C4),8, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names85,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20727C15  : S20727C7 {
  virtual  ~S20727C15(); // _ZN9S20727C15D1Ev
  S20727C15(); // tgen
};
//SIG(-1 S20727C15) C1{ BC2{ BC3{ vd m} vd} vd}


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

static void Test_S20727C15()
{
  extern Class_Descriptor cd_S20727C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20727C15, buf);
    S20727C15 *dp, &lv = *(dp=new (buf) S20727C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20727C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20727C15)");
    check_base_class_offset(lv, (S343C6_nt*)(S20727C7*), 0, "S20727C15");
    check_base_class_offset(lv, (S20727C7*), 0, "S20727C15");
    test_class_info(&lv, &cd_S20727C15);
    dp->~S20727C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20727C15(Test_S20727C15, "S20727C15", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S20727C15C1Ev();
extern void _ZN9S20727C15D1Ev();
Name_Map name_map_S20727C15[] = {
  NSPAIR(_ZN9S20727C15C1Ev),
  NSPAIR(_ZN9S20727C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20727C7;
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
static Base_Class bases_S20727C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20727C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S20727C15[];
extern void _ZN9S20727C15D1Ev();
extern void _ZN9S20727C15D0Ev();
static  VTBL_ENTRY vtc_S20727C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20727C15[0]),
  (VTBL_ENTRY)&_ZN9S20727C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20727C15D0Ev,
};
extern VTBL_ENTRY _ZTI9S20727C15[];
extern  VTBL_ENTRY _ZTV9S20727C15[];
Class_Descriptor cd_S20727C15 = {  "S20727C15", // class name
  bases_S20727C15, 2,
  &(vtc_S20727C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S20727C15),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20727C15),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20727C16_nt  : S20727C6 , S20727C15 {
  __tsi64 s20727c16f0;
  int s20727c16f1;
  ~S20727C16_nt(); // tgen
  S20727C16_nt(); // tgen
};
//SIG(-1 S20727C16_nt) C1{ BC2{ BC3{ BC4{ vd m} vd} vd FC3} BC5{ BC3 vd} FL Fi}


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

//skip512 S20727C16_nt

#else // __cplusplus

extern void _ZN12S20727C16_ntC1Ev();
extern void _ZN12S20727C16_ntD1Ev();
Name_Map name_map_S20727C16_nt[] = {
  NSPAIR(_ZN12S20727C16_ntC1Ev),
  NSPAIR(_ZN12S20727C16_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20727C7;
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
extern Class_Descriptor cd_S20727C6;
extern VTBL_ENTRY _ZTI8S20727C6[];
extern  VTBL_ENTRY _ZTV8S20727C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20727C7;
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
extern Class_Descriptor cd_S20727C15;
extern VTBL_ENTRY _ZTI9S20727C15[];
extern  VTBL_ENTRY _ZTV9S20727C15[];
static Base_Class bases_S20727C16_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20727C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20727C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S343C6_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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20727C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20727C15,    ABISELECT(16,8), //bcp->offset
    4, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI12S20727C16_nt[];
extern void _ZN12S20727C16_ntD1Ev();
extern void _ZN12S20727C16_ntD0Ev();
extern void ABISELECT(_ZThn16_N12S20727C16_ntD1Ev,_ZThn8_N12S20727C16_ntD1Ev)();
extern void ABISELECT(_ZThn16_N12S20727C16_ntD0Ev,_ZThn8_N12S20727C16_ntD0Ev)();
static  VTBL_ENTRY vtc_S20727C16_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S20727C16_nt[0]),
  (VTBL_ENTRY)&_ZN12S20727C16_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20727C16_ntD0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI12S20727C16_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N12S20727C16_ntD1Ev,_ZThn8_N12S20727C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N12S20727C16_ntD0Ev,_ZThn8_N12S20727C16_ntD0Ev),
};
extern VTBL_ENTRY _ZTI12S20727C16_nt[];
VTBL_ENTRY *P__ZTI12S20727C16_nt = _ZTI12S20727C16_nt; 
extern  VTBL_ENTRY _ZTV12S20727C16_nt[];
Class_Descriptor cd_S20727C16_nt = {  "S20727C16_nt", // class name
  bases_S20727C16_nt, 6,
  &(vtc_S20727C16_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI12S20727C16_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV12S20727C16_nt),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20727C14_nt  : S20727C15 , virtual S343C6_nt , virtual S20727C7 , virtual S20727C16_nt {
  int s20727c14f0;
  ~S20727C14_nt(); // tgen
  S20727C14_nt(); // tgen
};
//SIG(-1 S20727C14_nt) C1{ BC2{ BC3{ BC4{ vd m} vd} vd} VBC4 VBC3 VBC5{ BC6{ BC3 vd FC3} BC2 FL Fi} Fi}


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

//skip512 S20727C14_nt

#else // __cplusplus

extern void _ZN12S20727C14_ntC1Ev();
extern void _ZN12S20727C14_ntD1Ev();
Name_Map name_map_S20727C14_nt[] = {
  NSPAIR(_ZN12S20727C14_ntC1Ev),
  NSPAIR(_ZN12S20727C14_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20727C7;
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
extern Class_Descriptor cd_S20727C15;
extern VTBL_ENTRY _ZTI9S20727C15[];
extern  VTBL_ENTRY _ZTV9S20727C15[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20727C7;
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20727C7;
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
extern Class_Descriptor cd_S20727C6;
extern VTBL_ENTRY _ZTI8S20727C6[];
extern  VTBL_ENTRY _ZTV8S20727C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20727C7;
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
extern Class_Descriptor cd_S20727C15;
extern VTBL_ENTRY _ZTI9S20727C15[];
extern  VTBL_ENTRY _ZTV9S20727C15[];
extern Class_Descriptor cd_S20727C16_nt;
extern VTBL_ENTRY _ZTI12S20727C16_nt[];
extern  VTBL_ENTRY _ZTV12S20727C16_nt[];
static Base_Class bases_S20727C14_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S20727C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S20727C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S343C6_nt,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_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
    5, //immediately_derived
  0, 0},
  {&cd_S20727C7,    ABISELECT(24,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20727C7,    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
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20727C6,    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
    12, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20727C7,    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
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20727C15,    ABISELECT(48,24), //bcp->offset
    22, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20727C16_nt,    ABISELECT(32,16), //bcp->offset
    17, //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
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI12S20727C14_nt[];
extern void _ZN12S20727C14_ntD1Ev();
extern void _ZN12S20727C14_ntD0Ev();
extern void ABISELECT(_ZTv0_n24_N12S20727C14_ntD1Ev,_ZTv0_n12_N12S20727C14_ntD1Ev)();
extern void ABISELECT(_ZThn16_N12S20727C14_ntD1Ev,_ZThn8_N12S20727C14_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20727C14_ntD0Ev,_ZTv0_n12_N12S20727C14_ntD0Ev)();
extern void ABISELECT(_ZThn16_N12S20727C14_ntD0Ev,_ZThn8_N12S20727C14_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20727C14_ntD1Ev,_ZTv0_n12_N12S20727C14_ntD1Ev)();
extern void ABISELECT(_ZThn24_N12S20727C14_ntD1Ev,_ZThn12_N12S20727C14_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20727C14_ntD0Ev,_ZTv0_n12_N12S20727C14_ntD0Ev)();
extern void ABISELECT(_ZThn24_N12S20727C14_ntD0Ev,_ZThn12_N12S20727C14_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20727C14_ntD1Ev,_ZTv0_n12_N12S20727C14_ntD1Ev)();
extern void ABISELECT(_ZThn32_N12S20727C14_ntD1Ev,_ZThn16_N12S20727C14_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20727C14_ntD0Ev,_ZTv0_n12_N12S20727C14_ntD0Ev)();
extern void ABISELECT(_ZThn32_N12S20727C14_ntD0Ev,_ZThn16_N12S20727C14_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n24_N12S20727C14_ntD1Ev,_ZTvn8_n12_N12S20727C14_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n24_N12S20727C14_ntD0Ev,_ZTvn8_n12_N12S20727C14_ntD0Ev)();
static  VTBL_ENTRY vtc_S20727C14_nt[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI12S20727C14_nt[0]),
  (VTBL_ENTRY)&_ZN12S20727C14_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20727C14_ntD0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI12S20727C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C14_ntD1Ev,_ZTv0_n12_N12S20727C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C14_ntD0Ev,_ZTv0_n12_N12S20727C14_ntD0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI12S20727C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C14_ntD1Ev,_ZTv0_n12_N12S20727C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C14_ntD0Ev,_ZTv0_n12_N12S20727C14_ntD0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI12S20727C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C14_ntD1Ev,_ZTv0_n12_N12S20727C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C14_ntD0Ev,_ZTv0_n12_N12S20727C14_ntD0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI12S20727C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N12S20727C14_ntD1Ev,_ZTvn8_n12_N12S20727C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N12S20727C14_ntD0Ev,_ZTvn8_n12_N12S20727C14_ntD0Ev),
};
extern VTBL_ENTRY _ZTV12S20727C14_nt[];
static  VTT_ENTRY vtt_S20727C14_nt[] = {
  {&(_ZTV12S20727C14_nt[5]),  5,26},
  {&(_ZTV12S20727C14_nt[10]),  10,26},
  {&(_ZTV12S20727C14_nt[15]),  15,26},
  {&(_ZTV12S20727C14_nt[20]),  20,26},
  {&(_ZTV12S20727C14_nt[24]),  24,26},
};
extern VTBL_ENTRY _ZTI12S20727C14_nt[];
VTBL_ENTRY *P__ZTI12S20727C14_nt = _ZTI12S20727C14_nt; 
extern  VTBL_ENTRY _ZTV12S20727C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20727C14_nt[];
static VTBL_ENTRY alt_thunk_names86[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N12S20727C14_ntD0Ev,_ZTv0_n12_N12S20727C14_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N12S20727C14_ntD0Ev,_ZThn16_N12S20727C14_ntD0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N12S20727C14_ntD0Ev,_ZThn12_N12S20727C14_ntD0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N12S20727C14_ntD0Ev,_ZThn8_N12S20727C14_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N12S20727C14_ntD1Ev,_ZTv0_n12_N12S20727C14_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N12S20727C14_ntD1Ev,_ZThn16_N12S20727C14_ntD1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N12S20727C14_ntD1Ev,_ZThn12_N12S20727C14_ntD1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N12S20727C14_ntD1Ev,_ZThn8_N12S20727C14_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20727C14_nt = {  "S20727C14_nt", // class name
  bases_S20727C14_nt, 13,
  &(vtc_S20727C14_nt[0]), // expected_vtbl_contents
  &(vtt_S20727C14_nt[0]), // expected_vtt_contents
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI12S20727C14_nt),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV12S20727C14_nt),26, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S20727C14_nt),5, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names86,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20727C13_nt  : virtual S731C17_nt , virtual S343C6_nt , virtual S20727C14_nt {
  ~S20727C13_nt(); // tgen
  S20727C13_nt(); // tgen
};
//SIG(-1 S20727C13_nt) C1{ VBC2{ m} VBC3{ vd m} VBC4{ BC5{ BC6{ BC3 vd} vd} VBC3 VBC6 VBC7{ BC8{ BC6 vd FC6} BC5 FL Fi} Fi}}


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

//skip512 S20727C13_nt

#else // __cplusplus

extern void _ZN12S20727C13_ntC1Ev();
extern void _ZN12S20727C13_ntD1Ev();
Name_Map name_map_S20727C13_nt[] = {
  NSPAIR(_ZN12S20727C13_ntC1Ev),
  NSPAIR(_ZN12S20727C13_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20727C7;
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
extern Class_Descriptor cd_S20727C15;
extern VTBL_ENTRY _ZTI9S20727C15[];
extern  VTBL_ENTRY _ZTV9S20727C15[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20727C7;
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20727C7;
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
extern Class_Descriptor cd_S20727C6;
extern VTBL_ENTRY _ZTI8S20727C6[];
extern  VTBL_ENTRY _ZTV8S20727C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20727C7;
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
extern Class_Descriptor cd_S20727C15;
extern VTBL_ENTRY _ZTI9S20727C15[];
extern  VTBL_ENTRY _ZTV9S20727C15[];
extern Class_Descriptor cd_S20727C16_nt;
extern VTBL_ENTRY _ZTI12S20727C16_nt[];
extern  VTBL_ENTRY _ZTV12S20727C16_nt[];
extern Class_Descriptor cd_S20727C14_nt;
extern VTBL_ENTRY _ZTI12S20727C14_nt[];
extern  VTBL_ENTRY _ZTV12S20727C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20727C14_nt[];
static Base_Class bases_S20727C13_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20727C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20727C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S343C6_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
    6, //immediately_derived
  0, 0},
  {&cd_S20727C7,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S343C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20727C7,    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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20727C6,    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
    13, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20727C7,    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
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20727C15,    ABISELECT(48,24), //bcp->offset
    28, //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
    13, //immediately_derived
  0, 0},
  {&cd_S20727C16_nt,    ABISELECT(32,16), //bcp->offset
    23, //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
    10, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20727C14_nt,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI12S20727C13_nt[];
extern void ABISELECT(_ZTv0_n24_N12S20727C13_ntD1Ev,_ZTv0_n12_N12S20727C13_ntD1Ev)();
extern void _ZN12S20727C13_ntD1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20727C13_ntD0Ev,_ZTv0_n12_N12S20727C13_ntD0Ev)();
extern void _ZN12S20727C13_ntD0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N12S20727C13_ntD1Ev,_ZTv0_n24_N12S20727C13_ntD1Ev)();
extern void ABISELECT(_ZThn8_N12S20727C13_ntD1Ev,_ZThn4_N12S20727C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N12S20727C13_ntD0Ev,_ZTv0_n24_N12S20727C13_ntD0Ev)();
extern void ABISELECT(_ZThn8_N12S20727C13_ntD0Ev,_ZThn4_N12S20727C13_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20727C13_ntD1Ev,_ZTv0_n12_N12S20727C13_ntD1Ev)();
extern void ABISELECT(_ZThn24_N12S20727C13_ntD1Ev,_ZThn12_N12S20727C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20727C13_ntD0Ev,_ZTv0_n12_N12S20727C13_ntD0Ev)();
extern void ABISELECT(_ZThn24_N12S20727C13_ntD0Ev,_ZThn12_N12S20727C13_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20727C13_ntD1Ev,_ZTv0_n12_N12S20727C13_ntD1Ev)();
extern void ABISELECT(_ZThn32_N12S20727C13_ntD1Ev,_ZThn16_N12S20727C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20727C13_ntD0Ev,_ZTv0_n12_N12S20727C13_ntD0Ev)();
extern void ABISELECT(_ZThn32_N12S20727C13_ntD0Ev,_ZThn16_N12S20727C13_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n24_N12S20727C13_ntD1Ev,_ZTvn8_n12_N12S20727C13_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n24_N12S20727C13_ntD0Ev,_ZTvn8_n12_N12S20727C13_ntD0Ev)();
static  VTBL_ENTRY vtc_S20727C13_nt[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20727C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C13_ntD1Ev,_ZTv0_n12_N12S20727C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C13_ntD0Ev,_ZTv0_n12_N12S20727C13_ntD0Ev),
  ABISELECT(-8,-4),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI12S20727C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N12S20727C13_ntD1Ev,_ZTv0_n24_N12S20727C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N12S20727C13_ntD0Ev,_ZTv0_n24_N12S20727C13_ntD0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI12S20727C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C13_ntD1Ev,_ZTv0_n12_N12S20727C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C13_ntD0Ev,_ZTv0_n12_N12S20727C13_ntD0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI12S20727C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C13_ntD1Ev,_ZTv0_n12_N12S20727C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C13_ntD0Ev,_ZTv0_n12_N12S20727C13_ntD0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI12S20727C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N12S20727C13_ntD1Ev,_ZTvn8_n12_N12S20727C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N12S20727C13_ntD0Ev,_ZTvn8_n12_N12S20727C13_ntD0Ev),
};
extern VTBL_ENTRY _ZTV12S20727C13_nt[];
extern void _ZN12S20727C14_ntD1Ev();
extern void _ZN12S20727C14_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20727C14_nt__12S20727C13_nt[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI12S20727C14_nt[0]),
  (VTBL_ENTRY)&_ZN12S20727C14_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20727C14_ntD0Ev,
};
extern void ABISELECT(_ZTv0_n24_N12S20727C14_ntD1Ev,_ZTv0_n12_N12S20727C14_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N12S20727C14_ntD0Ev,_ZTv0_n12_N12S20727C14_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt__A1__12S20727C14_nt__12S20727C13_nt[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI12S20727C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C14_ntD1Ev,_ZTv0_n12_N12S20727C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C14_ntD0Ev,_ZTv0_n12_N12S20727C14_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N12S20727C14_ntD1Ev,_ZTv0_n12_N12S20727C14_ntD1Ev)();
extern void ABISELECT(_ZThn16_N12S20727C14_ntD1Ev,_ZThn8_N12S20727C14_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20727C14_ntD0Ev,_ZTv0_n12_N12S20727C14_ntD0Ev)();
extern void ABISELECT(_ZThn16_N12S20727C14_ntD0Ev,_ZThn8_N12S20727C14_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20727C7__A1__12S20727C14_nt__12S20727C13_nt[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI12S20727C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C14_ntD1Ev,_ZTv0_n12_N12S20727C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C14_ntD0Ev,_ZTv0_n12_N12S20727C14_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N12S20727C14_ntD1Ev,_ZTv0_n12_N12S20727C14_ntD1Ev)();
extern void ABISELECT(_ZThn24_N12S20727C14_ntD1Ev,_ZThn12_N12S20727C14_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20727C14_ntD0Ev,_ZTv0_n12_N12S20727C14_ntD0Ev)();
extern void ABISELECT(_ZThn24_N12S20727C14_ntD0Ev,_ZThn12_N12S20727C14_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S20727C16_nt__12S20727C14_nt__12S20727C13_nt[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI12S20727C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C14_ntD1Ev,_ZTv0_n12_N12S20727C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C14_ntD0Ev,_ZTv0_n12_N12S20727C14_ntD0Ev),
};
extern void ABISELECT(_ZTvn16_n24_N12S20727C14_ntD1Ev,_ZTvn8_n12_N12S20727C14_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n24_N12S20727C14_ntD0Ev,_ZTvn8_n12_N12S20727C14_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20727C1512S20727C16_nt__A1__12S20727C14_nt__12S20727C13_nt[] = {
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI12S20727C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N12S20727C14_ntD1Ev,_ZTvn8_n12_N12S20727C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N12S20727C14_ntD0Ev,_ZTvn8_n12_N12S20727C14_ntD0Ev),
};
static  VTT_ENTRY vtt_S20727C13_nt[] = {
  {&(_ZTV12S20727C13_nt[8]),  8,32},
  {&(_ZTV12S20727C13_nt[8]),  8,32},
  {&(_ZTV12S20727C13_nt[16]),  16,32},
  {&(_ZTV12S20727C13_nt[21]),  21,32},
  {&(_ZTV12S20727C13_nt[26]),  26,32},
  {&(_ZTV12S20727C13_nt[30]),  30,32},
  {&(_tg__ZTV12S20727C14_nt__12S20727C13_nt[5]),  5,7},
  {&(_tg__ZTV9S343C6_nt__A1__12S20727C14_nt__12S20727C13_nt[3]),  3,5},
  {&(_tg__ZTV8S20727C7__A1__12S20727C14_nt__12S20727C13_nt[3]),  3,5},
  {&(_tg__ZTV12S20727C16_nt__12S20727C14_nt__12S20727C13_nt[3]),  3,5},
  {&(_tg__ZTV9S20727C1512S20727C16_nt__A1__12S20727C14_nt__12S20727C13_nt[2]),  2,4},
};
extern VTBL_ENTRY _ZTI12S20727C13_nt[];
VTBL_ENTRY *P__ZTI12S20727C13_nt = _ZTI12S20727C13_nt; 
extern  VTBL_ENTRY _ZTV12S20727C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20727C13_nt[];
static VTBL_ENTRY alt_thunk_names87[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N12S20727C14_ntD0Ev,_ZTv0_n12_N12S20727C14_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N12S20727C14_ntD0Ev,_ZThn12_N12S20727C14_ntD0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N12S20727C14_ntD0Ev,_ZThn8_N12S20727C14_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N12S20727C14_ntD1Ev,_ZTv0_n12_N12S20727C14_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N12S20727C14_ntD1Ev,_ZThn12_N12S20727C14_ntD1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N12S20727C14_ntD1Ev,_ZThn8_N12S20727C14_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N12S20727C13_ntD0Ev,_ZTv0_n24_N12S20727C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N12S20727C13_ntD0Ev,_ZThn4_N12S20727C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N12S20727C13_ntD1Ev,_ZTv0_n24_N12S20727C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N12S20727C13_ntD1Ev,_ZThn4_N12S20727C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N12S20727C13_ntD0Ev,_ZTv0_n12_N12S20727C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N12S20727C13_ntD0Ev,_ZThn16_N12S20727C13_ntD0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N12S20727C13_ntD0Ev,_ZThn12_N12S20727C13_ntD0Ev),
  (VTBL_ENTRY)_ZN12S20727C13_ntD0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N12S20727C13_ntD1Ev,_ZTv0_n12_N12S20727C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N12S20727C13_ntD1Ev,_ZThn16_N12S20727C13_ntD1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N12S20727C13_ntD1Ev,_ZThn12_N12S20727C13_ntD1Ev),
  (VTBL_ENTRY)_ZN12S20727C13_ntD1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20727C13_nt = {  "S20727C13_nt", // class name
  bases_S20727C13_nt, 15,
  &(vtc_S20727C13_nt[0]), // expected_vtbl_contents
  &(vtt_S20727C13_nt[0]), // expected_vtt_contents
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI12S20727C13_nt),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV12S20727C13_nt),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S20727C13_nt),11, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names87,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20727C1  : virtual S20727C2_nt , S20727C4 , virtual S20727C13_nt {
  virtual  ~S20727C1(); // _ZN8S20727C1D2Ev
  S20727C1(); // tgen
};
//SIG(1 S20727C1) C1{ VBC2{ VBC3{ m} vd v1} BC4{ BC5{ BC6{ BC7{ BC8{ vd m} vd} vd FC7} VBC9{ BC7 BC8 BC3 VBC10{ m FL} vd} Fi} VBC11{ m Fp} VBC7 BC12{ m FC13{ BC8 vd}}} VBC14{ VBC3 VBC8 VBC15{ BC16{ BC7 vd} VBC8 VBC7 VBC17{ BC6 BC16 FL Fi} Fi}} vd}


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

static void Test_S20727C1()
{
  extern Class_Descriptor cd_S20727C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,21)];
    init_test(&cd_S20727C1, buf);
    S20727C1 *dp, &lv = *(dp=new (buf) S20727C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,80), "sizeof(S20727C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20727C1)");
    check_base_class_offset(lv, (S731C17_nt*)(S20727C2_nt*), 0, "S20727C1");
    check_base_class_offset(lv, (S731C17_nt*)(S20727C13_nt*), 0, "S20727C1");
    check_base_class_offset(lv, (S20727C2_nt*), ABISELECT(32,16), "S20727C1");
    check_base_class_offset(lv, (S343C6_nt*)(S20727C7*)(S20727C6*)(S20727C5*)(S20727C4*), 0, "S20727C1");
    check_base_class_offset(lv, (S20727C7*)(S20727C6*)(S20727C5*)(S20727C4*), 0, "S20727C1");
    check_base_class_offset(lv, (S20727C6*)(S20727C5*)(S20727C4*), 0, "S20727C1");
    check_base_class_offset(lv, (S343C6_nt*)(S20727C7*)(S20727C9*), ABISELECT(40,20), "S20727C1");
    check_base_class_offset(lv, (S20727C7*)(S20727C9*), ABISELECT(40,20), "S20727C1");
    /*is_ambiguous_... S20727C9::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S20727C9*), ABISELECT(48,24), "S20727C1");
    check_base_class_offset(lv, (S731C17_nt*)(S20727C9*), ABISELECT(40,20), "S20727C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S20727C9*), ABISELECT(56,28), "S20727C1");
    check_base_class_offset(lv, (S20727C9*)(S20727C5*)(S20727C4*), ABISELECT(40,20), "S20727C1");
    check_base_class_offset(lv, (S20727C5*)(S20727C4*), 0, "S20727C1");
    check_base_class_offset(lv, (S6441C4_nt*)(S20727C4*), ABISELECT(64,36), "S20727C1");
    /*is_ambiguous_... S20727C1::S20727C7 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S20727C7*), ABISELECT(72,40), "S20727C1");
    /*is_ambiguous_... S20727C4::S20727C7 */ AMB_check_base_class_offset(lv, (S20727C7*)(S20727C4*), ABISELECT(72,40), "S20727C1");
    /*is_ambiguous_... S20727C14_nt::S20727C7 */ AMB_check_base_class_offset(lv, (S20727C7*)(S20727C14_nt*), ABISELECT(72,40), "S20727C1");
    check_base_class_offset(lv, (S343C9_nt*)(S20727C4*), ABISELECT(24,12), "S20727C1");
    check_base_class_offset(lv, (S20727C4*), 0, "S20727C1");
    /*is_ambiguous_... S20727C13_nt::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S20727C13_nt*), ABISELECT(80,44), "S20727C1");
    /*is_ambiguous_... S20727C14_nt::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S20727C14_nt*), ABISELECT(80,44), "S20727C1");
    /*is_ambiguous_... S20727C14_nt::S20727C15 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S20727C7*)(S20727C15*)(S20727C14_nt*), ABISELECT(88,48), "S20727C1");
    /*is_ambiguous_... S20727C14_nt::S20727C15 */ AMB_check_base_class_offset(lv, (S20727C7*)(S20727C15*)(S20727C14_nt*), ABISELECT(88,48), "S20727C1");
    /*is_ambiguous_... S20727C14_nt::S20727C15 */ AMB_check_base_class_offset(lv, (S20727C15*)(S20727C14_nt*), ABISELECT(88,48), "S20727C1");
    check_base_class_offset(lv, (S343C6_nt*)(S20727C7*)(S20727C6*)(S20727C16_nt*), ABISELECT(104,56), "S20727C1");
    check_base_class_offset(lv, (S20727C7*)(S20727C6*)(S20727C16_nt*), ABISELECT(104,56), "S20727C1");
    check_base_class_offset(lv, (S20727C6*)(S20727C16_nt*), ABISELECT(104,56), "S20727C1");
    check_base_class_offset(lv, (S343C6_nt*)(S20727C7*)(S20727C15*)(S20727C16_nt*), ABISELECT(120,64), "S20727C1");
    check_base_class_offset(lv, (S20727C7*)(S20727C15*)(S20727C16_nt*), ABISELECT(120,64), "S20727C1");
    check_base_class_offset(lv, (S20727C15*)(S20727C16_nt*), ABISELECT(120,64), "S20727C1");
    check_base_class_offset(lv, (S20727C16_nt*)(S20727C14_nt*), ABISELECT(104,56), "S20727C1");
    check_base_class_offset(lv, (S20727C14_nt*)(S20727C13_nt*), ABISELECT(88,48), "S20727C1");
    check_base_class_offset(lv, (S20727C13_nt*), ABISELECT(80,44), "S20727C1");
    test_class_info(&lv, &cd_S20727C1);
    dp->~S20727C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20727C1(Test_S20727C1, "S20727C1", ABISELECT(144,80));

#else // __cplusplus

extern void _ZN8S20727C1C1Ev();
extern void _ZN8S20727C1D2Ev();
Name_Map name_map_S20727C1[] = {
  NSPAIR(_ZN8S20727C1C1Ev),
  NSPAIR(_ZN8S20727C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20727C2_nt;
extern VTBL_ENTRY _ZTI11S20727C2_nt[];
extern  VTBL_ENTRY _ZTV11S20727C2_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20727C2_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20727C7;
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
extern Class_Descriptor cd_S20727C6;
extern VTBL_ENTRY _ZTI8S20727C6[];
extern  VTBL_ENTRY _ZTV8S20727C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20727C7;
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S20727C9;
extern VTBL_ENTRY _ZTI8S20727C9[];
extern  VTBL_ENTRY _ZTV8S20727C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20727C9[];
extern Class_Descriptor cd_S20727C5;
extern VTBL_ENTRY _ZTI8S20727C5[];
extern  VTBL_ENTRY _ZTV8S20727C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20727C5[];
extern Class_Descriptor cd_S6441C4_nt;
extern VTBL_ENTRY _ZTI10S6441C4_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20727C7;
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
extern Class_Descriptor cd_S343C9_nt;
extern VTBL_ENTRY _ZTI9S343C9_nt[];
extern Class_Descriptor cd_S20727C4;
extern VTBL_ENTRY _ZTI8S20727C4[];
extern  VTBL_ENTRY _ZTV8S20727C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20727C4[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20727C7;
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
extern Class_Descriptor cd_S20727C15;
extern VTBL_ENTRY _ZTI9S20727C15[];
extern  VTBL_ENTRY _ZTV9S20727C15[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20727C7;
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
extern Class_Descriptor cd_S20727C6;
extern VTBL_ENTRY _ZTI8S20727C6[];
extern  VTBL_ENTRY _ZTV8S20727C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20727C7;
extern VTBL_ENTRY _ZTI8S20727C7[];
extern  VTBL_ENTRY _ZTV8S20727C7[];
extern Class_Descriptor cd_S20727C15;
extern VTBL_ENTRY _ZTI9S20727C15[];
extern  VTBL_ENTRY _ZTV9S20727C15[];
extern Class_Descriptor cd_S20727C16_nt;
extern VTBL_ENTRY _ZTI12S20727C16_nt[];
extern  VTBL_ENTRY _ZTV12S20727C16_nt[];
extern Class_Descriptor cd_S20727C14_nt;
extern VTBL_ENTRY _ZTI12S20727C14_nt[];
extern  VTBL_ENTRY _ZTV12S20727C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20727C14_nt[];
extern Class_Descriptor cd_S20727C13_nt;
extern VTBL_ENTRY _ZTI12S20727C13_nt[];
extern  VTBL_ENTRY _ZTV12S20727C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20727C13_nt[];
static Base_Class bases_S20727C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20727C2_nt,    ABISELECT(32,16), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    3, //immediately_derived
  0, 0},
  {&cd_S20727C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    4, //immediately_derived
  0, 0},
  {&cd_S20727C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    11, //immediately_derived
  0, 0},
  {&cd_S343C6_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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20727C7,    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
    10, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(48,24), //bcp->offset
    28, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20727C9,    ABISELECT(40,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20727C5,    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
    24, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S6441C4_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S343C6_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
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20727C7,    ABISELECT(72,40), //bcp->offset
    32, //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
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S343C9_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
    16, //immediately_derived
  0, 0},
  {&cd_S20727C4,    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
    25, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S343C6_nt,    ABISELECT(80,44), //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
    8, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S343C6_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
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20727C7,    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
    17, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20727C15,    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
    18, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S343C6_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
    9, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20727C7,    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
    10, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20727C6,    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
    11, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20727C7,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20727C15,    ABISELECT(120,64), //bcp->offset
    60, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20727C16_nt,    ABISELECT(104,56), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S20727C14_nt,    ABISELECT(88,48), //bcp->offset
    47, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S20727C13_nt,    ABISELECT(80,44), //bcp->offset
    37, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20727C1[];
extern void _ZN8S20727C1D1Ev();
extern void _ZN8S20727C1D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S20727C1D1Ev,_ZTv0_n16_N8S20727C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S20727C1D1Ev,_ZThn16_N8S20727C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20727C1D0Ev,_ZTv0_n16_N8S20727C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S20727C1D0Ev,_ZThn16_N8S20727C1D0Ev)() __attribute__((weak));
extern void _ZN11S20727C2_nt2v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S20727C1D1Ev,_ZTv0_n16_N8S20727C1D1Ev)();
extern void ABISELECT(_ZThn40_N8S20727C1D1Ev,_ZThn20_N8S20727C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20727C1D0Ev,_ZTv0_n16_N8S20727C1D0Ev)();
extern void ABISELECT(_ZThn40_N8S20727C1D0Ev,_ZThn20_N8S20727C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n32_N8S20727C1D1Ev,_ZTvn4_n16_N8S20727C1D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N8S20727C1D0Ev,_ZTvn4_n16_N8S20727C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20727C1D1Ev,_ZTv0_n12_N8S20727C1D1Ev)();
extern void ABISELECT(_ZThn72_N8S20727C1D1Ev,_ZThn40_N8S20727C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20727C1D0Ev,_ZTv0_n12_N8S20727C1D0Ev)();
extern void ABISELECT(_ZThn72_N8S20727C1D0Ev,_ZThn40_N8S20727C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20727C1D1Ev,_ZTv0_n12_N8S20727C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S20727C1D1Ev,_ZThn44_N8S20727C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20727C1D0Ev,_ZTv0_n12_N8S20727C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S20727C1D0Ev,_ZThn44_N8S20727C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20727C1D1Ev,_ZTv0_n24_N8S20727C1D1Ev)();
extern void ABISELECT(_ZThn88_N8S20727C1D1Ev,_ZThn48_N8S20727C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20727C1D0Ev,_ZTv0_n24_N8S20727C1D0Ev)();
extern void ABISELECT(_ZThn88_N8S20727C1D0Ev,_ZThn48_N8S20727C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20727C1D1Ev,_ZTv0_n12_N8S20727C1D1Ev)();
extern void ABISELECT(_ZThn104_N8S20727C1D1Ev,_ZThn56_N8S20727C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20727C1D0Ev,_ZTv0_n12_N8S20727C1D0Ev)();
extern void ABISELECT(_ZThn104_N8S20727C1D0Ev,_ZThn56_N8S20727C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n24_N8S20727C1D1Ev,_ZTvn8_n12_N8S20727C1D1Ev)();
extern void ABISELECT(_ZTvn16_n24_N8S20727C1D0Ev,_ZTvn8_n12_N8S20727C1D0Ev)();
static  VTBL_ENTRY vtc_S20727C1[] = {
  ABISELECT(104,56),
  ABISELECT(88,48),
  ABISELECT(80,44),
  ABISELECT(80,44),
  0,
  ABISELECT(32,16),
  ABISELECT(72,40),
  ABISELECT(64,36),
  ABISELECT(56,28),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20727C1[0]),
  (VTBL_ENTRY)&_ZN8S20727C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20727C1D0Ev,
  0,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20727C1D1Ev,_ZTv0_n16_N8S20727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20727C1D0Ev,_ZTv0_n16_N8S20727C1D0Ev),
  (VTBL_ENTRY)&_ZN11S20727C2_nt2v1Ev,
  ABISELECT(-40,-20),
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20727C1D1Ev,_ZTv0_n16_N8S20727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20727C1D0Ev,_ZTv0_n16_N8S20727C1D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20727C1D1Ev,_ZTvn4_n16_N8S20727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20727C1D0Ev,_ZTvn4_n16_N8S20727C1D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S20727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20727C1D1Ev,_ZTv0_n12_N8S20727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20727C1D0Ev,_ZTv0_n12_N8S20727C1D0Ev),
  ABISELECT(24,12),
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  0,
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20727C1D1Ev,_ZTv0_n12_N8S20727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20727C1D0Ev,_ZTv0_n12_N8S20727C1D0Ev),
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-8,-4),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S20727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20727C1D1Ev,_ZTv0_n24_N8S20727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20727C1D0Ev,_ZTv0_n24_N8S20727C1D0Ev),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S20727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20727C1D1Ev,_ZTv0_n12_N8S20727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20727C1D0Ev,_ZTv0_n12_N8S20727C1D0Ev),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S20727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N8S20727C1D1Ev,_ZTvn8_n12_N8S20727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N8S20727C1D0Ev,_ZTvn8_n12_N8S20727C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20727C1[];
extern void _ZN8S20727C4D1Ev();
extern void _ZN8S20727C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20727C4__8S20727C1[] = {
  ABISELECT(72,40),
  ABISELECT(64,36),
  ABISELECT(56,28),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20727C4[0]),
  (VTBL_ENTRY)&_ZN8S20727C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20727C4D0Ev,
};
extern void _ZN8S20727C5D1Ev();
extern void _ZN8S20727C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20727C58S20727C4__8S20727C1[] = {
  ABISELECT(56,28),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20727C5[0]),
  (VTBL_ENTRY)&_ZN8S20727C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20727C5D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20727C5D1Ev,_ZTv0_n16_N8S20727C5D1Ev)();
extern void ABISELECT(_ZThn40_N8S20727C5D1Ev,_ZThn20_N8S20727C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20727C5D0Ev,_ZTv0_n16_N8S20727C5D0Ev)();
extern void ABISELECT(_ZThn40_N8S20727C5D0Ev,_ZThn20_N8S20727C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20727C9__8S20727C58S20727C4__8S20727C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20727C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20727C5D1Ev,_ZTv0_n16_N8S20727C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20727C5D0Ev,_ZTv0_n16_N8S20727C5D0Ev),
};
extern void ABISELECT(_ZTvn8_n32_N8S20727C5D1Ev,_ZTvn4_n16_N8S20727C5D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N8S20727C5D0Ev,_ZTvn4_n16_N8S20727C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt8S20727C9__A2__8S20727C58S20727C4__8S20727C1[] = {
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20727C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20727C5D1Ev,_ZTvn4_n16_N8S20727C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20727C5D0Ev,_ZTvn4_n16_N8S20727C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20727C4D1Ev,_ZTv0_n16_N8S20727C4D1Ev)();
extern void ABISELECT(_ZThn40_N8S20727C4D1Ev,_ZThn20_N8S20727C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20727C4D0Ev,_ZTv0_n16_N8S20727C4D0Ev)();
extern void ABISELECT(_ZThn40_N8S20727C4D0Ev,_ZThn20_N8S20727C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20727C9__8S20727C4__8S20727C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20727C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20727C4D1Ev,_ZTv0_n16_N8S20727C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20727C4D0Ev,_ZTv0_n16_N8S20727C4D0Ev),
};
extern void ABISELECT(_ZTvn8_n32_N8S20727C4D1Ev,_ZTvn4_n16_N8S20727C4D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N8S20727C4D0Ev,_ZTvn4_n16_N8S20727C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt8S20727C9__A2__8S20727C4__8S20727C1[] = {
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20727C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20727C4D1Ev,_ZTvn4_n16_N8S20727C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20727C4D0Ev,_ZTvn4_n16_N8S20727C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20727C4D1Ev,_ZTv0_n12_N8S20727C4D1Ev)();
extern void ABISELECT(_ZThn72_N8S20727C4D1Ev,_ZThn40_N8S20727C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20727C4D0Ev,_ZTv0_n12_N8S20727C4D0Ev)();
extern void ABISELECT(_ZThn72_N8S20727C4D0Ev,_ZThn40_N8S20727C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20727C7__A2__8S20727C4__8S20727C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S20727C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20727C4D1Ev,_ZTv0_n12_N8S20727C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20727C4D0Ev,_ZTv0_n12_N8S20727C4D0Ev),
};
extern void _ZN11S20727C2_ntD1Ev();
extern void _ZN11S20727C2_ntD0Ev();
extern void _ZN11S20727C2_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20727C2_nt__8S20727C1[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI11S20727C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S20727C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20727C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S20727C2_nt2v1Ev,
};
extern void _ZN8S20727C9D1Ev();
extern void _ZN8S20727C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20727C9__8S20727C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20727C9[0]),
  (VTBL_ENTRY)&_ZN8S20727C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20727C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N12S20727C13_ntD1Ev,_ZTv0_n12_N12S20727C13_ntD1Ev)();
extern void _ZN12S20727C13_ntD1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20727C13_ntD0Ev,_ZTv0_n12_N12S20727C13_ntD0Ev)();
extern void _ZN12S20727C13_ntD0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S20727C13_nt__8S20727C1[] = {
  ABISELECT(24,12),
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  0,
  ABISELECT(-80,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20727C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C13_ntD1Ev,_ZTv0_n12_N12S20727C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C13_ntD0Ev,_ZTv0_n12_N12S20727C13_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n48_N12S20727C13_ntD1Ev,_ZTv0_n24_N12S20727C13_ntD1Ev)();
extern void ABISELECT(_ZThn8_N12S20727C13_ntD1Ev,_ZThn4_N12S20727C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N12S20727C13_ntD0Ev,_ZTv0_n24_N12S20727C13_ntD0Ev)();
extern void ABISELECT(_ZThn8_N12S20727C13_ntD0Ev,_ZThn4_N12S20727C13_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S20727C14_nt__12S20727C13_nt__8S20727C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI12S20727C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N12S20727C13_ntD1Ev,_ZTv0_n24_N12S20727C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N12S20727C13_ntD0Ev,_ZTv0_n24_N12S20727C13_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N12S20727C13_ntD1Ev,_ZTv0_n12_N12S20727C13_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N12S20727C13_ntD0Ev,_ZTv0_n12_N12S20727C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20727C7__A1__12S20727C13_nt__8S20727C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI12S20727C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C13_ntD1Ev,_ZTv0_n12_N12S20727C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C13_ntD0Ev,_ZTv0_n12_N12S20727C13_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N12S20727C13_ntD1Ev,_ZTv0_n12_N12S20727C13_ntD1Ev)();
extern void ABISELECT(_ZThn24_N12S20727C13_ntD1Ev,_ZThn12_N12S20727C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20727C13_ntD0Ev,_ZTv0_n12_N12S20727C13_ntD0Ev)();
extern void ABISELECT(_ZThn24_N12S20727C13_ntD0Ev,_ZThn12_N12S20727C13_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S20727C16_nt__12S20727C13_nt__8S20727C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI12S20727C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C13_ntD1Ev,_ZTv0_n12_N12S20727C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C13_ntD0Ev,_ZTv0_n12_N12S20727C13_ntD0Ev),
};
extern void ABISELECT(_ZTvn16_n24_N12S20727C13_ntD1Ev,_ZTvn8_n12_N12S20727C13_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n24_N12S20727C13_ntD0Ev,_ZTvn8_n12_N12S20727C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20727C1512S20727C16_nt__A1__12S20727C13_nt__8S20727C1[] = {
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI12S20727C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N12S20727C13_ntD1Ev,_ZTvn8_n12_N12S20727C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N12S20727C13_ntD0Ev,_ZTvn8_n12_N12S20727C13_ntD0Ev),
};
extern void _ZN12S20727C14_ntD1Ev();
extern void _ZN12S20727C14_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV12S20727C14_nt__8S20727C1[] = {
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI12S20727C14_nt[0]),
  (VTBL_ENTRY)&_ZN12S20727C14_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20727C14_ntD0Ev,
};
extern void ABISELECT(_ZTv0_n24_N12S20727C14_ntD1Ev,_ZTv0_n12_N12S20727C14_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N12S20727C14_ntD0Ev,_ZTv0_n12_N12S20727C14_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt__A1__12S20727C14_nt__8S20727C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI12S20727C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C14_ntD1Ev,_ZTv0_n12_N12S20727C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C14_ntD0Ev,_ZTv0_n12_N12S20727C14_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N12S20727C14_ntD1Ev,_ZTv0_n12_N12S20727C14_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N12S20727C14_ntD0Ev,_ZTv0_n12_N12S20727C14_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20727C7__A1__12S20727C14_nt__8S20727C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI12S20727C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C14_ntD1Ev,_ZTv0_n12_N12S20727C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C14_ntD0Ev,_ZTv0_n12_N12S20727C14_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N12S20727C14_ntD1Ev,_ZTv0_n12_N12S20727C14_ntD1Ev)();
extern void ABISELECT(_ZThn16_N12S20727C14_ntD1Ev,_ZThn8_N12S20727C14_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20727C14_ntD0Ev,_ZTv0_n12_N12S20727C14_ntD0Ev)();
extern void ABISELECT(_ZThn16_N12S20727C14_ntD0Ev,_ZThn8_N12S20727C14_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S20727C16_nt__12S20727C14_nt__8S20727C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI12S20727C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C14_ntD1Ev,_ZTv0_n12_N12S20727C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20727C14_ntD0Ev,_ZTv0_n12_N12S20727C14_ntD0Ev),
};
extern void ABISELECT(_ZTvn16_n24_N12S20727C14_ntD1Ev,_ZTvn8_n12_N12S20727C14_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n24_N12S20727C14_ntD0Ev,_ZTvn8_n12_N12S20727C14_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20727C1512S20727C16_nt__A1__12S20727C14_nt__8S20727C1[] = {
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI12S20727C14_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N12S20727C14_ntD1Ev,_ZTvn8_n12_N12S20727C14_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N12S20727C14_ntD0Ev,_ZTvn8_n12_N12S20727C14_ntD0Ev),
};
static  VTT_ENTRY vtt_S20727C1[] = {
  {&(_ZTV8S20727C1[12]),  12,64},
  {&(_tg__ZTV8S20727C4__8S20727C1[6]),  6,8},
  {&(_tg__ZTV8S20727C58S20727C4__8S20727C1[4]),  4,6},
  {&(_tg__ZTV8S20727C9__8S20727C58S20727C4__8S20727C1[4]),  4,6},
  {&(_tg__ZTV9S343C6_nt8S20727C9__A2__8S20727C58S20727C4__8S20727C1[2]),  2,4},
  {&(_tg__ZTV8S20727C9__8S20727C4__8S20727C1[4]),  4,6},
  {&(_tg__ZTV9S343C6_nt8S20727C9__A2__8S20727C4__8S20727C1[2]),  2,4},
  {&(_tg__ZTV8S20727C7__A2__8S20727C4__8S20727C1[3]),  3,5},
  {&(_ZTV8S20727C1[19]),  19,64},
  {&(_ZTV8S20727C1[26]),  26,64},
  {&(_ZTV8S20727C1[30]),  30,64},
  {&(_ZTV8S20727C1[35]),  35,64},
  {&(_ZTV8S20727C1[45]),  45,64},
  {&(_ZTV8S20727C1[45]),  45,64},
  {&(_ZTV8S20727C1[53]),  53,64},
  {&(_ZTV8S20727C1[58]),  58,64},
  {&(_ZTV8S20727C1[62]),  62,64},
  {&(_tg__ZTV11S20727C2_nt__8S20727C1[3]),  3,6},
  {&(_tg__ZTV8S20727C9__8S20727C1[3]),  3,5},
  {&(_tg__ZTV12S20727C13_nt__8S20727C1[8]),  8,10},
  {&(_tg__ZTV12S20727C13_nt__8S20727C1[8]),  8,10},
  {&(_tg__ZTV12S20727C14_nt__12S20727C13_nt__8S20727C1[6]),  6,8},
  {&(_tg__ZTV8S20727C7__A1__12S20727C13_nt__8S20727C1[3]),  3,5},
  {&(_tg__ZTV12S20727C16_nt__12S20727C13_nt__8S20727C1[3]),  3,5},
  {&(_tg__ZTV9S20727C1512S20727C16_nt__A1__12S20727C13_nt__8S20727C1[2]),  2,4},
  {&(_tg__ZTV12S20727C14_nt__8S20727C1[5]),  5,7},
  {&(_tg__ZTV9S343C6_nt__A1__12S20727C14_nt__8S20727C1[3]),  3,5},
  {&(_tg__ZTV8S20727C7__A1__12S20727C14_nt__8S20727C1[3]),  3,5},
  {&(_tg__ZTV12S20727C16_nt__12S20727C14_nt__8S20727C1[3]),  3,5},
  {&(_tg__ZTV9S20727C1512S20727C16_nt__A1__12S20727C14_nt__8S20727C1[2]),  2,4},
};
extern VTBL_ENTRY _ZTI8S20727C1[];
extern  VTBL_ENTRY _ZTV8S20727C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20727C1[];
static VTBL_ENTRY alt_thunk_names88[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N12S20727C14_ntD0Ev,_ZTv0_n12_N12S20727C14_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N12S20727C14_ntD0Ev,_ZThn8_N12S20727C14_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N12S20727C14_ntD1Ev,_ZTv0_n12_N12S20727C14_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N12S20727C14_ntD1Ev,_ZThn8_N12S20727C14_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N12S20727C13_ntD0Ev,_ZTv0_n24_N12S20727C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N12S20727C13_ntD0Ev,_ZThn4_N12S20727C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N12S20727C13_ntD1Ev,_ZTv0_n24_N12S20727C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N12S20727C13_ntD1Ev,_ZThn4_N12S20727C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N12S20727C13_ntD0Ev,_ZTv0_n12_N12S20727C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N12S20727C13_ntD0Ev,_ZThn12_N12S20727C13_ntD0Ev),
  (VTBL_ENTRY)_ZN12S20727C13_ntD0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N12S20727C13_ntD1Ev,_ZTv0_n12_N12S20727C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N12S20727C13_ntD1Ev,_ZThn12_N12S20727C13_ntD1Ev),
  (VTBL_ENTRY)_ZN12S20727C13_ntD1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20727C4D0Ev,_ZTv0_n12_N8S20727C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20727C4D0Ev,_ZThn40_N8S20727C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20727C4D1Ev,_ZTv0_n12_N8S20727C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20727C4D1Ev,_ZThn40_N8S20727C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20727C4D0Ev,_ZTv0_n16_N8S20727C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20727C4D0Ev,_ZThn20_N8S20727C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20727C4D1Ev,_ZTv0_n16_N8S20727C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20727C4D1Ev,_ZThn20_N8S20727C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20727C5D0Ev,_ZTv0_n16_N8S20727C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20727C5D0Ev,_ZThn20_N8S20727C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20727C5D1Ev,_ZTv0_n16_N8S20727C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20727C5D1Ev,_ZThn20_N8S20727C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20727C1D0Ev,_ZTv0_n24_N8S20727C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20727C1D0Ev,_ZThn48_N8S20727C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20727C1D1Ev,_ZTv0_n24_N8S20727C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20727C1D1Ev,_ZThn48_N8S20727C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20727C1D0Ev,_ZTv0_n12_N8S20727C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S20727C1D0Ev,_ZThn56_N8S20727C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20727C1D0Ev,_ZThn44_N8S20727C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20727C1D0Ev,_ZThn40_N8S20727C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20727C1D1Ev,_ZTv0_n12_N8S20727C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S20727C1D1Ev,_ZThn56_N8S20727C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20727C1D1Ev,_ZThn44_N8S20727C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20727C1D1Ev,_ZThn40_N8S20727C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20727C1D0Ev,_ZTv0_n16_N8S20727C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20727C1D0Ev,_ZThn20_N8S20727C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20727C1D0Ev,_ZThn16_N8S20727C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20727C1D1Ev,_ZTv0_n16_N8S20727C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20727C1D1Ev,_ZThn20_N8S20727C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20727C1D1Ev,_ZThn16_N8S20727C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20727C1 = {  "S20727C1", // class name
  bases_S20727C1, 30,
  &(vtc_S20727C1[0]), // expected_vtbl_contents
  &(vtt_S20727C1[0]), // expected_vtt_contents
  ABISELECT(144,80), // object size
  NSPAIRA(_ZTI8S20727C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20727C1),64, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20727C1),30, //virtual table table var
  25, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names88,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20726C2  : virtual S731C17_nt {
  virtual  ~S20726C2(); // _ZN8S20726C2D2Ev
  virtual void  v1(); // _ZN8S20726C22v1Ev
  S20726C2(); // tgen
};
//SIG(-1 S20726C2) C1{ VBC2{ m} vd v1}


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

static void Test_S20726C2()
{
  extern Class_Descriptor cd_S20726C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20726C2, buf);
    S20726C2 *dp, &lv = *(dp=new (buf) S20726C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20726C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20726C2)");
    check_base_class_offset(lv, (S731C17_nt*), 0, "S20726C2");
    test_class_info(&lv, &cd_S20726C2);
    dp->~S20726C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20726C2(Test_S20726C2, "S20726C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20726C2C1Ev();
extern void _ZN8S20726C2D2Ev();
Name_Map name_map_S20726C2[] = {
  NSPAIR(_ZN8S20726C2C1Ev),
  NSPAIR(_ZN8S20726C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S20726C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20726C2[];
extern void _ZN8S20726C2D1Ev();
extern void _ZN8S20726C2D0Ev();
extern void _ZN8S20726C22v1Ev();
static  VTBL_ENTRY vtc_S20726C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20726C2[0]),
  (VTBL_ENTRY)&_ZN8S20726C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20726C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20726C22v1Ev,
};
extern VTBL_ENTRY _ZTV8S20726C2[];
static  VTT_ENTRY vtt_S20726C2[] = {
  {&(_ZTV8S20726C2[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S20726C2[];
extern  VTBL_ENTRY _ZTV8S20726C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20726C2[];
Class_Descriptor cd_S20726C2 = {  "S20726C2", // class name
  bases_S20726C2, 1,
  &(vtc_S20726C2[0]), // expected_vtbl_contents
  &(vtt_S20726C2[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20726C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20726C2),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20726C2),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  S20726C7  : S343C6_nt {
  virtual  ~S20726C7(); // _ZN8S20726C7D1Ev
  S20726C7(); // tgen
};
//SIG(-1 S20726C7) C1{ BC2{ vd m} vd}


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

static void Test_S20726C7()
{
  extern Class_Descriptor cd_S20726C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20726C7, buf);
    S20726C7 *dp, &lv = *(dp=new (buf) S20726C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20726C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20726C7)");
    check_base_class_offset(lv, (S343C6_nt*), 0, "S20726C7");
    test_class_info(&lv, &cd_S20726C7);
    dp->~S20726C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20726C7(Test_S20726C7, "S20726C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20726C7C1Ev();
extern void _ZN8S20726C7D1Ev();
Name_Map name_map_S20726C7[] = {
  NSPAIR(_ZN8S20726C7C1Ev),
  NSPAIR(_ZN8S20726C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
static Base_Class bases_S20726C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20726C7[];
extern void _ZN8S20726C7D1Ev();
extern void _ZN8S20726C7D0Ev();
static  VTBL_ENTRY vtc_S20726C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20726C7[0]),
  (VTBL_ENTRY)&_ZN8S20726C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20726C7D0Ev,
};
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
Class_Descriptor cd_S20726C7 = {  "S20726C7", // class name
  bases_S20726C7, 1,
  &(vtc_S20726C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20726C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20726C7),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  S20726C6  : S20726C7 {
  ::S20726C7 s20726c6f0;
  virtual  ~S20726C6(); // _ZN8S20726C6D1Ev
  S20726C6(); // tgen
};
//SIG(-1 S20726C6) C1{ BC2{ BC3{ vd m} vd} vd FC2}


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

static void Test_S20726C6()
{
  extern Class_Descriptor cd_S20726C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20726C6, buf);
    S20726C6 *dp, &lv = *(dp=new (buf) S20726C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20726C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20726C6)");
    check_base_class_offset(lv, (S343C6_nt*)(S20726C7*), 0, "S20726C6");
    check_base_class_offset(lv, (S20726C7*), 0, "S20726C6");
    check_field_offset(lv, s20726c6f0, ABISELECT(8,4), "S20726C6.s20726c6f0");
    test_class_info(&lv, &cd_S20726C6);
    dp->~S20726C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20726C6(Test_S20726C6, "S20726C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20726C6C1Ev();
extern void _ZN8S20726C6D1Ev();
Name_Map name_map_S20726C6[] = {
  NSPAIR(_ZN8S20726C6C1Ev),
  NSPAIR(_ZN8S20726C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20726C7;
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
static Base_Class bases_S20726C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20726C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S20726C6[];
extern void _ZN8S20726C6D1Ev();
extern void _ZN8S20726C6D0Ev();
static  VTBL_ENTRY vtc_S20726C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20726C6[0]),
  (VTBL_ENTRY)&_ZN8S20726C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20726C6D0Ev,
};
extern VTBL_ENTRY _ZTI8S20726C6[];
extern  VTBL_ENTRY _ZTV8S20726C6[];
Class_Descriptor cd_S20726C6 = {  "S20726C6", // class name
  bases_S20726C6, 2,
  &(vtc_S20726C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20726C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20726C6),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  S20726C9  : S20726C7 , S343C6_nt , S731C17_nt , virtual S3461C5_nt {
  virtual  ~S20726C9(); // _ZN8S20726C9D2Ev
  S20726C9(); // tgen
};
//SIG(-1 S20726C9) C1{ BC2{ BC3{ vd m} vd} BC3 BC4{ m} VBC5{ m FL} vd}


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

static void Test_S20726C9()
{
  extern Class_Descriptor cd_S20726C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20726C9, buf);
    S20726C9 *dp, &lv = *(dp=new (buf) S20726C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20726C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20726C9)");
    check_base_class_offset(lv, (S343C6_nt*)(S20726C7*), 0, "S20726C9");
    check_base_class_offset(lv, (S20726C7*), 0, "S20726C9");
    /*is_ambiguous_... S20726C9::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*), ABISELECT(8,4), "S20726C9");
    check_base_class_offset(lv, (S731C17_nt*), 0, "S20726C9");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(16,8), "S20726C9");
    test_class_info(&lv, &cd_S20726C9);
    dp->~S20726C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20726C9(Test_S20726C9, "S20726C9", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S20726C9C1Ev();
extern void _ZN8S20726C9D2Ev();
Name_Map name_map_S20726C9[] = {
  NSPAIR(_ZN8S20726C9C1Ev),
  NSPAIR(_ZN8S20726C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20726C7;
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
static Base_Class bases_S20726C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20726C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S343C6_nt,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20726C9[];
extern void _ZN8S20726C9D1Ev();
extern void _ZN8S20726C9D0Ev();
extern void ABISELECT(_ZThn8_N8S20726C9D1Ev,_ZThn4_N8S20726C9D1Ev)();
extern void ABISELECT(_ZThn8_N8S20726C9D0Ev,_ZThn4_N8S20726C9D0Ev)();
static  VTBL_ENTRY vtc_S20726C9[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20726C9[0]),
  (VTBL_ENTRY)&_ZN8S20726C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20726C9D0Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20726C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S20726C9D1Ev,_ZThn4_N8S20726C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S20726C9D0Ev,_ZThn4_N8S20726C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S20726C9[];
static  VTT_ENTRY vtt_S20726C9[] = {
  {&(_ZTV8S20726C9[3]),  3,9},
};
extern VTBL_ENTRY _ZTI8S20726C9[];
extern  VTBL_ENTRY _ZTV8S20726C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20726C9[];
Class_Descriptor cd_S20726C9 = {  "S20726C9", // class name
  bases_S20726C9, 5,
  &(vtc_S20726C9[0]), // expected_vtbl_contents
  &(vtt_S20726C9[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S20726C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20726C9),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20726C9),1, //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  S20726C5  : S20726C6 , virtual S20726C9 {
  int s20726c5f0;
  ~S20726C5(); // tgen
  S20726C5(); // tgen
};
//SIG(-1 S20726C5) C1{ BC2{ BC3{ BC4{ vd m} vd} vd FC3} VBC5{ BC3 BC4 BC6{ m} VBC7{ m FL} vd} Fi}


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

static void Test_S20726C5()
{
  extern Class_Descriptor cd_S20726C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S20726C5, buf);
    S20726C5 *dp, &lv = *(dp=new (buf) S20726C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S20726C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20726C5)");
    check_base_class_offset(lv, (S343C6_nt*)(S20726C7*)(S20726C6*), 0, "S20726C5");
    check_base_class_offset(lv, (S20726C7*)(S20726C6*), 0, "S20726C5");
    check_base_class_offset(lv, (S20726C6*), 0, "S20726C5");
    check_base_class_offset(lv, (S343C6_nt*)(S20726C7*)(S20726C9*), ABISELECT(24,12), "S20726C5");
    check_base_class_offset(lv, (S20726C7*)(S20726C9*), ABISELECT(24,12), "S20726C5");
    /*is_ambiguous_... S20726C9::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S20726C9*), ABISELECT(32,16), "S20726C5");
    check_base_class_offset(lv, (S731C17_nt*)(S20726C9*), ABISELECT(24,12), "S20726C5");
    check_base_class_offset(lv, (S3461C5_nt*)(S20726C9*), ABISELECT(40,20), "S20726C5");
    check_base_class_offset(lv, (S20726C9*), ABISELECT(24,12), "S20726C5");
    check_field_offset(lv, s20726c5f0, ABISELECT(16,8), "S20726C5.s20726c5f0");
    test_class_info(&lv, &cd_S20726C5);
    dp->~S20726C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20726C5(Test_S20726C5, "S20726C5", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S20726C5C1Ev();
extern void _ZN8S20726C5D1Ev();
Name_Map name_map_S20726C5[] = {
  NSPAIR(_ZN8S20726C5C1Ev),
  NSPAIR(_ZN8S20726C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20726C7;
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
extern Class_Descriptor cd_S20726C6;
extern VTBL_ENTRY _ZTI8S20726C6[];
extern  VTBL_ENTRY _ZTV8S20726C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20726C7;
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S20726C9;
extern VTBL_ENTRY _ZTI8S20726C9[];
extern  VTBL_ENTRY _ZTV8S20726C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20726C9[];
static Base_Class bases_S20726C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S20726C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20726C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S343C6_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_S20726C7,    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
    8, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(32,16), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    8, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20726C9,    ABISELECT(24,12), //bcp->offset
    6, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20726C5[];
extern void _ZN8S20726C5D1Ev();
extern void _ZN8S20726C5D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S20726C5D1Ev,_ZTv0_n16_N8S20726C5D1Ev)();
extern void ABISELECT(_ZThn24_N8S20726C5D1Ev,_ZThn12_N8S20726C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20726C5D0Ev,_ZTv0_n16_N8S20726C5D0Ev)();
extern void ABISELECT(_ZThn24_N8S20726C5D0Ev,_ZThn12_N8S20726C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n32_N8S20726C5D1Ev,_ZTvn4_n16_N8S20726C5D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N8S20726C5D0Ev,_ZTvn4_n16_N8S20726C5D0Ev)();
static  VTBL_ENTRY vtc_S20726C5[] = {
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20726C5[0]),
  (VTBL_ENTRY)&_ZN8S20726C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20726C5D0Ev,
  ABISELECT(-24,-12),
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20726C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20726C5D1Ev,_ZTv0_n16_N8S20726C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20726C5D0Ev,_ZTv0_n16_N8S20726C5D0Ev),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20726C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20726C5D1Ev,_ZTvn4_n16_N8S20726C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20726C5D0Ev,_ZTvn4_n16_N8S20726C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S20726C5[];
extern void _ZN8S20726C9D1Ev();
extern void _ZN8S20726C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20726C9__8S20726C5[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20726C9[0]),
  (VTBL_ENTRY)&_ZN8S20726C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20726C9D0Ev,
};
static  VTT_ENTRY vtt_S20726C5[] = {
  {&(_ZTV8S20726C5[4]),  4,16},
  {&(_ZTV8S20726C5[10]),  10,16},
  {&(_ZTV8S20726C5[14]),  14,16},
  {&(_tg__ZTV8S20726C9__8S20726C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20726C5[];
extern  VTBL_ENTRY _ZTV8S20726C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20726C5[];
static VTBL_ENTRY alt_thunk_names89[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20726C5D0Ev,_ZTv0_n16_N8S20726C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20726C5D0Ev,_ZThn12_N8S20726C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20726C5D1Ev,_ZTv0_n16_N8S20726C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20726C5D1Ev,_ZThn12_N8S20726C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20726C5 = {  "S20726C5", // class name
  bases_S20726C5, 9,
  &(vtc_S20726C5[0]), // expected_vtbl_contents
  &(vtt_S20726C5[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S20726C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20726C5),16, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20726C5),4, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names89,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20726C4  : S20726C5 , virtual S6441C4_nt , virtual S20726C7 , S343C9_nt {
  ~S20726C4(); // tgen
  S20726C4(); // tgen
};
//SIG(-1 S20726C4) C1{ BC2{ BC3{ BC4{ BC5{ vd m} vd} vd FC4} VBC6{ BC4 BC5 BC7{ m} VBC8{ m FL} vd} Fi} VBC9{ m Fp} VBC4 BC10{ m FC11{ BC5 vd}}}


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

static void Test_S20726C4()
{
  extern Class_Descriptor cd_S20726C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S20726C4, buf);
    S20726C4 *dp, &lv = *(dp=new (buf) S20726C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S20726C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20726C4)");
    check_base_class_offset(lv, (S343C6_nt*)(S20726C7*)(S20726C6*)(S20726C5*), 0, "S20726C4");
    check_base_class_offset(lv, (S20726C7*)(S20726C6*)(S20726C5*), 0, "S20726C4");
    check_base_class_offset(lv, (S20726C6*)(S20726C5*), 0, "S20726C4");
    check_base_class_offset(lv, (S343C6_nt*)(S20726C7*)(S20726C9*), ABISELECT(32,16), "S20726C4");
    check_base_class_offset(lv, (S20726C7*)(S20726C9*), ABISELECT(32,16), "S20726C4");
    /*is_ambiguous_... S20726C9::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S20726C9*), ABISELECT(40,20), "S20726C4");
    check_base_class_offset(lv, (S731C17_nt*)(S20726C9*), ABISELECT(32,16), "S20726C4");
    check_base_class_offset(lv, (S3461C5_nt*)(S20726C9*), ABISELECT(48,24), "S20726C4");
    check_base_class_offset(lv, (S20726C9*)(S20726C5*), ABISELECT(32,16), "S20726C4");
    check_base_class_offset(lv, (S20726C5*), 0, "S20726C4");
    check_base_class_offset(lv, (S6441C4_nt*), ABISELECT(56,32), "S20726C4");
    /*is_ambiguous_... S20726C4::S20726C7 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S20726C7*), ABISELECT(64,36), "S20726C4");
    /*is_ambiguous_... S20726C4::S20726C7 */ AMB_check_base_class_offset(lv, (S20726C7*), ABISELECT(64,36), "S20726C4");
    check_base_class_offset(lv, (S343C9_nt*), ABISELECT(24,12), "S20726C4");
    test_class_info(&lv, &cd_S20726C4);
    dp->~S20726C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20726C4(Test_S20726C4, "S20726C4", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN8S20726C4C1Ev();
extern void _ZN8S20726C4D1Ev();
Name_Map name_map_S20726C4[] = {
  NSPAIR(_ZN8S20726C4C1Ev),
  NSPAIR(_ZN8S20726C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20726C7;
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
extern Class_Descriptor cd_S20726C6;
extern VTBL_ENTRY _ZTI8S20726C6[];
extern  VTBL_ENTRY _ZTV8S20726C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20726C7;
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S20726C9;
extern VTBL_ENTRY _ZTI8S20726C9[];
extern  VTBL_ENTRY _ZTV8S20726C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20726C9[];
extern Class_Descriptor cd_S20726C5;
extern VTBL_ENTRY _ZTI8S20726C5[];
extern  VTBL_ENTRY _ZTV8S20726C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20726C5[];
extern Class_Descriptor cd_S6441C4_nt;
extern VTBL_ENTRY _ZTI10S6441C4_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20726C7;
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
extern Class_Descriptor cd_S343C9_nt;
extern VTBL_ENTRY _ZTI9S343C9_nt[];
static Base_Class bases_S20726C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S20726C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S20726C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S343C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20726C7,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(40,20), //bcp->offset
    14, //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
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20726C9,    ABISELECT(32,16), //bcp->offset
    8, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20726C5,    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_S6441C4_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20726C7,    ABISELECT(64,36), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C9_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20726C4[];
extern void _ZN8S20726C4D1Ev();
extern void _ZN8S20726C4D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S20726C4D1Ev,_ZTv0_n16_N8S20726C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S20726C4D1Ev,_ZThn16_N8S20726C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20726C4D0Ev,_ZTv0_n16_N8S20726C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S20726C4D0Ev,_ZThn16_N8S20726C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n32_N8S20726C4D1Ev,_ZTvn4_n16_N8S20726C4D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N8S20726C4D0Ev,_ZTvn4_n16_N8S20726C4D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20726C4D1Ev,_ZTv0_n12_N8S20726C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S20726C4D1Ev,_ZThn36_N8S20726C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20726C4D0Ev,_ZTv0_n12_N8S20726C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S20726C4D0Ev,_ZThn36_N8S20726C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20726C4[] = {
  ABISELECT(64,36),
  ABISELECT(56,32),
  ABISELECT(48,24),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20726C4[0]),
  (VTBL_ENTRY)&_ZN8S20726C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20726C4D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20726C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20726C4D1Ev,_ZTv0_n16_N8S20726C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20726C4D0Ev,_ZTv0_n16_N8S20726C4D0Ev),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20726C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20726C4D1Ev,_ZTvn4_n16_N8S20726C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20726C4D0Ev,_ZTvn4_n16_N8S20726C4D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20726C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20726C4D1Ev,_ZTv0_n12_N8S20726C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20726C4D0Ev,_ZTv0_n12_N8S20726C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S20726C4[];
extern void _ZN8S20726C5D1Ev();
extern void _ZN8S20726C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20726C5__8S20726C4[] = {
  ABISELECT(48,24),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20726C5[0]),
  (VTBL_ENTRY)&_ZN8S20726C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20726C5D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20726C5D1Ev,_ZTv0_n16_N8S20726C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S20726C5D1Ev,_ZThn16_N8S20726C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20726C5D0Ev,_ZTv0_n16_N8S20726C5D0Ev)();
extern void ABISELECT(_ZThn32_N8S20726C5D0Ev,_ZThn16_N8S20726C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20726C9__8S20726C5__8S20726C4[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20726C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20726C5D1Ev,_ZTv0_n16_N8S20726C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20726C5D0Ev,_ZTv0_n16_N8S20726C5D0Ev),
};
extern void ABISELECT(_ZTvn8_n32_N8S20726C5D1Ev,_ZTvn4_n16_N8S20726C5D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N8S20726C5D0Ev,_ZTvn4_n16_N8S20726C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt8S20726C9__A2__8S20726C5__8S20726C4[] = {
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20726C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20726C5D1Ev,_ZTvn4_n16_N8S20726C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20726C5D0Ev,_ZTvn4_n16_N8S20726C5D0Ev),
};
extern void _ZN8S20726C9D1Ev();
extern void _ZN8S20726C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20726C9__8S20726C4[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20726C9[0]),
  (VTBL_ENTRY)&_ZN8S20726C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20726C9D0Ev,
};
static  VTT_ENTRY vtt_S20726C4[] = {
  {&(_ZTV8S20726C4[6]),  6,23},
  {&(_tg__ZTV8S20726C5__8S20726C4[4]),  4,6},
  {&(_tg__ZTV8S20726C9__8S20726C5__8S20726C4[4]),  4,6},
  {&(_tg__ZTV9S343C6_nt8S20726C9__A2__8S20726C5__8S20726C4[2]),  2,4},
  {&(_ZTV8S20726C4[12]),  12,23},
  {&(_ZTV8S20726C4[16]),  16,23},
  {&(_ZTV8S20726C4[21]),  21,23},
  {&(_tg__ZTV8S20726C9__8S20726C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20726C4[];
extern  VTBL_ENTRY _ZTV8S20726C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20726C4[];
static VTBL_ENTRY alt_thunk_names90[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20726C5D0Ev,_ZTv0_n16_N8S20726C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20726C5D0Ev,_ZThn16_N8S20726C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20726C5D1Ev,_ZTv0_n16_N8S20726C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20726C5D1Ev,_ZThn16_N8S20726C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20726C4D0Ev,_ZTv0_n12_N8S20726C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20726C4D0Ev,_ZThn36_N8S20726C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20726C4D1Ev,_ZTv0_n12_N8S20726C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20726C4D1Ev,_ZThn36_N8S20726C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20726C4D0Ev,_ZTv0_n16_N8S20726C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20726C4D0Ev,_ZThn16_N8S20726C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20726C4D1Ev,_ZTv0_n16_N8S20726C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20726C4D1Ev,_ZThn16_N8S20726C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20726C4 = {  "S20726C4", // class name
  bases_S20726C4, 14,
  &(vtc_S20726C4[0]), // expected_vtbl_contents
  &(vtt_S20726C4[0]), // expected_vtt_contents
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI8S20726C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20726C4),23, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20726C4),8, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names90,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20726C15  : S20726C7 {
  virtual  ~S20726C15(); // _ZN9S20726C15D1Ev
  S20726C15(); // tgen
};
//SIG(-1 S20726C15) C1{ BC2{ BC3{ vd m} vd} vd}


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

static void Test_S20726C15()
{
  extern Class_Descriptor cd_S20726C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20726C15, buf);
    S20726C15 *dp, &lv = *(dp=new (buf) S20726C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20726C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20726C15)");
    check_base_class_offset(lv, (S343C6_nt*)(S20726C7*), 0, "S20726C15");
    check_base_class_offset(lv, (S20726C7*), 0, "S20726C15");
    test_class_info(&lv, &cd_S20726C15);
    dp->~S20726C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20726C15(Test_S20726C15, "S20726C15", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S20726C15C1Ev();
extern void _ZN9S20726C15D1Ev();
Name_Map name_map_S20726C15[] = {
  NSPAIR(_ZN9S20726C15C1Ev),
  NSPAIR(_ZN9S20726C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20726C7;
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
static Base_Class bases_S20726C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20726C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S20726C15[];
extern void _ZN9S20726C15D1Ev();
extern void _ZN9S20726C15D0Ev();
static  VTBL_ENTRY vtc_S20726C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20726C15[0]),
  (VTBL_ENTRY)&_ZN9S20726C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20726C15D0Ev,
};
extern VTBL_ENTRY _ZTI9S20726C15[];
extern  VTBL_ENTRY _ZTV9S20726C15[];
Class_Descriptor cd_S20726C15 = {  "S20726C15", // class name
  bases_S20726C15, 2,
  &(vtc_S20726C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S20726C15),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20726C15),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20726C16  : S20726C6 , S20726C15 {
  long s20726c16f0;
  int s20726c16f1;
  ~S20726C16(); // tgen
  S20726C16(); // tgen
};
//SIG(-1 S20726C16) C1{ BC2{ BC3{ BC4{ vd m} vd} vd FC3} BC5{ BC3 vd} Fl Fi}


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

static void Test_S20726C16()
{
  extern Class_Descriptor cd_S20726C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S20726C16, buf);
    S20726C16 *dp, &lv = *(dp=new (buf) S20726C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S20726C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20726C16)");
    check_base_class_offset(lv, (S343C6_nt*)(S20726C7*)(S20726C6*), 0, "S20726C16");
    check_base_class_offset(lv, (S20726C7*)(S20726C6*), 0, "S20726C16");
    check_base_class_offset(lv, (S20726C6*), 0, "S20726C16");
    check_base_class_offset(lv, (S343C6_nt*)(S20726C7*)(S20726C15*), ABISELECT(16,8), "S20726C16");
    check_base_class_offset(lv, (S20726C7*)(S20726C15*), ABISELECT(16,8), "S20726C16");
    check_base_class_offset(lv, (S20726C15*), ABISELECT(16,8), "S20726C16");
    check_field_offset(lv, s20726c16f0, ABISELECT(24,12), "S20726C16.s20726c16f0");
    check_field_offset(lv, s20726c16f1, ABISELECT(32,16), "S20726C16.s20726c16f1");
    test_class_info(&lv, &cd_S20726C16);
    dp->~S20726C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20726C16(Test_S20726C16, "S20726C16", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN9S20726C16C1Ev();
extern void _ZN9S20726C16D1Ev();
Name_Map name_map_S20726C16[] = {
  NSPAIR(_ZN9S20726C16C1Ev),
  NSPAIR(_ZN9S20726C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20726C7;
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
extern Class_Descriptor cd_S20726C6;
extern VTBL_ENTRY _ZTI8S20726C6[];
extern  VTBL_ENTRY _ZTV8S20726C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20726C7;
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
extern Class_Descriptor cd_S20726C15;
extern VTBL_ENTRY _ZTI9S20726C15[];
extern  VTBL_ENTRY _ZTV9S20726C15[];
static Base_Class bases_S20726C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20726C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20726C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S343C6_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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20726C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20726C15,    ABISELECT(16,8), //bcp->offset
    4, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20726C16[];
extern void _ZN9S20726C16D1Ev();
extern void _ZN9S20726C16D0Ev();
extern void ABISELECT(_ZThn16_N9S20726C16D1Ev,_ZThn8_N9S20726C16D1Ev)();
extern void ABISELECT(_ZThn16_N9S20726C16D0Ev,_ZThn8_N9S20726C16D0Ev)();
static  VTBL_ENTRY vtc_S20726C16[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20726C16[0]),
  (VTBL_ENTRY)&_ZN9S20726C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20726C16D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20726C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20726C16D1Ev,_ZThn8_N9S20726C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20726C16D0Ev,_ZThn8_N9S20726C16D0Ev),
};
extern VTBL_ENTRY _ZTI9S20726C16[];
extern  VTBL_ENTRY _ZTV9S20726C16[];
Class_Descriptor cd_S20726C16 = {  "S20726C16", // class name
  bases_S20726C16, 6,
  &(vtc_S20726C16[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI9S20726C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20726C16),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20726C14  : S20726C15 , virtual S343C6_nt , virtual S20726C7 , virtual S20726C16 {
  int s20726c14f0;
  ~S20726C14(); // tgen
  S20726C14(); // tgen
};
//SIG(-1 S20726C14) C1{ BC2{ BC3{ BC4{ vd m} vd} vd} VBC4 VBC3 VBC5{ BC6{ BC3 vd FC3} BC2 Fl Fi} Fi}


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

static void Test_S20726C14()
{
  extern Class_Descriptor cd_S20726C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S20726C14, buf);
    S20726C14 *dp, &lv = *(dp=new (buf) S20726C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S20726C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20726C14)");
    /*is_ambiguous_... S20726C14::S20726C15 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S20726C7*)(S20726C15*), 0, "S20726C14");
    /*is_ambiguous_... S20726C14::S20726C15 */ AMB_check_base_class_offset(lv, (S20726C7*)(S20726C15*), 0, "S20726C14");
    /*is_ambiguous_... S20726C14::S20726C15 */ AMB_check_base_class_offset(lv, (S20726C15*), 0, "S20726C14");
    /*is_ambiguous_... S20726C14::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*), ABISELECT(16,8), "S20726C14");
    /*is_ambiguous_... S20726C14::S20726C7 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S20726C7*), ABISELECT(24,12), "S20726C14");
    /*is_ambiguous_... S20726C14::S20726C7 */ AMB_check_base_class_offset(lv, (S20726C7*), ABISELECT(24,12), "S20726C14");
    check_base_class_offset(lv, (S343C6_nt*)(S20726C7*)(S20726C6*)(S20726C16*), ABISELECT(32,16), "S20726C14");
    check_base_class_offset(lv, (S20726C7*)(S20726C6*)(S20726C16*), ABISELECT(32,16), "S20726C14");
    check_base_class_offset(lv, (S20726C6*)(S20726C16*), ABISELECT(32,16), "S20726C14");
    check_base_class_offset(lv, (S343C6_nt*)(S20726C7*)(S20726C15*)(S20726C16*), ABISELECT(48,24), "S20726C14");
    check_base_class_offset(lv, (S20726C7*)(S20726C15*)(S20726C16*), ABISELECT(48,24), "S20726C14");
    check_base_class_offset(lv, (S20726C15*)(S20726C16*), ABISELECT(48,24), "S20726C14");
    check_base_class_offset(lv, (S20726C16*), ABISELECT(32,16), "S20726C14");
    check_field_offset(lv, s20726c14f0, ABISELECT(8,4), "S20726C14.s20726c14f0");
    test_class_info(&lv, &cd_S20726C14);
    dp->~S20726C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20726C14(Test_S20726C14, "S20726C14", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN9S20726C14C1Ev();
extern void _ZN9S20726C14D1Ev();
Name_Map name_map_S20726C14[] = {
  NSPAIR(_ZN9S20726C14C1Ev),
  NSPAIR(_ZN9S20726C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20726C7;
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
extern Class_Descriptor cd_S20726C15;
extern VTBL_ENTRY _ZTI9S20726C15[];
extern  VTBL_ENTRY _ZTV9S20726C15[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20726C7;
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20726C7;
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
extern Class_Descriptor cd_S20726C6;
extern VTBL_ENTRY _ZTI8S20726C6[];
extern  VTBL_ENTRY _ZTV8S20726C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20726C7;
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
extern Class_Descriptor cd_S20726C15;
extern VTBL_ENTRY _ZTI9S20726C15[];
extern  VTBL_ENTRY _ZTV9S20726C15[];
extern Class_Descriptor cd_S20726C16;
extern VTBL_ENTRY _ZTI9S20726C16[];
extern  VTBL_ENTRY _ZTV9S20726C16[];
static Base_Class bases_S20726C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S20726C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S20726C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S343C6_nt,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_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
    5, //immediately_derived
  0, 0},
  {&cd_S20726C7,    ABISELECT(24,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20726C7,    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
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20726C6,    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
    12, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20726C7,    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
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20726C15,    ABISELECT(48,24), //bcp->offset
    22, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20726C16,    ABISELECT(32,16), //bcp->offset
    17, //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
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20726C14[];
extern void _ZN9S20726C14D1Ev();
extern void _ZN9S20726C14D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20726C14D1Ev,_ZTv0_n12_N9S20726C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S20726C14D1Ev,_ZThn8_N9S20726C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20726C14D0Ev,_ZTv0_n12_N9S20726C14D0Ev)();
extern void ABISELECT(_ZThn16_N9S20726C14D0Ev,_ZThn8_N9S20726C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20726C14D1Ev,_ZTv0_n12_N9S20726C14D1Ev)();
extern void ABISELECT(_ZThn24_N9S20726C14D1Ev,_ZThn12_N9S20726C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20726C14D0Ev,_ZTv0_n12_N9S20726C14D0Ev)();
extern void ABISELECT(_ZThn24_N9S20726C14D0Ev,_ZThn12_N9S20726C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20726C14D1Ev,_ZTv0_n12_N9S20726C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S20726C14D1Ev,_ZThn16_N9S20726C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20726C14D0Ev,_ZTv0_n12_N9S20726C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S20726C14D0Ev,_ZThn16_N9S20726C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n24_N9S20726C14D1Ev,_ZTvn8_n12_N9S20726C14D1Ev)();
extern void ABISELECT(_ZTvn16_n24_N9S20726C14D0Ev,_ZTvn8_n12_N9S20726C14D0Ev)();
static  VTBL_ENTRY vtc_S20726C14[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20726C14[0]),
  (VTBL_ENTRY)&_ZN9S20726C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20726C14D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20726C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20726C14D1Ev,_ZTv0_n12_N9S20726C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20726C14D0Ev,_ZTv0_n12_N9S20726C14D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20726C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20726C14D1Ev,_ZTv0_n12_N9S20726C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20726C14D0Ev,_ZTv0_n12_N9S20726C14D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20726C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20726C14D1Ev,_ZTv0_n12_N9S20726C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20726C14D0Ev,_ZTv0_n12_N9S20726C14D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20726C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N9S20726C14D1Ev,_ZTvn8_n12_N9S20726C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N9S20726C14D0Ev,_ZTvn8_n12_N9S20726C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S20726C14[];
static  VTT_ENTRY vtt_S20726C14[] = {
  {&(_ZTV9S20726C14[5]),  5,26},
  {&(_ZTV9S20726C14[10]),  10,26},
  {&(_ZTV9S20726C14[15]),  15,26},
  {&(_ZTV9S20726C14[20]),  20,26},
  {&(_ZTV9S20726C14[24]),  24,26},
};
extern VTBL_ENTRY _ZTI9S20726C14[];
extern  VTBL_ENTRY _ZTV9S20726C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20726C14[];
static VTBL_ENTRY alt_thunk_names91[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20726C14D0Ev,_ZTv0_n12_N9S20726C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20726C14D0Ev,_ZThn16_N9S20726C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20726C14D0Ev,_ZThn12_N9S20726C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20726C14D0Ev,_ZThn8_N9S20726C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20726C14D1Ev,_ZTv0_n12_N9S20726C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20726C14D1Ev,_ZThn16_N9S20726C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20726C14D1Ev,_ZThn12_N9S20726C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20726C14D1Ev,_ZThn8_N9S20726C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20726C14 = {  "S20726C14", // class name
  bases_S20726C14, 13,
  &(vtc_S20726C14[0]), // expected_vtbl_contents
  &(vtt_S20726C14[0]), // expected_vtt_contents
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI9S20726C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20726C14),26, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20726C14),5, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names91,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20726C13_nt  : virtual S731C17_nt , virtual S343C6_nt , virtual S20726C14 {
  ~S20726C13_nt(); // tgen
  S20726C13_nt(); // tgen
};
//SIG(-1 S20726C13_nt) C1{ VBC2{ m} VBC3{ vd m} VBC4{ BC5{ BC6{ BC3 vd} vd} VBC3 VBC6 VBC7{ BC8{ BC6 vd FC6} BC5 Fl Fi} Fi}}


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

//skip512 S20726C13_nt

#else // __cplusplus

extern void _ZN12S20726C13_ntC1Ev();
extern void _ZN12S20726C13_ntD1Ev();
Name_Map name_map_S20726C13_nt[] = {
  NSPAIR(_ZN12S20726C13_ntC1Ev),
  NSPAIR(_ZN12S20726C13_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20726C7;
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
extern Class_Descriptor cd_S20726C15;
extern VTBL_ENTRY _ZTI9S20726C15[];
extern  VTBL_ENTRY _ZTV9S20726C15[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20726C7;
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20726C7;
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
extern Class_Descriptor cd_S20726C6;
extern VTBL_ENTRY _ZTI8S20726C6[];
extern  VTBL_ENTRY _ZTV8S20726C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20726C7;
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
extern Class_Descriptor cd_S20726C15;
extern VTBL_ENTRY _ZTI9S20726C15[];
extern  VTBL_ENTRY _ZTV9S20726C15[];
extern Class_Descriptor cd_S20726C16;
extern VTBL_ENTRY _ZTI9S20726C16[];
extern  VTBL_ENTRY _ZTV9S20726C16[];
extern Class_Descriptor cd_S20726C14;
extern VTBL_ENTRY _ZTI9S20726C14[];
extern  VTBL_ENTRY _ZTV9S20726C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20726C14[];
static Base_Class bases_S20726C13_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20726C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20726C15,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S343C6_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
    6, //immediately_derived
  0, 0},
  {&cd_S20726C7,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S343C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20726C7,    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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20726C6,    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
    13, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20726C7,    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
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20726C15,    ABISELECT(48,24), //bcp->offset
    28, //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
    13, //immediately_derived
  0, 0},
  {&cd_S20726C16,    ABISELECT(32,16), //bcp->offset
    23, //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
    10, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20726C14,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI12S20726C13_nt[];
extern void ABISELECT(_ZTv0_n24_N12S20726C13_ntD1Ev,_ZTv0_n12_N12S20726C13_ntD1Ev)();
extern void _ZN12S20726C13_ntD1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20726C13_ntD0Ev,_ZTv0_n12_N12S20726C13_ntD0Ev)();
extern void _ZN12S20726C13_ntD0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N12S20726C13_ntD1Ev,_ZTv0_n24_N12S20726C13_ntD1Ev)();
extern void ABISELECT(_ZThn8_N12S20726C13_ntD1Ev,_ZThn4_N12S20726C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N12S20726C13_ntD0Ev,_ZTv0_n24_N12S20726C13_ntD0Ev)();
extern void ABISELECT(_ZThn8_N12S20726C13_ntD0Ev,_ZThn4_N12S20726C13_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20726C13_ntD1Ev,_ZTv0_n12_N12S20726C13_ntD1Ev)();
extern void ABISELECT(_ZThn24_N12S20726C13_ntD1Ev,_ZThn12_N12S20726C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20726C13_ntD0Ev,_ZTv0_n12_N12S20726C13_ntD0Ev)();
extern void ABISELECT(_ZThn24_N12S20726C13_ntD0Ev,_ZThn12_N12S20726C13_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20726C13_ntD1Ev,_ZTv0_n12_N12S20726C13_ntD1Ev)();
extern void ABISELECT(_ZThn32_N12S20726C13_ntD1Ev,_ZThn16_N12S20726C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20726C13_ntD0Ev,_ZTv0_n12_N12S20726C13_ntD0Ev)();
extern void ABISELECT(_ZThn32_N12S20726C13_ntD0Ev,_ZThn16_N12S20726C13_ntD0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n24_N12S20726C13_ntD1Ev,_ZTvn8_n12_N12S20726C13_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n24_N12S20726C13_ntD0Ev,_ZTvn8_n12_N12S20726C13_ntD0Ev)();
static  VTBL_ENTRY vtc_S20726C13_nt[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20726C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20726C13_ntD1Ev,_ZTv0_n12_N12S20726C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20726C13_ntD0Ev,_ZTv0_n12_N12S20726C13_ntD0Ev),
  ABISELECT(-8,-4),
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI12S20726C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N12S20726C13_ntD1Ev,_ZTv0_n24_N12S20726C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N12S20726C13_ntD0Ev,_ZTv0_n24_N12S20726C13_ntD0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI12S20726C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20726C13_ntD1Ev,_ZTv0_n12_N12S20726C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20726C13_ntD0Ev,_ZTv0_n12_N12S20726C13_ntD0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI12S20726C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20726C13_ntD1Ev,_ZTv0_n12_N12S20726C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20726C13_ntD0Ev,_ZTv0_n12_N12S20726C13_ntD0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI12S20726C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N12S20726C13_ntD1Ev,_ZTvn8_n12_N12S20726C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N12S20726C13_ntD0Ev,_ZTvn8_n12_N12S20726C13_ntD0Ev),
};
extern VTBL_ENTRY _ZTV12S20726C13_nt[];
extern void _ZN9S20726C14D1Ev();
extern void _ZN9S20726C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20726C14__12S20726C13_nt[] = {
  ABISELECT(24,12),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20726C14[0]),
  (VTBL_ENTRY)&_ZN9S20726C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20726C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20726C14D1Ev,_ZTv0_n12_N9S20726C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20726C14D0Ev,_ZTv0_n12_N9S20726C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt__A1__9S20726C14__12S20726C13_nt[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S20726C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20726C14D1Ev,_ZTv0_n12_N9S20726C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20726C14D0Ev,_ZTv0_n12_N9S20726C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20726C14D1Ev,_ZTv0_n12_N9S20726C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S20726C14D1Ev,_ZThn8_N9S20726C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20726C14D0Ev,_ZTv0_n12_N9S20726C14D0Ev)();
extern void ABISELECT(_ZThn16_N9S20726C14D0Ev,_ZThn8_N9S20726C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20726C7__A1__9S20726C14__12S20726C13_nt[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20726C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20726C14D1Ev,_ZTv0_n12_N9S20726C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20726C14D0Ev,_ZTv0_n12_N9S20726C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20726C14D1Ev,_ZTv0_n12_N9S20726C14D1Ev)();
extern void ABISELECT(_ZThn24_N9S20726C14D1Ev,_ZThn12_N9S20726C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20726C14D0Ev,_ZTv0_n12_N9S20726C14D0Ev)();
extern void ABISELECT(_ZThn24_N9S20726C14D0Ev,_ZThn12_N9S20726C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20726C16__9S20726C14__12S20726C13_nt[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20726C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20726C14D1Ev,_ZTv0_n12_N9S20726C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20726C14D0Ev,_ZTv0_n12_N9S20726C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n24_N9S20726C14D1Ev,_ZTvn8_n12_N9S20726C14D1Ev)();
extern void ABISELECT(_ZTvn16_n24_N9S20726C14D0Ev,_ZTvn8_n12_N9S20726C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20726C159S20726C16__A1__9S20726C14__12S20726C13_nt[] = {
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20726C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N9S20726C14D1Ev,_ZTvn8_n12_N9S20726C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N9S20726C14D0Ev,_ZTvn8_n12_N9S20726C14D0Ev),
};
static  VTT_ENTRY vtt_S20726C13_nt[] = {
  {&(_ZTV12S20726C13_nt[8]),  8,32},
  {&(_ZTV12S20726C13_nt[8]),  8,32},
  {&(_ZTV12S20726C13_nt[16]),  16,32},
  {&(_ZTV12S20726C13_nt[21]),  21,32},
  {&(_ZTV12S20726C13_nt[26]),  26,32},
  {&(_ZTV12S20726C13_nt[30]),  30,32},
  {&(_tg__ZTV9S20726C14__12S20726C13_nt[5]),  5,7},
  {&(_tg__ZTV9S343C6_nt__A1__9S20726C14__12S20726C13_nt[3]),  3,5},
  {&(_tg__ZTV8S20726C7__A1__9S20726C14__12S20726C13_nt[3]),  3,5},
  {&(_tg__ZTV9S20726C16__9S20726C14__12S20726C13_nt[3]),  3,5},
  {&(_tg__ZTV9S20726C159S20726C16__A1__9S20726C14__12S20726C13_nt[2]),  2,4},
};
extern VTBL_ENTRY _ZTI12S20726C13_nt[];
VTBL_ENTRY *P__ZTI12S20726C13_nt = _ZTI12S20726C13_nt; 
extern  VTBL_ENTRY _ZTV12S20726C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20726C13_nt[];
static VTBL_ENTRY alt_thunk_names92[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20726C14D0Ev,_ZTv0_n12_N9S20726C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20726C14D0Ev,_ZThn12_N9S20726C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20726C14D0Ev,_ZThn8_N9S20726C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20726C14D1Ev,_ZTv0_n12_N9S20726C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20726C14D1Ev,_ZThn12_N9S20726C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20726C14D1Ev,_ZThn8_N9S20726C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N12S20726C13_ntD0Ev,_ZTv0_n24_N12S20726C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N12S20726C13_ntD0Ev,_ZThn4_N12S20726C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N12S20726C13_ntD1Ev,_ZTv0_n24_N12S20726C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N12S20726C13_ntD1Ev,_ZThn4_N12S20726C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N12S20726C13_ntD0Ev,_ZTv0_n12_N12S20726C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N12S20726C13_ntD0Ev,_ZThn16_N12S20726C13_ntD0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N12S20726C13_ntD0Ev,_ZThn12_N12S20726C13_ntD0Ev),
  (VTBL_ENTRY)_ZN12S20726C13_ntD0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N12S20726C13_ntD1Ev,_ZTv0_n12_N12S20726C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N12S20726C13_ntD1Ev,_ZThn16_N12S20726C13_ntD1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N12S20726C13_ntD1Ev,_ZThn12_N12S20726C13_ntD1Ev),
  (VTBL_ENTRY)_ZN12S20726C13_ntD1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20726C13_nt = {  "S20726C13_nt", // class name
  bases_S20726C13_nt, 15,
  &(vtc_S20726C13_nt[0]), // expected_vtbl_contents
  &(vtt_S20726C13_nt[0]), // expected_vtt_contents
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI12S20726C13_nt),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV12S20726C13_nt),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S20726C13_nt),11, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names92,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20726C1  : virtual S20726C2 , S20726C4 , virtual S20726C13_nt {
  virtual  ~S20726C1(); // _ZN8S20726C1D2Ev
  S20726C1(); // tgen
};
//SIG(1 S20726C1) C1{ VBC2{ VBC3{ m} vd v1} BC4{ BC5{ BC6{ BC7{ BC8{ vd m} vd} vd FC7} VBC9{ BC7 BC8 BC3 VBC10{ m FL} vd} Fi} VBC11{ m Fp} VBC7 BC12{ m FC13{ BC8 vd}}} VBC14{ VBC3 VBC8 VBC15{ BC16{ BC7 vd} VBC8 VBC7 VBC17{ BC6 BC16 Fl Fi} Fi}} vd}


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

static void Test_S20726C1()
{
  extern Class_Descriptor cd_S20726C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,20)];
    init_test(&cd_S20726C1, buf);
    S20726C1 *dp, &lv = *(dp=new (buf) S20726C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,76), "sizeof(S20726C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20726C1)");
    check_base_class_offset(lv, (S731C17_nt*)(S20726C2*), 0, "S20726C1");
    check_base_class_offset(lv, (S731C17_nt*)(S20726C13_nt*), 0, "S20726C1");
    check_base_class_offset(lv, (S20726C2*), ABISELECT(32,16), "S20726C1");
    check_base_class_offset(lv, (S343C6_nt*)(S20726C7*)(S20726C6*)(S20726C5*)(S20726C4*), 0, "S20726C1");
    check_base_class_offset(lv, (S20726C7*)(S20726C6*)(S20726C5*)(S20726C4*), 0, "S20726C1");
    check_base_class_offset(lv, (S20726C6*)(S20726C5*)(S20726C4*), 0, "S20726C1");
    check_base_class_offset(lv, (S343C6_nt*)(S20726C7*)(S20726C9*), ABISELECT(40,20), "S20726C1");
    check_base_class_offset(lv, (S20726C7*)(S20726C9*), ABISELECT(40,20), "S20726C1");
    /*is_ambiguous_... S20726C9::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S20726C9*), ABISELECT(48,24), "S20726C1");
    check_base_class_offset(lv, (S731C17_nt*)(S20726C9*), ABISELECT(40,20), "S20726C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S20726C9*), ABISELECT(56,28), "S20726C1");
    check_base_class_offset(lv, (S20726C9*)(S20726C5*)(S20726C4*), ABISELECT(40,20), "S20726C1");
    check_base_class_offset(lv, (S20726C5*)(S20726C4*), 0, "S20726C1");
    check_base_class_offset(lv, (S6441C4_nt*)(S20726C4*), ABISELECT(64,36), "S20726C1");
    /*is_ambiguous_... S20726C1::S20726C7 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S20726C7*), ABISELECT(72,40), "S20726C1");
    /*is_ambiguous_... S20726C4::S20726C7 */ AMB_check_base_class_offset(lv, (S20726C7*)(S20726C4*), ABISELECT(72,40), "S20726C1");
    /*is_ambiguous_... S20726C14::S20726C7 */ AMB_check_base_class_offset(lv, (S20726C7*)(S20726C14*), ABISELECT(72,40), "S20726C1");
    check_base_class_offset(lv, (S343C9_nt*)(S20726C4*), ABISELECT(24,12), "S20726C1");
    check_base_class_offset(lv, (S20726C4*), 0, "S20726C1");
    /*is_ambiguous_... S20726C13_nt::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S20726C13_nt*), ABISELECT(80,44), "S20726C1");
    /*is_ambiguous_... S20726C14::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S20726C14*), ABISELECT(80,44), "S20726C1");
    /*is_ambiguous_... S20726C14::S20726C15 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S20726C7*)(S20726C15*)(S20726C14*), ABISELECT(88,48), "S20726C1");
    /*is_ambiguous_... S20726C14::S20726C15 */ AMB_check_base_class_offset(lv, (S20726C7*)(S20726C15*)(S20726C14*), ABISELECT(88,48), "S20726C1");
    /*is_ambiguous_... S20726C14::S20726C15 */ AMB_check_base_class_offset(lv, (S20726C15*)(S20726C14*), ABISELECT(88,48), "S20726C1");
    check_base_class_offset(lv, (S343C6_nt*)(S20726C7*)(S20726C6*)(S20726C16*), ABISELECT(104,56), "S20726C1");
    check_base_class_offset(lv, (S20726C7*)(S20726C6*)(S20726C16*), ABISELECT(104,56), "S20726C1");
    check_base_class_offset(lv, (S20726C6*)(S20726C16*), ABISELECT(104,56), "S20726C1");
    check_base_class_offset(lv, (S343C6_nt*)(S20726C7*)(S20726C15*)(S20726C16*), ABISELECT(120,64), "S20726C1");
    check_base_class_offset(lv, (S20726C7*)(S20726C15*)(S20726C16*), ABISELECT(120,64), "S20726C1");
    check_base_class_offset(lv, (S20726C15*)(S20726C16*), ABISELECT(120,64), "S20726C1");
    check_base_class_offset(lv, (S20726C16*)(S20726C14*), ABISELECT(104,56), "S20726C1");
    check_base_class_offset(lv, (S20726C14*)(S20726C13_nt*), ABISELECT(88,48), "S20726C1");
    check_base_class_offset(lv, (S20726C13_nt*), ABISELECT(80,44), "S20726C1");
    test_class_info(&lv, &cd_S20726C1);
    dp->~S20726C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20726C1(Test_S20726C1, "S20726C1", ABISELECT(144,76));

#else // __cplusplus

extern void _ZN8S20726C1C1Ev();
extern void _ZN8S20726C1D2Ev();
Name_Map name_map_S20726C1[] = {
  NSPAIR(_ZN8S20726C1C1Ev),
  NSPAIR(_ZN8S20726C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20726C2;
extern VTBL_ENTRY _ZTI8S20726C2[];
extern  VTBL_ENTRY _ZTV8S20726C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20726C2[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20726C7;
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
extern Class_Descriptor cd_S20726C6;
extern VTBL_ENTRY _ZTI8S20726C6[];
extern  VTBL_ENTRY _ZTV8S20726C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20726C7;
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S20726C9;
extern VTBL_ENTRY _ZTI8S20726C9[];
extern  VTBL_ENTRY _ZTV8S20726C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20726C9[];
extern Class_Descriptor cd_S20726C5;
extern VTBL_ENTRY _ZTI8S20726C5[];
extern  VTBL_ENTRY _ZTV8S20726C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20726C5[];
extern Class_Descriptor cd_S6441C4_nt;
extern VTBL_ENTRY _ZTI10S6441C4_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20726C7;
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
extern Class_Descriptor cd_S343C9_nt;
extern VTBL_ENTRY _ZTI9S343C9_nt[];
extern Class_Descriptor cd_S20726C4;
extern VTBL_ENTRY _ZTI8S20726C4[];
extern  VTBL_ENTRY _ZTV8S20726C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20726C4[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20726C7;
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
extern Class_Descriptor cd_S20726C15;
extern VTBL_ENTRY _ZTI9S20726C15[];
extern  VTBL_ENTRY _ZTV9S20726C15[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20726C7;
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
extern Class_Descriptor cd_S20726C6;
extern VTBL_ENTRY _ZTI8S20726C6[];
extern  VTBL_ENTRY _ZTV8S20726C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20726C7;
extern VTBL_ENTRY _ZTI8S20726C7[];
extern  VTBL_ENTRY _ZTV8S20726C7[];
extern Class_Descriptor cd_S20726C15;
extern VTBL_ENTRY _ZTI9S20726C15[];
extern  VTBL_ENTRY _ZTV9S20726C15[];
extern Class_Descriptor cd_S20726C16;
extern VTBL_ENTRY _ZTI9S20726C16[];
extern  VTBL_ENTRY _ZTV9S20726C16[];
extern Class_Descriptor cd_S20726C14;
extern VTBL_ENTRY _ZTI9S20726C14[];
extern  VTBL_ENTRY _ZTV9S20726C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20726C14[];
extern Class_Descriptor cd_S20726C13_nt;
extern VTBL_ENTRY _ZTI12S20726C13_nt[];
extern  VTBL_ENTRY _ZTV12S20726C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20726C13_nt[];
static Base_Class bases_S20726C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20726C2,    ABISELECT(32,16), //bcp->offset
    14, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    3, //immediately_derived
  0, 0},
  {&cd_S20726C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    4, //immediately_derived
  0, 0},
  {&cd_S20726C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    11, //immediately_derived
  0, 0},
  {&cd_S343C6_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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20726C7,    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
    10, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(48,24), //bcp->offset
    28, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20726C9,    ABISELECT(40,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20726C5,    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
    24, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S6441C4_nt,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S343C6_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
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20726C7,    ABISELECT(72,40), //bcp->offset
    32, //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
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S343C9_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
    16, //immediately_derived
  0, 0},
  {&cd_S20726C4,    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
    25, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S343C6_nt,    ABISELECT(80,44), //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
    8, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S343C6_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
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20726C7,    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
    17, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20726C15,    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
    18, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S343C6_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
    9, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20726C7,    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
    10, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20726C6,    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
    11, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20726C7,    ABISELECT(120,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20726C15,    ABISELECT(120,64), //bcp->offset
    60, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20726C16,    ABISELECT(104,56), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S20726C14,    ABISELECT(88,48), //bcp->offset
    47, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S20726C13_nt,    ABISELECT(80,44), //bcp->offset
    37, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20726C1[];
extern void _ZN8S20726C1D1Ev();
extern void _ZN8S20726C1D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S20726C1D1Ev,_ZTv0_n16_N8S20726C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S20726C1D1Ev,_ZThn16_N8S20726C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20726C1D0Ev,_ZTv0_n16_N8S20726C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S20726C1D0Ev,_ZThn16_N8S20726C1D0Ev)() __attribute__((weak));
extern void _ZN8S20726C22v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S20726C1D1Ev,_ZTv0_n16_N8S20726C1D1Ev)();
extern void ABISELECT(_ZThn40_N8S20726C1D1Ev,_ZThn20_N8S20726C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20726C1D0Ev,_ZTv0_n16_N8S20726C1D0Ev)();
extern void ABISELECT(_ZThn40_N8S20726C1D0Ev,_ZThn20_N8S20726C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n32_N8S20726C1D1Ev,_ZTvn4_n16_N8S20726C1D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N8S20726C1D0Ev,_ZTvn4_n16_N8S20726C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20726C1D1Ev,_ZTv0_n12_N8S20726C1D1Ev)();
extern void ABISELECT(_ZThn72_N8S20726C1D1Ev,_ZThn40_N8S20726C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20726C1D0Ev,_ZTv0_n12_N8S20726C1D0Ev)();
extern void ABISELECT(_ZThn72_N8S20726C1D0Ev,_ZThn40_N8S20726C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20726C1D1Ev,_ZTv0_n12_N8S20726C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S20726C1D1Ev,_ZThn44_N8S20726C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20726C1D0Ev,_ZTv0_n12_N8S20726C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S20726C1D0Ev,_ZThn44_N8S20726C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20726C1D1Ev,_ZTv0_n24_N8S20726C1D1Ev)();
extern void ABISELECT(_ZThn88_N8S20726C1D1Ev,_ZThn48_N8S20726C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20726C1D0Ev,_ZTv0_n24_N8S20726C1D0Ev)();
extern void ABISELECT(_ZThn88_N8S20726C1D0Ev,_ZThn48_N8S20726C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20726C1D1Ev,_ZTv0_n12_N8S20726C1D1Ev)();
extern void ABISELECT(_ZThn104_N8S20726C1D1Ev,_ZThn56_N8S20726C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20726C1D0Ev,_ZTv0_n12_N8S20726C1D0Ev)();
extern void ABISELECT(_ZThn104_N8S20726C1D0Ev,_ZThn56_N8S20726C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n24_N8S20726C1D1Ev,_ZTvn8_n12_N8S20726C1D1Ev)();
extern void ABISELECT(_ZTvn16_n24_N8S20726C1D0Ev,_ZTvn8_n12_N8S20726C1D0Ev)();
static  VTBL_ENTRY vtc_S20726C1[] = {
  ABISELECT(104,56),
  ABISELECT(88,48),
  ABISELECT(80,44),
  ABISELECT(80,44),
  0,
  ABISELECT(32,16),
  ABISELECT(72,40),
  ABISELECT(64,36),
  ABISELECT(56,28),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20726C1[0]),
  (VTBL_ENTRY)&_ZN8S20726C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20726C1D0Ev,
  0,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20726C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20726C1D1Ev,_ZTv0_n16_N8S20726C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20726C1D0Ev,_ZTv0_n16_N8S20726C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20726C22v1Ev,
  ABISELECT(-40,-20),
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20726C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20726C1D1Ev,_ZTv0_n16_N8S20726C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20726C1D0Ev,_ZTv0_n16_N8S20726C1D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20726C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20726C1D1Ev,_ZTvn4_n16_N8S20726C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20726C1D0Ev,_ZTvn4_n16_N8S20726C1D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S20726C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20726C1D1Ev,_ZTv0_n12_N8S20726C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20726C1D0Ev,_ZTv0_n12_N8S20726C1D0Ev),
  ABISELECT(24,12),
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  0,
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20726C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20726C1D1Ev,_ZTv0_n12_N8S20726C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20726C1D0Ev,_ZTv0_n12_N8S20726C1D0Ev),
  ABISELECT(-88,-48),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-8,-4),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S20726C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20726C1D1Ev,_ZTv0_n24_N8S20726C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20726C1D0Ev,_ZTv0_n24_N8S20726C1D0Ev),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S20726C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20726C1D1Ev,_ZTv0_n12_N8S20726C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20726C1D0Ev,_ZTv0_n12_N8S20726C1D0Ev),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S20726C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N8S20726C1D1Ev,_ZTvn8_n12_N8S20726C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N8S20726C1D0Ev,_ZTvn8_n12_N8S20726C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20726C1[];
extern void _ZN8S20726C4D1Ev();
extern void _ZN8S20726C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20726C4__8S20726C1[] = {
  ABISELECT(72,40),
  ABISELECT(64,36),
  ABISELECT(56,28),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20726C4[0]),
  (VTBL_ENTRY)&_ZN8S20726C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20726C4D0Ev,
};
extern void _ZN8S20726C5D1Ev();
extern void _ZN8S20726C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20726C58S20726C4__8S20726C1[] = {
  ABISELECT(56,28),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20726C5[0]),
  (VTBL_ENTRY)&_ZN8S20726C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20726C5D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20726C5D1Ev,_ZTv0_n16_N8S20726C5D1Ev)();
extern void ABISELECT(_ZThn40_N8S20726C5D1Ev,_ZThn20_N8S20726C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20726C5D0Ev,_ZTv0_n16_N8S20726C5D0Ev)();
extern void ABISELECT(_ZThn40_N8S20726C5D0Ev,_ZThn20_N8S20726C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20726C9__8S20726C58S20726C4__8S20726C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20726C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20726C5D1Ev,_ZTv0_n16_N8S20726C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20726C5D0Ev,_ZTv0_n16_N8S20726C5D0Ev),
};
extern void ABISELECT(_ZTvn8_n32_N8S20726C5D1Ev,_ZTvn4_n16_N8S20726C5D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N8S20726C5D0Ev,_ZTvn4_n16_N8S20726C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt8S20726C9__A2__8S20726C58S20726C4__8S20726C1[] = {
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20726C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20726C5D1Ev,_ZTvn4_n16_N8S20726C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20726C5D0Ev,_ZTvn4_n16_N8S20726C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20726C4D1Ev,_ZTv0_n16_N8S20726C4D1Ev)();
extern void ABISELECT(_ZThn40_N8S20726C4D1Ev,_ZThn20_N8S20726C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20726C4D0Ev,_ZTv0_n16_N8S20726C4D0Ev)();
extern void ABISELECT(_ZThn40_N8S20726C4D0Ev,_ZThn20_N8S20726C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20726C9__8S20726C4__8S20726C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(16,8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20726C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20726C4D1Ev,_ZTv0_n16_N8S20726C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20726C4D0Ev,_ZTv0_n16_N8S20726C4D0Ev),
};
extern void ABISELECT(_ZTvn8_n32_N8S20726C4D1Ev,_ZTvn4_n16_N8S20726C4D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N8S20726C4D0Ev,_ZTvn4_n16_N8S20726C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt8S20726C9__A2__8S20726C4__8S20726C1[] = {
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S20726C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20726C4D1Ev,_ZTvn4_n16_N8S20726C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20726C4D0Ev,_ZTvn4_n16_N8S20726C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20726C4D1Ev,_ZTv0_n12_N8S20726C4D1Ev)();
extern void ABISELECT(_ZThn72_N8S20726C4D1Ev,_ZThn40_N8S20726C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20726C4D0Ev,_ZTv0_n12_N8S20726C4D0Ev)();
extern void ABISELECT(_ZThn72_N8S20726C4D0Ev,_ZThn40_N8S20726C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20726C7__A2__8S20726C4__8S20726C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S20726C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20726C4D1Ev,_ZTv0_n12_N8S20726C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20726C4D0Ev,_ZTv0_n12_N8S20726C4D0Ev),
};
extern void _ZN8S20726C2D1Ev();
extern void _ZN8S20726C2D0Ev();
extern void _ZN8S20726C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20726C2__8S20726C1[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20726C2[0]),
  (VTBL_ENTRY)&_ZN8S20726C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20726C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20726C22v1Ev,
};
extern void _ZN8S20726C9D1Ev();
extern void _ZN8S20726C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20726C9__8S20726C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20726C9[0]),
  (VTBL_ENTRY)&_ZN8S20726C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20726C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N12S20726C13_ntD1Ev,_ZTv0_n12_N12S20726C13_ntD1Ev)();
extern void _ZN12S20726C13_ntD1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20726C13_ntD0Ev,_ZTv0_n12_N12S20726C13_ntD0Ev)();
extern void _ZN12S20726C13_ntD0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV12S20726C13_nt__8S20726C1[] = {
  ABISELECT(24,12),
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  0,
  ABISELECT(-80,-44),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20726C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20726C13_ntD1Ev,_ZTv0_n12_N12S20726C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20726C13_ntD0Ev,_ZTv0_n12_N12S20726C13_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n48_N12S20726C13_ntD1Ev,_ZTv0_n24_N12S20726C13_ntD1Ev)();
extern void ABISELECT(_ZThn8_N12S20726C13_ntD1Ev,_ZThn4_N12S20726C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N12S20726C13_ntD0Ev,_ZTv0_n24_N12S20726C13_ntD0Ev)();
extern void ABISELECT(_ZThn8_N12S20726C13_ntD0Ev,_ZThn4_N12S20726C13_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20726C14__12S20726C13_nt__8S20726C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI12S20726C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N12S20726C13_ntD1Ev,_ZTv0_n24_N12S20726C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N12S20726C13_ntD0Ev,_ZTv0_n24_N12S20726C13_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N12S20726C13_ntD1Ev,_ZTv0_n12_N12S20726C13_ntD1Ev)();
extern void ABISELECT(_ZTv0_n24_N12S20726C13_ntD0Ev,_ZTv0_n12_N12S20726C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20726C7__A1__12S20726C13_nt__8S20726C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI12S20726C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20726C13_ntD1Ev,_ZTv0_n12_N12S20726C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20726C13_ntD0Ev,_ZTv0_n12_N12S20726C13_ntD0Ev),
};
extern void ABISELECT(_ZTv0_n24_N12S20726C13_ntD1Ev,_ZTv0_n12_N12S20726C13_ntD1Ev)();
extern void ABISELECT(_ZThn24_N12S20726C13_ntD1Ev,_ZThn12_N12S20726C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N12S20726C13_ntD0Ev,_ZTv0_n12_N12S20726C13_ntD0Ev)();
extern void ABISELECT(_ZThn24_N12S20726C13_ntD0Ev,_ZThn12_N12S20726C13_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20726C16__12S20726C13_nt__8S20726C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI12S20726C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20726C13_ntD1Ev,_ZTv0_n12_N12S20726C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N12S20726C13_ntD0Ev,_ZTv0_n12_N12S20726C13_ntD0Ev),
};
extern void ABISELECT(_ZTvn16_n24_N12S20726C13_ntD1Ev,_ZTvn8_n12_N12S20726C13_ntD1Ev)();
extern void ABISELECT(_ZTvn16_n24_N12S20726C13_ntD0Ev,_ZTvn8_n12_N12S20726C13_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20726C159S20726C16__A1__12S20726C13_nt__8S20726C1[] = {
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI12S20726C13_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N12S20726C13_ntD1Ev,_ZTvn8_n12_N12S20726C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N12S20726C13_ntD0Ev,_ZTvn8_n12_N12S20726C13_ntD0Ev),
};
extern void _ZN9S20726C14D1Ev();
extern void _ZN9S20726C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20726C14__8S20726C1[] = {
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20726C14[0]),
  (VTBL_ENTRY)&_ZN9S20726C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20726C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20726C14D1Ev,_ZTv0_n12_N9S20726C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20726C14D0Ev,_ZTv0_n12_N9S20726C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt__A1__9S20726C14__8S20726C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S20726C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20726C14D1Ev,_ZTv0_n12_N9S20726C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20726C14D0Ev,_ZTv0_n12_N9S20726C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20726C14D1Ev,_ZTv0_n12_N9S20726C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20726C14D0Ev,_ZTv0_n12_N9S20726C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20726C7__A1__9S20726C14__8S20726C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20726C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20726C14D1Ev,_ZTv0_n12_N9S20726C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20726C14D0Ev,_ZTv0_n12_N9S20726C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20726C14D1Ev,_ZTv0_n12_N9S20726C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S20726C14D1Ev,_ZThn8_N9S20726C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20726C14D0Ev,_ZTv0_n12_N9S20726C14D0Ev)();
extern void ABISELECT(_ZThn16_N9S20726C14D0Ev,_ZThn8_N9S20726C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20726C16__9S20726C14__8S20726C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20726C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20726C14D1Ev,_ZTv0_n12_N9S20726C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20726C14D0Ev,_ZTv0_n12_N9S20726C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n24_N9S20726C14D1Ev,_ZTvn8_n12_N9S20726C14D1Ev)();
extern void ABISELECT(_ZTvn16_n24_N9S20726C14D0Ev,_ZTvn8_n12_N9S20726C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20726C159S20726C16__A1__9S20726C14__8S20726C1[] = {
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20726C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N9S20726C14D1Ev,_ZTvn8_n12_N9S20726C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N9S20726C14D0Ev,_ZTvn8_n12_N9S20726C14D0Ev),
};
static  VTT_ENTRY vtt_S20726C1[] = {
  {&(_ZTV8S20726C1[12]),  12,64},
  {&(_tg__ZTV8S20726C4__8S20726C1[6]),  6,8},
  {&(_tg__ZTV8S20726C58S20726C4__8S20726C1[4]),  4,6},
  {&(_tg__ZTV8S20726C9__8S20726C58S20726C4__8S20726C1[4]),  4,6},
  {&(_tg__ZTV9S343C6_nt8S20726C9__A2__8S20726C58S20726C4__8S20726C1[2]),  2,4},
  {&(_tg__ZTV8S20726C9__8S20726C4__8S20726C1[4]),  4,6},
  {&(_tg__ZTV9S343C6_nt8S20726C9__A2__8S20726C4__8S20726C1[2]),  2,4},
  {&(_tg__ZTV8S20726C7__A2__8S20726C4__8S20726C1[3]),  3,5},
  {&(_ZTV8S20726C1[19]),  19,64},
  {&(_ZTV8S20726C1[26]),  26,64},
  {&(_ZTV8S20726C1[30]),  30,64},
  {&(_ZTV8S20726C1[35]),  35,64},
  {&(_ZTV8S20726C1[45]),  45,64},
  {&(_ZTV8S20726C1[45]),  45,64},
  {&(_ZTV8S20726C1[53]),  53,64},
  {&(_ZTV8S20726C1[58]),  58,64},
  {&(_ZTV8S20726C1[62]),  62,64},
  {&(_tg__ZTV8S20726C2__8S20726C1[3]),  3,6},
  {&(_tg__ZTV8S20726C9__8S20726C1[3]),  3,5},
  {&(_tg__ZTV12S20726C13_nt__8S20726C1[8]),  8,10},
  {&(_tg__ZTV12S20726C13_nt__8S20726C1[8]),  8,10},
  {&(_tg__ZTV9S20726C14__12S20726C13_nt__8S20726C1[6]),  6,8},
  {&(_tg__ZTV8S20726C7__A1__12S20726C13_nt__8S20726C1[3]),  3,5},
  {&(_tg__ZTV9S20726C16__12S20726C13_nt__8S20726C1[3]),  3,5},
  {&(_tg__ZTV9S20726C159S20726C16__A1__12S20726C13_nt__8S20726C1[2]),  2,4},
  {&(_tg__ZTV9S20726C14__8S20726C1[5]),  5,7},
  {&(_tg__ZTV9S343C6_nt__A1__9S20726C14__8S20726C1[3]),  3,5},
  {&(_tg__ZTV8S20726C7__A1__9S20726C14__8S20726C1[3]),  3,5},
  {&(_tg__ZTV9S20726C16__9S20726C14__8S20726C1[3]),  3,5},
  {&(_tg__ZTV9S20726C159S20726C16__A1__9S20726C14__8S20726C1[2]),  2,4},
};
extern VTBL_ENTRY _ZTI8S20726C1[];
extern  VTBL_ENTRY _ZTV8S20726C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20726C1[];
static VTBL_ENTRY alt_thunk_names93[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20726C14D0Ev,_ZTv0_n12_N9S20726C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20726C14D0Ev,_ZThn8_N9S20726C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20726C14D1Ev,_ZTv0_n12_N9S20726C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20726C14D1Ev,_ZThn8_N9S20726C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N12S20726C13_ntD0Ev,_ZTv0_n24_N12S20726C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N12S20726C13_ntD0Ev,_ZThn4_N12S20726C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N12S20726C13_ntD1Ev,_ZTv0_n24_N12S20726C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N12S20726C13_ntD1Ev,_ZThn4_N12S20726C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N12S20726C13_ntD0Ev,_ZTv0_n12_N12S20726C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N12S20726C13_ntD0Ev,_ZThn12_N12S20726C13_ntD0Ev),
  (VTBL_ENTRY)_ZN12S20726C13_ntD0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N12S20726C13_ntD1Ev,_ZTv0_n12_N12S20726C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N12S20726C13_ntD1Ev,_ZThn12_N12S20726C13_ntD1Ev),
  (VTBL_ENTRY)_ZN12S20726C13_ntD1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20726C4D0Ev,_ZTv0_n12_N8S20726C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20726C4D0Ev,_ZThn40_N8S20726C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20726C4D1Ev,_ZTv0_n12_N8S20726C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20726C4D1Ev,_ZThn40_N8S20726C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20726C4D0Ev,_ZTv0_n16_N8S20726C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20726C4D0Ev,_ZThn20_N8S20726C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20726C4D1Ev,_ZTv0_n16_N8S20726C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20726C4D1Ev,_ZThn20_N8S20726C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20726C5D0Ev,_ZTv0_n16_N8S20726C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20726C5D0Ev,_ZThn20_N8S20726C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20726C5D1Ev,_ZTv0_n16_N8S20726C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20726C5D1Ev,_ZThn20_N8S20726C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20726C1D0Ev,_ZTv0_n24_N8S20726C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20726C1D0Ev,_ZThn48_N8S20726C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20726C1D1Ev,_ZTv0_n24_N8S20726C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S20726C1D1Ev,_ZThn48_N8S20726C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20726C1D0Ev,_ZTv0_n12_N8S20726C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S20726C1D0Ev,_ZThn56_N8S20726C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20726C1D0Ev,_ZThn44_N8S20726C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20726C1D0Ev,_ZThn40_N8S20726C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20726C1D1Ev,_ZTv0_n12_N8S20726C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S20726C1D1Ev,_ZThn56_N8S20726C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20726C1D1Ev,_ZThn44_N8S20726C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20726C1D1Ev,_ZThn40_N8S20726C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20726C1D0Ev,_ZTv0_n16_N8S20726C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20726C1D0Ev,_ZThn20_N8S20726C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20726C1D0Ev,_ZThn16_N8S20726C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20726C1D1Ev,_ZTv0_n16_N8S20726C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20726C1D1Ev,_ZThn20_N8S20726C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20726C1D1Ev,_ZThn16_N8S20726C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20726C1 = {  "S20726C1", // class name
  bases_S20726C1, 30,
  &(vtc_S20726C1[0]), // expected_vtbl_contents
  &(vtt_S20726C1[0]), // expected_vtt_contents
  ABISELECT(144,76), // object size
  NSPAIRA(_ZTI8S20726C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20726C1),64, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20726C1),30, //virtual table table var
  25, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names93,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7263C7  : virtual S3461C5_nt , S731C17_nt {
  virtual void  v1(); // _ZN7S7263C72v1Ev
  ~S7263C7(); // tgen
  S7263C7(); // tgen
};
//SIG(-1 S7263C7) C1{ VBC2{ m FL} BC3{ m} v1}


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

static void Test_S7263C7()
{
  extern Class_Descriptor cd_S7263C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7263C7, buf);
    S7263C7 *dp, &lv = *(dp=new (buf) S7263C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7263C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7263C7)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S7263C7");
    check_base_class_offset(lv, (S731C17_nt*), 0, "S7263C7");
    test_class_info(&lv, &cd_S7263C7);
    dp->~S7263C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7263C7(Test_S7263C7, "S7263C7", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7263C7C1Ev();
extern void _ZN7S7263C7D1Ev();
Name_Map name_map_S7263C7[] = {
  NSPAIR(_ZN7S7263C7C1Ev),
  NSPAIR(_ZN7S7263C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S7263C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7263C7[];
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY vtc_S7263C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern VTBL_ENTRY _ZTV7S7263C7[];
static  VTT_ENTRY vtt_S7263C7[] = {
  {&(_ZTV7S7263C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
Class_Descriptor cd_S7263C7 = {  "S7263C7", // class name
  bases_S7263C7, 2,
  &(vtc_S7263C7[0]), // expected_vtbl_contents
  &(vtt_S7263C7[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7263C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7263C7),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7263C7),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  S7263C6  : S7263C7 {
  ~S7263C6(); // tgen
  S7263C6(); // tgen
};
//SIG(-1 S7263C6) C1{ BC2{ VBC3{ m FL} BC4{ m} v1}}


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

static void Test_S7263C6()
{
  extern Class_Descriptor cd_S7263C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7263C6, buf);
    S7263C6 *dp, &lv = *(dp=new (buf) S7263C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7263C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7263C6)");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*), ABISELECT(8,4), "S7263C6");
    check_base_class_offset(lv, (S731C17_nt*)(S7263C7*), 0, "S7263C6");
    check_base_class_offset(lv, (S7263C7*), 0, "S7263C6");
    test_class_info(&lv, &cd_S7263C6);
    dp->~S7263C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7263C6(Test_S7263C6, "S7263C6", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7263C6C1Ev();
extern void _ZN7S7263C6D1Ev();
Name_Map name_map_S7263C6[] = {
  NSPAIR(_ZN7S7263C6C1Ev),
  NSPAIR(_ZN7S7263C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
static Base_Class bases_S7263C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7263C7,    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 _ZTI7S7263C6[];
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY vtc_S7263C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C6[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern VTBL_ENTRY _ZTV7S7263C6[];
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C7__7S7263C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
static  VTT_ENTRY vtt_S7263C6[] = {
  {&(_ZTV7S7263C6[3]),  3,4},
  {&(_tg__ZTV7S7263C7__7S7263C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7263C6[];
extern  VTBL_ENTRY _ZTV7S7263C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C6[];
Class_Descriptor cd_S7263C6 = {  "S7263C6", // class name
  bases_S7263C6, 3,
  &(vtc_S7263C6[0]), // expected_vtbl_contents
  &(vtt_S7263C6[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7263C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7263C6),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7263C6),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  S7263C3  : S3461C5_nt , virtual S731C17_nt , S7263C6 {
  virtual  ~S7263C3(); // _ZN7S7263C3D2Ev
  virtual void  v2(); // _ZN7S7263C32v2Ev
  S7263C3(); // tgen
};
//SIG(-1 S7263C3) C1{ BC2{ m FL} VBC3{ m} BC4{ BC5{ VBC2 BC3 v2}} vd v1}


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

static void Test_S7263C3()
{
  extern Class_Descriptor cd_S7263C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S7263C3, buf);
    S7263C3 *dp, &lv = *(dp=new (buf) S7263C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S7263C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7263C3)");
    /*is_ambiguous_... S7263C3::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S7263C3");
    /*is_ambiguous_... S7263C3::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(16,12), "S7263C3");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*)(S7263C6*), ABISELECT(16,12), "S7263C3");
    check_base_class_offset(lv, (S731C17_nt*)(S7263C7*)(S7263C6*), 0, "S7263C3");
    check_base_class_offset(lv, (S7263C7*)(S7263C6*), 0, "S7263C3");
    check_base_class_offset(lv, (S7263C6*), 0, "S7263C3");
    test_class_info(&lv, &cd_S7263C3);
    dp->~S7263C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7263C3(Test_S7263C3, "S7263C3", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN7S7263C3C1Ev();
extern void _ZN7S7263C3D2Ev();
Name_Map name_map_S7263C3[] = {
  NSPAIR(_ZN7S7263C3C1Ev),
  NSPAIR(_ZN7S7263C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S7263C6;
extern VTBL_ENTRY _ZTI7S7263C6[];
extern  VTBL_ENTRY _ZTV7S7263C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C6[];
static Base_Class bases_S7263C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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_S3461C5_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
    4, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7263C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7263C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7263C3[];
extern void _ZN7S7263C72v1Ev();
extern void _ZN7S7263C3D1Ev();
extern void _ZN7S7263C3D0Ev();
extern void _ZN7S7263C32v2Ev();
static  VTBL_ENTRY vtc_S7263C3[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C3[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN7S7263C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7263C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
};
extern VTBL_ENTRY _ZTV7S7263C3[];
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C6__7S7263C3[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C6[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C77S7263C6__7S7263C3[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
static  VTT_ENTRY vtt_S7263C3[] = {
  {&(_ZTV7S7263C3[4]),  4,8},
  {&(_tg__ZTV7S7263C6__7S7263C3[3]),  3,4},
  {&(_tg__ZTV7S7263C77S7263C6__7S7263C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7263C3[];
extern  VTBL_ENTRY _ZTV7S7263C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C3[];
Class_Descriptor cd_S7263C3 = {  "S7263C3", // class name
  bases_S7263C3, 6,
  &(vtc_S7263C3[0]), // expected_vtbl_contents
  &(vtt_S7263C3[0]), // expected_vtt_contents
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI7S7263C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7263C3),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7263C3),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  S7263C9  : virtual S3461C5_nt , S7263C7 , S731C17_nt {
  ~S7263C9(); // tgen
  S7263C9(); // tgen
};
//SIG(-1 S7263C9) C1{ VBC2{ m FL} BC3{ VBC2 BC4{ m} v1} BC4}


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

static void Test_S7263C9()
{
  extern Class_Descriptor cd_S7263C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7263C9, buf);
    S7263C9 *dp, &lv = *(dp=new (buf) S7263C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7263C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7263C9)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S7263C9");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*), ABISELECT(8,4), "S7263C9");
    check_base_class_offset(lv, (S731C17_nt*)(S7263C7*), 0, "S7263C9");
    check_base_class_offset(lv, (S7263C7*), 0, "S7263C9");
    /*is_ambiguous_... S7263C9::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(8,4), "S7263C9");
    test_class_info(&lv, &cd_S7263C9);
    dp->~S7263C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7263C9(Test_S7263C9, "S7263C9", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7263C9C1Ev();
extern void _ZN7S7263C9D1Ev();
Name_Map name_map_S7263C9[] = {
  NSPAIR(_ZN7S7263C9C1Ev),
  NSPAIR(_ZN7S7263C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S7263C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7263C7,    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_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7263C9[];
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY vtc_S7263C9[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C9[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern VTBL_ENTRY _ZTV7S7263C9[];
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C7__7S7263C9[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
static  VTT_ENTRY vtt_S7263C9[] = {
  {&(_ZTV7S7263C9[3]),  3,4},
  {&(_tg__ZTV7S7263C7__7S7263C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7263C9[];
extern  VTBL_ENTRY _ZTV7S7263C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C9[];
Class_Descriptor cd_S7263C9 = {  "S7263C9", // class name
  bases_S7263C9, 4,
  &(vtc_S7263C9[0]), // expected_vtbl_contents
  &(vtt_S7263C9[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7263C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7263C9),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7263C9),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  S7263C10  : S3461C5_nt , virtual S7263C7 , S731C17_nt {
  virtual  ~S7263C10(); // _ZN8S7263C10D2Ev
  S7263C10(); // tgen
};
//SIG(-1 S7263C10) C1{ BC2{ m FL} VBC3{ VBC2 BC4{ m} v1} BC4 vd}


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

static void Test_S7263C10()
{
  extern Class_Descriptor cd_S7263C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S7263C10, buf);
    S7263C10 *dp, &lv = *(dp=new (buf) S7263C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S7263C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7263C10)");
    /*is_ambiguous_... S7263C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S7263C10");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*), ABISELECT(16,12), "S7263C10");
    check_base_class_offset(lv, (S731C17_nt*)(S7263C7*), 0, "S7263C10");
    check_base_class_offset(lv, (S7263C7*), 0, "S7263C10");
    /*is_ambiguous_... S7263C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(16,12), "S7263C10");
    test_class_info(&lv, &cd_S7263C10);
    dp->~S7263C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7263C10(Test_S7263C10, "S7263C10", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN8S7263C10C1Ev();
extern void _ZN8S7263C10D2Ev();
Name_Map name_map_S7263C10[] = {
  NSPAIR(_ZN8S7263C10C1Ev),
  NSPAIR(_ZN8S7263C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S7263C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7263C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7263C10[];
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C10D1Ev();
extern void _ZN8S7263C10D0Ev();
static  VTBL_ENTRY vtc_S7263C10[] = {
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7263C10[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7263C10D0Ev,
};
extern VTBL_ENTRY _ZTV8S7263C10[];
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C7__8S7263C10[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
static  VTT_ENTRY vtt_S7263C10[] = {
  {&(_ZTV8S7263C10[5]),  5,8},
  {&(_ZTV8S7263C10[5]),  5,8},
  {&(_tg__ZTV7S7263C7__8S7263C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7263C10[];
extern  VTBL_ENTRY _ZTV8S7263C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7263C10[];
Class_Descriptor cd_S7263C10 = {  "S7263C10", // class name
  bases_S7263C10, 5,
  &(vtc_S7263C10[0]), // expected_vtbl_contents
  &(vtt_S7263C10[0]), // expected_vtt_contents
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI8S7263C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7263C10),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7263C10),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  S7263C13  : virtual S3461C5_nt , S7263C9 , virtual S7263C7 {
  virtual void  v3(); // _ZN8S7263C132v3Ev
  ~S7263C13(); // tgen
  S7263C13(); // tgen
};
//SIG(-1 S7263C13) C1{ VBC2{ m FL} BC3{ VBC2 BC4{ VBC2 BC5{ m} v2} BC5} VBC4 v1}


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

static void Test_S7263C13()
{
  extern Class_Descriptor cd_S7263C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7263C13, buf);
    S7263C13 *dp, &lv = *(dp=new (buf) S7263C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7263C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7263C13)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(16,8), "S7263C13");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C9*), ABISELECT(16,8), "S7263C13");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*)(S7263C9*), ABISELECT(16,8), "S7263C13");
    /*is_ambiguous_... S7263C13::S7263C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*), ABISELECT(16,8), "S7263C13");
    check_base_class_offset(lv, (S731C17_nt*)(S7263C7*)(S7263C9*), 0, "S7263C13");
    check_base_class_offset(lv, (S7263C7*)(S7263C9*), 0, "S7263C13");
    /*is_ambiguous_... S7263C9::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C9*), ABISELECT(8,4), "S7263C13");
    check_base_class_offset(lv, (S7263C9*), 0, "S7263C13");
    /*is_ambiguous_... S7263C13::S7263C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C7*), ABISELECT(24,16), "S7263C13");
    /*is_ambiguous_... S7263C13::S7263C7 */ AMB_check_base_class_offset(lv, (S7263C7*), ABISELECT(24,16), "S7263C13");
    test_class_info(&lv, &cd_S7263C13);
    dp->~S7263C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7263C13(Test_S7263C13, "S7263C13", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S7263C13C1Ev();
extern void _ZN8S7263C13D1Ev();
Name_Map name_map_S7263C13[] = {
  NSPAIR(_ZN8S7263C13C1Ev),
  NSPAIR(_ZN8S7263C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C9;
extern VTBL_ENTRY _ZTI7S7263C9[];
extern  VTBL_ENTRY _ZTV7S7263C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
static Base_Class bases_S7263C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7263C7,    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_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7263C9,    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_S731C17_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_S7263C7,    ABISELECT(24,16), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7263C13[];
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C132v3Ev();
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY vtc_S7263C13[] = {
  ABISELECT(24,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7263C13[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C132v3Ev,
  0,
  -8,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7263C13[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern VTBL_ENTRY _ZTV8S7263C13[];
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C9__8S7263C13[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C9[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C77S7263C9__8S7263C13[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C7__A1__8S7263C13[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
static  VTT_ENTRY vtt_S7263C13[] = {
  {&(_ZTV8S7263C13[4]),  4,11},
  {&(_tg__ZTV7S7263C9__8S7263C13[3]),  3,4},
  {&(_tg__ZTV7S7263C77S7263C9__8S7263C13[3]),  3,4},
  {&(_ZTV8S7263C13[10]),  10,11},
  {&(_tg__ZTV7S7263C7__A1__8S7263C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7263C13[];
extern  VTBL_ENTRY _ZTV8S7263C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7263C13[];
Class_Descriptor cd_S7263C13 = {  "S7263C13", // class name
  bases_S7263C13, 7,
  &(vtc_S7263C13[0]), // expected_vtbl_contents
  &(vtt_S7263C13[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S7263C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7263C13),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7263C13),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  S7263C11  : S3461C5_nt , S7263C3 , S28C52_nt , virtual S7263C13 , virtual S7263C10 {
  virtual  ~S7263C11(); // _ZN8S7263C11D2Ev
  S7263C11(); // tgen
};
//SIG(-1 S7263C11) C1{ BC2{ m FL} BC3{ BC2 VBC4{ m} BC5{ BC6{ VBC2 BC4 v1}} vd v2} BC7{ m} VBC8{ VBC2 BC9{ VBC2 BC6 BC4} VBC6 v3} VBC10{ BC2 VBC6 BC4 vd} vd}


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

static void Test_S7263C11()
{
  extern Class_Descriptor cd_S7263C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,14)];
    init_test(&cd_S7263C11, buf);
    S7263C11 *dp, &lv = *(dp=new (buf) S7263C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S7263C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7263C11)");
    /*is_ambiguous_... S7263C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(16,12), "S7263C11");
    /*is_ambiguous_... S7263C3::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C3*), ABISELECT(8,4), "S7263C11");
    /*is_ambiguous_... S7263C3::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C3*), ABISELECT(24,20), "S7263C11");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*)(S7263C6*)(S7263C3*), ABISELECT(24,20), "S7263C11");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C13*), ABISELECT(24,20), "S7263C11");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C9*)(S7263C13*), ABISELECT(24,20), "S7263C11");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*)(S7263C9*)(S7263C13*), ABISELECT(24,20), "S7263C11");
    /*is_ambiguous_... S7263C11::S7263C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*), ABISELECT(24,20), "S7263C11");
    check_base_class_offset(lv, (S731C17_nt*)(S7263C7*)(S7263C6*)(S7263C3*), 0, "S7263C11");
    check_base_class_offset(lv, (S7263C7*)(S7263C6*)(S7263C3*), 0, "S7263C11");
    check_base_class_offset(lv, (S7263C6*)(S7263C3*), 0, "S7263C11");
    check_base_class_offset(lv, (S7263C3*), 0, "S7263C11");
    check_base_class_offset(lv, (S28C52_nt*), 0, "S7263C11");
    check_base_class_offset(lv, (S731C17_nt*)(S7263C7*)(S7263C9*)(S7263C13*), ABISELECT(32,28), "S7263C11");
    check_base_class_offset(lv, (S7263C7*)(S7263C9*)(S7263C13*), ABISELECT(32,28), "S7263C11");
    /*is_ambiguous_... S7263C9::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C9*)(S7263C13*), ABISELECT(40,32), "S7263C11");
    check_base_class_offset(lv, (S7263C9*)(S7263C13*), ABISELECT(32,28), "S7263C11");
    /*is_ambiguous_... S7263C11::S7263C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C7*), ABISELECT(48,36), "S7263C11");
    /*is_ambiguous_... S7263C13::S7263C7 */ AMB_check_base_class_offset(lv, (S7263C7*)(S7263C13*), ABISELECT(48,36), "S7263C11");
    check_base_class_offset(lv, (S7263C7*)(S7263C10*), ABISELECT(48,36), "S7263C11");
    check_base_class_offset(lv, (S7263C13*), ABISELECT(32,28), "S7263C11");
    /*is_ambiguous_... S7263C10::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C10*), ABISELECT(56,40), "S7263C11");
    /*is_ambiguous_... S7263C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C10*), ABISELECT(64,48), "S7263C11");
    check_base_class_offset(lv, (S7263C10*), ABISELECT(48,36), "S7263C11");
    test_class_info(&lv, &cd_S7263C11);
    dp->~S7263C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7263C11(Test_S7263C11, "S7263C11", ABISELECT(72,52));

#else // __cplusplus

extern void _ZN8S7263C11C1Ev();
extern void _ZN8S7263C11D2Ev();
Name_Map name_map_S7263C11[] = {
  NSPAIR(_ZN8S7263C11C1Ev),
  NSPAIR(_ZN8S7263C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S7263C6;
extern VTBL_ENTRY _ZTI7S7263C6[];
extern  VTBL_ENTRY _ZTV7S7263C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C6[];
extern Class_Descriptor cd_S7263C3;
extern VTBL_ENTRY _ZTI7S7263C3[];
extern  VTBL_ENTRY _ZTV7S7263C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C3[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C9;
extern VTBL_ENTRY _ZTI7S7263C9[];
extern  VTBL_ENTRY _ZTV7S7263C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S7263C13;
extern VTBL_ENTRY _ZTI8S7263C13[];
extern  VTBL_ENTRY _ZTV8S7263C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7263C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C10;
extern VTBL_ENTRY _ZTI8S7263C10[];
extern  VTBL_ENTRY _ZTV8S7263C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7263C10[];
static Base_Class bases_S7263C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(24,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7263C7,    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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7263C6,    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_S7263C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S28C52_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_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
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7263C7,    ABISELECT(32,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7263C9,    ABISELECT(32,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
    3, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    14, //immediately_derived
  0, 0},
  {&cd_S7263C7,    ABISELECT(48,36), //bcp->offset
    -1, //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
    1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7263C13,    ABISELECT(32,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_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
    18, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    18, //immediately_derived
  0, 0},
  {&cd_S7263C10,    ABISELECT(48,36), //bcp->offset
    19, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7263C11[];
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C11D1Ev();
extern void _ZN8S7263C11D0Ev();
extern void _ZN7S7263C32v2Ev();
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C132v3Ev();
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7263C11D1Ev,_ZTv0_n24_N8S7263C11D1Ev)();
extern void ABISELECT(_ZThn48_N8S7263C11D1Ev,_ZThn36_N8S7263C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7263C11D0Ev,_ZTv0_n24_N8S7263C11D0Ev)();
extern void ABISELECT(_ZThn48_N8S7263C11D0Ev,_ZThn36_N8S7263C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7263C11[] = {
  ABISELECT(48,36),
  ABISELECT(48,36),
  ABISELECT(32,28),
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7263C11[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7263C11D0Ev,
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
  0,
  0,
  ABISELECT(16,8),
  -8,
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI8S7263C11[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C132v3Ev,
  ABISELECT(-48,-36),
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S7263C11[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7263C11D1Ev,_ZTv0_n24_N8S7263C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7263C11D0Ev,_ZTv0_n24_N8S7263C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S7263C11[];
extern void _ZN7S7263C72v1Ev();
extern void _ZN7S7263C3D1Ev();
extern void _ZN7S7263C3D0Ev();
extern void _ZN7S7263C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C3__8S7263C11[] = {
  ABISELECT(24,20),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C3[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN7S7263C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7263C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C67S7263C3__8S7263C11[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C6[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C77S7263C67S7263C3__8S7263C11[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C132v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C13__8S7263C11[] = {
  ABISELECT(16,8),
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI8S7263C13[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C132v3Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C98S7263C13__8S7263C11[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C9[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C77S7263C98S7263C13__A1__8S7263C11[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C7__A1__8S7263C13__8S7263C11[] = {
  0,
  ABISELECT(-24,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7263C13[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C7__A2__8S7263C11[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C10D1Ev();
extern void _ZN8S7263C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C10__8S7263C11[] = {
  0,
  0,
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7263C10[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7263C10D0Ev,
};
static  VTT_ENTRY vtt_S7263C11[] = {
  {&(_ZTV8S7263C11[7]),  7,28},
  {&(_tg__ZTV7S7263C3__8S7263C11[4]),  4,8},
  {&(_tg__ZTV7S7263C67S7263C3__8S7263C11[3]),  3,4},
  {&(_tg__ZTV7S7263C77S7263C67S7263C3__8S7263C11[3]),  3,4},
  {&(_ZTV8S7263C11[17]),  17,28},
  {&(_ZTV8S7263C11[25]),  25,28},
  {&(_ZTV8S7263C11[25]),  25,28},
  {&(_tg__ZTV8S7263C13__8S7263C11[4]),  4,6},
  {&(_tg__ZTV7S7263C98S7263C13__8S7263C11[3]),  3,4},
  {&(_tg__ZTV7S7263C77S7263C98S7263C13__A1__8S7263C11[3]),  3,4},
  {&(_tg__ZTV7S7263C7__A1__8S7263C13__8S7263C11[4]),  4,5},
  {&(_tg__ZTV7S7263C7__A2__8S7263C11[3]),  3,4},
  {&(_tg__ZTV8S7263C10__8S7263C11[5]),  5,8},
  {&(_tg__ZTV8S7263C10__8S7263C11[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S7263C11[];
extern  VTBL_ENTRY _ZTV8S7263C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7263C11[];
static VTBL_ENTRY alt_thunk_names94[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7263C11D0Ev,_ZTv0_n24_N8S7263C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7263C11D0Ev,_ZThn36_N8S7263C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7263C11D1Ev,_ZTv0_n24_N8S7263C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S7263C11D1Ev,_ZThn36_N8S7263C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7263C11 = {  "S7263C11", // class name
  bases_S7263C11, 19,
  &(vtc_S7263C11[0]), // expected_vtbl_contents
  &(vtt_S7263C11[0]), // expected_vtt_contents
  ABISELECT(72,52), // object size
  NSPAIRA(_ZTI8S7263C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S7263C11),28, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7263C11),14, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names94,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7263C8  : virtual S3461C5_nt , virtual S7263C9 , S7263C10 , virtual S7263C3 , S7263C11 {
  ~S7263C8(); // tgen
  S7263C8(); // tgen
};
//SIG(-1 S7263C8) C1{ VBC2{ m FL} VBC3{ VBC2 BC4{ VBC2 BC5{ m} v1} BC5} BC6{ BC2 VBC4 BC5 vd} VBC7{ BC2 VBC5 BC8{ BC4} vd v2} BC9{ BC2 BC7 BC10{ m} VBC11{ VBC2 BC3 VBC4 v3} VBC6 vd}}


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

static void Test_S7263C8()
{
  extern Class_Descriptor cd_S7263C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,24)];
    init_test(&cd_S7263C8, buf);
    S7263C8 *dp, &lv = *(dp=new (buf) S7263C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S7263C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7263C8)");
    /*is_ambiguous_... S7263C8::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(48,36), "S7263C8");
    /*is_ambiguous_... S7263C8::S7263C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C9*), ABISELECT(48,36), "S7263C8");
    /*is_ambiguous_... S7263C8::S7263C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*)(S7263C9*), ABISELECT(48,36), "S7263C8");
    /*is_ambiguous_... S7263C8::S7263C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*), ABISELECT(48,36), "S7263C8");
    /*is_ambiguous_... S7263C8::S7263C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*)(S7263C6*)(S7263C3*), ABISELECT(48,36), "S7263C8");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*)(S7263C6*)(S7263C3*)(S7263C11*), ABISELECT(48,36), "S7263C8");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C13*), ABISELECT(48,36), "S7263C8");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C9*)(S7263C13*), ABISELECT(48,36), "S7263C8");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*)(S7263C9*)(S7263C13*), ABISELECT(48,36), "S7263C8");
    /*is_ambiguous_... S7263C8::S7263C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C7*)(S7263C9*), ABISELECT(56,44), "S7263C8");
    /*is_ambiguous_... S7263C8::S7263C9 */ AMB_check_base_class_offset(lv, (S7263C7*)(S7263C9*), ABISELECT(56,44), "S7263C8");
    /*is_ambiguous_... S7263C8::S7263C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C9*), ABISELECT(64,48), "S7263C8");
    /*is_ambiguous_... S7263C8::S7263C9 */ AMB_check_base_class_offset(lv, (S7263C9*), ABISELECT(56,44), "S7263C8");
    /*is_ambiguous_... S7263C8::S7263C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C10*), ABISELECT(8,4), "S7263C8");
    /*is_ambiguous_... S7263C8::S7263C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C7*), 0, "S7263C8");
    /*is_ambiguous_... S7263C8::S7263C10 */ AMB_check_base_class_offset(lv, (S7263C7*)(S7263C10*), 0, "S7263C8");
    /*is_ambiguous_... S7263C13::S7263C7 */ AMB_check_base_class_offset(lv, (S7263C7*)(S7263C13*), 0, "S7263C8");
    /*is_ambiguous_... S7263C8::S7263C10 */ AMB_check_base_class_offset(lv, (S7263C7*)(S7263C10*), 0, "S7263C8");
    /*is_ambiguous_... S7263C8::S7263C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C10*), ABISELECT(16,12), "S7263C8");
    /*is_ambiguous_... S7263C8::S7263C10 */ AMB_check_base_class_offset(lv, (S7263C10*), 0, "S7263C8");
    /*is_ambiguous_... S7263C8::S7263C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C3*), ABISELECT(80,56), "S7263C8");
    /*is_ambiguous_... S7263C8::S7263C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C3*), ABISELECT(88,64), "S7263C8");
    /*is_ambiguous_... S7263C3::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C3*)(S7263C11*), ABISELECT(88,64), "S7263C8");
    /*is_ambiguous_... S7263C8::S7263C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C7*)(S7263C6*)(S7263C3*), ABISELECT(72,52), "S7263C8");
    /*is_ambiguous_... S7263C8::S7263C3 */ AMB_check_base_class_offset(lv, (S7263C7*)(S7263C6*)(S7263C3*), ABISELECT(72,52), "S7263C8");
    /*is_ambiguous_... S7263C8::S7263C3 */ AMB_check_base_class_offset(lv, (S7263C6*)(S7263C3*), ABISELECT(72,52), "S7263C8");
    /*is_ambiguous_... S7263C8::S7263C3 */ AMB_check_base_class_offset(lv, (S7263C3*), ABISELECT(72,52), "S7263C8");
    /*is_ambiguous_... S7263C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C11*), ABISELECT(40,28), "S7263C8");
    /*is_ambiguous_... S7263C3::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C3*)(S7263C11*), ABISELECT(32,20), "S7263C8");
    check_base_class_offset(lv, (S731C17_nt*)(S7263C7*)(S7263C6*)(S7263C3*)(S7263C11*), ABISELECT(24,16), "S7263C8");
    check_base_class_offset(lv, (S7263C7*)(S7263C6*)(S7263C3*)(S7263C11*), ABISELECT(24,16), "S7263C8");
    check_base_class_offset(lv, (S7263C6*)(S7263C3*)(S7263C11*), ABISELECT(24,16), "S7263C8");
    check_base_class_offset(lv, (S7263C3*)(S7263C11*), ABISELECT(24,16), "S7263C8");
    check_base_class_offset(lv, (S28C52_nt*)(S7263C11*), ABISELECT(24,16), "S7263C8");
    check_base_class_offset(lv, (S731C17_nt*)(S7263C7*)(S7263C9*)(S7263C13*), ABISELECT(96,68), "S7263C8");
    check_base_class_offset(lv, (S7263C7*)(S7263C9*)(S7263C13*), ABISELECT(96,68), "S7263C8");
    /*is_ambiguous_... S7263C9::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C9*)(S7263C13*), ABISELECT(104,72), "S7263C8");
    check_base_class_offset(lv, (S7263C9*)(S7263C13*), ABISELECT(96,68), "S7263C8");
    check_base_class_offset(lv, (S7263C13*)(S7263C11*), ABISELECT(96,68), "S7263C8");
    /*is_ambiguous_... S7263C8::S7263C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C10*), ABISELECT(120,80), "S7263C8");
    /*is_ambiguous_... S7263C8::S7263C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C10*), ABISELECT(128,88), "S7263C8");
    check_base_class_offset(lv, (S7263C10*)(S7263C11*), ABISELECT(112,76), "S7263C8");
    check_base_class_offset(lv, (S7263C11*), ABISELECT(24,16), "S7263C8");
    test_class_info(&lv, &cd_S7263C8);
    dp->~S7263C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7263C8(Test_S7263C8, "S7263C8", ABISELECT(136,92));

#else // __cplusplus

extern void _ZN7S7263C8C1Ev();
extern void _ZN7S7263C8D1Ev();
Name_Map name_map_S7263C8[] = {
  NSPAIR(_ZN7S7263C8C1Ev),
  NSPAIR(_ZN7S7263C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C9;
extern VTBL_ENTRY _ZTI7S7263C9[];
extern  VTBL_ENTRY _ZTV7S7263C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C10;
extern VTBL_ENTRY _ZTI8S7263C10[];
extern  VTBL_ENTRY _ZTV8S7263C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7263C10[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S7263C6;
extern VTBL_ENTRY _ZTI7S7263C6[];
extern  VTBL_ENTRY _ZTV7S7263C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C6[];
extern Class_Descriptor cd_S7263C3;
extern VTBL_ENTRY _ZTI7S7263C3[];
extern  VTBL_ENTRY _ZTV7S7263C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S7263C6;
extern VTBL_ENTRY _ZTI7S7263C6[];
extern  VTBL_ENTRY _ZTV7S7263C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C6[];
extern Class_Descriptor cd_S7263C3;
extern VTBL_ENTRY _ZTI7S7263C3[];
extern  VTBL_ENTRY _ZTV7S7263C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C3[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C9;
extern VTBL_ENTRY _ZTI7S7263C9[];
extern  VTBL_ENTRY _ZTV7S7263C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C9[];
extern Class_Descriptor cd_S7263C13;
extern VTBL_ENTRY _ZTI8S7263C13[];
extern  VTBL_ENTRY _ZTV8S7263C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7263C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C10;
extern VTBL_ENTRY _ZTI8S7263C10[];
extern  VTBL_ENTRY _ZTV8S7263C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7263C10[];
extern Class_Descriptor cd_S7263C11;
extern VTBL_ENTRY _ZTI8S7263C11[];
extern  VTBL_ENTRY _ZTV8S7263C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7263C11[];
static Base_Class bases_S7263C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7263C7,    ABISELECT(56,44), //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
    4, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(64,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7263C9,    ABISELECT(56,44), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7263C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7263C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(88,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_S731C17_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
    13, //immediately_derived
  0, 0},
  {&cd_S7263C7,    ABISELECT(72,52), //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
    14, //immediately_derived
  0, 0},
  {&cd_S7263C6,    ABISELECT(72,52), //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
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7263C3,    ABISELECT(72,52), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_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
    31, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7263C7,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7263C6,    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
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7263C3,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7263C7,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(104,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7263C9,    ABISELECT(96,68), //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
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7263C13,    ABISELECT(96,68), //bcp->offset
    40, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(120,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(128,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7263C10,    ABISELECT(112,76), //bcp->offset
    48, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S7263C11,    ABISELECT(24,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7263C8[];
extern void _ZN7S7263C72v1Ev();
extern void _ZN7S7263C8D1Ev();
extern void _ZN7S7263C8D0Ev();
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZThn24_N7S7263C8D1Ev,_ZThn16_N7S7263C8D1Ev)();
extern void ABISELECT(_ZThn24_N7S7263C8D0Ev,_ZThn16_N7S7263C8D0Ev)();
extern void _ZN7S7263C32v2Ev();
extern void _ZN7S7263C72v1Ev();
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7263C8D1Ev,_ZTv0_n24_N7S7263C8D1Ev)();
extern void ABISELECT(_ZThn72_N7S7263C8D1Ev,_ZThn52_N7S7263C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7263C8D0Ev,_ZTv0_n24_N7S7263C8D0Ev)();
extern void ABISELECT(_ZThn72_N7S7263C8D0Ev,_ZThn52_N7S7263C8D0Ev)() __attribute__((weak));
extern void _ZN7S7263C32v2Ev();
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C132v3Ev();
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7263C8D1Ev,_ZTv0_n24_N7S7263C8D1Ev)();
extern void ABISELECT(_ZThn112_N7S7263C8D1Ev,_ZThn76_N7S7263C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7263C8D0Ev,_ZTv0_n24_N7S7263C8D0Ev)();
extern void ABISELECT(_ZThn112_N7S7263C8D0Ev,_ZThn76_N7S7263C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7263C8[] = {
  ABISELECT(112,76),
  ABISELECT(96,68),
  ABISELECT(88,64),
  ABISELECT(72,52),
  ABISELECT(56,44),
  0,
  0,
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C8[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN7S7263C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7263C8D0Ev,
  ABISELECT(88,60),
  ABISELECT(-24,-16),
  ABISELECT(72,52),
  ABISELECT(64,48),
  ABISELECT(24,20),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7263C8[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7263C8D1Ev,_ZThn16_N7S7263C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7263C8D0Ev,_ZThn16_N7S7263C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
  0,
  -8,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7263C8[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI7S7263C8[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7263C8D1Ev,_ZTv0_n24_N7S7263C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7263C8D0Ev,_ZTv0_n24_N7S7263C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
  0,
  0,
  ABISELECT(-96,-68),
  ABISELECT(-48,-32),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S7263C8[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C132v3Ev,
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-64,-40),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI7S7263C8[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7263C8D1Ev,_ZTv0_n24_N7S7263C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7263C8D0Ev,_ZTv0_n24_N7S7263C8D0Ev),
};
extern VTBL_ENTRY _ZTV7S7263C8[];
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C10D1Ev();
extern void _ZN8S7263C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C10__A__7S7263C8[] = {
  0,
  0,
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7263C10[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7263C10D0Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C11D1Ev();
extern void _ZN8S7263C11D0Ev();
extern void _ZN7S7263C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C11__7S7263C8[] = {
  ABISELECT(88,60),
  ABISELECT(-24,-16),
  ABISELECT(72,52),
  ABISELECT(64,48),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S7263C11[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7263C11D0Ev,
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN7S7263C3D1Ev();
extern void _ZN7S7263C3D0Ev();
extern void _ZN7S7263C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C38S7263C11__A1__7S7263C8[] = {
  ABISELECT(64,48),
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C3[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN7S7263C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7263C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C67S7263C38S7263C11__A1__7S7263C8[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C6[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C77S7263C67S7263C38S7263C11__A3__7S7263C8[] = {
  ABISELECT(24,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C132v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C13__8S7263C11__7S7263C8[] = {
  0,
  0,
  ABISELECT(-96,-68),
  ABISELECT(-48,-32),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI8S7263C11[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C132v3Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C7__A2__8S7263C11__7S7263C8[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7263C11[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7263C11D1Ev,_ZTv0_n24_N8S7263C11D1Ev)();
extern void ABISELECT(_ZThn88_N8S7263C11D1Ev,_ZThn60_N8S7263C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7263C11D0Ev,_ZTv0_n24_N8S7263C11D0Ev)();
extern void ABISELECT(_ZThn88_N8S7263C11D0Ev,_ZThn60_N8S7263C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7263C10__8S7263C11__7S7263C8[] = {
  ABISELECT(-88,-60),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-64,-40),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S7263C11[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7263C11D1Ev,_ZTv0_n24_N8S7263C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7263C11D0Ev,_ZTv0_n24_N8S7263C11D0Ev),
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C9__7S7263C8[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C9[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C77S7263C9__7S7263C8[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C7__A1__7S7263C8[] = {
  ABISELECT(48,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN7S7263C3D1Ev();
extern void _ZN7S7263C3D0Ev();
extern void _ZN7S7263C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C3__7S7263C8[] = {
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C3[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN7S7263C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7263C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C67S7263C3__7S7263C8[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C6[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C77S7263C67S7263C3__A2__7S7263C8[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C132v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C13__7S7263C8[] = {
  ABISELECT(-96,-68),
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7263C13[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C132v3Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C98S7263C13__A1__7S7263C8[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C9[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C77S7263C98S7263C13__A4__7S7263C8[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C7__A1__8S7263C13__7S7263C8[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI8S7263C13[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C10D1Ev();
extern void _ZN8S7263C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C10__A1__7S7263C8[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7263C10[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7263C10D0Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C7__8S7263C10__A1__7S7263C8[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(112,76),
  (VTBL_ENTRY)&(_ZTI8S7263C10[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
static  VTT_ENTRY vtt_S7263C8[] = {
  {&(_ZTV7S7263C8[10]),  10,57},
  {&(_tg__ZTV8S7263C10__A__7S7263C8[5]),  5,8},
  {&(_tg__ZTV8S7263C10__A__7S7263C8[5]),  5,8},
  {&(_tg__ZTV8S7263C11__7S7263C8[7]),  7,11},
  {&(_tg__ZTV7S7263C38S7263C11__A1__7S7263C8[4]),  4,8},
  {&(_tg__ZTV7S7263C67S7263C38S7263C11__A1__7S7263C8[3]),  3,4},
  {&(_tg__ZTV7S7263C77S7263C67S7263C38S7263C11__A3__7S7263C8[3]),  3,4},
  {&(_tg__ZTV8S7263C13__8S7263C11__7S7263C8[6]),  6,8},
  {&(_tg__ZTV7S7263C7__A2__8S7263C11__7S7263C8[4]),  4,5},
  {&(_tg__ZTV8S7263C10__8S7263C11__7S7263C8[6]),  6,9},
  {&(_ZTV7S7263C8[28]),  28,57},
  {&(_ZTV7S7263C8[10]),  10,57},
  {&(_ZTV7S7263C8[36]),  36,57},
  {&(_ZTV7S7263C8[20]),  20,57},
  {&(_ZTV7S7263C8[46]),  46,57},
  {&(_ZTV7S7263C8[54]),  54,57},
  {&(_tg__ZTV7S7263C9__7S7263C8[3]),  3,4},
  {&(_tg__ZTV7S7263C77S7263C9__7S7263C8[3]),  3,4},
  {&(_tg__ZTV7S7263C7__A1__7S7263C8[3]),  3,4},
  {&(_tg__ZTV7S7263C3__7S7263C8[4]),  4,8},
  {&(_tg__ZTV7S7263C67S7263C3__7S7263C8[3]),  3,4},
  {&(_tg__ZTV7S7263C77S7263C67S7263C3__A2__7S7263C8[3]),  3,4},
  {&(_tg__ZTV8S7263C13__7S7263C8[4]),  4,6},
  {&(_tg__ZTV7S7263C98S7263C13__A1__7S7263C8[3]),  3,4},
  {&(_tg__ZTV7S7263C77S7263C98S7263C13__A4__7S7263C8[3]),  3,4},
  {&(_tg__ZTV7S7263C7__A1__8S7263C13__7S7263C8[4]),  4,5},
  {&(_tg__ZTV8S7263C10__A1__7S7263C8[5]),  5,8},
  {&(_tg__ZTV7S7263C7__8S7263C10__A1__7S7263C8[4]),  4,5},
};
extern VTBL_ENTRY _ZTI7S7263C8[];
extern  VTBL_ENTRY _ZTV7S7263C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C8[];
static VTBL_ENTRY alt_thunk_names95[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7263C11D0Ev,_ZTv0_n24_N8S7263C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7263C11D0Ev,_ZThn60_N8S7263C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7263C11D1Ev,_ZTv0_n24_N8S7263C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7263C11D1Ev,_ZThn60_N8S7263C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7263C8D0Ev,_ZTv0_n24_N7S7263C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7263C8D0Ev,_ZThn76_N7S7263C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7263C8D0Ev,_ZThn52_N7S7263C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7263C8D1Ev,_ZTv0_n24_N7S7263C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7263C8D1Ev,_ZThn76_N7S7263C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7263C8D1Ev,_ZThn52_N7S7263C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7263C8 = {  "S7263C8", // class name
  bases_S7263C8, 32,
  &(vtc_S7263C8[0]), // expected_vtbl_contents
  &(vtt_S7263C8[0]), // expected_vtt_contents
  ABISELECT(136,92), // object size
  NSPAIRA(_ZTI7S7263C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7263C8),57, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7263C8),28, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names95,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7263C14  : virtual S7263C7 , S7263C3 {
  virtual  ~S7263C14(); // _ZN8S7263C14D2Ev
  virtual void  v4(); // _ZN8S7263C142v4Ev
  S7263C14(); // tgen
};
//SIG(-1 S7263C14) C1{ VBC2{ VBC3{ m FL} BC4{ m} v2} BC5{ BC3 VBC4 BC6{ BC2} vd v3} vd v1}


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

static void Test_S7263C14()
{
  extern Class_Descriptor cd_S7263C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S7263C14, buf);
    S7263C14 *dp, &lv = *(dp=new (buf) S7263C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S7263C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7263C14)");
    /*is_ambiguous_... S7263C14::S7263C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*), ABISELECT(24,16), "S7263C14");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*)(S7263C6*)(S7263C3*), ABISELECT(24,16), "S7263C14");
    /*is_ambiguous_... S7263C14::S7263C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C7*), ABISELECT(16,12), "S7263C14");
    /*is_ambiguous_... S7263C14::S7263C7 */ AMB_check_base_class_offset(lv, (S7263C7*), ABISELECT(16,12), "S7263C14");
    /*is_ambiguous_... S7263C3::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C3*), ABISELECT(8,4), "S7263C14");
    /*is_ambiguous_... S7263C3::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C3*), ABISELECT(32,24), "S7263C14");
    check_base_class_offset(lv, (S731C17_nt*)(S7263C7*)(S7263C6*)(S7263C3*), 0, "S7263C14");
    check_base_class_offset(lv, (S7263C7*)(S7263C6*)(S7263C3*), 0, "S7263C14");
    check_base_class_offset(lv, (S7263C6*)(S7263C3*), 0, "S7263C14");
    check_base_class_offset(lv, (S7263C3*), 0, "S7263C14");
    test_class_info(&lv, &cd_S7263C14);
    dp->~S7263C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7263C14(Test_S7263C14, "S7263C14", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN8S7263C14C1Ev();
extern void _ZN8S7263C14D2Ev();
Name_Map name_map_S7263C14[] = {
  NSPAIR(_ZN8S7263C14C1Ev),
  NSPAIR(_ZN8S7263C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S7263C6;
extern VTBL_ENTRY _ZTI7S7263C6[];
extern  VTBL_ENTRY _ZTV7S7263C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C6[];
extern Class_Descriptor cd_S7263C3;
extern VTBL_ENTRY _ZTI7S7263C3[];
extern  VTBL_ENTRY _ZTV7S7263C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C3[];
static Base_Class bases_S7263C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7263C7,    ABISELECT(16,12), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7263C7,    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
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7263C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7263C3,    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 _ZTI8S7263C14[];
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C14D1Ev();
extern void _ZN8S7263C14D0Ev();
extern void _ZN7S7263C32v2Ev();
extern void _ZN8S7263C142v4Ev();
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY vtc_S7263C14[] = {
  ABISELECT(16,12),
  ABISELECT(32,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7263C14[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7263C14D0Ev,
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
  (VTBL_ENTRY)&_ZN8S7263C142v4Ev,
  0,
  ABISELECT(8,4),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7263C14[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern VTBL_ENTRY _ZTV8S7263C14[];
extern void _ZN7S7263C72v1Ev();
extern void _ZN7S7263C3D1Ev();
extern void _ZN7S7263C3D0Ev();
extern void _ZN7S7263C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C3__8S7263C14[] = {
  ABISELECT(32,24),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C3[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN7S7263C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7263C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C67S7263C3__8S7263C14[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C6[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C77S7263C67S7263C3__A1__8S7263C14[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C7__8S7263C14[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
static  VTT_ENTRY vtt_S7263C14[] = {
  {&(_ZTV8S7263C14[5]),  5,15},
  {&(_tg__ZTV7S7263C3__8S7263C14[4]),  4,8},
  {&(_tg__ZTV7S7263C67S7263C3__8S7263C14[3]),  3,4},
  {&(_tg__ZTV7S7263C77S7263C67S7263C3__A1__8S7263C14[3]),  3,4},
  {&(_ZTV8S7263C14[14]),  14,15},
  {&(_tg__ZTV7S7263C7__8S7263C14[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7263C14[];
extern  VTBL_ENTRY _ZTV8S7263C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7263C14[];
Class_Descriptor cd_S7263C14 = {  "S7263C14", // class name
  bases_S7263C14, 9,
  &(vtc_S7263C14[0]), // expected_vtbl_contents
  &(vtt_S7263C14[0]), // expected_vtt_contents
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI8S7263C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7263C14),15, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7263C14),6, //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  S7263C2  : virtual S7263C3 , S7263C8 , S7263C14 {
  int s7263c2f0;
  ~S7263C2(); // tgen
  S7263C2(); // tgen
};
//SIG(-1 S7263C2) C1{ VBC2{ BC3{ m FL} VBC4{ m} BC5{ BC6{ VBC3 BC4 v1}} vd v2} BC7{ VBC3 VBC8{ VBC3 BC6 BC4} BC9{ BC3 VBC6 BC4 vd} VBC2 BC10{ BC3 BC2 BC11{ m} VBC12{ VBC3 BC8 VBC6 v3} VBC9 vd}} BC13{ VBC6 BC2 vd v4} Fi}


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

static void Test_S7263C2()
{
  extern Class_Descriptor cd_S7263C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,27)];
    init_test(&cd_S7263C2, buf);
    S7263C2 *dp, &lv = *(dp=new (buf) S7263C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,104), "sizeof(S7263C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7263C2)");
    /*is_ambiguous_... S7263C2::S7263C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C3*), ABISELECT(80,56), "S7263C2");
    /*is_ambiguous_... S7263C2::S7263C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C3*), ABISELECT(88,64), "S7263C2");
    /*is_ambiguous_... S7263C3::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C3*)(S7263C11*)(S7263C8*), ABISELECT(88,64), "S7263C2");
    /*is_ambiguous_... S7263C3::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C3*)(S7263C14*), ABISELECT(88,64), "S7263C2");
    /*is_ambiguous_... S7263C2::S7263C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*)(S7263C6*)(S7263C3*), ABISELECT(88,64), "S7263C2");
    /*is_ambiguous_... S7263C8::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C8*), ABISELECT(88,64), "S7263C2");
    /*is_ambiguous_... S7263C2::S7263C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C9*), ABISELECT(88,64), "S7263C2");
    /*is_ambiguous_... S7263C2::S7263C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*)(S7263C9*), ABISELECT(88,64), "S7263C2");
    /*is_ambiguous_... S7263C2::S7263C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*), ABISELECT(88,64), "S7263C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*)(S7263C6*)(S7263C3*)(S7263C11*)(S7263C8*), ABISELECT(88,64), "S7263C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C13*), ABISELECT(88,64), "S7263C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C9*)(S7263C13*), ABISELECT(88,64), "S7263C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*)(S7263C9*)(S7263C13*), ABISELECT(88,64), "S7263C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*)(S7263C6*)(S7263C3*)(S7263C14*), ABISELECT(88,64), "S7263C2");
    /*is_ambiguous_... S7263C2::S7263C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C7*)(S7263C6*)(S7263C3*), ABISELECT(72,52), "S7263C2");
    /*is_ambiguous_... S7263C2::S7263C3 */ AMB_check_base_class_offset(lv, (S7263C7*)(S7263C6*)(S7263C3*), ABISELECT(72,52), "S7263C2");
    /*is_ambiguous_... S7263C2::S7263C3 */ AMB_check_base_class_offset(lv, (S7263C6*)(S7263C3*), ABISELECT(72,52), "S7263C2");
    /*is_ambiguous_... S7263C2::S7263C3 */ AMB_check_base_class_offset(lv, (S7263C3*), ABISELECT(72,52), "S7263C2");
    /*is_ambiguous_... S7263C8::S7263C3 */ AMB_check_base_class_offset(lv, (S7263C3*)(S7263C8*), ABISELECT(72,52), "S7263C2");
    /*is_ambiguous_... S7263C2::S7263C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C7*)(S7263C9*), ABISELECT(96,72), "S7263C2");
    /*is_ambiguous_... S7263C2::S7263C9 */ AMB_check_base_class_offset(lv, (S7263C7*)(S7263C9*), ABISELECT(96,72), "S7263C2");
    /*is_ambiguous_... S7263C2::S7263C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C9*), ABISELECT(104,76), "S7263C2");
    /*is_ambiguous_... S7263C8::S7263C9 */ AMB_check_base_class_offset(lv, (S7263C9*)(S7263C8*), ABISELECT(96,72), "S7263C2");
    /*is_ambiguous_... S7263C8::S7263C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C10*)(S7263C8*), ABISELECT(8,4), "S7263C2");
    /*is_ambiguous_... S7263C2::S7263C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C7*), 0, "S7263C2");
    /*is_ambiguous_... S7263C8::S7263C10 */ AMB_check_base_class_offset(lv, (S7263C7*)(S7263C10*)(S7263C8*), 0, "S7263C2");
    /*is_ambiguous_... S7263C13::S7263C7 */ AMB_check_base_class_offset(lv, (S7263C7*)(S7263C13*), 0, "S7263C2");
    /*is_ambiguous_... S7263C2::S7263C10 */ AMB_check_base_class_offset(lv, (S7263C7*)(S7263C10*), 0, "S7263C2");
    /*is_ambiguous_... S7263C14::S7263C7 */ AMB_check_base_class_offset(lv, (S7263C7*)(S7263C14*), 0, "S7263C2");
    /*is_ambiguous_... S7263C8::S7263C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C10*)(S7263C8*), ABISELECT(16,12), "S7263C2");
    /*is_ambiguous_... S7263C8::S7263C10 */ AMB_check_base_class_offset(lv, (S7263C10*)(S7263C8*), 0, "S7263C2");
    /*is_ambiguous_... S7263C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C11*)(S7263C8*), ABISELECT(40,28), "S7263C2");
    /*is_ambiguous_... S7263C3::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C3*)(S7263C11*)(S7263C8*), ABISELECT(32,20), "S7263C2");
    check_base_class_offset(lv, (S731C17_nt*)(S7263C7*)(S7263C6*)(S7263C3*)(S7263C11*)(S7263C8*), ABISELECT(24,16), "S7263C2");
    check_base_class_offset(lv, (S7263C7*)(S7263C6*)(S7263C3*)(S7263C11*)(S7263C8*), ABISELECT(24,16), "S7263C2");
    check_base_class_offset(lv, (S7263C6*)(S7263C3*)(S7263C11*)(S7263C8*), ABISELECT(24,16), "S7263C2");
    check_base_class_offset(lv, (S7263C3*)(S7263C11*)(S7263C8*), ABISELECT(24,16), "S7263C2");
    check_base_class_offset(lv, (S28C52_nt*)(S7263C11*)(S7263C8*), ABISELECT(24,16), "S7263C2");
    check_base_class_offset(lv, (S731C17_nt*)(S7263C7*)(S7263C9*)(S7263C13*), ABISELECT(112,80), "S7263C2");
    check_base_class_offset(lv, (S7263C7*)(S7263C9*)(S7263C13*), ABISELECT(112,80), "S7263C2");
    /*is_ambiguous_... S7263C9::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C9*)(S7263C13*), ABISELECT(120,84), "S7263C2");
    check_base_class_offset(lv, (S7263C9*)(S7263C13*), ABISELECT(112,80), "S7263C2");
    check_base_class_offset(lv, (S7263C13*)(S7263C11*)(S7263C8*), ABISELECT(112,80), "S7263C2");
    /*is_ambiguous_... S7263C2::S7263C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C10*), ABISELECT(136,92), "S7263C2");
    /*is_ambiguous_... S7263C2::S7263C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C10*), ABISELECT(144,100), "S7263C2");
    check_base_class_offset(lv, (S7263C10*)(S7263C11*)(S7263C8*), ABISELECT(128,88), "S7263C2");
    check_base_class_offset(lv, (S7263C11*)(S7263C8*), ABISELECT(24,16), "S7263C2");
    check_base_class_offset(lv, (S7263C8*), 0, "S7263C2");
    /*is_ambiguous_... S7263C3::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C3*)(S7263C14*), ABISELECT(56,40), "S7263C2");
    check_base_class_offset(lv, (S731C17_nt*)(S7263C7*)(S7263C6*)(S7263C3*)(S7263C14*), ABISELECT(48,36), "S7263C2");
    check_base_class_offset(lv, (S7263C7*)(S7263C6*)(S7263C3*)(S7263C14*), ABISELECT(48,36), "S7263C2");
    check_base_class_offset(lv, (S7263C6*)(S7263C3*)(S7263C14*), ABISELECT(48,36), "S7263C2");
    check_base_class_offset(lv, (S7263C3*)(S7263C14*), ABISELECT(48,36), "S7263C2");
    check_base_class_offset(lv, (S7263C14*), ABISELECT(48,36), "S7263C2");
    check_field_offset(lv, s7263c2f0, ABISELECT(64,48), "S7263C2.s7263c2f0");
    test_class_info(&lv, &cd_S7263C2);
    dp->~S7263C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7263C2(Test_S7263C2, "S7263C2", ABISELECT(152,104));

#else // __cplusplus

extern void _ZN7S7263C2C1Ev();
extern void _ZN7S7263C2D1Ev();
Name_Map name_map_S7263C2[] = {
  NSPAIR(_ZN7S7263C2C1Ev),
  NSPAIR(_ZN7S7263C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S7263C6;
extern VTBL_ENTRY _ZTI7S7263C6[];
extern  VTBL_ENTRY _ZTV7S7263C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C6[];
extern Class_Descriptor cd_S7263C3;
extern VTBL_ENTRY _ZTI7S7263C3[];
extern  VTBL_ENTRY _ZTV7S7263C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C9;
extern VTBL_ENTRY _ZTI7S7263C9[];
extern  VTBL_ENTRY _ZTV7S7263C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C10;
extern VTBL_ENTRY _ZTI8S7263C10[];
extern  VTBL_ENTRY _ZTV8S7263C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7263C10[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S7263C6;
extern VTBL_ENTRY _ZTI7S7263C6[];
extern  VTBL_ENTRY _ZTV7S7263C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C6[];
extern Class_Descriptor cd_S7263C3;
extern VTBL_ENTRY _ZTI7S7263C3[];
extern  VTBL_ENTRY _ZTV7S7263C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C3[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C9;
extern VTBL_ENTRY _ZTI7S7263C9[];
extern  VTBL_ENTRY _ZTV7S7263C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C9[];
extern Class_Descriptor cd_S7263C13;
extern VTBL_ENTRY _ZTI8S7263C13[];
extern  VTBL_ENTRY _ZTV8S7263C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7263C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C10;
extern VTBL_ENTRY _ZTI8S7263C10[];
extern  VTBL_ENTRY _ZTV8S7263C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7263C10[];
extern Class_Descriptor cd_S7263C11;
extern VTBL_ENTRY _ZTI8S7263C11[];
extern  VTBL_ENTRY _ZTV8S7263C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7263C11[];
extern Class_Descriptor cd_S7263C8;
extern VTBL_ENTRY _ZTI7S7263C8[];
extern  VTBL_ENTRY _ZTV7S7263C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C8[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S7263C6;
extern VTBL_ENTRY _ZTI7S7263C6[];
extern  VTBL_ENTRY _ZTV7S7263C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C6[];
extern Class_Descriptor cd_S7263C3;
extern VTBL_ENTRY _ZTI7S7263C3[];
extern  VTBL_ENTRY _ZTV7S7263C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C3[];
extern Class_Descriptor cd_S7263C14;
extern VTBL_ENTRY _ZTI8S7263C14[];
extern  VTBL_ENTRY _ZTV8S7263C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7263C14[];
static Base_Class bases_S7263C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(88,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(88,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    4, //immediately_derived
  0, 0},
  {&cd_S7263C7,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7263C6,    ABISELECT(72,52), //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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7263C3,    ABISELECT(72,52), //bcp->offset
    34, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7263C7,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(104,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7263C9,    ABISELECT(96,72), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7263C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    15, //immediately_derived
  0, 0},
  {&cd_S7263C10,    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
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    31, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7263C7,    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
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7263C6,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7263C3,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(112,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7263C7,    ABISELECT(112,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(120,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
    26, //immediately_derived
  0, 0},
  {&cd_S7263C9,    ABISELECT(112,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7263C13,    ABISELECT(112,80), //bcp->offset
    50, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(136,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(144,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7263C10,    ABISELECT(128,88), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S7263C11,    ABISELECT(24,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7263C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_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
    37, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    35, //immediately_derived
  0, 0},
  {&cd_S7263C7,    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
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7263C6,    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
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7263C3,    ABISELECT(48,36), //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
    19, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S7263C14,    ABISELECT(48,36), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7263C2[];
extern void _ZN7S7263C72v1Ev();
extern void _ZN7S7263C2D1Ev();
extern void _ZN7S7263C2D0Ev();
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZThn24_N7S7263C2D1Ev,_ZThn16_N7S7263C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S7263C2D0Ev,_ZThn16_N7S7263C2D0Ev)();
extern void _ZN7S7263C32v2Ev();
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZThn48_N7S7263C2D1Ev,_ZThn36_N7S7263C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S7263C2D0Ev,_ZThn36_N7S7263C2D0Ev)();
extern void _ZN7S7263C32v2Ev();
extern void _ZN8S7263C142v4Ev();
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7263C2D1Ev,_ZTv0_n24_N7S7263C2D1Ev)();
extern void ABISELECT(_ZThn72_N7S7263C2D1Ev,_ZThn52_N7S7263C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7263C2D0Ev,_ZTv0_n24_N7S7263C2D0Ev)();
extern void ABISELECT(_ZThn72_N7S7263C2D0Ev,_ZThn52_N7S7263C2D0Ev)() __attribute__((weak));
extern void _ZN7S7263C32v2Ev();
extern void _ZN7S7263C72v1Ev();
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C132v3Ev();
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7263C2D1Ev,_ZTv0_n24_N7S7263C2D1Ev)();
extern void ABISELECT(_ZThn128_N7S7263C2D1Ev,_ZThn88_N7S7263C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7263C2D0Ev,_ZTv0_n24_N7S7263C2D0Ev)();
extern void ABISELECT(_ZThn128_N7S7263C2D0Ev,_ZThn88_N7S7263C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7263C2[] = {
  ABISELECT(128,88),
  ABISELECT(112,80),
  ABISELECT(88,64),
  ABISELECT(72,52),
  ABISELECT(96,72),
  0,
  0,
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C2[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN7S7263C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7263C2D0Ev,
  ABISELECT(104,72),
  ABISELECT(-24,-16),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(64,48),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7263C2[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7263C2D1Ev,_ZThn16_N7S7263C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7263C2D0Ev,_ZThn16_N7S7263C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
  ABISELECT(-48,-36),
  ABISELECT(40,28),
  ABISELECT(40,28),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI7S7263C2[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7263C2D1Ev,_ZThn36_N7S7263C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7263C2D0Ev,_ZThn36_N7S7263C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
  (VTBL_ENTRY)&_ZN8S7263C142v4Ev,
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI7S7263C2[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7263C2D1Ev,_ZTv0_n24_N7S7263C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7263C2D0Ev,_ZTv0_n24_N7S7263C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
  0,
  -8,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI7S7263C2[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  0,
  0,
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI7S7263C2[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C132v3Ev,
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S7263C2[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7263C2D1Ev,_ZTv0_n24_N7S7263C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7263C2D0Ev,_ZTv0_n24_N7S7263C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7263C2[];
extern void _ZN7S7263C72v1Ev();
extern void _ZN7S7263C8D1Ev();
extern void _ZN7S7263C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C8__7S7263C2[] = {
  ABISELECT(128,88),
  ABISELECT(112,80),
  ABISELECT(88,64),
  ABISELECT(72,52),
  ABISELECT(96,72),
  0,
  0,
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C8[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN7S7263C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7263C8D0Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C10D1Ev();
extern void _ZN8S7263C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C107S7263C8__7S7263C2[] = {
  0,
  0,
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S7263C10[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7263C10D0Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C11D1Ev();
extern void _ZN8S7263C11D0Ev();
extern void _ZN7S7263C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C117S7263C8__7S7263C2[] = {
  ABISELECT(104,72),
  ABISELECT(-24,-16),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7263C11[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7263C11D0Ev,
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN7S7263C3D1Ev();
extern void _ZN7S7263C3D0Ev();
extern void _ZN7S7263C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C38S7263C117S7263C8__A1__7S7263C2[] = {
  ABISELECT(64,48),
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C3[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN7S7263C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7263C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C67S7263C38S7263C117S7263C8__A1__7S7263C2[] = {
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C6[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C77S7263C67S7263C38S7263C117S7263C8__A3__7S7263C2[] = {
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C132v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C13__8S7263C117S7263C8__7S7263C2[] = {
  0,
  0,
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI8S7263C11[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C132v3Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C7__A2__8S7263C117S7263C8__7S7263C2[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7263C11[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7263C11D1Ev,_ZTv0_n24_N8S7263C11D1Ev)();
extern void ABISELECT(_ZThn104_N8S7263C11D1Ev,_ZThn72_N8S7263C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7263C11D0Ev,_ZTv0_n24_N8S7263C11D0Ev)();
extern void ABISELECT(_ZThn104_N8S7263C11D0Ev,_ZThn72_N8S7263C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7263C10__8S7263C117S7263C8__7S7263C2[] = {
  ABISELECT(-104,-72),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S7263C11[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7263C11D1Ev,_ZTv0_n24_N8S7263C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7263C11D0Ev,_ZTv0_n24_N8S7263C11D0Ev),
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C9__7S7263C8__7S7263C2[] = {
  0,
  -8,
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI7S7263C8[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7263C8D1Ev,_ZTv0_n24_N7S7263C8D1Ev)();
extern void ABISELECT(_ZThn72_N7S7263C8D1Ev,_ZThn52_N7S7263C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7263C8D0Ev,_ZTv0_n24_N7S7263C8D0Ev)();
extern void ABISELECT(_ZThn72_N7S7263C8D0Ev,_ZThn52_N7S7263C8D0Ev)() __attribute__((weak));
extern void _ZN7S7263C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C3__7S7263C8__7S7263C2[] = {
  0,
  ABISELECT(-72,-52),
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI7S7263C8[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7263C8D1Ev,_ZTv0_n24_N7S7263C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7263C8D0Ev,_ZTv0_n24_N7S7263C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZThn24_N7S7263C8D1Ev,_ZThn16_N7S7263C8D1Ev)();
extern void ABISELECT(_ZThn24_N7S7263C8D0Ev,_ZThn16_N7S7263C8D0Ev)();
extern void _ZN7S7263C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C11__7S7263C8__7S7263C2[] = {
  ABISELECT(104,72),
  ABISELECT(-24,-16),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(64,48),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7263C8[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7263C8D1Ev,_ZThn16_N7S7263C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7263C8D0Ev,_ZThn16_N7S7263C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C132v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C13__7S7263C8__7S7263C2[] = {
  0,
  0,
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI7S7263C8[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C132v3Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7263C8D1Ev,_ZTv0_n24_N7S7263C8D1Ev)();
extern void ABISELECT(_ZThn128_N7S7263C8D1Ev,_ZThn88_N7S7263C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7263C8D0Ev,_ZTv0_n24_N7S7263C8D0Ev)();
extern void ABISELECT(_ZThn128_N7S7263C8D0Ev,_ZThn88_N7S7263C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7263C10__A1__7S7263C8__7S7263C2[] = {
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI7S7263C8[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7263C8D1Ev,_ZTv0_n24_N7S7263C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7263C8D0Ev,_ZTv0_n24_N7S7263C8D0Ev),
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C14D1Ev();
extern void _ZN8S7263C14D0Ev();
extern void _ZN7S7263C32v2Ev();
extern void _ZN8S7263C142v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C14__7S7263C2[] = {
  ABISELECT(-48,-36),
  ABISELECT(40,28),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7263C14[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7263C14D0Ev,
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
  (VTBL_ENTRY)&_ZN8S7263C142v4Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN7S7263C3D1Ev();
extern void _ZN7S7263C3D0Ev();
extern void _ZN7S7263C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C38S7263C14__A2__7S7263C2[] = {
  ABISELECT(40,28),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C3[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN7S7263C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7263C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C67S7263C38S7263C14__A2__7S7263C2[] = {
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C6[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C77S7263C67S7263C38S7263C14__A5__7S7263C2[] = {
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C7__8S7263C14__7S7263C2[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI8S7263C14[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN7S7263C3D1Ev();
extern void _ZN7S7263C3D0Ev();
extern void _ZN7S7263C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C3__7S7263C2[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C3[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN7S7263C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7263C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C67S7263C3__7S7263C2[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C6[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C77S7263C67S7263C3__7S7263C2[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C9__7S7263C2[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C9[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C77S7263C9__A1__7S7263C2[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C7__A2__7S7263C2[] = {
  ABISELECT(88,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C132v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C13__7S7263C2[] = {
  ABISELECT(-112,-80),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7263C13[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C132v3Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C98S7263C13__A1__7S7263C2[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C9[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C77S7263C98S7263C13__A4__7S7263C2[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C7__A1__8S7263C13__7S7263C2[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(112,80),
  (VTBL_ENTRY)&(_ZTI8S7263C13[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C10D1Ev();
extern void _ZN8S7263C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C10__A1__7S7263C2[] = {
  ABISELECT(-128,-88),
  ABISELECT(-128,-88),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7263C10[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7263C10D0Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C7__8S7263C10__A1__7S7263C2[] = {
  0,
  ABISELECT(88,64),
  ABISELECT(128,88),
  (VTBL_ENTRY)&(_ZTI8S7263C10[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
static  VTT_ENTRY vtt_S7263C2[] = {
  {&(_ZTV7S7263C2[10]),  10,67},
  {&(_tg__ZTV7S7263C8__7S7263C2[10]),  10,13},
  {&(_tg__ZTV8S7263C107S7263C8__7S7263C2[5]),  5,8},
  {&(_tg__ZTV8S7263C107S7263C8__7S7263C2[5]),  5,8},
  {&(_tg__ZTV8S7263C117S7263C8__7S7263C2[7]),  7,11},
  {&(_tg__ZTV7S7263C38S7263C117S7263C8__A1__7S7263C2[4]),  4,8},
  {&(_tg__ZTV7S7263C67S7263C38S7263C117S7263C8__A1__7S7263C2[3]),  3,4},
  {&(_tg__ZTV7S7263C77S7263C67S7263C38S7263C117S7263C8__A3__7S7263C2[3]),  3,4},
  {&(_tg__ZTV8S7263C13__8S7263C117S7263C8__7S7263C2[6]),  6,8},
  {&(_tg__ZTV7S7263C7__A2__8S7263C117S7263C8__7S7263C2[4]),  4,5},
  {&(_tg__ZTV8S7263C10__8S7263C117S7263C8__7S7263C2[6]),  6,9},
  {&(_tg__ZTV7S7263C9__7S7263C8__7S7263C2[4]),  4,5},
  {&(_tg__ZTV7S7263C8__7S7263C2[10]),  10,13},
  {&(_tg__ZTV7S7263C3__7S7263C8__7S7263C2[7]),  7,11},
  {&(_tg__ZTV8S7263C11__7S7263C8__7S7263C2[7]),  7,11},
  {&(_tg__ZTV8S7263C13__7S7263C8__7S7263C2[6]),  6,8},
  {&(_tg__ZTV8S7263C10__A1__7S7263C8__7S7263C2[6]),  6,9},
  {&(_tg__ZTV8S7263C14__7S7263C2[5]),  5,10},
  {&(_tg__ZTV7S7263C38S7263C14__A2__7S7263C2[4]),  4,8},
  {&(_tg__ZTV7S7263C67S7263C38S7263C14__A2__7S7263C2[3]),  3,4},
  {&(_tg__ZTV7S7263C77S7263C67S7263C38S7263C14__A5__7S7263C2[3]),  3,4},
  {&(_tg__ZTV7S7263C7__8S7263C14__7S7263C2[4]),  4,5},
  {&(_ZTV7S7263C2[41]),  41,67},
  {&(_ZTV7S7263C2[49]),  49,67},
  {&(_ZTV7S7263C2[10]),  10,67},
  {&(_ZTV7S7263C2[20]),  20,67},
  {&(_ZTV7S7263C2[56]),  56,67},
  {&(_ZTV7S7263C2[64]),  64,67},
  {&(_ZTV7S7263C2[29]),  29,67},
  {&(_tg__ZTV7S7263C3__7S7263C2[4]),  4,8},
  {&(_tg__ZTV7S7263C67S7263C3__7S7263C2[3]),  3,4},
  {&(_tg__ZTV7S7263C77S7263C67S7263C3__7S7263C2[3]),  3,4},
  {&(_tg__ZTV7S7263C9__7S7263C2[3]),  3,4},
  {&(_tg__ZTV7S7263C77S7263C9__A1__7S7263C2[3]),  3,4},
  {&(_tg__ZTV7S7263C7__A2__7S7263C2[3]),  3,4},
  {&(_tg__ZTV8S7263C13__7S7263C2[4]),  4,6},
  {&(_tg__ZTV7S7263C98S7263C13__A1__7S7263C2[3]),  3,4},
  {&(_tg__ZTV7S7263C77S7263C98S7263C13__A4__7S7263C2[3]),  3,4},
  {&(_tg__ZTV7S7263C7__A1__8S7263C13__7S7263C2[4]),  4,5},
  {&(_tg__ZTV8S7263C10__A1__7S7263C2[5]),  5,8},
  {&(_tg__ZTV7S7263C7__8S7263C10__A1__7S7263C2[4]),  4,5},
};
extern VTBL_ENTRY _ZTI7S7263C2[];
extern  VTBL_ENTRY _ZTV7S7263C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C2[];
static VTBL_ENTRY alt_thunk_names96[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7263C8D0Ev,_ZTv0_n24_N7S7263C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7263C8D0Ev,_ZThn88_N7S7263C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7263C8D0Ev,_ZThn52_N7S7263C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7263C8D1Ev,_ZTv0_n24_N7S7263C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7263C8D1Ev,_ZThn88_N7S7263C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7263C8D1Ev,_ZThn52_N7S7263C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7263C11D0Ev,_ZTv0_n24_N8S7263C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7263C11D0Ev,_ZThn72_N8S7263C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7263C11D1Ev,_ZTv0_n24_N8S7263C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7263C11D1Ev,_ZThn72_N8S7263C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7263C2D0Ev,_ZTv0_n24_N7S7263C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7263C2D0Ev,_ZThn88_N7S7263C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7263C2D0Ev,_ZThn52_N7S7263C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7263C2D1Ev,_ZTv0_n24_N7S7263C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7263C2D1Ev,_ZThn88_N7S7263C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7263C2D1Ev,_ZThn52_N7S7263C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7263C2 = {  "S7263C2", // class name
  bases_S7263C2, 39,
  &(vtc_S7263C2[0]), // expected_vtbl_contents
  &(vtt_S7263C2[0]), // expected_vtt_contents
  ABISELECT(152,104), // object size
  NSPAIRA(_ZTI7S7263C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7263C2),67, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7263C2),41, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names96,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7263C1  : S7263C2 , S7263C11 {
  ~S7263C1(); // tgen
  S7263C1(); // tgen
};
//SIG(1 S7263C1) C1{ BC2{ VBC3{ BC4{ m FL} VBC5{ m} BC6{ BC7{ VBC4 BC5 v1}} vd v2} BC8{ VBC4 VBC9{ VBC4 BC7 BC5} BC10{ BC4 VBC7 BC5 vd} VBC3 BC11{ BC4 BC3 BC12{ m} VBC13{ VBC4 BC9 VBC7 v3} VBC10 vd}} BC14{ VBC7 BC3 vd v4} Fi} BC11}


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

static void Test_S7263C1()
{
  extern Class_Descriptor cd_S7263C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,32)];
    init_test(&cd_S7263C1, buf);
    S7263C1 *dp, &lv = *(dp=new (buf) S7263C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,124), "sizeof(S7263C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7263C1)");
    /*is_ambiguous_... S7263C1::S7263C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C3*), ABISELECT(104,76), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C3*), ABISELECT(112,84), "S7263C1");
    /*is_ambiguous_... S7263C3::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C3*)(S7263C11*)(S7263C8*)(S7263C2*), ABISELECT(112,84), "S7263C1");
    /*is_ambiguous_... S7263C3::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C3*)(S7263C14*)(S7263C2*), ABISELECT(112,84), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C3*)(S7263C11*), ABISELECT(112,84), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C3 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*)(S7263C6*)(S7263C3*), ABISELECT(112,84), "S7263C1");
    /*is_ambiguous_... S7263C8::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C8*)(S7263C2*), ABISELECT(112,84), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C9*), ABISELECT(112,84), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C9 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*)(S7263C9*), ABISELECT(112,84), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C7 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*), ABISELECT(112,84), "S7263C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*)(S7263C6*)(S7263C3*)(S7263C11*)(S7263C8*)(S7263C2*), ABISELECT(112,84), "S7263C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C13*), ABISELECT(112,84), "S7263C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C9*)(S7263C13*), ABISELECT(112,84), "S7263C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*)(S7263C9*)(S7263C13*), ABISELECT(112,84), "S7263C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*)(S7263C6*)(S7263C3*)(S7263C14*)(S7263C2*), ABISELECT(112,84), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C7*)(S7263C6*)(S7263C3*)(S7263C11*), ABISELECT(112,84), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C7*)(S7263C6*)(S7263C3*), ABISELECT(96,72), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C3 */ AMB_check_base_class_offset(lv, (S7263C7*)(S7263C6*)(S7263C3*), ABISELECT(96,72), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C3 */ AMB_check_base_class_offset(lv, (S7263C6*)(S7263C3*), ABISELECT(96,72), "S7263C1");
    /*is_ambiguous_... S7263C2::S7263C3 */ AMB_check_base_class_offset(lv, (S7263C3*)(S7263C2*), ABISELECT(96,72), "S7263C1");
    /*is_ambiguous_... S7263C8::S7263C3 */ AMB_check_base_class_offset(lv, (S7263C3*)(S7263C8*)(S7263C2*), ABISELECT(96,72), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C7*)(S7263C9*), ABISELECT(120,92), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C9 */ AMB_check_base_class_offset(lv, (S7263C7*)(S7263C9*), ABISELECT(120,92), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C9 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C9*), ABISELECT(128,96), "S7263C1");
    /*is_ambiguous_... S7263C8::S7263C9 */ AMB_check_base_class_offset(lv, (S7263C9*)(S7263C8*)(S7263C2*), ABISELECT(120,92), "S7263C1");
    /*is_ambiguous_... S7263C8::S7263C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C10*)(S7263C8*)(S7263C2*), ABISELECT(8,4), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C7 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C7*), 0, "S7263C1");
    /*is_ambiguous_... S7263C8::S7263C10 */ AMB_check_base_class_offset(lv, (S7263C7*)(S7263C10*)(S7263C8*)(S7263C2*), 0, "S7263C1");
    /*is_ambiguous_... S7263C13::S7263C7 */ AMB_check_base_class_offset(lv, (S7263C7*)(S7263C13*), 0, "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C10 */ AMB_check_base_class_offset(lv, (S7263C7*)(S7263C10*), 0, "S7263C1");
    /*is_ambiguous_... S7263C14::S7263C7 */ AMB_check_base_class_offset(lv, (S7263C7*)(S7263C14*)(S7263C2*), 0, "S7263C1");
    /*is_ambiguous_... S7263C8::S7263C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C10*)(S7263C8*)(S7263C2*), ABISELECT(16,12), "S7263C1");
    /*is_ambiguous_... S7263C8::S7263C10 */ AMB_check_base_class_offset(lv, (S7263C10*)(S7263C8*)(S7263C2*), 0, "S7263C1");
    /*is_ambiguous_... S7263C11::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C11*)(S7263C8*)(S7263C2*), ABISELECT(40,28), "S7263C1");
    /*is_ambiguous_... S7263C3::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C3*)(S7263C11*)(S7263C8*)(S7263C2*), ABISELECT(32,20), "S7263C1");
    check_base_class_offset(lv, (S731C17_nt*)(S7263C7*)(S7263C6*)(S7263C3*)(S7263C11*)(S7263C8*)(S7263C2*), ABISELECT(24,16), "S7263C1");
    check_base_class_offset(lv, (S7263C7*)(S7263C6*)(S7263C3*)(S7263C11*)(S7263C8*)(S7263C2*), ABISELECT(24,16), "S7263C1");
    check_base_class_offset(lv, (S7263C6*)(S7263C3*)(S7263C11*)(S7263C8*)(S7263C2*), ABISELECT(24,16), "S7263C1");
    check_base_class_offset(lv, (S7263C3*)(S7263C11*)(S7263C8*)(S7263C2*), ABISELECT(24,16), "S7263C1");
    check_base_class_offset(lv, (S28C52_nt*)(S7263C11*)(S7263C8*)(S7263C2*), ABISELECT(24,16), "S7263C1");
    check_base_class_offset(lv, (S731C17_nt*)(S7263C7*)(S7263C9*)(S7263C13*), ABISELECT(136,100), "S7263C1");
    check_base_class_offset(lv, (S7263C7*)(S7263C9*)(S7263C13*), ABISELECT(136,100), "S7263C1");
    /*is_ambiguous_... S7263C9::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C9*)(S7263C13*), ABISELECT(144,104), "S7263C1");
    check_base_class_offset(lv, (S7263C9*)(S7263C13*), ABISELECT(136,100), "S7263C1");
    check_base_class_offset(lv, (S7263C13*)(S7263C11*)(S7263C8*)(S7263C2*), ABISELECT(136,100), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C11 */ AMB_check_base_class_offset(lv, (S7263C13*)(S7263C11*), ABISELECT(136,100), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C10 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C10*), ABISELECT(160,112), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C10*), ABISELECT(168,120), "S7263C1");
    check_base_class_offset(lv, (S7263C10*)(S7263C11*)(S7263C8*)(S7263C2*), ABISELECT(152,108), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C11 */ AMB_check_base_class_offset(lv, (S7263C10*)(S7263C11*), ABISELECT(152,108), "S7263C1");
    check_base_class_offset(lv, (S7263C11*)(S7263C8*)(S7263C2*), ABISELECT(24,16), "S7263C1");
    check_base_class_offset(lv, (S7263C8*)(S7263C2*), 0, "S7263C1");
    /*is_ambiguous_... S7263C3::S3461C5_nt */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C3*)(S7263C14*)(S7263C2*), ABISELECT(56,40), "S7263C1");
    check_base_class_offset(lv, (S731C17_nt*)(S7263C7*)(S7263C6*)(S7263C3*)(S7263C14*)(S7263C2*), ABISELECT(48,36), "S7263C1");
    check_base_class_offset(lv, (S7263C7*)(S7263C6*)(S7263C3*)(S7263C14*)(S7263C2*), ABISELECT(48,36), "S7263C1");
    check_base_class_offset(lv, (S7263C6*)(S7263C3*)(S7263C14*)(S7263C2*), ABISELECT(48,36), "S7263C1");
    check_base_class_offset(lv, (S7263C3*)(S7263C14*)(S7263C2*), ABISELECT(48,36), "S7263C1");
    check_base_class_offset(lv, (S7263C14*)(S7263C2*), ABISELECT(48,36), "S7263C1");
    check_base_class_offset(lv, (S7263C2*), 0, "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C11*), ABISELECT(88,64), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C11 */ AMB_check_base_class_offset(lv, (S3461C5_nt*)(S7263C3*)(S7263C11*), ABISELECT(80,56), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C11 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7263C7*)(S7263C6*)(S7263C3*)(S7263C11*), ABISELECT(72,52), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C11 */ AMB_check_base_class_offset(lv, (S7263C7*)(S7263C6*)(S7263C3*)(S7263C11*), ABISELECT(72,52), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C11 */ AMB_check_base_class_offset(lv, (S7263C6*)(S7263C3*)(S7263C11*), ABISELECT(72,52), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C11 */ AMB_check_base_class_offset(lv, (S7263C3*)(S7263C11*), ABISELECT(72,52), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C11 */ AMB_check_base_class_offset(lv, (S28C52_nt*)(S7263C11*), ABISELECT(72,52), "S7263C1");
    /*is_ambiguous_... S7263C1::S7263C11 */ AMB_check_base_class_offset(lv, (S7263C11*), ABISELECT(72,52), "S7263C1");
    test_class_info(&lv, &cd_S7263C1);
    dp->~S7263C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7263C1(Test_S7263C1, "S7263C1", ABISELECT(176,124));

#else // __cplusplus

extern void _ZN7S7263C1C1Ev();
extern void _ZN7S7263C1D1Ev();
Name_Map name_map_S7263C1[] = {
  NSPAIR(_ZN7S7263C1C1Ev),
  NSPAIR(_ZN7S7263C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S7263C6;
extern VTBL_ENTRY _ZTI7S7263C6[];
extern  VTBL_ENTRY _ZTV7S7263C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C6[];
extern Class_Descriptor cd_S7263C3;
extern VTBL_ENTRY _ZTI7S7263C3[];
extern  VTBL_ENTRY _ZTV7S7263C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C9;
extern VTBL_ENTRY _ZTI7S7263C9[];
extern  VTBL_ENTRY _ZTV7S7263C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C9[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C10;
extern VTBL_ENTRY _ZTI8S7263C10[];
extern  VTBL_ENTRY _ZTV8S7263C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7263C10[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S7263C6;
extern VTBL_ENTRY _ZTI7S7263C6[];
extern  VTBL_ENTRY _ZTV7S7263C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C6[];
extern Class_Descriptor cd_S7263C3;
extern VTBL_ENTRY _ZTI7S7263C3[];
extern  VTBL_ENTRY _ZTV7S7263C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C3[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C9;
extern VTBL_ENTRY _ZTI7S7263C9[];
extern  VTBL_ENTRY _ZTV7S7263C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C9[];
extern Class_Descriptor cd_S7263C13;
extern VTBL_ENTRY _ZTI8S7263C13[];
extern  VTBL_ENTRY _ZTV8S7263C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7263C13[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C10;
extern VTBL_ENTRY _ZTI8S7263C10[];
extern  VTBL_ENTRY _ZTV8S7263C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7263C10[];
extern Class_Descriptor cd_S7263C11;
extern VTBL_ENTRY _ZTI8S7263C11[];
extern  VTBL_ENTRY _ZTV8S7263C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7263C11[];
extern Class_Descriptor cd_S7263C8;
extern VTBL_ENTRY _ZTI7S7263C8[];
extern  VTBL_ENTRY _ZTV7S7263C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C8[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S7263C6;
extern VTBL_ENTRY _ZTI7S7263C6[];
extern  VTBL_ENTRY _ZTV7S7263C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C6[];
extern Class_Descriptor cd_S7263C3;
extern VTBL_ENTRY _ZTI7S7263C3[];
extern  VTBL_ENTRY _ZTV7S7263C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C3[];
extern Class_Descriptor cd_S7263C14;
extern VTBL_ENTRY _ZTI8S7263C14[];
extern  VTBL_ENTRY _ZTV8S7263C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7263C14[];
extern Class_Descriptor cd_S7263C2;
extern VTBL_ENTRY _ZTI7S7263C2[];
extern  VTBL_ENTRY _ZTV7S7263C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C2[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7263C7;
extern VTBL_ENTRY _ZTI7S7263C7[];
extern  VTBL_ENTRY _ZTV7S7263C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C7[];
extern Class_Descriptor cd_S7263C6;
extern VTBL_ENTRY _ZTI7S7263C6[];
extern  VTBL_ENTRY _ZTV7S7263C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C6[];
extern Class_Descriptor cd_S7263C3;
extern VTBL_ENTRY _ZTI7S7263C3[];
extern  VTBL_ENTRY _ZTV7S7263C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C3[];
extern Class_Descriptor cd_S28C52_nt;
extern VTBL_ENTRY _ZTI9S28C52_nt[];
extern Class_Descriptor cd_S7263C11;
extern VTBL_ENTRY _ZTI8S7263C11[];
extern  VTBL_ENTRY _ZTV8S7263C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7263C11[];
static Base_Class bases_S7263C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(104,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(112,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(112,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7263C7,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7263C6,    ABISELECT(96,72), //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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7263C3,    ABISELECT(96,72), //bcp->offset
    45, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(120,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
    8, //immediately_derived
  0, 0},
  {&cd_S7263C7,    ABISELECT(120,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(128,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7263C9,    ABISELECT(120,92), //bcp->offset
    56, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7263C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    15, //immediately_derived
  0, 0},
  {&cd_S7263C10,    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
    11, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    31, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    21, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7263C7,    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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7263C6,    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
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7263C3,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S28C52_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(136,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7263C7,    ABISELECT(136,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(144,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7263C9,    ABISELECT(136,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7263C13,    ABISELECT(136,100), //bcp->offset
    61, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(160,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(168,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7263C10,    ABISELECT(152,108), //bcp->offset
    69, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S7263C11,    ABISELECT(24,16), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7263C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S3461C5_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
    37, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    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
    35, //immediately_derived
  0, 0},
  {&cd_S7263C7,    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
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S7263C6,    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
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7263C3,    ABISELECT(48,36), //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
    19, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S7263C14,    ABISELECT(48,36), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7263C2,    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
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(88,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
    47, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    43, //immediately_derived
  0, 0},
  {&cd_S7263C7,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S7263C6,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S7263C3,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S28C52_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
    47, //immediately_derived
  0, 0},
  {&cd_S7263C11,    ABISELECT(72,52), //bcp->offset
    34, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7263C1[];
extern void _ZN7S7263C72v1Ev();
extern void _ZN7S7263C1D1Ev();
extern void _ZN7S7263C1D0Ev();
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZThn24_N7S7263C1D1Ev,_ZThn16_N7S7263C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S7263C1D0Ev,_ZThn16_N7S7263C1D0Ev)();
extern void _ZN7S7263C32v2Ev();
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZThn48_N7S7263C1D1Ev,_ZThn36_N7S7263C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S7263C1D0Ev,_ZThn36_N7S7263C1D0Ev)();
extern void _ZN7S7263C32v2Ev();
extern void _ZN8S7263C142v4Ev();
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZThn72_N7S7263C1D1Ev,_ZThn52_N7S7263C1D1Ev)();
extern void ABISELECT(_ZThn72_N7S7263C1D0Ev,_ZThn52_N7S7263C1D0Ev)();
extern void _ZN7S7263C32v2Ev();
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7263C1D1Ev,_ZTv0_n24_N7S7263C1D1Ev)();
extern void ABISELECT(_ZThn96_N7S7263C1D1Ev,_ZThn72_N7S7263C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7263C1D0Ev,_ZTv0_n24_N7S7263C1D0Ev)();
extern void ABISELECT(_ZThn96_N7S7263C1D0Ev,_ZThn72_N7S7263C1D0Ev)() __attribute__((weak));
extern void _ZN7S7263C32v2Ev();
extern void _ZN7S7263C72v1Ev();
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C132v3Ev();
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7263C1D1Ev,_ZTv0_n24_N7S7263C1D1Ev)();
extern void ABISELECT(_ZThn152_N7S7263C1D1Ev,_ZThn108_N7S7263C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7263C1D0Ev,_ZTv0_n24_N7S7263C1D0Ev)();
extern void ABISELECT(_ZThn152_N7S7263C1D0Ev,_ZThn108_N7S7263C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7263C1[] = {
  ABISELECT(152,108),
  ABISELECT(136,100),
  ABISELECT(112,84),
  ABISELECT(96,72),
  ABISELECT(120,92),
  0,
  0,
  ABISELECT(112,84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C1[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN7S7263C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7263C1D0Ev,
  ABISELECT(128,92),
  ABISELECT(-24,-16),
  ABISELECT(112,84),
  ABISELECT(88,68),
  ABISELECT(88,68),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7263C1[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7263C1D1Ev,_ZThn16_N7S7263C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7263C1D0Ev,_ZThn16_N7S7263C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
  ABISELECT(-48,-36),
  ABISELECT(64,48),
  ABISELECT(64,48),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI7S7263C1[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7263C1D1Ev,_ZThn36_N7S7263C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7263C1D0Ev,_ZThn36_N7S7263C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
  (VTBL_ENTRY)&_ZN8S7263C142v4Ev,
  ABISELECT(80,56),
  ABISELECT(-72,-52),
  ABISELECT(64,48),
  ABISELECT(40,32),
  ABISELECT(40,32),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI7S7263C1[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N7S7263C1D1Ev,_ZThn52_N7S7263C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N7S7263C1D0Ev,_ZThn52_N7S7263C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
  0,
  ABISELECT(-96,-72),
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI7S7263C1[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7263C1D1Ev,_ZTv0_n24_N7S7263C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7263C1D0Ev,_ZTv0_n24_N7S7263C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
  0,
  -8,
  ABISELECT(-120,-92),
  (VTBL_ENTRY)&(_ZTI7S7263C1[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  0,
  0,
  ABISELECT(-136,-100),
  ABISELECT(-24,-16),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI7S7263C1[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C132v3Ev,
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  ABISELECT(-40,-24),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI7S7263C1[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7263C1D1Ev,_ZTv0_n24_N7S7263C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7263C1D0Ev,_ZTv0_n24_N7S7263C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7263C1[];
extern void _ZN7S7263C72v1Ev();
extern void _ZN7S7263C2D1Ev();
extern void _ZN7S7263C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C2__7S7263C1[] = {
  ABISELECT(152,108),
  ABISELECT(136,100),
  ABISELECT(112,84),
  ABISELECT(96,72),
  ABISELECT(120,92),
  0,
  0,
  ABISELECT(112,84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C2[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN7S7263C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7263C2D0Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN7S7263C8D1Ev();
extern void _ZN7S7263C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C87S7263C2__7S7263C1[] = {
  ABISELECT(152,108),
  ABISELECT(136,100),
  ABISELECT(112,84),
  ABISELECT(96,72),
  ABISELECT(120,92),
  0,
  0,
  ABISELECT(112,84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C8[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN7S7263C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7263C8D0Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C10D1Ev();
extern void _ZN8S7263C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C107S7263C87S7263C2__7S7263C1[] = {
  0,
  0,
  ABISELECT(112,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S7263C10[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7263C10D0Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C11D1Ev();
extern void _ZN8S7263C11D0Ev();
extern void _ZN7S7263C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C117S7263C87S7263C2__7S7263C1[] = {
  ABISELECT(128,92),
  ABISELECT(-24,-16),
  ABISELECT(112,84),
  ABISELECT(88,68),
  ABISELECT(88,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7263C11[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7263C11D0Ev,
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN7S7263C3D1Ev();
extern void _ZN7S7263C3D0Ev();
extern void _ZN7S7263C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C38S7263C117S7263C87S7263C2__A1__7S7263C1[] = {
  ABISELECT(88,68),
  ABISELECT(88,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C3[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN7S7263C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7263C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C67S7263C38S7263C117S7263C87S7263C2__A1__7S7263C1[] = {
  ABISELECT(88,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C6[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C77S7263C67S7263C38S7263C117S7263C87S7263C2__A3__7S7263C1[] = {
  ABISELECT(88,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C132v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C13__8S7263C117S7263C87S7263C2__7S7263C1[] = {
  0,
  0,
  ABISELECT(-136,-100),
  ABISELECT(-24,-16),
  ABISELECT(-112,-84),
  (VTBL_ENTRY)&(_ZTI8S7263C11[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C132v3Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C7__A2__8S7263C117S7263C87S7263C2__7S7263C1[] = {
  0,
  ABISELECT(112,84),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7263C11[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7263C11D1Ev,_ZTv0_n24_N8S7263C11D1Ev)();
extern void ABISELECT(_ZThn128_N8S7263C11D1Ev,_ZThn92_N8S7263C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7263C11D0Ev,_ZTv0_n24_N8S7263C11D0Ev)();
extern void ABISELECT(_ZThn128_N8S7263C11D0Ev,_ZThn92_N8S7263C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7263C10__8S7263C117S7263C87S7263C2__7S7263C1[] = {
  ABISELECT(-128,-92),
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  ABISELECT(-40,-24),
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI8S7263C11[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7263C11D1Ev,_ZTv0_n24_N8S7263C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7263C11D0Ev,_ZTv0_n24_N8S7263C11D0Ev),
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C9__7S7263C87S7263C2__7S7263C1[] = {
  0,
  -8,
  ABISELECT(-120,-92),
  (VTBL_ENTRY)&(_ZTI7S7263C8[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7263C8D1Ev,_ZTv0_n24_N7S7263C8D1Ev)();
extern void ABISELECT(_ZThn96_N7S7263C8D1Ev,_ZThn72_N7S7263C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7263C8D0Ev,_ZTv0_n24_N7S7263C8D0Ev)();
extern void ABISELECT(_ZThn96_N7S7263C8D0Ev,_ZThn72_N7S7263C8D0Ev)() __attribute__((weak));
extern void _ZN7S7263C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C3__7S7263C87S7263C2__7S7263C1[] = {
  0,
  ABISELECT(-96,-72),
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI7S7263C8[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7263C8D1Ev,_ZTv0_n24_N7S7263C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7263C8D0Ev,_ZTv0_n24_N7S7263C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZThn24_N7S7263C8D1Ev,_ZThn16_N7S7263C8D1Ev)();
extern void ABISELECT(_ZThn24_N7S7263C8D0Ev,_ZThn16_N7S7263C8D0Ev)();
extern void _ZN7S7263C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C11__7S7263C87S7263C2__7S7263C1[] = {
  ABISELECT(128,92),
  ABISELECT(-24,-16),
  ABISELECT(112,84),
  ABISELECT(88,68),
  ABISELECT(88,68),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7263C8[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7263C8D1Ev,_ZThn16_N7S7263C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7263C8D0Ev,_ZThn16_N7S7263C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C132v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C13__7S7263C87S7263C2__7S7263C1[] = {
  0,
  0,
  ABISELECT(-136,-100),
  ABISELECT(-24,-16),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI7S7263C8[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C132v3Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7263C8D1Ev,_ZTv0_n24_N7S7263C8D1Ev)();
extern void ABISELECT(_ZThn152_N7S7263C8D1Ev,_ZThn108_N7S7263C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7263C8D0Ev,_ZTv0_n24_N7S7263C8D0Ev)();
extern void ABISELECT(_ZThn152_N7S7263C8D0Ev,_ZThn108_N7S7263C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7263C10__A1__7S7263C87S7263C2__7S7263C1[] = {
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  ABISELECT(-40,-24),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI7S7263C8[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7263C8D1Ev,_ZTv0_n24_N7S7263C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7263C8D0Ev,_ZTv0_n24_N7S7263C8D0Ev),
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C14D1Ev();
extern void _ZN8S7263C14D0Ev();
extern void _ZN7S7263C32v2Ev();
extern void _ZN8S7263C142v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C147S7263C2__7S7263C1[] = {
  ABISELECT(-48,-36),
  ABISELECT(64,48),
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7263C14[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7263C14D0Ev,
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
  (VTBL_ENTRY)&_ZN8S7263C142v4Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN7S7263C3D1Ev();
extern void _ZN7S7263C3D0Ev();
extern void _ZN7S7263C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C38S7263C147S7263C2__A2__7S7263C1[] = {
  ABISELECT(64,48),
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C3[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN7S7263C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7263C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C67S7263C38S7263C147S7263C2__A2__7S7263C1[] = {
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C6[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C77S7263C67S7263C38S7263C147S7263C2__A5__7S7263C1[] = {
  ABISELECT(64,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C7__8S7263C147S7263C2__7S7263C1[] = {
  0,
  ABISELECT(112,84),
  ABISELECT(48,36),
  (VTBL_ENTRY)&(_ZTI8S7263C14[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7263C2D1Ev,_ZTv0_n24_N7S7263C2D1Ev)();
extern void ABISELECT(_ZThn96_N7S7263C2D1Ev,_ZThn72_N7S7263C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7263C2D0Ev,_ZTv0_n24_N7S7263C2D0Ev)();
extern void ABISELECT(_ZThn96_N7S7263C2D0Ev,_ZThn72_N7S7263C2D0Ev)() __attribute__((weak));
extern void _ZN7S7263C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C3__7S7263C2__7S7263C1[] = {
  0,
  ABISELECT(-96,-72),
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI7S7263C2[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7263C2D1Ev,_ZTv0_n24_N7S7263C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7263C2D0Ev,_ZTv0_n24_N7S7263C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C9__7S7263C2__7S7263C1[] = {
  0,
  -8,
  ABISELECT(-120,-92),
  (VTBL_ENTRY)&(_ZTI7S7263C2[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZThn24_N7S7263C2D1Ev,_ZThn16_N7S7263C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S7263C2D0Ev,_ZThn16_N7S7263C2D0Ev)();
extern void _ZN7S7263C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C117S7263C8__7S7263C2__7S7263C1[] = {
  ABISELECT(128,92),
  ABISELECT(-24,-16),
  ABISELECT(112,84),
  ABISELECT(88,68),
  ABISELECT(88,68),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7263C2[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7263C2D1Ev,_ZThn16_N7S7263C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7263C2D0Ev,_ZThn16_N7S7263C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C132v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C13__7S7263C2__7S7263C1[] = {
  0,
  0,
  ABISELECT(-136,-100),
  ABISELECT(-24,-16),
  ABISELECT(-136,-100),
  (VTBL_ENTRY)&(_ZTI7S7263C2[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C132v3Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7263C2D1Ev,_ZTv0_n24_N7S7263C2D1Ev)();
extern void ABISELECT(_ZThn152_N7S7263C2D1Ev,_ZThn108_N7S7263C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7263C2D0Ev,_ZTv0_n24_N7S7263C2D0Ev)();
extern void ABISELECT(_ZThn152_N7S7263C2D0Ev,_ZThn108_N7S7263C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7263C10__A1__7S7263C2__7S7263C1[] = {
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  ABISELECT(-40,-24),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI7S7263C2[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7263C2D1Ev,_ZTv0_n24_N7S7263C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7263C2D0Ev,_ZTv0_n24_N7S7263C2D0Ev),
};
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZThn48_N7S7263C2D1Ev,_ZThn36_N7S7263C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S7263C2D0Ev,_ZThn36_N7S7263C2D0Ev)();
extern void _ZN7S7263C32v2Ev();
extern void _ZN8S7263C142v4Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C14__7S7263C2__7S7263C1[] = {
  ABISELECT(-48,-36),
  ABISELECT(64,48),
  ABISELECT(64,48),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI7S7263C2[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7263C2D1Ev,_ZThn36_N7S7263C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7263C2D0Ev,_ZThn36_N7S7263C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
  (VTBL_ENTRY)&_ZN8S7263C142v4Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C11D1Ev();
extern void _ZN8S7263C11D0Ev();
extern void _ZN7S7263C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C11__A1__7S7263C1[] = {
  ABISELECT(80,56),
  ABISELECT(-72,-52),
  ABISELECT(64,48),
  ABISELECT(40,32),
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S7263C11[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7263C11D0Ev,
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN7S7263C3D1Ev();
extern void _ZN7S7263C3D0Ev();
extern void _ZN7S7263C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C38S7263C11__A3__7S7263C1[] = {
  ABISELECT(40,32),
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C3[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN7S7263C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7263C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C67S7263C38S7263C11__A3__7S7263C1[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C6[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C77S7263C67S7263C38S7263C11__A6__7S7263C1[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C132v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C13__8S7263C11__A1__7S7263C1[] = {
  0,
  0,
  ABISELECT(-136,-100),
  ABISELECT(-24,-16),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI8S7263C11[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C132v3Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C7__A2__8S7263C11__A1__7S7263C1[] = {
  0,
  ABISELECT(112,84),
  ABISELECT(72,52),
  (VTBL_ENTRY)&(_ZTI8S7263C11[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S7263C11D1Ev,_ZTv0_n24_N8S7263C11D1Ev)();
extern void ABISELECT(_ZThn80_N8S7263C11D1Ev,_ZThn56_N8S7263C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7263C11D0Ev,_ZTv0_n24_N8S7263C11D0Ev)();
extern void ABISELECT(_ZThn80_N8S7263C11D0Ev,_ZThn56_N8S7263C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7263C10__8S7263C11__A1__7S7263C1[] = {
  ABISELECT(-80,-56),
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  ABISELECT(-40,-24),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S7263C11[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7263C11D1Ev,_ZTv0_n24_N8S7263C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7263C11D0Ev,_ZTv0_n24_N8S7263C11D0Ev),
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN7S7263C3D1Ev();
extern void _ZN7S7263C3D0Ev();
extern void _ZN7S7263C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C3__7S7263C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C3[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN7S7263C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7263C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7263C32v2Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C67S7263C3__7S7263C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C6[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C77S7263C67S7263C3__7S7263C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C9__7S7263C1[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C9[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C77S7263C9__A1__7S7263C1[] = {
  -8,
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C7__A2__7S7263C1[] = {
  ABISELECT(112,84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C132v3Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C13__7S7263C1[] = {
  ABISELECT(-136,-100),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7263C13[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C132v3Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C98S7263C13__A1__7S7263C1[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C9[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C77S7263C98S7263C13__A4__7S7263C1[] = {
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7263C7[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C7__A1__8S7263C13__7S7263C1[] = {
  0,
  ABISELECT(112,84),
  ABISELECT(136,100),
  (VTBL_ENTRY)&(_ZTI8S7263C13[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
extern void _ZN7S7263C72v1Ev();
extern void _ZN8S7263C10D1Ev();
extern void _ZN8S7263C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7263C10__A1__7S7263C1[] = {
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S7263C10[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
  (VTBL_ENTRY)&_ZN8S7263C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7263C10D0Ev,
};
extern void _ZN7S7263C72v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7263C7__8S7263C10__A1__7S7263C1[] = {
  0,
  ABISELECT(112,84),
  ABISELECT(152,108),
  (VTBL_ENTRY)&(_ZTI8S7263C10[0]),
  (VTBL_ENTRY)&_ZN7S7263C72v1Ev,
};
static  VTT_ENTRY vtt_S7263C1[] = {
  {&(_ZTV7S7263C1[10]),  10,78},
  {&(_tg__ZTV7S7263C2__7S7263C1[10]),  10,13},
  {&(_tg__ZTV7S7263C87S7263C2__7S7263C1[10]),  10,13},
  {&(_tg__ZTV8S7263C107S7263C87S7263C2__7S7263C1[5]),  5,8},
  {&(_tg__ZTV8S7263C107S7263C87S7263C2__7S7263C1[5]),  5,8},
  {&(_tg__ZTV8S7263C117S7263C87S7263C2__7S7263C1[7]),  7,11},
  {&(_tg__ZTV7S7263C38S7263C117S7263C87S7263C2__A1__7S7263C1[4]),  4,8},
  {&(_tg__ZTV7S7263C67S7263C38S7263C117S7263C87S7263C2__A1__7S7263C1[3]),  3,4},
  {&(_tg__ZTV7S7263C77S7263C67S7263C38S7263C117S7263C87S7263C2__A3__7S7263C1[3]),  3,4},
  {&(_tg__ZTV8S7263C13__8S7263C117S7263C87S7263C2__7S7263C1[6]),  6,8},
  {&(_tg__ZTV7S7263C7__A2__8S7263C117S7263C87S7263C2__7S7263C1[4]),  4,5},
  {&(_tg__ZTV8S7263C10__8S7263C117S7263C87S7263C2__7S7263C1[6]),  6,9},
  {&(_tg__ZTV7S7263C9__7S7263C87S7263C2__7S7263C1[4]),  4,5},
  {&(_tg__ZTV7S7263C87S7263C2__7S7263C1[10]),  10,13},
  {&(_tg__ZTV7S7263C3__7S7263C87S7263C2__7S7263C1[7]),  7,11},
  {&(_tg__ZTV8S7263C11__7S7263C87S7263C2__7S7263C1[7]),  7,11},
  {&(_tg__ZTV8S7263C13__7S7263C87S7263C2__7S7263C1[6]),  6,8},
  {&(_tg__ZTV8S7263C10__A1__7S7263C87S7263C2__7S7263C1[6]),  6,9},
  {&(_tg__ZTV8S7263C147S7263C2__7S7263C1[5]),  5,10},
  {&(_tg__ZTV7S7263C38S7263C147S7263C2__A2__7S7263C1[4]),  4,8},
  {&(_tg__ZTV7S7263C67S7263C38S7263C147S7263C2__A2__7S7263C1[3]),  3,4},
  {&(_tg__ZTV7S7263C77S7263C67S7263C38S7263C147S7263C2__A5__7S7263C1[3]),  3,4},
  {&(_tg__ZTV7S7263C7__8S7263C147S7263C2__7S7263C1[4]),  4,5},
  {&(_tg__ZTV7S7263C3__7S7263C2__7S7263C1[7]),  7,11},
  {&(_tg__ZTV7S7263C9__7S7263C2__7S7263C1[4]),  4,5},
  {&(_tg__ZTV7S7263C2__7S7263C1[10]),  10,13},
  {&(_tg__ZTV8S7263C117S7263C8__7S7263C2__7S7263C1[7]),  7,11},
  {&(_tg__ZTV8S7263C13__7S7263C2__7S7263C1[6]),  6,8},
  {&(_tg__ZTV8S7263C10__A1__7S7263C2__7S7263C1[6]),  6,9},
  {&(_tg__ZTV8S7263C14__7S7263C2__7S7263C1[5]),  5,10},
  {&(_tg__ZTV8S7263C11__A1__7S7263C1[7]),  7,11},
  {&(_tg__ZTV7S7263C38S7263C11__A3__7S7263C1[4]),  4,8},
  {&(_tg__ZTV7S7263C67S7263C38S7263C11__A3__7S7263C1[3]),  3,4},
  {&(_tg__ZTV7S7263C77S7263C67S7263C38S7263C11__A6__7S7263C1[3]),  3,4},
  {&(_tg__ZTV8S7263C13__8S7263C11__A1__7S7263C1[6]),  6,8},
  {&(_tg__ZTV7S7263C7__A2__8S7263C11__A1__7S7263C1[4]),  4,5},
  {&(_tg__ZTV8S7263C10__8S7263C11__A1__7S7263C1[6]),  6,9},
  {&(_ZTV7S7263C1[52]),  52,78},
  {&(_ZTV7S7263C1[60]),  60,78},
  {&(_ZTV7S7263C1[10]),  10,78},
  {&(_ZTV7S7263C1[20]),  20,78},
  {&(_ZTV7S7263C1[67]),  67,78},
  {&(_ZTV7S7263C1[75]),  75,78},
  {&(_ZTV7S7263C1[29]),  29,78},
  {&(_ZTV7S7263C1[41]),  41,78},
  {&(_tg__ZTV7S7263C3__7S7263C1[4]),  4,8},
  {&(_tg__ZTV7S7263C67S7263C3__7S7263C1[3]),  3,4},
  {&(_tg__ZTV7S7263C77S7263C67S7263C3__7S7263C1[3]),  3,4},
  {&(_tg__ZTV7S7263C9__7S7263C1[3]),  3,4},
  {&(_tg__ZTV7S7263C77S7263C9__A1__7S7263C1[3]),  3,4},
  {&(_tg__ZTV7S7263C7__A2__7S7263C1[3]),  3,4},
  {&(_tg__ZTV8S7263C13__7S7263C1[4]),  4,6},
  {&(_tg__ZTV7S7263C98S7263C13__A1__7S7263C1[3]),  3,4},
  {&(_tg__ZTV7S7263C77S7263C98S7263C13__A4__7S7263C1[3]),  3,4},
  {&(_tg__ZTV7S7263C7__A1__8S7263C13__7S7263C1[4]),  4,5},
  {&(_tg__ZTV8S7263C10__A1__7S7263C1[5]),  5,8},
  {&(_tg__ZTV7S7263C7__8S7263C10__A1__7S7263C1[4]),  4,5},
};
extern VTBL_ENTRY _ZTI7S7263C1[];
extern  VTBL_ENTRY _ZTV7S7263C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7263C1[];
static VTBL_ENTRY alt_thunk_names97[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7263C2D0Ev,_ZTv0_n24_N7S7263C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7263C2D0Ev,_ZThn108_N7S7263C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7263C2D0Ev,_ZThn72_N7S7263C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7263C2D1Ev,_ZTv0_n24_N7S7263C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7263C2D1Ev,_ZThn108_N7S7263C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7263C2D1Ev,_ZThn72_N7S7263C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7263C8D0Ev,_ZTv0_n24_N7S7263C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7263C8D0Ev,_ZThn108_N7S7263C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7263C8D0Ev,_ZThn72_N7S7263C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7263C8D1Ev,_ZTv0_n24_N7S7263C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7263C8D1Ev,_ZThn108_N7S7263C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7263C8D1Ev,_ZThn72_N7S7263C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7263C11D0Ev,_ZTv0_n24_N8S7263C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7263C11D0Ev,_ZThn56_N8S7263C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7263C11D0Ev,_ZThn92_N8S7263C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7263C11D1Ev,_ZTv0_n24_N8S7263C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7263C11D1Ev,_ZThn56_N8S7263C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7263C11D1Ev,_ZThn92_N8S7263C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7263C1D0Ev,_ZTv0_n24_N7S7263C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7263C1D0Ev,_ZThn108_N7S7263C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7263C1D0Ev,_ZThn72_N7S7263C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7263C1D1Ev,_ZTv0_n24_N7S7263C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7263C1D1Ev,_ZThn108_N7S7263C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7263C1D1Ev,_ZThn72_N7S7263C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7263C1 = {  "S7263C1", // class name
  bases_S7263C1, 48,
  &(vtc_S7263C1[0]), // expected_vtbl_contents
  &(vtt_S7263C1[0]), // expected_vtt_contents
  ABISELECT(176,124), // object size
  NSPAIRA(_ZTI7S7263C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7263C1),78, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7263C1),57, //virtual table table var
  25, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names97,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17781C2  {
  int s17781c2f0;
  char s17781c2f1[98];
};
//SIG(-1 S17781C2) C1{ Fi Fc[98]}



static void Test_S17781C2()
{
  {
    init_simple_test("S17781C2");
    S17781C2 lv;
    check2(sizeof(lv), 104, "sizeof(S17781C2)");
    check2(__alignof__(lv), 4, "__alignof__(S17781C2)");
    check_field_offset(lv, s17781c2f0, 0, "S17781C2.s17781c2f0");
    check_field_offset(lv, s17781c2f1, 4, "S17781C2.s17781c2f1");
  }
}
static Arrange_To_Call_Me vS17781C2(Test_S17781C2, "S17781C2", 104);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17781C4_nt  {
  int s17781c4f0[2];
};
//SIG(1 S17781C4_nt) C1{ Fi[2]}



//skip512 S17781C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17781C1  {
  void *s17781c1f0;
  int s17781c1f1[2];
  ::S17781C2 s17781c1f2;
  ::S17781C2 s17781c1f3[4];
  int s17781c1f4[4];
  ::S10149C5 s17781c1f5[4];
  int s17781c1f6;
  char s17781c1f7[9];
  void *s17781c1f8;
  char s17781c1f9[5];
  int s17781c1f10;
  void *s17781c1f11[2];
  int s17781c1f12[6];
  ::S17781C4_nt s17781c1f13[4];
  void *s17781c1f14[3];
  void  mf17781c1(); // _ZN8S17781C19mf17781c1Ev
};
//SIG(1 S17781C1) C1{ m Fp Fi[2] FC2{ Fi Fc[98]} FC2[4] Fi[4] FC3{ Fi[3] Fc[68] Fi[4] Fc[36] Fi Fc[96] Fi Fc[560] Fi Fc[32] Fi Fc[256] Fi[13]}[4] Fi Fc[9] Fp Fc[5] Fi Fp[2] Fi[6] FC4{ Fi[2]}[4] Fp[3]}


void  S17781C1 ::mf17781c1(){}

static void Test_S17781C1()
{
  {
    init_simple_test("S17781C1");
    S17781C1 lv;
    check2(sizeof(lv), ABISELECT(5264,5232), "sizeof(S17781C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17781C1)");
    check_field_offset(lv, s17781c1f0, 0, "S17781C1.s17781c1f0");
    check_field_offset(lv, s17781c1f1, ABISELECT(8,4), "S17781C1.s17781c1f1");
    check_field_offset(lv, s17781c1f2, ABISELECT(16,12), "S17781C1.s17781c1f2");
    check_field_offset(lv, s17781c1f3, ABISELECT(120,116), "S17781C1.s17781c1f3");
    check_field_offset(lv, s17781c1f4, ABISELECT(536,532), "S17781C1.s17781c1f4");
    check_field_offset(lv, s17781c1f5, ABISELECT(552,548), "S17781C1.s17781c1f5");
    check_field_offset(lv, s17781c1f6, ABISELECT(5128,5124), "S17781C1.s17781c1f6");
    check_field_offset(lv, s17781c1f7, ABISELECT(5132,5128), "S17781C1.s17781c1f7");
    check_field_offset(lv, s17781c1f8, ABISELECT(5144,5140), "S17781C1.s17781c1f8");
    check_field_offset(lv, s17781c1f9, ABISELECT(5152,5144), "S17781C1.s17781c1f9");
    check_field_offset(lv, s17781c1f10, ABISELECT(5160,5152), "S17781C1.s17781c1f10");
    check_field_offset(lv, s17781c1f11, ABISELECT(5168,5156), "S17781C1.s17781c1f11");
    check_field_offset(lv, s17781c1f12, ABISELECT(5184,5164), "S17781C1.s17781c1f12");
    check_field_offset(lv, s17781c1f13, ABISELECT(5208,5188), "S17781C1.s17781c1f13");
    check_field_offset(lv, s17781c1f14, ABISELECT(5240,5220), "S17781C1.s17781c1f14");
  }
}
static Arrange_To_Call_Me vS17781C1(Test_S17781C1, "S17781C1", ABISELECT(5264,5232));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7295C3  : S731C17_nt {
};
//SIG(-1 S7295C3) C1{ BC2{ m}}



static void Test_S7295C3()
{
  extern Class_Descriptor cd_S7295C3;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S7295C3, buf);
    S7295C3 &lv = *(new (buf) S7295C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S7295C3)");
    check2(__alignof__(lv), 1, "__alignof__(S7295C3)");
    check_base_class_offset(lv, (S731C17_nt*), 0, "S7295C3");
    test_class_info(&lv, &cd_S7295C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7295C3(Test_S7295C3, "S7295C3", 1);

#else // __cplusplus

extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S7295C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7295C3[];
Class_Descriptor cd_S7295C3 = {  "S7295C3", // class name
  bases_S7295C3, 1,
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI7S7295C3),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  S7295C6  : S343C6_nt {
  virtual  ~S7295C6(); // _ZN7S7295C6D1Ev
  S7295C6(); // tgen
};
//SIG(-1 S7295C6) C1{ BC2{ vd m} vd}


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

static void Test_S7295C6()
{
  extern Class_Descriptor cd_S7295C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7295C6, buf);
    S7295C6 *dp, &lv = *(dp=new (buf) S7295C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7295C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7295C6)");
    check_base_class_offset(lv, (S343C6_nt*), 0, "S7295C6");
    test_class_info(&lv, &cd_S7295C6);
    dp->~S7295C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7295C6(Test_S7295C6, "S7295C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7295C6C1Ev();
extern void _ZN7S7295C6D1Ev();
Name_Map name_map_S7295C6[] = {
  NSPAIR(_ZN7S7295C6C1Ev),
  NSPAIR(_ZN7S7295C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
static Base_Class bases_S7295C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7295C6[];
extern void _ZN7S7295C6D1Ev();
extern void _ZN7S7295C6D0Ev();
static  VTBL_ENTRY vtc_S7295C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7295C6[0]),
  (VTBL_ENTRY)&_ZN7S7295C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7295C6D0Ev,
};
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
Class_Descriptor cd_S7295C6 = {  "S7295C6", // class name
  bases_S7295C6, 1,
  &(vtc_S7295C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7295C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7295C6),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  S7295C5  : S7295C6 {
  virtual  ~S7295C5(); // _ZN7S7295C5D1Ev
  S7295C5(); // tgen
};
//SIG(-1 S7295C5) C1{ BC2{ BC3{ vd m} vd} vd}


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

static void Test_S7295C5()
{
  extern Class_Descriptor cd_S7295C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7295C5, buf);
    S7295C5 *dp, &lv = *(dp=new (buf) S7295C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7295C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7295C5)");
    check_base_class_offset(lv, (S343C6_nt*)(S7295C6*), 0, "S7295C5");
    check_base_class_offset(lv, (S7295C6*), 0, "S7295C5");
    test_class_info(&lv, &cd_S7295C5);
    dp->~S7295C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7295C5(Test_S7295C5, "S7295C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7295C5C1Ev();
extern void _ZN7S7295C5D1Ev();
Name_Map name_map_S7295C5[] = {
  NSPAIR(_ZN7S7295C5C1Ev),
  NSPAIR(_ZN7S7295C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S7295C6;
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
static Base_Class bases_S7295C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7295C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S7295C5[];
extern void _ZN7S7295C5D1Ev();
extern void _ZN7S7295C5D0Ev();
static  VTBL_ENTRY vtc_S7295C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7295C5[0]),
  (VTBL_ENTRY)&_ZN7S7295C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7295C5D0Ev,
};
extern VTBL_ENTRY _ZTI7S7295C5[];
extern  VTBL_ENTRY _ZTV7S7295C5[];
Class_Descriptor cd_S7295C5 = {  "S7295C5", // class name
  bases_S7295C5, 2,
  &(vtc_S7295C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7295C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7295C5),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7295C8  : S7295C6 , S343C6_nt , S731C17_nt , virtual S3461C5_nt {
  virtual  ~S7295C8(); // _ZN7S7295C8D2Ev
  S7295C8(); // tgen
};
//SIG(-1 S7295C8) C1{ BC2{ BC3{ vd m} vd} BC3 BC4{ m} VBC5{ m FL} vd}


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

static void Test_S7295C8()
{
  extern Class_Descriptor cd_S7295C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7295C8, buf);
    S7295C8 *dp, &lv = *(dp=new (buf) S7295C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7295C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7295C8)");
    check_base_class_offset(lv, (S343C6_nt*)(S7295C6*), 0, "S7295C8");
    check_base_class_offset(lv, (S7295C6*), 0, "S7295C8");
    /*is_ambiguous_... S7295C8::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*), ABISELECT(8,4), "S7295C8");
    check_base_class_offset(lv, (S731C17_nt*), 0, "S7295C8");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(16,8), "S7295C8");
    test_class_info(&lv, &cd_S7295C8);
    dp->~S7295C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7295C8(Test_S7295C8, "S7295C8", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S7295C8C1Ev();
extern void _ZN7S7295C8D2Ev();
Name_Map name_map_S7295C8[] = {
  NSPAIR(_ZN7S7295C8C1Ev),
  NSPAIR(_ZN7S7295C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S7295C6;
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
static Base_Class bases_S7295C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7295C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S343C6_nt,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7295C8[];
extern void _ZN7S7295C8D1Ev();
extern void _ZN7S7295C8D0Ev();
extern void ABISELECT(_ZThn8_N7S7295C8D1Ev,_ZThn4_N7S7295C8D1Ev)();
extern void ABISELECT(_ZThn8_N7S7295C8D0Ev,_ZThn4_N7S7295C8D0Ev)();
static  VTBL_ENTRY vtc_S7295C8[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7295C8[0]),
  (VTBL_ENTRY)&_ZN7S7295C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7295C8D0Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7295C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7295C8D1Ev,_ZThn4_N7S7295C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7295C8D0Ev,_ZThn4_N7S7295C8D0Ev),
};
extern VTBL_ENTRY _ZTV7S7295C8[];
static  VTT_ENTRY vtt_S7295C8[] = {
  {&(_ZTV7S7295C8[3]),  3,9},
};
extern VTBL_ENTRY _ZTI7S7295C8[];
extern  VTBL_ENTRY _ZTV7S7295C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7295C8[];
Class_Descriptor cd_S7295C8 = {  "S7295C8", // class name
  bases_S7295C8, 5,
  &(vtc_S7295C8[0]), // expected_vtbl_contents
  &(vtt_S7295C8[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S7295C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7295C8),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7295C8),1, //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  S7295C2_nt  : virtual S7295C3 , virtual S7295C5 , S7295C8 {
  virtual  ~S7295C2_nt(); // _ZN10S7295C2_ntD2Ev
  S7295C2_nt(); // tgen
};
//SIG(-1 S7295C2_nt) C1{ VBC2{ BC3{ m}} VBC4{ BC5{ BC6{ vd m} vd} vd} BC7{ BC5 BC6 BC3 VBC8{ m FL} vd} vd}


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

//skip512 S7295C2_nt

#else // __cplusplus

extern void _ZN10S7295C2_ntC1Ev();
extern void _ZN10S7295C2_ntD2Ev();
Name_Map name_map_S7295C2_nt[] = {
  NSPAIR(_ZN10S7295C2_ntC1Ev),
  NSPAIR(_ZN10S7295C2_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7295C3;
extern VTBL_ENTRY _ZTI7S7295C3[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S7295C6;
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
extern Class_Descriptor cd_S7295C5;
extern VTBL_ENTRY _ZTI7S7295C5[];
extern  VTBL_ENTRY _ZTV7S7295C5[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S7295C6;
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S7295C8;
extern VTBL_ENTRY _ZTI7S7295C8[];
extern  VTBL_ENTRY _ZTV7S7295C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7295C8[];
static Base_Class bases_S7295C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_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
  0, 0},
  {&cd_S7295C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_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
    3, //immediately_derived
  0, 0},
  {&cd_S7295C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7295C5,    ABISELECT(16,8), //bcp->offset
    11, //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_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7295C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    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
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7295C8,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S7295C2_nt[];
extern void _ZN10S7295C2_ntD1Ev();
extern void _ZN10S7295C2_ntD0Ev();
extern void ABISELECT(_ZThn8_N10S7295C2_ntD1Ev,_ZThn4_N10S7295C2_ntD1Ev)();
extern void ABISELECT(_ZThn8_N10S7295C2_ntD0Ev,_ZThn4_N10S7295C2_ntD0Ev)();
extern void ABISELECT(_ZTv0_n24_N10S7295C2_ntD1Ev,_ZTv0_n12_N10S7295C2_ntD1Ev)();
extern void ABISELECT(_ZThn16_N10S7295C2_ntD1Ev,_ZThn8_N10S7295C2_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N10S7295C2_ntD0Ev,_ZTv0_n12_N10S7295C2_ntD0Ev)();
extern void ABISELECT(_ZThn16_N10S7295C2_ntD0Ev,_ZThn8_N10S7295C2_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7295C2_nt[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI10S7295C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S7295C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7295C2_ntD0Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI10S7295C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N10S7295C2_ntD1Ev,_ZThn4_N10S7295C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N10S7295C2_ntD0Ev,_ZThn4_N10S7295C2_ntD0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI10S7295C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S7295C2_ntD1Ev,_ZTv0_n12_N10S7295C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S7295C2_ntD0Ev,_ZTv0_n12_N10S7295C2_ntD0Ev),
};
extern VTBL_ENTRY _ZTV10S7295C2_nt[];
extern void _ZN7S7295C8D1Ev();
extern void _ZN7S7295C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7295C8__10S7295C2_nt[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7295C8[0]),
  (VTBL_ENTRY)&_ZN7S7295C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7295C8D0Ev,
};
static  VTT_ENTRY vtt_S7295C2_nt[] = {
  {&(_ZTV10S7295C2_nt[5]),  5,16},
  {&(_tg__ZTV7S7295C8__10S7295C2_nt[3]),  3,5},
  {&(_ZTV10S7295C2_nt[14]),  14,16},
};
extern VTBL_ENTRY _ZTI10S7295C2_nt[];
VTBL_ENTRY *P__ZTI10S7295C2_nt = _ZTI10S7295C2_nt; 
extern  VTBL_ENTRY _ZTV10S7295C2_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S7295C2_nt[];
static VTBL_ENTRY alt_thunk_names98[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S7295C2_ntD0Ev,_ZTv0_n12_N10S7295C2_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N10S7295C2_ntD0Ev,_ZThn8_N10S7295C2_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S7295C2_ntD1Ev,_ZTv0_n12_N10S7295C2_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N10S7295C2_ntD1Ev,_ZThn8_N10S7295C2_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7295C2_nt = {  "S7295C2_nt", // class name
  bases_S7295C2_nt, 11,
  &(vtc_S7295C2_nt[0]), // expected_vtbl_contents
  &(vtt_S7295C2_nt[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI10S7295C2_nt),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV10S7295C2_nt),16, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT10S7295C2_nt),3, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names98,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7295C13  : S7295C6 {
  ::S7295C6 s7295c13f0;
  virtual  ~S7295C13(); // _ZN8S7295C13D1Ev
  S7295C13(); // tgen
};
//SIG(-1 S7295C13) C1{ BC2{ BC3{ vd m} vd} vd FC2}


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

static void Test_S7295C13()
{
  extern Class_Descriptor cd_S7295C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7295C13, buf);
    S7295C13 *dp, &lv = *(dp=new (buf) S7295C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7295C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7295C13)");
    check_base_class_offset(lv, (S343C6_nt*)(S7295C6*), 0, "S7295C13");
    check_base_class_offset(lv, (S7295C6*), 0, "S7295C13");
    check_field_offset(lv, s7295c13f0, ABISELECT(8,4), "S7295C13.s7295c13f0");
    test_class_info(&lv, &cd_S7295C13);
    dp->~S7295C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7295C13(Test_S7295C13, "S7295C13", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S7295C13C1Ev();
extern void _ZN8S7295C13D1Ev();
Name_Map name_map_S7295C13[] = {
  NSPAIR(_ZN8S7295C13C1Ev),
  NSPAIR(_ZN8S7295C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S7295C6;
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
static Base_Class bases_S7295C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7295C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S7295C13[];
extern void _ZN8S7295C13D1Ev();
extern void _ZN8S7295C13D0Ev();
static  VTBL_ENTRY vtc_S7295C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7295C13[0]),
  (VTBL_ENTRY)&_ZN8S7295C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7295C13D0Ev,
};
extern VTBL_ENTRY _ZTI8S7295C13[];
extern  VTBL_ENTRY _ZTV8S7295C13[];
Class_Descriptor cd_S7295C13 = {  "S7295C13", // class name
  bases_S7295C13, 2,
  &(vtc_S7295C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S7295C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7295C13),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  S7295C12  : S7295C13 , S7295C5 {
  long s7295c12f0;
  int s7295c12f1;
  ~S7295C12(); // tgen
  S7295C12(); // tgen
};
//SIG(-1 S7295C12) C1{ BC2{ BC3{ BC4{ vd m} vd} vd FC3} BC5{ BC3 vd} Fl Fi}


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

static void Test_S7295C12()
{
  extern Class_Descriptor cd_S7295C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S7295C12, buf);
    S7295C12 *dp, &lv = *(dp=new (buf) S7295C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S7295C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7295C12)");
    check_base_class_offset(lv, (S343C6_nt*)(S7295C6*)(S7295C13*), 0, "S7295C12");
    check_base_class_offset(lv, (S7295C6*)(S7295C13*), 0, "S7295C12");
    check_base_class_offset(lv, (S7295C13*), 0, "S7295C12");
    check_base_class_offset(lv, (S343C6_nt*)(S7295C6*)(S7295C5*), ABISELECT(16,8), "S7295C12");
    check_base_class_offset(lv, (S7295C6*)(S7295C5*), ABISELECT(16,8), "S7295C12");
    check_base_class_offset(lv, (S7295C5*), ABISELECT(16,8), "S7295C12");
    check_field_offset(lv, s7295c12f0, ABISELECT(24,12), "S7295C12.s7295c12f0");
    check_field_offset(lv, s7295c12f1, ABISELECT(32,16), "S7295C12.s7295c12f1");
    test_class_info(&lv, &cd_S7295C12);
    dp->~S7295C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7295C12(Test_S7295C12, "S7295C12", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S7295C12C1Ev();
extern void _ZN8S7295C12D1Ev();
Name_Map name_map_S7295C12[] = {
  NSPAIR(_ZN8S7295C12C1Ev),
  NSPAIR(_ZN8S7295C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S7295C6;
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
extern Class_Descriptor cd_S7295C13;
extern VTBL_ENTRY _ZTI8S7295C13[];
extern  VTBL_ENTRY _ZTV8S7295C13[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S7295C6;
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
extern Class_Descriptor cd_S7295C5;
extern VTBL_ENTRY _ZTI7S7295C5[];
extern  VTBL_ENTRY _ZTV7S7295C5[];
static Base_Class bases_S7295C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7295C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7295C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S343C6_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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7295C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7295C5,    ABISELECT(16,8), //bcp->offset
    4, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7295C12[];
extern void _ZN8S7295C12D1Ev();
extern void _ZN8S7295C12D0Ev();
extern void ABISELECT(_ZThn16_N8S7295C12D1Ev,_ZThn8_N8S7295C12D1Ev)();
extern void ABISELECT(_ZThn16_N8S7295C12D0Ev,_ZThn8_N8S7295C12D0Ev)();
static  VTBL_ENTRY vtc_S7295C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7295C12[0]),
  (VTBL_ENTRY)&_ZN8S7295C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7295C12D0Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7295C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7295C12D1Ev,_ZThn8_N8S7295C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S7295C12D0Ev,_ZThn8_N8S7295C12D0Ev),
};
extern VTBL_ENTRY _ZTI8S7295C12[];
extern  VTBL_ENTRY _ZTV8S7295C12[];
Class_Descriptor cd_S7295C12 = {  "S7295C12", // class name
  bases_S7295C12, 6,
  &(vtc_S7295C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S7295C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7295C12),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  6, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7295C11  : S7295C5 , virtual S343C6_nt , virtual S7295C6 , virtual S7295C12 {
  int s7295c11f0;
  ~S7295C11(); // tgen
  S7295C11(); // tgen
};
//SIG(-1 S7295C11) C1{ BC2{ BC3{ BC4{ vd m} vd} vd} VBC4 VBC3 VBC5{ BC6{ BC3 vd FC3} BC2 Fl Fi} Fi}


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

static void Test_S7295C11()
{
  extern Class_Descriptor cd_S7295C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S7295C11, buf);
    S7295C11 *dp, &lv = *(dp=new (buf) S7295C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S7295C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7295C11)");
    /*is_ambiguous_... S7295C11::S7295C5 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S7295C6*)(S7295C5*), 0, "S7295C11");
    /*is_ambiguous_... S7295C11::S7295C5 */ AMB_check_base_class_offset(lv, (S7295C6*)(S7295C5*), 0, "S7295C11");
    /*is_ambiguous_... S7295C11::S7295C5 */ AMB_check_base_class_offset(lv, (S7295C5*), 0, "S7295C11");
    /*is_ambiguous_... S7295C11::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*), ABISELECT(16,8), "S7295C11");
    /*is_ambiguous_... S7295C11::S7295C6 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S7295C6*), ABISELECT(24,12), "S7295C11");
    /*is_ambiguous_... S7295C11::S7295C6 */ AMB_check_base_class_offset(lv, (S7295C6*), ABISELECT(24,12), "S7295C11");
    check_base_class_offset(lv, (S343C6_nt*)(S7295C6*)(S7295C13*)(S7295C12*), ABISELECT(32,16), "S7295C11");
    check_base_class_offset(lv, (S7295C6*)(S7295C13*)(S7295C12*), ABISELECT(32,16), "S7295C11");
    check_base_class_offset(lv, (S7295C13*)(S7295C12*), ABISELECT(32,16), "S7295C11");
    check_base_class_offset(lv, (S343C6_nt*)(S7295C6*)(S7295C5*)(S7295C12*), ABISELECT(48,24), "S7295C11");
    check_base_class_offset(lv, (S7295C6*)(S7295C5*)(S7295C12*), ABISELECT(48,24), "S7295C11");
    check_base_class_offset(lv, (S7295C5*)(S7295C12*), ABISELECT(48,24), "S7295C11");
    check_base_class_offset(lv, (S7295C12*), ABISELECT(32,16), "S7295C11");
    check_field_offset(lv, s7295c11f0, ABISELECT(8,4), "S7295C11.s7295c11f0");
    test_class_info(&lv, &cd_S7295C11);
    dp->~S7295C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7295C11(Test_S7295C11, "S7295C11", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN8S7295C11C1Ev();
extern void _ZN8S7295C11D1Ev();
Name_Map name_map_S7295C11[] = {
  NSPAIR(_ZN8S7295C11C1Ev),
  NSPAIR(_ZN8S7295C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S7295C6;
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
extern Class_Descriptor cd_S7295C5;
extern VTBL_ENTRY _ZTI7S7295C5[];
extern  VTBL_ENTRY _ZTV7S7295C5[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S7295C6;
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S7295C6;
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
extern Class_Descriptor cd_S7295C13;
extern VTBL_ENTRY _ZTI8S7295C13[];
extern  VTBL_ENTRY _ZTV8S7295C13[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S7295C6;
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
extern Class_Descriptor cd_S7295C5;
extern VTBL_ENTRY _ZTI7S7295C5[];
extern  VTBL_ENTRY _ZTV7S7295C5[];
extern Class_Descriptor cd_S7295C12;
extern VTBL_ENTRY _ZTI8S7295C12[];
extern  VTBL_ENTRY _ZTV8S7295C12[];
static Base_Class bases_S7295C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S7295C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S7295C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S343C6_nt,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_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
    5, //immediately_derived
  0, 0},
  {&cd_S7295C6,    ABISELECT(24,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7295C6,    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
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7295C13,    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
    12, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7295C6,    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
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7295C5,    ABISELECT(48,24), //bcp->offset
    22, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7295C12,    ABISELECT(32,16), //bcp->offset
    17, //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
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7295C11[];
extern void _ZN8S7295C11D1Ev();
extern void _ZN8S7295C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7295C11D1Ev,_ZTv0_n12_N8S7295C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S7295C11D1Ev,_ZThn8_N8S7295C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C11D0Ev,_ZTv0_n12_N8S7295C11D0Ev)();
extern void ABISELECT(_ZThn16_N8S7295C11D0Ev,_ZThn8_N8S7295C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C11D1Ev,_ZTv0_n12_N8S7295C11D1Ev)();
extern void ABISELECT(_ZThn24_N8S7295C11D1Ev,_ZThn12_N8S7295C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C11D0Ev,_ZTv0_n12_N8S7295C11D0Ev)();
extern void ABISELECT(_ZThn24_N8S7295C11D0Ev,_ZThn12_N8S7295C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C11D1Ev,_ZTv0_n12_N8S7295C11D1Ev)();
extern void ABISELECT(_ZThn32_N8S7295C11D1Ev,_ZThn16_N8S7295C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C11D0Ev,_ZTv0_n12_N8S7295C11D0Ev)();
extern void ABISELECT(_ZThn32_N8S7295C11D0Ev,_ZThn16_N8S7295C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n24_N8S7295C11D1Ev,_ZTvn8_n12_N8S7295C11D1Ev)();
extern void ABISELECT(_ZTvn16_n24_N8S7295C11D0Ev,_ZTvn8_n12_N8S7295C11D0Ev)();
static  VTBL_ENTRY vtc_S7295C11[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7295C11[0]),
  (VTBL_ENTRY)&_ZN8S7295C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7295C11D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7295C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C11D1Ev,_ZTv0_n12_N8S7295C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C11D0Ev,_ZTv0_n12_N8S7295C11D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7295C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C11D1Ev,_ZTv0_n12_N8S7295C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C11D0Ev,_ZTv0_n12_N8S7295C11D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7295C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C11D1Ev,_ZTv0_n12_N8S7295C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C11D0Ev,_ZTv0_n12_N8S7295C11D0Ev),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S7295C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N8S7295C11D1Ev,_ZTvn8_n12_N8S7295C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N8S7295C11D0Ev,_ZTvn8_n12_N8S7295C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S7295C11[];
static  VTT_ENTRY vtt_S7295C11[] = {
  {&(_ZTV8S7295C11[5]),  5,26},
  {&(_ZTV8S7295C11[10]),  10,26},
  {&(_ZTV8S7295C11[15]),  15,26},
  {&(_ZTV8S7295C11[20]),  20,26},
  {&(_ZTV8S7295C11[24]),  24,26},
};
extern VTBL_ENTRY _ZTI8S7295C11[];
extern  VTBL_ENTRY _ZTV8S7295C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7295C11[];
static VTBL_ENTRY alt_thunk_names99[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7295C11D0Ev,_ZTv0_n12_N8S7295C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7295C11D0Ev,_ZThn16_N8S7295C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7295C11D0Ev,_ZThn12_N8S7295C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7295C11D0Ev,_ZThn8_N8S7295C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7295C11D1Ev,_ZTv0_n12_N8S7295C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S7295C11D1Ev,_ZThn16_N8S7295C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7295C11D1Ev,_ZThn12_N8S7295C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7295C11D1Ev,_ZThn8_N8S7295C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7295C11 = {  "S7295C11", // class name
  bases_S7295C11, 13,
  &(vtc_S7295C11[0]), // expected_vtbl_contents
  &(vtt_S7295C11[0]), // expected_vtt_contents
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI8S7295C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7295C11),26, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7295C11),5, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names99,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7295C15  : virtual S731C17_nt , virtual S7295C13 , S7295C3 {
  ~S7295C15(); // tgen
  S7295C15(); // tgen
};
//SIG(-1 S7295C15) C1{ VBC2{ m} VBC3{ BC4{ BC5{ vd m} vd} vd FC4} BC6{ BC2}}


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

static void Test_S7295C15()
{
  extern Class_Descriptor cd_S7295C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7295C15, buf);
    S7295C15 *dp, &lv = *(dp=new (buf) S7295C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7295C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7295C15)");
    /*is_ambiguous_... S7295C15::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(8,4), "S7295C15");
    check_base_class_offset(lv, (S343C6_nt*)(S7295C6*)(S7295C13*), ABISELECT(8,4), "S7295C15");
    check_base_class_offset(lv, (S7295C6*)(S7295C13*), ABISELECT(8,4), "S7295C15");
    check_base_class_offset(lv, (S7295C13*), ABISELECT(8,4), "S7295C15");
    check_base_class_offset(lv, (S731C17_nt*)(S7295C3*), 0, "S7295C15");
    check_base_class_offset(lv, (S7295C3*), 0, "S7295C15");
    test_class_info(&lv, &cd_S7295C15);
    dp->~S7295C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7295C15(Test_S7295C15, "S7295C15", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S7295C15C1Ev();
extern void _ZN8S7295C15D1Ev();
Name_Map name_map_S7295C15[] = {
  NSPAIR(_ZN8S7295C15C1Ev),
  NSPAIR(_ZN8S7295C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S7295C6;
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
extern Class_Descriptor cd_S7295C13;
extern VTBL_ENTRY _ZTI8S7295C13[];
extern  VTBL_ENTRY _ZTV8S7295C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7295C3;
extern VTBL_ENTRY _ZTI7S7295C3[];
static Base_Class bases_S7295C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7295C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7295C13,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7295C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7295C15[];
extern void _ZN8S7295C15D1Ev();
extern void _ZN8S7295C15D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7295C15D1Ev,_ZTv0_n12_N8S7295C15D1Ev)();
extern void ABISELECT(_ZThn8_N8S7295C15D1Ev,_ZThn4_N8S7295C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C15D0Ev,_ZTv0_n12_N8S7295C15D0Ev)();
extern void ABISELECT(_ZThn8_N8S7295C15D0Ev,_ZThn4_N8S7295C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7295C15[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7295C15[0]),
  (VTBL_ENTRY)&_ZN8S7295C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7295C15D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7295C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C15D1Ev,_ZTv0_n12_N8S7295C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C15D0Ev,_ZTv0_n12_N8S7295C15D0Ev),
};
extern VTBL_ENTRY _ZTV8S7295C15[];
static  VTT_ENTRY vtt_S7295C15[] = {
  {&(_ZTV8S7295C15[4]),  4,11},
  {&(_ZTV8S7295C15[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S7295C15[];
extern  VTBL_ENTRY _ZTV8S7295C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7295C15[];
static VTBL_ENTRY alt_thunk_names100[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7295C15D0Ev,_ZTv0_n12_N8S7295C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7295C15D0Ev,_ZThn4_N8S7295C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7295C15D1Ev,_ZTv0_n12_N8S7295C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7295C15D1Ev,_ZThn4_N8S7295C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7295C15 = {  "S7295C15", // class name
  bases_S7295C15, 6,
  &(vtc_S7295C15[0]), // expected_vtbl_contents
  &(vtt_S7295C15[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S7295C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7295C15),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7295C15),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names100,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7295C10  : S7295C11 , S343C9_nt , virtual S7295C15 {
  void *s7295c10f0[8];
  ~S7295C10(); // tgen
  S7295C10(); // tgen
};
//SIG(-1 S7295C10) C1{ BC2{ BC3{ BC4{ BC5{ vd m} vd} vd} VBC5 VBC4 VBC6{ BC7{ BC4 vd FC4} BC3 Fl Fi} Fi} BC8{ m FC9{ BC5 vd}} VBC10{ VBC11{ m} VBC7 BC12{ BC11}} Fp[8]}


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

static void Test_S7295C10()
{
  extern Class_Descriptor cd_S7295C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[22];
    init_test(&cd_S7295C10, buf);
    S7295C10 *dp, &lv = *(dp=new (buf) S7295C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,84), "sizeof(S7295C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7295C10)");
    /*is_ambiguous_... S7295C11::S7295C5 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S7295C6*)(S7295C5*)(S7295C11*), 0, "S7295C10");
    /*is_ambiguous_... S7295C11::S7295C5 */ AMB_check_base_class_offset(lv, (S7295C6*)(S7295C5*)(S7295C11*), 0, "S7295C10");
    /*is_ambiguous_... S7295C11::S7295C5 */ AMB_check_base_class_offset(lv, (S7295C5*)(S7295C11*), 0, "S7295C10");
    /*is_ambiguous_... S7295C11::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S7295C11*), ABISELECT(88,44), "S7295C10");
    /*is_ambiguous_... S7295C10::S7295C6 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S7295C6*), ABISELECT(96,48), "S7295C10");
    /*is_ambiguous_... S7295C11::S7295C6 */ AMB_check_base_class_offset(lv, (S7295C6*)(S7295C11*), ABISELECT(96,48), "S7295C10");
    check_base_class_offset(lv, (S343C6_nt*)(S7295C6*)(S7295C13*)(S7295C12*), ABISELECT(104,52), "S7295C10");
    check_base_class_offset(lv, (S7295C6*)(S7295C13*)(S7295C12*), ABISELECT(104,52), "S7295C10");
    check_base_class_offset(lv, (S7295C13*)(S7295C12*), ABISELECT(104,52), "S7295C10");
    check_base_class_offset(lv, (S343C6_nt*)(S7295C6*)(S7295C5*)(S7295C12*), ABISELECT(120,60), "S7295C10");
    check_base_class_offset(lv, (S7295C6*)(S7295C5*)(S7295C12*), ABISELECT(120,60), "S7295C10");
    check_base_class_offset(lv, (S7295C5*)(S7295C12*), ABISELECT(120,60), "S7295C10");
    check_base_class_offset(lv, (S7295C12*)(S7295C11*), ABISELECT(104,52), "S7295C10");
    check_base_class_offset(lv, (S7295C11*), 0, "S7295C10");
    check_base_class_offset(lv, (S343C9_nt*), ABISELECT(16,8), "S7295C10");
    /*is_ambiguous_... S7295C15::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7295C15*), 0, "S7295C10");
    /*is_ambiguous_... S7295C10::S7295C13 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S7295C6*)(S7295C13*), ABISELECT(152,76), "S7295C10");
    /*is_ambiguous_... S7295C10::S7295C13 */ AMB_check_base_class_offset(lv, (S7295C6*)(S7295C13*), ABISELECT(152,76), "S7295C10");
    check_base_class_offset(lv, (S7295C13*)(S7295C15*), ABISELECT(152,76), "S7295C10");
    check_base_class_offset(lv, (S731C17_nt*)(S7295C3*)(S7295C15*), ABISELECT(144,72), "S7295C10");
    check_base_class_offset(lv, (S7295C3*)(S7295C15*), ABISELECT(144,72), "S7295C10");
    check_base_class_offset(lv, (S7295C15*), ABISELECT(144,72), "S7295C10");
    check_field_offset(lv, s7295c10f0, ABISELECT(24,12), "S7295C10.s7295c10f0");
    test_class_info(&lv, &cd_S7295C10);
    dp->~S7295C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7295C10(Test_S7295C10, "S7295C10", ABISELECT(168,84));

#else // __cplusplus

extern void _ZN8S7295C10C1Ev();
extern void _ZN8S7295C10D1Ev();
Name_Map name_map_S7295C10[] = {
  NSPAIR(_ZN8S7295C10C1Ev),
  NSPAIR(_ZN8S7295C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S7295C6;
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
extern Class_Descriptor cd_S7295C5;
extern VTBL_ENTRY _ZTI7S7295C5[];
extern  VTBL_ENTRY _ZTV7S7295C5[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S7295C6;
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S7295C6;
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
extern Class_Descriptor cd_S7295C13;
extern VTBL_ENTRY _ZTI8S7295C13[];
extern  VTBL_ENTRY _ZTV8S7295C13[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S7295C6;
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
extern Class_Descriptor cd_S7295C5;
extern VTBL_ENTRY _ZTI7S7295C5[];
extern  VTBL_ENTRY _ZTV7S7295C5[];
extern Class_Descriptor cd_S7295C12;
extern VTBL_ENTRY _ZTI8S7295C12[];
extern  VTBL_ENTRY _ZTV8S7295C12[];
extern Class_Descriptor cd_S7295C11;
extern VTBL_ENTRY _ZTI8S7295C11[];
extern  VTBL_ENTRY _ZTV8S7295C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7295C11[];
extern Class_Descriptor cd_S343C9_nt;
extern VTBL_ENTRY _ZTI9S343C9_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S7295C6;
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
extern Class_Descriptor cd_S7295C13;
extern VTBL_ENTRY _ZTI8S7295C13[];
extern  VTBL_ENTRY _ZTV8S7295C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7295C3;
extern VTBL_ENTRY _ZTI7S7295C3[];
extern Class_Descriptor cd_S7295C15;
extern VTBL_ENTRY _ZTI8S7295C15[];
extern  VTBL_ENTRY _ZTV8S7295C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7295C15[];
static Base_Class bases_S7295C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7295C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7295C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S343C6_nt,    ABISELECT(88,44), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S343C6_nt,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7295C6,    ABISELECT(96,48), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S343C6_nt,    ABISELECT(104,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7295C6,    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
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7295C13,    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
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(120,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7295C6,    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
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7295C5,    ABISELECT(120,60), //bcp->offset
    25, //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
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7295C12,    ABISELECT(104,52), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7295C11,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S343C9_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S343C6_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7295C6,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7295C13,    ABISELECT(152,76), //bcp->offset
    36, //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
    13, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(144,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7295C3,    ABISELECT(144,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7295C15,    ABISELECT(144,72), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7295C10[];
extern void _ZN8S7295C10D1Ev();
extern void _ZN8S7295C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7295C10D1Ev,_ZTv0_n12_N8S7295C10D1Ev)();
extern void ABISELECT(_ZThn88_N8S7295C10D1Ev,_ZThn44_N8S7295C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C10D0Ev,_ZTv0_n12_N8S7295C10D0Ev)();
extern void ABISELECT(_ZThn88_N8S7295C10D0Ev,_ZThn44_N8S7295C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C10D1Ev,_ZTv0_n12_N8S7295C10D1Ev)();
extern void ABISELECT(_ZThn96_N8S7295C10D1Ev,_ZThn48_N8S7295C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C10D0Ev,_ZTv0_n12_N8S7295C10D0Ev)();
extern void ABISELECT(_ZThn96_N8S7295C10D0Ev,_ZThn48_N8S7295C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C10D1Ev,_ZTv0_n12_N8S7295C10D1Ev)();
extern void ABISELECT(_ZThn104_N8S7295C10D1Ev,_ZThn52_N8S7295C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C10D0Ev,_ZTv0_n12_N8S7295C10D0Ev)();
extern void ABISELECT(_ZThn104_N8S7295C10D0Ev,_ZThn52_N8S7295C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n24_N8S7295C10D1Ev,_ZTvn8_n12_N8S7295C10D1Ev)();
extern void ABISELECT(_ZTvn16_n24_N8S7295C10D0Ev,_ZTvn8_n12_N8S7295C10D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S7295C10D1Ev,_ZTv0_n20_N8S7295C10D1Ev)();
extern void ABISELECT(_ZThn144_N8S7295C10D1Ev,_ZThn72_N8S7295C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7295C10D0Ev,_ZTv0_n20_N8S7295C10D0Ev)();
extern void ABISELECT(_ZThn144_N8S7295C10D0Ev,_ZThn72_N8S7295C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C10D1Ev,_ZTv0_n12_N8S7295C10D1Ev)();
extern void ABISELECT(_ZThn152_N8S7295C10D1Ev,_ZThn76_N8S7295C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C10D0Ev,_ZTv0_n12_N8S7295C10D0Ev)();
extern void ABISELECT(_ZThn152_N8S7295C10D0Ev,_ZThn76_N8S7295C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7295C10[] = {
  ABISELECT(152,76),
  0,
  ABISELECT(144,72),
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7295C10[0]),
  (VTBL_ENTRY)&_ZN8S7295C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7295C10D0Ev,
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S7295C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C10D1Ev,_ZTv0_n12_N8S7295C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C10D0Ev,_ZTv0_n12_N8S7295C10D0Ev),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7295C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C10D1Ev,_ZTv0_n12_N8S7295C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C10D0Ev,_ZTv0_n12_N8S7295C10D0Ev),
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S7295C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C10D1Ev,_ZTv0_n12_N8S7295C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C10D0Ev,_ZTv0_n12_N8S7295C10D0Ev),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S7295C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N8S7295C10D1Ev,_ZTvn8_n12_N8S7295C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N8S7295C10D0Ev,_ZTvn8_n12_N8S7295C10D0Ev),
  ABISELECT(-144,-72),
  ABISELECT(8,4),
  ABISELECT(-144,-72),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S7295C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7295C10D1Ev,_ZTv0_n20_N8S7295C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7295C10D0Ev,_ZTv0_n20_N8S7295C10D0Ev),
  ABISELECT(-152,-76),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S7295C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C10D1Ev,_ZTv0_n12_N8S7295C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C10D0Ev,_ZTv0_n12_N8S7295C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S7295C10[];
extern void _ZN8S7295C11D1Ev();
extern void _ZN8S7295C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7295C11__8S7295C10[] = {
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7295C11[0]),
  (VTBL_ENTRY)&_ZN8S7295C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7295C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7295C11D1Ev,_ZTv0_n12_N8S7295C11D1Ev)();
extern void ABISELECT(_ZThn88_N8S7295C11D1Ev,_ZThn44_N8S7295C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C11D0Ev,_ZTv0_n12_N8S7295C11D0Ev)();
extern void ABISELECT(_ZThn88_N8S7295C11D0Ev,_ZThn44_N8S7295C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S343C6_nt__A1__8S7295C11__8S7295C10[] = {
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S7295C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C11D1Ev,_ZTv0_n12_N8S7295C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C11D0Ev,_ZTv0_n12_N8S7295C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7295C11D1Ev,_ZTv0_n12_N8S7295C11D1Ev)();
extern void ABISELECT(_ZThn96_N8S7295C11D1Ev,_ZThn48_N8S7295C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C11D0Ev,_ZTv0_n12_N8S7295C11D0Ev)();
extern void ABISELECT(_ZThn96_N8S7295C11D0Ev,_ZThn48_N8S7295C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7295C6__A1__8S7295C11__8S7295C10[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7295C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C11D1Ev,_ZTv0_n12_N8S7295C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C11D0Ev,_ZTv0_n12_N8S7295C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7295C11D1Ev,_ZTv0_n12_N8S7295C11D1Ev)();
extern void ABISELECT(_ZThn104_N8S7295C11D1Ev,_ZThn52_N8S7295C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C11D0Ev,_ZTv0_n12_N8S7295C11D0Ev)();
extern void ABISELECT(_ZThn104_N8S7295C11D0Ev,_ZThn52_N8S7295C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7295C12__8S7295C11__8S7295C10[] = {
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S7295C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C11D1Ev,_ZTv0_n12_N8S7295C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C11D0Ev,_ZTv0_n12_N8S7295C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n24_N8S7295C11D1Ev,_ZTvn8_n12_N8S7295C11D1Ev)();
extern void ABISELECT(_ZTvn16_n24_N8S7295C11D0Ev,_ZTvn8_n12_N8S7295C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7295C58S7295C12__A1__8S7295C11__8S7295C10[] = {
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S7295C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N8S7295C11D1Ev,_ZTvn8_n12_N8S7295C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N8S7295C11D0Ev,_ZTvn8_n12_N8S7295C11D0Ev),
};
extern void _ZN8S7295C15D1Ev();
extern void _ZN8S7295C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7295C15__8S7295C10[] = {
  ABISELECT(8,4),
  ABISELECT(-144,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7295C15[0]),
  (VTBL_ENTRY)&_ZN8S7295C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7295C15D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7295C15D1Ev,_ZTv0_n12_N8S7295C15D1Ev)();
extern void ABISELECT(_ZThn8_N8S7295C15D1Ev,_ZThn4_N8S7295C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C15D0Ev,_ZTv0_n12_N8S7295C15D0Ev)();
extern void ABISELECT(_ZThn8_N8S7295C15D0Ev,_ZThn4_N8S7295C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7295C13__8S7295C15__8S7295C10[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7295C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C15D1Ev,_ZTv0_n12_N8S7295C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C15D0Ev,_ZTv0_n12_N8S7295C15D0Ev),
};
static  VTT_ENTRY vtt_S7295C10[] = {
  {&(_ZTV8S7295C10[8]),  8,41},
  {&(_tg__ZTV8S7295C11__8S7295C10[5]),  5,7},
  {&(_tg__ZTV9S343C6_nt__A1__8S7295C11__8S7295C10[3]),  3,5},
  {&(_tg__ZTV7S7295C6__A1__8S7295C11__8S7295C10[3]),  3,5},
  {&(_tg__ZTV8S7295C12__8S7295C11__8S7295C10[3]),  3,5},
  {&(_tg__ZTV7S7295C58S7295C12__A1__8S7295C11__8S7295C10[2]),  2,4},
  {&(_ZTV8S7295C10[13]),  13,41},
  {&(_ZTV8S7295C10[18]),  18,41},
  {&(_ZTV8S7295C10[23]),  23,41},
  {&(_ZTV8S7295C10[27]),  27,41},
  {&(_ZTV8S7295C10[34]),  34,41},
  {&(_ZTV8S7295C10[39]),  39,41},
  {&(_tg__ZTV8S7295C15__8S7295C10[4]),  4,6},
  {&(_tg__ZTV8S7295C13__8S7295C15__8S7295C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7295C10[];
extern  VTBL_ENTRY _ZTV8S7295C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7295C10[];
static VTBL_ENTRY alt_thunk_names101[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7295C15D0Ev,_ZTv0_n12_N8S7295C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7295C15D0Ev,_ZThn4_N8S7295C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7295C15D1Ev,_ZTv0_n12_N8S7295C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7295C15D1Ev,_ZThn4_N8S7295C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7295C11D0Ev,_ZTv0_n12_N8S7295C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7295C11D0Ev,_ZThn52_N8S7295C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7295C11D0Ev,_ZThn48_N8S7295C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7295C11D0Ev,_ZThn44_N8S7295C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7295C11D1Ev,_ZTv0_n12_N8S7295C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7295C11D1Ev,_ZThn52_N8S7295C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7295C11D1Ev,_ZThn48_N8S7295C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7295C11D1Ev,_ZThn44_N8S7295C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7295C10D0Ev,_ZTv0_n20_N8S7295C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7295C10D0Ev,_ZThn72_N8S7295C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7295C10D1Ev,_ZTv0_n20_N8S7295C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7295C10D1Ev,_ZThn72_N8S7295C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7295C10D0Ev,_ZTv0_n12_N8S7295C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7295C10D0Ev,_ZThn76_N8S7295C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7295C10D0Ev,_ZThn52_N8S7295C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7295C10D0Ev,_ZThn48_N8S7295C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7295C10D0Ev,_ZThn44_N8S7295C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7295C10D1Ev,_ZTv0_n12_N8S7295C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7295C10D1Ev,_ZThn76_N8S7295C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7295C10D1Ev,_ZThn52_N8S7295C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7295C10D1Ev,_ZThn48_N8S7295C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7295C10D1Ev,_ZThn44_N8S7295C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7295C10 = {  "S7295C10", // class name
  bases_S7295C10, 22,
  &(vtc_S7295C10[0]), // expected_vtbl_contents
  &(vtt_S7295C10[0]), // expected_vtt_contents
  ABISELECT(168,84), // object size
  NSPAIRA(_ZTI8S7295C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7295C10),41, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7295C10),14, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names101,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7295C1  : S7295C2_nt , virtual S7295C10 {
  int s7295c1f0;
  ~S7295C1(); // tgen
  S7295C1(); // tgen
};
//SIG(1 S7295C1) C1{ BC2{ VBC3{ BC4{ m}} VBC5{ BC6{ BC7{ vd m} vd} vd} BC8{ BC6 BC7 BC4 VBC9{ m FL} vd} vd} VBC10{ BC11{ BC5 VBC7 VBC6 VBC12{ BC13{ BC6 vd FC6} BC5 Fl Fi} Fi} BC14{ m FC15{ BC7 vd}} VBC16{ VBC4 VBC13 BC3} Fp[8]} Fi}


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

static void Test_S7295C1()
{
  extern Class_Descriptor cd_S7295C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,28)];
    init_test(&cd_S7295C1, buf);
    S7295C1 *dp, &lv = *(dp=new (buf) S7295C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,108), "sizeof(S7295C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7295C1)");
    /*is_ambiguous_... S7295C1::S7295C3 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7295C3*), ABISELECT(20,12), "S7295C1");
    check_base_class_offset(lv, (S7295C3*)(S7295C2_nt*), ABISELECT(20,12), "S7295C1");
    /*is_ambiguous_... S7295C1::S7295C5 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S7295C6*)(S7295C5*), ABISELECT(24,12), "S7295C1");
    /*is_ambiguous_... S7295C1::S7295C5 */ AMB_check_base_class_offset(lv, (S7295C6*)(S7295C5*), ABISELECT(24,12), "S7295C1");
    check_base_class_offset(lv, (S7295C5*)(S7295C2_nt*), ABISELECT(24,12), "S7295C1");
    check_base_class_offset(lv, (S343C6_nt*)(S7295C6*)(S7295C8*)(S7295C2_nt*), 0, "S7295C1");
    check_base_class_offset(lv, (S7295C6*)(S7295C8*)(S7295C2_nt*), 0, "S7295C1");
    /*is_ambiguous_... S7295C8::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S7295C8*)(S7295C2_nt*), ABISELECT(8,4), "S7295C1");
    check_base_class_offset(lv, (S731C17_nt*)(S7295C8*)(S7295C2_nt*), 0, "S7295C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S7295C8*)(S7295C2_nt*), ABISELECT(32,16), "S7295C1");
    check_base_class_offset(lv, (S7295C8*)(S7295C2_nt*), 0, "S7295C1");
    check_base_class_offset(lv, (S7295C2_nt*), 0, "S7295C1");
    /*is_ambiguous_... S7295C11::S7295C5 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S7295C6*)(S7295C5*)(S7295C11*)(S7295C10*), ABISELECT(40,24), "S7295C1");
    /*is_ambiguous_... S7295C11::S7295C5 */ AMB_check_base_class_offset(lv, (S7295C6*)(S7295C5*)(S7295C11*)(S7295C10*), ABISELECT(40,24), "S7295C1");
    /*is_ambiguous_... S7295C11::S7295C5 */ AMB_check_base_class_offset(lv, (S7295C5*)(S7295C11*)(S7295C10*), ABISELECT(40,24), "S7295C1");
    /*is_ambiguous_... S7295C11::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S7295C11*)(S7295C10*), ABISELECT(128,68), "S7295C1");
    /*is_ambiguous_... S7295C1::S7295C6 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S7295C6*), ABISELECT(136,72), "S7295C1");
    /*is_ambiguous_... S7295C11::S7295C6 */ AMB_check_base_class_offset(lv, (S7295C6*)(S7295C11*)(S7295C10*), ABISELECT(136,72), "S7295C1");
    check_base_class_offset(lv, (S343C6_nt*)(S7295C6*)(S7295C13*)(S7295C12*), ABISELECT(144,76), "S7295C1");
    check_base_class_offset(lv, (S7295C6*)(S7295C13*)(S7295C12*), ABISELECT(144,76), "S7295C1");
    check_base_class_offset(lv, (S7295C13*)(S7295C12*), ABISELECT(144,76), "S7295C1");
    check_base_class_offset(lv, (S343C6_nt*)(S7295C6*)(S7295C5*)(S7295C12*), ABISELECT(160,84), "S7295C1");
    check_base_class_offset(lv, (S7295C6*)(S7295C5*)(S7295C12*), ABISELECT(160,84), "S7295C1");
    check_base_class_offset(lv, (S7295C5*)(S7295C12*), ABISELECT(160,84), "S7295C1");
    check_base_class_offset(lv, (S7295C12*)(S7295C11*)(S7295C10*), ABISELECT(144,76), "S7295C1");
    check_base_class_offset(lv, (S7295C11*)(S7295C10*), ABISELECT(40,24), "S7295C1");
    check_base_class_offset(lv, (S343C9_nt*)(S7295C10*), ABISELECT(56,32), "S7295C1");
    /*is_ambiguous_... S7295C15::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S7295C15*), ABISELECT(192,100), "S7295C1");
    /*is_ambiguous_... S7295C1::S7295C13 */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S7295C6*)(S7295C13*), ABISELECT(192,100), "S7295C1");
    /*is_ambiguous_... S7295C1::S7295C13 */ AMB_check_base_class_offset(lv, (S7295C6*)(S7295C13*), ABISELECT(192,100), "S7295C1");
    check_base_class_offset(lv, (S7295C13*)(S7295C15*), ABISELECT(192,100), "S7295C1");
    check_base_class_offset(lv, (S731C17_nt*)(S7295C3*)(S7295C15*), ABISELECT(184,96), "S7295C1");
    check_base_class_offset(lv, (S7295C3*)(S7295C15*), ABISELECT(184,96), "S7295C1");
    check_base_class_offset(lv, (S7295C15*)(S7295C10*), ABISELECT(184,96), "S7295C1");
    check_base_class_offset(lv, (S7295C10*), ABISELECT(40,24), "S7295C1");
    check_field_offset(lv, s7295c1f0, ABISELECT(16,8), "S7295C1.s7295c1f0");
    test_class_info(&lv, &cd_S7295C1);
    dp->~S7295C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7295C1(Test_S7295C1, "S7295C1", ABISELECT(208,108));

#else // __cplusplus

extern void _ZN7S7295C1C1Ev();
extern void _ZN7S7295C1D1Ev();
Name_Map name_map_S7295C1[] = {
  NSPAIR(_ZN7S7295C1C1Ev),
  NSPAIR(_ZN7S7295C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7295C3;
extern VTBL_ENTRY _ZTI7S7295C3[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S7295C6;
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
extern Class_Descriptor cd_S7295C5;
extern VTBL_ENTRY _ZTI7S7295C5[];
extern  VTBL_ENTRY _ZTV7S7295C5[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S7295C6;
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S7295C8;
extern VTBL_ENTRY _ZTI7S7295C8[];
extern  VTBL_ENTRY _ZTV7S7295C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7295C8[];
extern Class_Descriptor cd_S7295C2_nt;
extern VTBL_ENTRY _ZTI10S7295C2_nt[];
extern  VTBL_ENTRY _ZTV10S7295C2_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S7295C2_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S7295C6;
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
extern Class_Descriptor cd_S7295C5;
extern VTBL_ENTRY _ZTI7S7295C5[];
extern  VTBL_ENTRY _ZTV7S7295C5[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S7295C6;
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S7295C6;
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
extern Class_Descriptor cd_S7295C13;
extern VTBL_ENTRY _ZTI8S7295C13[];
extern  VTBL_ENTRY _ZTV8S7295C13[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S7295C6;
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
extern Class_Descriptor cd_S7295C5;
extern VTBL_ENTRY _ZTI7S7295C5[];
extern  VTBL_ENTRY _ZTV7S7295C5[];
extern Class_Descriptor cd_S7295C12;
extern VTBL_ENTRY _ZTI8S7295C12[];
extern  VTBL_ENTRY _ZTV8S7295C12[];
extern Class_Descriptor cd_S7295C11;
extern VTBL_ENTRY _ZTI8S7295C11[];
extern  VTBL_ENTRY _ZTV8S7295C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7295C11[];
extern Class_Descriptor cd_S343C9_nt;
extern VTBL_ENTRY _ZTI9S343C9_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S7295C6;
extern VTBL_ENTRY _ZTI7S7295C6[];
extern  VTBL_ENTRY _ZTV7S7295C6[];
extern Class_Descriptor cd_S7295C13;
extern VTBL_ENTRY _ZTI8S7295C13[];
extern  VTBL_ENTRY _ZTV8S7295C13[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S7295C3;
extern VTBL_ENTRY _ZTI7S7295C3[];
extern Class_Descriptor cd_S7295C15;
extern VTBL_ENTRY _ZTI8S7295C15[];
extern  VTBL_ENTRY _ZTV8S7295C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7295C15[];
extern Class_Descriptor cd_S7295C10;
extern VTBL_ENTRY _ZTI8S7295C10[];
extern  VTBL_ENTRY _ZTV8S7295C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7295C10[];
static Base_Class bases_S7295C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7295C3,    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
    11, //immediately_derived
  0, 1},
  {&cd_S343C6_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7295C6,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7295C5,    ABISELECT(24,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    6, //immediately_derived
  0, 0},
  {&cd_S7295C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    10, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(8,4), //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
    25, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7295C8,    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
    26, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7295C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S343C6_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
    18, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7295C6,    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
    19, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7295C5,    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
    20, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(128,68), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S343C6_nt,    ABISELECT(136,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7295C6,    ABISELECT(136,72), //bcp->offset
    39, //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
    6, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S343C6_nt,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7295C6,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7295C13,    ABISELECT(144,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(160,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7295C6,    ABISELECT(160,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7295C5,    ABISELECT(160,84), //bcp->offset
    49, //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
    12, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7295C12,    ABISELECT(144,76), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S7295C11,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S343C9_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(192,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S343C6_nt,    ABISELECT(192,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7295C6,    ABISELECT(192,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7295C13,    ABISELECT(192,100), //bcp->offset
    60, //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
    16, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(184,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7295C3,    ABISELECT(184,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7295C15,    ABISELECT(184,96), //bcp->offset
    53, //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
    17, //init_seq
    34, //immediately_derived
  0, 1},
  {&cd_S7295C10,    ABISELECT(40,24), //bcp->offset
    23, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7295C1[];
extern void _ZN7S7295C1D1Ev();
extern void _ZN7S7295C1D0Ev();
extern void ABISELECT(_ZThn8_N7S7295C1D1Ev,_ZThn4_N7S7295C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S7295C1D0Ev,_ZThn4_N7S7295C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7295C1D1Ev,_ZTv0_n12_N7S7295C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S7295C1D1Ev,_ZThn12_N7S7295C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7295C1D0Ev,_ZTv0_n12_N7S7295C1D0Ev)();
extern void ABISELECT(_ZThn24_N7S7295C1D0Ev,_ZThn12_N7S7295C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7295C1D1Ev,_ZTv0_n36_N7S7295C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S7295C1D1Ev,_ZThn24_N7S7295C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7295C1D0Ev,_ZTv0_n36_N7S7295C1D0Ev)();
extern void ABISELECT(_ZThn40_N7S7295C1D0Ev,_ZThn24_N7S7295C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7295C1D1Ev,_ZTv0_n12_N7S7295C1D1Ev)();
extern void ABISELECT(_ZThn128_N7S7295C1D1Ev,_ZThn68_N7S7295C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7295C1D0Ev,_ZTv0_n12_N7S7295C1D0Ev)();
extern void ABISELECT(_ZThn128_N7S7295C1D0Ev,_ZThn68_N7S7295C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7295C1D1Ev,_ZTv0_n12_N7S7295C1D1Ev)();
extern void ABISELECT(_ZThn136_N7S7295C1D1Ev,_ZThn72_N7S7295C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7295C1D0Ev,_ZTv0_n12_N7S7295C1D0Ev)();
extern void ABISELECT(_ZThn136_N7S7295C1D0Ev,_ZThn72_N7S7295C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7295C1D1Ev,_ZTv0_n12_N7S7295C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S7295C1D1Ev,_ZThn76_N7S7295C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7295C1D0Ev,_ZTv0_n12_N7S7295C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S7295C1D0Ev,_ZThn76_N7S7295C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n24_N7S7295C1D1Ev,_ZTvn8_n12_N7S7295C1D1Ev)();
extern void ABISELECT(_ZTvn16_n24_N7S7295C1D0Ev,_ZTvn8_n12_N7S7295C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S7295C1D1Ev,_ZTv0_n20_N7S7295C1D1Ev)();
extern void ABISELECT(_ZThn184_N7S7295C1D1Ev,_ZThn96_N7S7295C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7295C1D0Ev,_ZTv0_n20_N7S7295C1D0Ev)();
extern void ABISELECT(_ZThn184_N7S7295C1D0Ev,_ZThn96_N7S7295C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7295C1D1Ev,_ZTv0_n12_N7S7295C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S7295C1D1Ev,_ZThn100_N7S7295C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7295C1D0Ev,_ZTv0_n12_N7S7295C1D0Ev)();
extern void ABISELECT(_ZThn192_N7S7295C1D0Ev,_ZThn100_N7S7295C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7295C1[] = {
  ABISELECT(192,100),
  ABISELECT(192,100),
  ABISELECT(184,96),
  ABISELECT(144,76),
  ABISELECT(136,72),
  ABISELECT(128,68),
  ABISELECT(40,24),
  ABISELECT(24,12),
  ABISELECT(20,12),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7295C1[0]),
  (VTBL_ENTRY)&_ZN7S7295C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7295C1D0Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7295C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7295C1D1Ev,_ZThn4_N7S7295C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7295C1D0Ev,_ZThn4_N7S7295C1D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7295C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7295C1D1Ev,_ZTv0_n12_N7S7295C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7295C1D0Ev,_ZTv0_n12_N7S7295C1D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(152,76),
  ABISELECT(152,76),
  ABISELECT(144,72),
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(88,44),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7295C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7295C1D1Ev,_ZTv0_n36_N7S7295C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7295C1D0Ev,_ZTv0_n36_N7S7295C1D0Ev),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S7295C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7295C1D1Ev,_ZTv0_n12_N7S7295C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7295C1D0Ev,_ZTv0_n12_N7S7295C1D0Ev),
  ABISELECT(-136,-72),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S7295C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7295C1D1Ev,_ZTv0_n12_N7S7295C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7295C1D0Ev,_ZTv0_n12_N7S7295C1D0Ev),
  ABISELECT(-144,-76),
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI7S7295C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7295C1D1Ev,_ZTv0_n12_N7S7295C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7295C1D0Ev,_ZTv0_n12_N7S7295C1D0Ev),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI7S7295C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N7S7295C1D1Ev,_ZTvn8_n12_N7S7295C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N7S7295C1D0Ev,_ZTvn8_n12_N7S7295C1D0Ev),
  ABISELECT(-184,-96),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(-184,-96),
  (VTBL_ENTRY)&(_ZTI7S7295C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7295C1D1Ev,_ZTv0_n20_N7S7295C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7295C1D0Ev,_ZTv0_n20_N7S7295C1D0Ev),
  ABISELECT(-192,-100),
  ABISELECT(-192,-100),
  (VTBL_ENTRY)&(_ZTI7S7295C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7295C1D1Ev,_ZTv0_n12_N7S7295C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7295C1D0Ev,_ZTv0_n12_N7S7295C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7295C1[];
extern void _ZN10S7295C2_ntD1Ev();
extern void _ZN10S7295C2_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV10S7295C2_nt__7S7295C1[] = {
  ABISELECT(24,12),
  ABISELECT(20,12),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI10S7295C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S7295C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7295C2_ntD0Ev,
};
extern void _ZN7S7295C8D1Ev();
extern void _ZN7S7295C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7295C810S7295C2_nt__7S7295C1[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7295C8[0]),
  (VTBL_ENTRY)&_ZN7S7295C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7295C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N10S7295C2_ntD1Ev,_ZTv0_n12_N10S7295C2_ntD1Ev)();
extern void ABISELECT(_ZThn24_N10S7295C2_ntD1Ev,_ZThn12_N10S7295C2_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N10S7295C2_ntD0Ev,_ZTv0_n12_N10S7295C2_ntD0Ev)();
extern void ABISELECT(_ZThn24_N10S7295C2_ntD0Ev,_ZThn12_N10S7295C2_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7295C5__10S7295C2_nt__7S7295C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S7295C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S7295C2_ntD1Ev,_ZTv0_n12_N10S7295C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N10S7295C2_ntD0Ev,_ZTv0_n12_N10S7295C2_ntD0Ev),
};
extern void _ZN8S7295C10D1Ev();
extern void _ZN8S7295C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7295C10__7S7295C1[] = {
  ABISELECT(152,76),
  ABISELECT(152,76),
  ABISELECT(144,72),
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7295C10[0]),
  (VTBL_ENTRY)&_ZN8S7295C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7295C10D0Ev,
};
extern void _ZN8S7295C11D1Ev();
extern void _ZN8S7295C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7295C118S7295C10__7S7295C1[] = {
  ABISELECT(104,52),
  ABISELECT(96,48),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7295C11[0]),
  (VTBL_ENTRY)&_ZN8S7295C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7295C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7295C11D1Ev,_ZTv0_n12_N8S7295C11D1Ev)();
extern void ABISELECT(_ZThn88_N8S7295C11D1Ev,_ZThn44_N8S7295C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C11D0Ev,_ZTv0_n12_N8S7295C11D0Ev)();
extern void ABISELECT(_ZThn88_N8S7295C11D0Ev,_ZThn44_N8S7295C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S343C6_nt__A1__8S7295C118S7295C10__7S7295C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S7295C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C11D1Ev,_ZTv0_n12_N8S7295C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C11D0Ev,_ZTv0_n12_N8S7295C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7295C11D1Ev,_ZTv0_n12_N8S7295C11D1Ev)();
extern void ABISELECT(_ZThn96_N8S7295C11D1Ev,_ZThn48_N8S7295C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C11D0Ev,_ZTv0_n12_N8S7295C11D0Ev)();
extern void ABISELECT(_ZThn96_N8S7295C11D0Ev,_ZThn48_N8S7295C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7295C6__A1__8S7295C118S7295C10__7S7295C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7295C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C11D1Ev,_ZTv0_n12_N8S7295C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C11D0Ev,_ZTv0_n12_N8S7295C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7295C11D1Ev,_ZTv0_n12_N8S7295C11D1Ev)();
extern void ABISELECT(_ZThn104_N8S7295C11D1Ev,_ZThn52_N8S7295C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C11D0Ev,_ZTv0_n12_N8S7295C11D0Ev)();
extern void ABISELECT(_ZThn104_N8S7295C11D0Ev,_ZThn52_N8S7295C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7295C12__8S7295C118S7295C10__7S7295C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S7295C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C11D1Ev,_ZTv0_n12_N8S7295C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C11D0Ev,_ZTv0_n12_N8S7295C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n24_N8S7295C11D1Ev,_ZTvn8_n12_N8S7295C11D1Ev)();
extern void ABISELECT(_ZTvn16_n24_N8S7295C11D0Ev,_ZTvn8_n12_N8S7295C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7295C58S7295C12__A1__8S7295C118S7295C10__7S7295C1[] = {
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S7295C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N8S7295C11D1Ev,_ZTvn8_n12_N8S7295C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N8S7295C11D0Ev,_ZTvn8_n12_N8S7295C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7295C10D1Ev,_ZTv0_n12_N8S7295C10D1Ev)();
extern void ABISELECT(_ZThn88_N8S7295C10D1Ev,_ZThn44_N8S7295C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C10D0Ev,_ZTv0_n12_N8S7295C10D0Ev)();
extern void ABISELECT(_ZThn88_N8S7295C10D0Ev,_ZThn44_N8S7295C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S343C6_nt__A1__8S7295C10__7S7295C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S7295C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C10D1Ev,_ZTv0_n12_N8S7295C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C10D0Ev,_ZTv0_n12_N8S7295C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7295C10D1Ev,_ZTv0_n12_N8S7295C10D1Ev)();
extern void ABISELECT(_ZThn96_N8S7295C10D1Ev,_ZThn48_N8S7295C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C10D0Ev,_ZTv0_n12_N8S7295C10D0Ev)();
extern void ABISELECT(_ZThn96_N8S7295C10D0Ev,_ZThn48_N8S7295C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7295C6__A1__8S7295C10__7S7295C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S7295C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C10D1Ev,_ZTv0_n12_N8S7295C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C10D0Ev,_ZTv0_n12_N8S7295C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7295C10D1Ev,_ZTv0_n12_N8S7295C10D1Ev)();
extern void ABISELECT(_ZThn104_N8S7295C10D1Ev,_ZThn52_N8S7295C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C10D0Ev,_ZTv0_n12_N8S7295C10D0Ev)();
extern void ABISELECT(_ZThn104_N8S7295C10D0Ev,_ZThn52_N8S7295C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7295C12__8S7295C10__7S7295C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S7295C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C10D1Ev,_ZTv0_n12_N8S7295C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C10D0Ev,_ZTv0_n12_N8S7295C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n24_N8S7295C10D1Ev,_ZTvn8_n12_N8S7295C10D1Ev)();
extern void ABISELECT(_ZTvn16_n24_N8S7295C10D0Ev,_ZTvn8_n12_N8S7295C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7295C58S7295C12__A1__8S7295C10__7S7295C1[] = {
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S7295C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N8S7295C10D1Ev,_ZTvn8_n12_N8S7295C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n24_N8S7295C10D0Ev,_ZTvn8_n12_N8S7295C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S7295C10D1Ev,_ZTv0_n20_N8S7295C10D1Ev)();
extern void ABISELECT(_ZThn144_N8S7295C10D1Ev,_ZThn72_N8S7295C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S7295C10D0Ev,_ZTv0_n20_N8S7295C10D0Ev)();
extern void ABISELECT(_ZThn144_N8S7295C10D0Ev,_ZThn72_N8S7295C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7295C15__8S7295C10__7S7295C1[] = {
  ABISELECT(-144,-72),
  ABISELECT(8,4),
  ABISELECT(8,4),
  ABISELECT(-144,-72),
  (VTBL_ENTRY)&(_ZTI8S7295C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7295C10D1Ev,_ZTv0_n20_N8S7295C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S7295C10D0Ev,_ZTv0_n20_N8S7295C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7295C10D1Ev,_ZTv0_n12_N8S7295C10D1Ev)();
extern void ABISELECT(_ZThn152_N8S7295C10D1Ev,_ZThn76_N8S7295C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C10D0Ev,_ZTv0_n12_N8S7295C10D0Ev)();
extern void ABISELECT(_ZThn152_N8S7295C10D0Ev,_ZThn76_N8S7295C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7295C13__A1__8S7295C10__7S7295C1[] = {
  ABISELECT(-152,-76),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI8S7295C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C10D1Ev,_ZTv0_n12_N8S7295C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C10D0Ev,_ZTv0_n12_N8S7295C10D0Ev),
};
extern void _ZN8S7295C15D1Ev();
extern void _ZN8S7295C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7295C15__7S7295C1[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S7295C15[0]),
  (VTBL_ENTRY)&_ZN8S7295C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7295C15D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S7295C15D1Ev,_ZTv0_n12_N8S7295C15D1Ev)();
extern void ABISELECT(_ZThn8_N8S7295C15D1Ev,_ZThn4_N8S7295C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7295C15D0Ev,_ZTv0_n12_N8S7295C15D0Ev)();
extern void ABISELECT(_ZThn8_N8S7295C15D0Ev,_ZThn4_N8S7295C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7295C13__8S7295C15__7S7295C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7295C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C15D1Ev,_ZTv0_n12_N8S7295C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7295C15D0Ev,_ZTv0_n12_N8S7295C15D0Ev),
};
static  VTT_ENTRY vtt_S7295C1[] = {
  {&(_ZTV7S7295C1[12]),  12,65},
  {&(_tg__ZTV10S7295C2_nt__7S7295C1[5]),  5,7},
  {&(_tg__ZTV7S7295C810S7295C2_nt__7S7295C1[3]),  3,5},
  {&(_tg__ZTV7S7295C5__10S7295C2_nt__7S7295C1[3]),  3,5},
  {&(_ZTV7S7295C1[21]),  21,65},
  {&(_ZTV7S7295C1[32]),  32,65},
  {&(_ZTV7S7295C1[37]),  37,65},
  {&(_ZTV7S7295C1[42]),  42,65},
  {&(_ZTV7S7295C1[47]),  47,65},
  {&(_ZTV7S7295C1[51]),  51,65},
  {&(_ZTV7S7295C1[58]),  58,65},
  {&(_ZTV7S7295C1[63]),  63,65},
  {&(_tg__ZTV8S7295C10__7S7295C1[8]),  8,10},
  {&(_tg__ZTV8S7295C118S7295C10__7S7295C1[5]),  5,7},
  {&(_tg__ZTV9S343C6_nt__A1__8S7295C118S7295C10__7S7295C1[3]),  3,5},
  {&(_tg__ZTV7S7295C6__A1__8S7295C118S7295C10__7S7295C1[3]),  3,5},
  {&(_tg__ZTV8S7295C12__8S7295C118S7295C10__7S7295C1[3]),  3,5},
  {&(_tg__ZTV7S7295C58S7295C12__A1__8S7295C118S7295C10__7S7295C1[2]),  2,4},
  {&(_tg__ZTV9S343C6_nt__A1__8S7295C10__7S7295C1[3]),  3,5},
  {&(_tg__ZTV7S7295C6__A1__8S7295C10__7S7295C1[3]),  3,5},
  {&(_tg__ZTV8S7295C12__8S7295C10__7S7295C1[3]),  3,5},
  {&(_tg__ZTV7S7295C58S7295C12__A1__8S7295C10__7S7295C1[2]),  2,4},
  {&(_tg__ZTV8S7295C15__8S7295C10__7S7295C1[5]),  5,7},
  {&(_tg__ZTV8S7295C13__A1__8S7295C10__7S7295C1[3]),  3,5},
  {&(_tg__ZTV8S7295C15__7S7295C1[4]),  4,6},
  {&(_tg__ZTV8S7295C13__8S7295C15__7S7295C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7295C1[];
extern  VTBL_ENTRY _ZTV7S7295C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7295C1[];
static VTBL_ENTRY alt_thunk_names102[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7295C15D0Ev,_ZTv0_n12_N8S7295C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7295C15D0Ev,_ZThn4_N8S7295C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7295C15D1Ev,_ZTv0_n12_N8S7295C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7295C15D1Ev,_ZThn4_N8S7295C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7295C10D0Ev,_ZTv0_n20_N8S7295C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7295C10D0Ev,_ZThn72_N8S7295C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S7295C10D1Ev,_ZTv0_n20_N8S7295C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7295C10D1Ev,_ZThn72_N8S7295C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7295C10D0Ev,_ZTv0_n12_N8S7295C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7295C10D0Ev,_ZThn76_N8S7295C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7295C10D0Ev,_ZThn52_N8S7295C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7295C10D0Ev,_ZThn48_N8S7295C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7295C10D0Ev,_ZThn44_N8S7295C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7295C10D1Ev,_ZTv0_n12_N8S7295C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S7295C10D1Ev,_ZThn76_N8S7295C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7295C10D1Ev,_ZThn52_N8S7295C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7295C10D1Ev,_ZThn48_N8S7295C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7295C10D1Ev,_ZThn44_N8S7295C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7295C11D0Ev,_ZTv0_n12_N8S7295C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7295C11D0Ev,_ZThn52_N8S7295C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7295C11D0Ev,_ZThn48_N8S7295C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7295C11D0Ev,_ZThn44_N8S7295C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7295C11D1Ev,_ZTv0_n12_N8S7295C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7295C11D1Ev,_ZThn52_N8S7295C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7295C11D1Ev,_ZThn48_N8S7295C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7295C11D1Ev,_ZThn44_N8S7295C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S7295C2_ntD0Ev,_ZTv0_n12_N10S7295C2_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N10S7295C2_ntD0Ev,_ZThn12_N10S7295C2_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N10S7295C2_ntD1Ev,_ZTv0_n12_N10S7295C2_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N10S7295C2_ntD1Ev,_ZThn12_N10S7295C2_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7295C1D0Ev,_ZTv0_n20_N7S7295C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7295C1D0Ev,_ZThn96_N7S7295C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7295C1D1Ev,_ZTv0_n20_N7S7295C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S7295C1D1Ev,_ZThn96_N7S7295C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7295C1D0Ev,_ZTv0_n36_N7S7295C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7295C1D0Ev,_ZThn24_N7S7295C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7295C1D1Ev,_ZTv0_n36_N7S7295C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7295C1D1Ev,_ZThn24_N7S7295C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7295C1D0Ev,_ZTv0_n12_N7S7295C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7295C1D0Ev,_ZThn100_N7S7295C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7295C1D0Ev,_ZThn76_N7S7295C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7295C1D0Ev,_ZThn72_N7S7295C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7295C1D0Ev,_ZThn68_N7S7295C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7295C1D0Ev,_ZThn12_N7S7295C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7295C1D1Ev,_ZTv0_n12_N7S7295C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7295C1D1Ev,_ZThn100_N7S7295C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7295C1D1Ev,_ZThn76_N7S7295C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7295C1D1Ev,_ZThn72_N7S7295C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7295C1D1Ev,_ZThn68_N7S7295C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7295C1D1Ev,_ZThn12_N7S7295C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7295C1 = {  "S7295C1", // class name
  bases_S7295C1, 35,
  &(vtc_S7295C1[0]), // expected_vtbl_contents
  &(vtt_S7295C1[0]), // expected_vtt_contents
  ABISELECT(208,108), // object size
  NSPAIRA(_ZTI7S7295C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7295C1),65, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7295C1),26, //virtual table table var
  27, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names102,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10049C2  {
  virtual  ~S10049C2(); // _ZN8S10049C2D1Ev
  virtual void  v6(); // _ZN8S10049C22v6Ev
  virtual void  v7(); // _ZN8S10049C22v7Ev
  virtual void  v8(); // _ZN8S10049C22v8Ev
  virtual void  v9(); // _ZN8S10049C22v9Ev
  virtual void  v10(); // _ZN8S10049C23v10Ev
  virtual void  v11(); // _ZN8S10049C23v11Ev
  virtual void  v12(); // _ZN8S10049C23v12Ev
  virtual void  v13(); // _ZN8S10049C23v13Ev
  virtual void  v14(); // _ZN8S10049C23v14Ev
  S10049C2(); // tgen
};
//SIG(-1 S10049C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S10049C2 ::~S10049C2(){ note_dtor("S10049C2", this);}
void  S10049C2 ::v6(){vfunc_called(this, "_ZN8S10049C22v6Ev");}
void  S10049C2 ::v7(){vfunc_called(this, "_ZN8S10049C22v7Ev");}
void  S10049C2 ::v8(){vfunc_called(this, "_ZN8S10049C22v8Ev");}
void  S10049C2 ::v9(){vfunc_called(this, "_ZN8S10049C22v9Ev");}
void  S10049C2 ::v10(){vfunc_called(this, "_ZN8S10049C23v10Ev");}
void  S10049C2 ::v11(){vfunc_called(this, "_ZN8S10049C23v11Ev");}
void  S10049C2 ::v12(){vfunc_called(this, "_ZN8S10049C23v12Ev");}
void  S10049C2 ::v13(){vfunc_called(this, "_ZN8S10049C23v13Ev");}
void  S10049C2 ::v14(){vfunc_called(this, "_ZN8S10049C23v14Ev");}
S10049C2 ::S10049C2(){ note_ctor("S10049C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S10049C2C1Ev();
extern void _ZN8S10049C2D1Ev();
Name_Map name_map_S10049C2[] = {
  NSPAIR(_ZN8S10049C2C1Ev),
  NSPAIR(_ZN8S10049C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10049C2[];
extern void _ZN8S10049C2D1Ev();
extern void _ZN8S10049C2D0Ev();
extern void _ZN8S10049C22v6Ev();
extern void _ZN8S10049C22v7Ev();
extern void _ZN8S10049C22v8Ev();
extern void _ZN8S10049C22v9Ev();
extern void _ZN8S10049C23v10Ev();
extern void _ZN8S10049C23v11Ev();
extern void _ZN8S10049C23v12Ev();
extern void _ZN8S10049C23v13Ev();
extern void _ZN8S10049C23v14Ev();
static  VTBL_ENTRY vtc_S10049C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10049C2[0]),
  (VTBL_ENTRY)&_ZN8S10049C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10049C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10049C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10049C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10049C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10049C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10049C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10049C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10049C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10049C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10049C23v14Ev,
};
extern VTBL_ENTRY _ZTI8S10049C2[];
extern  VTBL_ENTRY _ZTV8S10049C2[];
Class_Descriptor cd_S10049C2 = {  "S10049C2", // class name
  0,0,//no base classes
  &(vtc_S10049C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S10049C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10049C2),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  S10049C1  : S10049C2 {
  ::S731C16_nt s10049c1f0;
  ::S731C16_nt s10049c1f1;
  ::S731C16_nt s10049c1f2;
  ::S731C16_nt s10049c1f3;
  ::S731C16_nt s10049c1f4;
  ::S731C16_nt s10049c1f5;
  ::S731C16_nt s10049c1f6;
  ::S731C16_nt s10049c1f7;
  ::S731C16_nt s10049c1f8;
  ::S731C16_nt s10049c1f9;
  ::S731C16_nt s10049c1f10;
  ::S731C16_nt s10049c1f11;
  ::S731C16_nt s10049c1f12;
  ::S731C16_nt s10049c1f13;
  ::S731C16_nt s10049c1f14;
  ::S731C16_nt s10049c1f15;
  ::S731C16_nt s10049c1f16;
  ::S731C16_nt s10049c1f17;
  ::S731C16_nt s10049c1f18;
  ::S731C16_nt s10049c1f19;
  ::S731C16_nt s10049c1f20;
  ::S731C16_nt s10049c1f21;
  int s10049c1f22[5];
  char s10049c1f23;
  void *s10049c1f24;
  virtual  ~S10049C1(); // _ZN8S10049C1D1Ev
  virtual void  v1(); // _ZN8S10049C12v1Ev
  virtual void  v2(); // _ZN8S10049C12v2Ev
  virtual void  v3(); // _ZN8S10049C12v3Ev
  virtual void  v4(); // _ZN8S10049C12v4Ev
  virtual void  v5(); // _ZN8S10049C12v5Ev
  S10049C1(); // tgen
};
//SIG(1 S10049C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14} vd v1 v2 v3 v4 v5 FC3{ m Fp Fi FC4{ m}} FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 FC3 Fi[5] Fc Fp}


 S10049C1 ::~S10049C1(){ note_dtor("S10049C1", this);}
void  S10049C1 ::v1(){vfunc_called(this, "_ZN8S10049C12v1Ev");}
void  S10049C1 ::v2(){vfunc_called(this, "_ZN8S10049C12v2Ev");}
void  S10049C1 ::v3(){vfunc_called(this, "_ZN8S10049C12v3Ev");}
void  S10049C1 ::v4(){vfunc_called(this, "_ZN8S10049C12v4Ev");}
void  S10049C1 ::v5(){vfunc_called(this, "_ZN8S10049C12v5Ev");}
S10049C1 ::S10049C1(){ note_ctor("S10049C1", this);} // tgen

static void Test_S10049C1()
{
  extern Class_Descriptor cd_S10049C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(50,75)];
    init_test(&cd_S10049C1, buf);
    S10049C1 *dp, &lv = *(dp=new (buf) S10049C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(392,296), "sizeof(S10049C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10049C1)");
    check_base_class_offset(lv, (S10049C2*), 0, "S10049C1");
    check_field_offset(lv, s10049c1f0, ABISELECT(8,4), "S10049C1.s10049c1f0");
    check_field_offset(lv, s10049c1f1, ABISELECT(24,16), "S10049C1.s10049c1f1");
    check_field_offset(lv, s10049c1f2, ABISELECT(40,28), "S10049C1.s10049c1f2");
    check_field_offset(lv, s10049c1f3, ABISELECT(56,40), "S10049C1.s10049c1f3");
    check_field_offset(lv, s10049c1f4, ABISELECT(72,52), "S10049C1.s10049c1f4");
    check_field_offset(lv, s10049c1f5, ABISELECT(88,64), "S10049C1.s10049c1f5");
    check_field_offset(lv, s10049c1f6, ABISELECT(104,76), "S10049C1.s10049c1f6");
    check_field_offset(lv, s10049c1f7, ABISELECT(120,88), "S10049C1.s10049c1f7");
    check_field_offset(lv, s10049c1f8, ABISELECT(136,100), "S10049C1.s10049c1f8");
    check_field_offset(lv, s10049c1f9, ABISELECT(152,112), "S10049C1.s10049c1f9");
    check_field_offset(lv, s10049c1f10, ABISELECT(168,124), "S10049C1.s10049c1f10");
    check_field_offset(lv, s10049c1f11, ABISELECT(184,136), "S10049C1.s10049c1f11");
    check_field_offset(lv, s10049c1f12, ABISELECT(200,148), "S10049C1.s10049c1f12");
    check_field_offset(lv, s10049c1f13, ABISELECT(216,160), "S10049C1.s10049c1f13");
    check_field_offset(lv, s10049c1f14, ABISELECT(232,172), "S10049C1.s10049c1f14");
    check_field_offset(lv, s10049c1f15, ABISELECT(248,184), "S10049C1.s10049c1f15");
    check_field_offset(lv, s10049c1f16, ABISELECT(264,196), "S10049C1.s10049c1f16");
    check_field_offset(lv, s10049c1f17, ABISELECT(280,208), "S10049C1.s10049c1f17");
    check_field_offset(lv, s10049c1f18, ABISELECT(296,220), "S10049C1.s10049c1f18");
    check_field_offset(lv, s10049c1f19, ABISELECT(312,232), "S10049C1.s10049c1f19");
    check_field_offset(lv, s10049c1f20, ABISELECT(328,244), "S10049C1.s10049c1f20");
    check_field_offset(lv, s10049c1f21, ABISELECT(344,256), "S10049C1.s10049c1f21");
    check_field_offset(lv, s10049c1f22, ABISELECT(360,268), "S10049C1.s10049c1f22");
    check_field_offset(lv, s10049c1f23, ABISELECT(380,288), "S10049C1.s10049c1f23");
    check_field_offset(lv, s10049c1f24, ABISELECT(384,292), "S10049C1.s10049c1f24");
    test_class_info(&lv, &cd_S10049C1);
    dp->~S10049C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10049C1(Test_S10049C1, "S10049C1", ABISELECT(392,296));

#else // __cplusplus

extern void _ZN8S10049C1C1Ev();
extern void _ZN8S10049C1D1Ev();
Name_Map name_map_S10049C1[] = {
  NSPAIR(_ZN8S10049C1C1Ev),
  NSPAIR(_ZN8S10049C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10049C2;
extern VTBL_ENTRY _ZTI8S10049C2[];
extern  VTBL_ENTRY _ZTV8S10049C2[];
static Base_Class bases_S10049C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10049C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10049C1[];
extern void _ZN8S10049C1D1Ev();
extern void _ZN8S10049C1D0Ev();
extern void _ZN8S10049C22v6Ev();
extern void _ZN8S10049C22v7Ev();
extern void _ZN8S10049C22v8Ev();
extern void _ZN8S10049C22v9Ev();
extern void _ZN8S10049C23v10Ev();
extern void _ZN8S10049C23v11Ev();
extern void _ZN8S10049C23v12Ev();
extern void _ZN8S10049C23v13Ev();
extern void _ZN8S10049C23v14Ev();
extern void _ZN8S10049C12v1Ev();
extern void _ZN8S10049C12v2Ev();
extern void _ZN8S10049C12v3Ev();
extern void _ZN8S10049C12v4Ev();
extern void _ZN8S10049C12v5Ev();
static  VTBL_ENTRY vtc_S10049C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10049C1[0]),
  (VTBL_ENTRY)&_ZN8S10049C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10049C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10049C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10049C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10049C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10049C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10049C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10049C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10049C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10049C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10049C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10049C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10049C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10049C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10049C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10049C12v5Ev,
};
extern VTBL_ENTRY _ZTI8S10049C1[];
extern  VTBL_ENTRY _ZTV8S10049C1[];
Class_Descriptor cd_S10049C1 = {  "S10049C1", // class name
  bases_S10049C1, 1,
  &(vtc_S10049C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(392,296), // object size
  NSPAIRA(_ZTI8S10049C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10049C1),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8536C2  {
  virtual  ~S8536C2(); // _ZN7S8536C2D1Ev
  virtual void  v10(); // _ZN7S8536C23v10Ev
  virtual void  v11(); // _ZN7S8536C23v11Ev
  virtual void  v12(); // _ZN7S8536C23v12Ev
  virtual void  v13(); // _ZN7S8536C23v13Ev
  virtual void  v14(); // _ZN7S8536C23v14Ev
  virtual void  v15(); // _ZN7S8536C23v15Ev
  virtual void  v16(); // _ZN7S8536C23v16Ev
  virtual void  v17(); // _ZN7S8536C23v17Ev
  virtual void  v18(); // _ZN7S8536C23v18Ev
  S8536C2(); // tgen
};
//SIG(-1 S8536C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S8536C2 ::~S8536C2(){ note_dtor("S8536C2", this);}
void  S8536C2 ::v10(){vfunc_called(this, "_ZN7S8536C23v10Ev");}
void  S8536C2 ::v11(){vfunc_called(this, "_ZN7S8536C23v11Ev");}
void  S8536C2 ::v12(){vfunc_called(this, "_ZN7S8536C23v12Ev");}
void  S8536C2 ::v13(){vfunc_called(this, "_ZN7S8536C23v13Ev");}
void  S8536C2 ::v14(){vfunc_called(this, "_ZN7S8536C23v14Ev");}
void  S8536C2 ::v15(){vfunc_called(this, "_ZN7S8536C23v15Ev");}
void  S8536C2 ::v16(){vfunc_called(this, "_ZN7S8536C23v16Ev");}
void  S8536C2 ::v17(){vfunc_called(this, "_ZN7S8536C23v17Ev");}
void  S8536C2 ::v18(){vfunc_called(this, "_ZN7S8536C23v18Ev");}
S8536C2 ::S8536C2(){ note_ctor("S8536C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S8536C2C1Ev();
extern void _ZN7S8536C2D1Ev();
Name_Map name_map_S8536C2[] = {
  NSPAIR(_ZN7S8536C2C1Ev),
  NSPAIR(_ZN7S8536C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8536C2[];
extern void _ZN7S8536C2D1Ev();
extern void _ZN7S8536C2D0Ev();
extern void _ZN7S8536C23v10Ev();
extern void _ZN7S8536C23v11Ev();
extern void _ZN7S8536C23v12Ev();
extern void _ZN7S8536C23v13Ev();
extern void _ZN7S8536C23v14Ev();
extern void _ZN7S8536C23v15Ev();
extern void _ZN7S8536C23v16Ev();
extern void _ZN7S8536C23v17Ev();
extern void _ZN7S8536C23v18Ev();
static  VTBL_ENTRY vtc_S8536C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8536C2[0]),
  (VTBL_ENTRY)&_ZN7S8536C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8536C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8536C23v10Ev,
  (VTBL_ENTRY)&_ZN7S8536C23v11Ev,
  (VTBL_ENTRY)&_ZN7S8536C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8536C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8536C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8536C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8536C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8536C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8536C23v18Ev,
};
extern VTBL_ENTRY _ZTI7S8536C2[];
extern  VTBL_ENTRY _ZTV7S8536C2[];
Class_Descriptor cd_S8536C2 = {  "S8536C2", // class name
  0,0,//no base classes
  &(vtc_S8536C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8536C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8536C2),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  S8536C3_nt  {
  ::S6441C3_nt s8536c3f0;
  void  mf8536c3(); // _ZN10S8536C3_nt8mf8536c3Ev
};
//SIG(-1 S8536C3_nt) C1{ m FC2{ FL[4]}}


void  S8536C3_nt ::mf8536c3(){}

//skip512 S8536C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



//skip512 S8536C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8536C5_nt  {
  void *s8536c5f0;
  ::S8536C6_nt s8536c5f1;
  void  mf8536c5(); // _ZN10S8536C5_nt8mf8536c5Ev
};
//SIG(-1 S8536C5_nt) C1{ m Fp FC2{ Fi[4]}}


void  S8536C5_nt ::mf8536c5(){}

//skip512 S8536C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8536C7  {
  int s8536c7f0;
  void *s8536c7f1[2];
  int s8536c7f2[3];
  __tsi64 s8536c7f3;
  void  mf8536c7(); // _ZN7S8536C78mf8536c7Ev
};
//SIG(1 S8536C7) C1{ m Fi Fp[2] Fi[3] FL}


void  S8536C7 ::mf8536c7(){}

static void Test_S8536C7()
{
  {
    init_simple_test("S8536C7");
    S8536C7 lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S8536C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8536C7)");
    check_field_offset(lv, s8536c7f0, 0, "S8536C7.s8536c7f0");
    check_field_offset(lv, s8536c7f1, ABISELECT(8,4), "S8536C7.s8536c7f1");
    check_field_offset(lv, s8536c7f2, ABISELECT(24,12), "S8536C7.s8536c7f2");
    check_field_offset(lv, s8536c7f3, ABISELECT(40,24), "S8536C7.s8536c7f3");
  }
}
static Arrange_To_Call_Me vS8536C7(Test_S8536C7, "S8536C7", ABISELECT(48,32));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8536C1  : S8536C2 {
  __tsi64 s8536c1f0[2];
  int s8536c1f1[6];
  __tsi64 s8536c1f2[3];
  char s8536c1f3;
  int s8536c1f4[3];
  ::S8536C3_nt s8536c1f5;
  ::S8536C5_nt s8536c1f6;
  int s8536c1f7;
  ::S8536C7 s8536c1f8[1232];
  virtual  ~S8536C1(); // _ZN7S8536C1D1Ev
  virtual void  v1(); // _ZN7S8536C12v1Ev
  virtual void  v2(); // _ZN7S8536C12v2Ev
  virtual void  v3(); // _ZN7S8536C12v3Ev
  virtual void  v4(); // _ZN7S8536C12v4Ev
  virtual void  v5(); // _ZN7S8536C12v5Ev
  virtual void  v6(); // _ZN7S8536C12v6Ev
  virtual void  v7(); // _ZN7S8536C12v7Ev
  virtual void  v8(); // _ZN7S8536C12v8Ev
  virtual void  v9(); // _ZN7S8536C12v9Ev
  S8536C1(); // tgen
};
//SIG(1 S8536C1) C1{ BC2{ vd v10 v11 v12 v13 v14 v15 v16 v17 v18} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FL[2] Fi[6] FL[3] Fc Fi[3] FC3{ m FC4{ FL[4]}} FC5{ m Fp FC6{ Fi[4]}} Fi FC7{ m Fi Fp[2] Fi[3] FL}[1232]}


 S8536C1 ::~S8536C1(){ note_dtor("S8536C1", this);}
void  S8536C1 ::v1(){vfunc_called(this, "_ZN7S8536C12v1Ev");}
void  S8536C1 ::v2(){vfunc_called(this, "_ZN7S8536C12v2Ev");}
void  S8536C1 ::v3(){vfunc_called(this, "_ZN7S8536C12v3Ev");}
void  S8536C1 ::v4(){vfunc_called(this, "_ZN7S8536C12v4Ev");}
void  S8536C1 ::v5(){vfunc_called(this, "_ZN7S8536C12v5Ev");}
void  S8536C1 ::v6(){vfunc_called(this, "_ZN7S8536C12v6Ev");}
void  S8536C1 ::v7(){vfunc_called(this, "_ZN7S8536C12v7Ev");}
void  S8536C1 ::v8(){vfunc_called(this, "_ZN7S8536C12v8Ev");}
void  S8536C1 ::v9(){vfunc_called(this, "_ZN7S8536C12v9Ev");}
S8536C1 ::S8536C1(){ note_ctor("S8536C1", this);} // tgen

static void Test_S8536C1()
{
  extern Class_Descriptor cd_S8536C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7412,9892)];
    init_test(&cd_S8536C1, buf);
    S8536C1 *dp, &lv = *(dp=new (buf) S8536C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(59288,39564), "sizeof(S8536C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8536C1)");
    check_base_class_offset(lv, (S8536C2*), 0, "S8536C1");
    check_field_offset(lv, s8536c1f0, ABISELECT(8,4), "S8536C1.s8536c1f0");
    check_field_offset(lv, s8536c1f1, ABISELECT(24,20), "S8536C1.s8536c1f1");
    check_field_offset(lv, s8536c1f2, ABISELECT(48,44), "S8536C1.s8536c1f2");
    check_field_offset(lv, s8536c1f3, ABISELECT(72,68), "S8536C1.s8536c1f3");
    check_field_offset(lv, s8536c1f4, ABISELECT(76,72), "S8536C1.s8536c1f4");
    check_field_offset(lv, s8536c1f5, ABISELECT(88,84), "S8536C1.s8536c1f5");
    check_field_offset(lv, s8536c1f6, ABISELECT(120,116), "S8536C1.s8536c1f6");
    check_field_offset(lv, s8536c1f7, ABISELECT(144,136), "S8536C1.s8536c1f7");
    check_field_offset(lv, s8536c1f8, ABISELECT(152,140), "S8536C1.s8536c1f8");
    test_class_info(&lv, &cd_S8536C1);
    dp->~S8536C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8536C1(Test_S8536C1, "S8536C1", ABISELECT(59288,39564));

#else // __cplusplus

extern void _ZN7S8536C1C1Ev();
extern void _ZN7S8536C1D1Ev();
Name_Map name_map_S8536C1[] = {
  NSPAIR(_ZN7S8536C1C1Ev),
  NSPAIR(_ZN7S8536C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8536C2;
extern VTBL_ENTRY _ZTI7S8536C2[];
extern  VTBL_ENTRY _ZTV7S8536C2[];
static Base_Class bases_S8536C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8536C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8536C1[];
extern void _ZN7S8536C1D1Ev();
extern void _ZN7S8536C1D0Ev();
extern void _ZN7S8536C23v10Ev();
extern void _ZN7S8536C23v11Ev();
extern void _ZN7S8536C23v12Ev();
extern void _ZN7S8536C23v13Ev();
extern void _ZN7S8536C23v14Ev();
extern void _ZN7S8536C23v15Ev();
extern void _ZN7S8536C23v16Ev();
extern void _ZN7S8536C23v17Ev();
extern void _ZN7S8536C23v18Ev();
extern void _ZN7S8536C12v1Ev();
extern void _ZN7S8536C12v2Ev();
extern void _ZN7S8536C12v3Ev();
extern void _ZN7S8536C12v4Ev();
extern void _ZN7S8536C12v5Ev();
extern void _ZN7S8536C12v6Ev();
extern void _ZN7S8536C12v7Ev();
extern void _ZN7S8536C12v8Ev();
extern void _ZN7S8536C12v9Ev();
static  VTBL_ENTRY vtc_S8536C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8536C1[0]),
  (VTBL_ENTRY)&_ZN7S8536C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8536C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8536C23v10Ev,
  (VTBL_ENTRY)&_ZN7S8536C23v11Ev,
  (VTBL_ENTRY)&_ZN7S8536C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8536C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8536C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8536C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8536C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8536C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8536C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8536C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8536C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8536C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8536C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8536C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8536C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8536C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8536C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8536C12v9Ev,
};
extern VTBL_ENTRY _ZTI7S8536C1[];
extern  VTBL_ENTRY _ZTV7S8536C1[];
Class_Descriptor cd_S8536C1 = {  "S8536C1", // class name
  bases_S8536C1, 1,
  &(vtc_S8536C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(59288,39564), // object size
  NSPAIRA(_ZTI7S8536C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8536C1),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  S8535C2  {
  virtual  ~S8535C2(); // _ZN7S8535C2D1Ev
  virtual void  v10(); // _ZN7S8535C23v10Ev
  virtual void  v11(); // _ZN7S8535C23v11Ev
  virtual void  v12(); // _ZN7S8535C23v12Ev
  virtual void  v13(); // _ZN7S8535C23v13Ev
  virtual void  v14(); // _ZN7S8535C23v14Ev
  virtual void  v15(); // _ZN7S8535C23v15Ev
  virtual void  v16(); // _ZN7S8535C23v16Ev
  virtual void  v17(); // _ZN7S8535C23v17Ev
  virtual void  v18(); // _ZN7S8535C23v18Ev
  S8535C2(); // tgen
};
//SIG(-1 S8535C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S8535C2 ::~S8535C2(){ note_dtor("S8535C2", this);}
void  S8535C2 ::v10(){vfunc_called(this, "_ZN7S8535C23v10Ev");}
void  S8535C2 ::v11(){vfunc_called(this, "_ZN7S8535C23v11Ev");}
void  S8535C2 ::v12(){vfunc_called(this, "_ZN7S8535C23v12Ev");}
void  S8535C2 ::v13(){vfunc_called(this, "_ZN7S8535C23v13Ev");}
void  S8535C2 ::v14(){vfunc_called(this, "_ZN7S8535C23v14Ev");}
void  S8535C2 ::v15(){vfunc_called(this, "_ZN7S8535C23v15Ev");}
void  S8535C2 ::v16(){vfunc_called(this, "_ZN7S8535C23v16Ev");}
void  S8535C2 ::v17(){vfunc_called(this, "_ZN7S8535C23v17Ev");}
void  S8535C2 ::v18(){vfunc_called(this, "_ZN7S8535C23v18Ev");}
S8535C2 ::S8535C2(){ note_ctor("S8535C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S8535C2C1Ev();
extern void _ZN7S8535C2D1Ev();
Name_Map name_map_S8535C2[] = {
  NSPAIR(_ZN7S8535C2C1Ev),
  NSPAIR(_ZN7S8535C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8535C2[];
extern void _ZN7S8535C2D1Ev();
extern void _ZN7S8535C2D0Ev();
extern void _ZN7S8535C23v10Ev();
extern void _ZN7S8535C23v11Ev();
extern void _ZN7S8535C23v12Ev();
extern void _ZN7S8535C23v13Ev();
extern void _ZN7S8535C23v14Ev();
extern void _ZN7S8535C23v15Ev();
extern void _ZN7S8535C23v16Ev();
extern void _ZN7S8535C23v17Ev();
extern void _ZN7S8535C23v18Ev();
static  VTBL_ENTRY vtc_S8535C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8535C2[0]),
  (VTBL_ENTRY)&_ZN7S8535C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8535C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8535C23v10Ev,
  (VTBL_ENTRY)&_ZN7S8535C23v11Ev,
  (VTBL_ENTRY)&_ZN7S8535C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8535C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8535C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8535C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8535C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8535C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8535C23v18Ev,
};
extern VTBL_ENTRY _ZTI7S8535C2[];
extern  VTBL_ENTRY _ZTV7S8535C2[];
Class_Descriptor cd_S8535C2 = {  "S8535C2", // class name
  0,0,//no base classes
  &(vtc_S8535C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8535C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8535C2),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  S8535C1  : S8535C2 {
  __tsi64 s8535c1f0[2];
  int s8535c1f1[6];
  __tsi64 s8535c1f2[3];
  char s8535c1f3;
  int s8535c1f4[3];
  ::S3027C15_nt s8535c1f5;
  ::S8536C5_nt s8535c1f6;
  int s8535c1f7;
  ::S8536C7 s8535c1f8[1232];
  virtual  ~S8535C1(); // _ZN7S8535C1D1Ev
  virtual void  v1(); // _ZN7S8535C12v1Ev
  virtual void  v2(); // _ZN7S8535C12v2Ev
  virtual void  v3(); // _ZN7S8535C12v3Ev
  virtual void  v4(); // _ZN7S8535C12v4Ev
  virtual void  v5(); // _ZN7S8535C12v5Ev
  virtual void  v6(); // _ZN7S8535C12v6Ev
  virtual void  v7(); // _ZN7S8535C12v7Ev
  virtual void  v8(); // _ZN7S8535C12v8Ev
  virtual void  v9(); // _ZN7S8535C12v9Ev
  S8535C1(); // tgen
};
//SIG(1 S8535C1) C1{ BC2{ vd v10 v11 v12 v13 v14 v15 v16 v17 v18} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FL[2] Fi[6] FL[3] Fc Fi[3] FC3{ m FC4{ Fl[4]}} FC5{ m Fp FC6{ Fi[4]}} Fi FC7{ m Fi Fp[2] Fi[3] FL}[1232]}


 S8535C1 ::~S8535C1(){ note_dtor("S8535C1", this);}
void  S8535C1 ::v1(){vfunc_called(this, "_ZN7S8535C12v1Ev");}
void  S8535C1 ::v2(){vfunc_called(this, "_ZN7S8535C12v2Ev");}
void  S8535C1 ::v3(){vfunc_called(this, "_ZN7S8535C12v3Ev");}
void  S8535C1 ::v4(){vfunc_called(this, "_ZN7S8535C12v4Ev");}
void  S8535C1 ::v5(){vfunc_called(this, "_ZN7S8535C12v5Ev");}
void  S8535C1 ::v6(){vfunc_called(this, "_ZN7S8535C12v6Ev");}
void  S8535C1 ::v7(){vfunc_called(this, "_ZN7S8535C12v7Ev");}
void  S8535C1 ::v8(){vfunc_called(this, "_ZN7S8535C12v8Ev");}
void  S8535C1 ::v9(){vfunc_called(this, "_ZN7S8535C12v9Ev");}
S8535C1 ::S8535C1(){ note_ctor("S8535C1", this);} // tgen

static void Test_S8535C1()
{
  extern Class_Descriptor cd_S8535C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7412,9888)];
    init_test(&cd_S8535C1, buf);
    S8535C1 *dp, &lv = *(dp=new (buf) S8535C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(59288,39548), "sizeof(S8535C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8535C1)");
    check_base_class_offset(lv, (S8535C2*), 0, "S8535C1");
    check_field_offset(lv, s8535c1f0, ABISELECT(8,4), "S8535C1.s8535c1f0");
    check_field_offset(lv, s8535c1f1, ABISELECT(24,20), "S8535C1.s8535c1f1");
    check_field_offset(lv, s8535c1f2, ABISELECT(48,44), "S8535C1.s8535c1f2");
    check_field_offset(lv, s8535c1f3, ABISELECT(72,68), "S8535C1.s8535c1f3");
    check_field_offset(lv, s8535c1f4, ABISELECT(76,72), "S8535C1.s8535c1f4");
    check_field_offset(lv, s8535c1f5, ABISELECT(88,84), "S8535C1.s8535c1f5");
    check_field_offset(lv, s8535c1f6, ABISELECT(120,100), "S8535C1.s8535c1f6");
    check_field_offset(lv, s8535c1f7, ABISELECT(144,120), "S8535C1.s8535c1f7");
    check_field_offset(lv, s8535c1f8, ABISELECT(152,124), "S8535C1.s8535c1f8");
    test_class_info(&lv, &cd_S8535C1);
    dp->~S8535C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8535C1(Test_S8535C1, "S8535C1", ABISELECT(59288,39548));

#else // __cplusplus

extern void _ZN7S8535C1C1Ev();
extern void _ZN7S8535C1D1Ev();
Name_Map name_map_S8535C1[] = {
  NSPAIR(_ZN7S8535C1C1Ev),
  NSPAIR(_ZN7S8535C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8535C2;
extern VTBL_ENTRY _ZTI7S8535C2[];
extern  VTBL_ENTRY _ZTV7S8535C2[];
static Base_Class bases_S8535C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8535C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8535C1[];
extern void _ZN7S8535C1D1Ev();
extern void _ZN7S8535C1D0Ev();
extern void _ZN7S8535C23v10Ev();
extern void _ZN7S8535C23v11Ev();
extern void _ZN7S8535C23v12Ev();
extern void _ZN7S8535C23v13Ev();
extern void _ZN7S8535C23v14Ev();
extern void _ZN7S8535C23v15Ev();
extern void _ZN7S8535C23v16Ev();
extern void _ZN7S8535C23v17Ev();
extern void _ZN7S8535C23v18Ev();
extern void _ZN7S8535C12v1Ev();
extern void _ZN7S8535C12v2Ev();
extern void _ZN7S8535C12v3Ev();
extern void _ZN7S8535C12v4Ev();
extern void _ZN7S8535C12v5Ev();
extern void _ZN7S8535C12v6Ev();
extern void _ZN7S8535C12v7Ev();
extern void _ZN7S8535C12v8Ev();
extern void _ZN7S8535C12v9Ev();
static  VTBL_ENTRY vtc_S8535C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8535C1[0]),
  (VTBL_ENTRY)&_ZN7S8535C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8535C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8535C23v10Ev,
  (VTBL_ENTRY)&_ZN7S8535C23v11Ev,
  (VTBL_ENTRY)&_ZN7S8535C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8535C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8535C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8535C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8535C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8535C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8535C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8535C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8535C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8535C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8535C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8535C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8535C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8535C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8535C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8535C12v9Ev,
};
extern VTBL_ENTRY _ZTI7S8535C1[];
extern  VTBL_ENTRY _ZTV7S8535C1[];
Class_Descriptor cd_S8535C1 = {  "S8535C1", // class name
  bases_S8535C1, 1,
  &(vtc_S8535C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(59288,39548), // object size
  NSPAIRA(_ZTI7S8535C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8535C1),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  S8537C2  {
  virtual  ~S8537C2(); // _ZN7S8537C2D1Ev
  virtual void  v10(); // _ZN7S8537C23v10Ev
  virtual void  v11(); // _ZN7S8537C23v11Ev
  virtual void  v12(); // _ZN7S8537C23v12Ev
  virtual void  v13(); // _ZN7S8537C23v13Ev
  virtual void  v14(); // _ZN7S8537C23v14Ev
  virtual void  v15(); // _ZN7S8537C23v15Ev
  virtual void  v16(); // _ZN7S8537C23v16Ev
  virtual void  v17(); // _ZN7S8537C23v17Ev
  virtual void  v18(); // _ZN7S8537C23v18Ev
  S8537C2(); // tgen
};
//SIG(-1 S8537C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S8537C2 ::~S8537C2(){ note_dtor("S8537C2", this);}
void  S8537C2 ::v10(){vfunc_called(this, "_ZN7S8537C23v10Ev");}
void  S8537C2 ::v11(){vfunc_called(this, "_ZN7S8537C23v11Ev");}
void  S8537C2 ::v12(){vfunc_called(this, "_ZN7S8537C23v12Ev");}
void  S8537C2 ::v13(){vfunc_called(this, "_ZN7S8537C23v13Ev");}
void  S8537C2 ::v14(){vfunc_called(this, "_ZN7S8537C23v14Ev");}
void  S8537C2 ::v15(){vfunc_called(this, "_ZN7S8537C23v15Ev");}
void  S8537C2 ::v16(){vfunc_called(this, "_ZN7S8537C23v16Ev");}
void  S8537C2 ::v17(){vfunc_called(this, "_ZN7S8537C23v17Ev");}
void  S8537C2 ::v18(){vfunc_called(this, "_ZN7S8537C23v18Ev");}
S8537C2 ::S8537C2(){ note_ctor("S8537C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S8537C2C1Ev();
extern void _ZN7S8537C2D1Ev();
Name_Map name_map_S8537C2[] = {
  NSPAIR(_ZN7S8537C2C1Ev),
  NSPAIR(_ZN7S8537C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8537C2[];
extern void _ZN7S8537C2D1Ev();
extern void _ZN7S8537C2D0Ev();
extern void _ZN7S8537C23v10Ev();
extern void _ZN7S8537C23v11Ev();
extern void _ZN7S8537C23v12Ev();
extern void _ZN7S8537C23v13Ev();
extern void _ZN7S8537C23v14Ev();
extern void _ZN7S8537C23v15Ev();
extern void _ZN7S8537C23v16Ev();
extern void _ZN7S8537C23v17Ev();
extern void _ZN7S8537C23v18Ev();
static  VTBL_ENTRY vtc_S8537C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8537C2[0]),
  (VTBL_ENTRY)&_ZN7S8537C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8537C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8537C23v10Ev,
  (VTBL_ENTRY)&_ZN7S8537C23v11Ev,
  (VTBL_ENTRY)&_ZN7S8537C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8537C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8537C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8537C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8537C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8537C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8537C23v18Ev,
};
extern VTBL_ENTRY _ZTI7S8537C2[];
extern  VTBL_ENTRY _ZTV7S8537C2[];
Class_Descriptor cd_S8537C2 = {  "S8537C2", // class name
  0,0,//no base classes
  &(vtc_S8537C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8537C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8537C2),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  S8537C1  : S8537C2 {
  __tsi64 s8537c1f0[2];
  int s8537c1f1[6];
  __tsi64 s8537c1f2[3];
  char s8537c1f3;
  int s8537c1f4[3];
  ::S3029C15_nt s8537c1f5;
  ::S8536C5_nt s8537c1f6;
  int s8537c1f7;
  ::S8536C7 s8537c1f8[1232];
  virtual  ~S8537C1(); // _ZN7S8537C1D1Ev
  virtual void  v1(); // _ZN7S8537C12v1Ev
  virtual void  v2(); // _ZN7S8537C12v2Ev
  virtual void  v3(); // _ZN7S8537C12v3Ev
  virtual void  v4(); // _ZN7S8537C12v4Ev
  virtual void  v5(); // _ZN7S8537C12v5Ev
  virtual void  v6(); // _ZN7S8537C12v6Ev
  virtual void  v7(); // _ZN7S8537C12v7Ev
  virtual void  v8(); // _ZN7S8537C12v8Ev
  virtual void  v9(); // _ZN7S8537C12v9Ev
  S8537C1(); // tgen
};
//SIG(1 S8537C1) C1{ BC2{ vd v10 v11 v12 v13 v14 v15 v16 v17 v18} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FL[2] Fi[6] FL[3] Fc Fi[3] FC3{ m FL[4]} FC4{ m Fp FC5{ Fi[4]}} Fi FC6{ m Fi Fp[2] Fi[3] FL}[1232]}


 S8537C1 ::~S8537C1(){ note_dtor("S8537C1", this);}
void  S8537C1 ::v1(){vfunc_called(this, "_ZN7S8537C12v1Ev");}
void  S8537C1 ::v2(){vfunc_called(this, "_ZN7S8537C12v2Ev");}
void  S8537C1 ::v3(){vfunc_called(this, "_ZN7S8537C12v3Ev");}
void  S8537C1 ::v4(){vfunc_called(this, "_ZN7S8537C12v4Ev");}
void  S8537C1 ::v5(){vfunc_called(this, "_ZN7S8537C12v5Ev");}
void  S8537C1 ::v6(){vfunc_called(this, "_ZN7S8537C12v6Ev");}
void  S8537C1 ::v7(){vfunc_called(this, "_ZN7S8537C12v7Ev");}
void  S8537C1 ::v8(){vfunc_called(this, "_ZN7S8537C12v8Ev");}
void  S8537C1 ::v9(){vfunc_called(this, "_ZN7S8537C12v9Ev");}
S8537C1 ::S8537C1(){ note_ctor("S8537C1", this);} // tgen

static void Test_S8537C1()
{
  extern Class_Descriptor cd_S8537C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7412,9892)];
    init_test(&cd_S8537C1, buf);
    S8537C1 *dp, &lv = *(dp=new (buf) S8537C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(59288,39564), "sizeof(S8537C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8537C1)");
    check_base_class_offset(lv, (S8537C2*), 0, "S8537C1");
    check_field_offset(lv, s8537c1f0, ABISELECT(8,4), "S8537C1.s8537c1f0");
    check_field_offset(lv, s8537c1f1, ABISELECT(24,20), "S8537C1.s8537c1f1");
    check_field_offset(lv, s8537c1f2, ABISELECT(48,44), "S8537C1.s8537c1f2");
    check_field_offset(lv, s8537c1f3, ABISELECT(72,68), "S8537C1.s8537c1f3");
    check_field_offset(lv, s8537c1f4, ABISELECT(76,72), "S8537C1.s8537c1f4");
    check_field_offset(lv, s8537c1f5, ABISELECT(88,84), "S8537C1.s8537c1f5");
    check_field_offset(lv, s8537c1f6, ABISELECT(120,116), "S8537C1.s8537c1f6");
    check_field_offset(lv, s8537c1f7, ABISELECT(144,136), "S8537C1.s8537c1f7");
    check_field_offset(lv, s8537c1f8, ABISELECT(152,140), "S8537C1.s8537c1f8");
    test_class_info(&lv, &cd_S8537C1);
    dp->~S8537C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8537C1(Test_S8537C1, "S8537C1", ABISELECT(59288,39564));

#else // __cplusplus

extern void _ZN7S8537C1C1Ev();
extern void _ZN7S8537C1D1Ev();
Name_Map name_map_S8537C1[] = {
  NSPAIR(_ZN7S8537C1C1Ev),
  NSPAIR(_ZN7S8537C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8537C2;
extern VTBL_ENTRY _ZTI7S8537C2[];
extern  VTBL_ENTRY _ZTV7S8537C2[];
static Base_Class bases_S8537C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8537C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8537C1[];
extern void _ZN7S8537C1D1Ev();
extern void _ZN7S8537C1D0Ev();
extern void _ZN7S8537C23v10Ev();
extern void _ZN7S8537C23v11Ev();
extern void _ZN7S8537C23v12Ev();
extern void _ZN7S8537C23v13Ev();
extern void _ZN7S8537C23v14Ev();
extern void _ZN7S8537C23v15Ev();
extern void _ZN7S8537C23v16Ev();
extern void _ZN7S8537C23v17Ev();
extern void _ZN7S8537C23v18Ev();
extern void _ZN7S8537C12v1Ev();
extern void _ZN7S8537C12v2Ev();
extern void _ZN7S8537C12v3Ev();
extern void _ZN7S8537C12v4Ev();
extern void _ZN7S8537C12v5Ev();
extern void _ZN7S8537C12v6Ev();
extern void _ZN7S8537C12v7Ev();
extern void _ZN7S8537C12v8Ev();
extern void _ZN7S8537C12v9Ev();
static  VTBL_ENTRY vtc_S8537C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8537C1[0]),
  (VTBL_ENTRY)&_ZN7S8537C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8537C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8537C23v10Ev,
  (VTBL_ENTRY)&_ZN7S8537C23v11Ev,
  (VTBL_ENTRY)&_ZN7S8537C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8537C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8537C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8537C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8537C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8537C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8537C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8537C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8537C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8537C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8537C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8537C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8537C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8537C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8537C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8537C12v9Ev,
};
extern VTBL_ENTRY _ZTI7S8537C1[];
extern  VTBL_ENTRY _ZTV7S8537C1[];
Class_Descriptor cd_S8537C1 = {  "S8537C1", // class name
  bases_S8537C1, 1,
  &(vtc_S8537C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(59288,39564), // object size
  NSPAIRA(_ZTI7S8537C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8537C1),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  S3579C3  : virtual S731C14_nt {
  virtual  ~S3579C3(); // _ZN7S3579C3D2Ev
  S3579C3(); // tgen
};
//SIG(-1 S3579C3) C1{ VBC2{ vd m Fp} vd}


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

static void Test_S3579C3()
{
  extern Class_Descriptor cd_S3579C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3579C3, buf);
    S3579C3 *dp, &lv = *(dp=new (buf) S3579C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3579C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3579C3)");
    check_base_class_offset(lv, (S731C14_nt*), ABISELECT(8,4), "S3579C3");
    test_class_info(&lv, &cd_S3579C3);
    dp->~S3579C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3579C3(Test_S3579C3, "S3579C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3579C3C1Ev();
extern void _ZN7S3579C3D2Ev();
Name_Map name_map_S3579C3[] = {
  NSPAIR(_ZN7S3579C3C1Ev),
  NSPAIR(_ZN7S3579C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
static Base_Class bases_S3579C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C14_nt,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3579C3[];
extern void _ZN7S3579C3D1Ev();
extern void _ZN7S3579C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S3579C3D1Ev,_ZTv0_n12_N7S3579C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S3579C3D1Ev,_ZThn4_N7S3579C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3579C3D0Ev,_ZTv0_n12_N7S3579C3D0Ev)();
extern void ABISELECT(_ZThn8_N7S3579C3D0Ev,_ZThn4_N7S3579C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3579C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C3[0]),
  (VTBL_ENTRY)&_ZN7S3579C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3579C3D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3579C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C3D1Ev,_ZTv0_n12_N7S3579C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C3D0Ev,_ZTv0_n12_N7S3579C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S3579C3[];
static  VTT_ENTRY vtt_S3579C3[] = {
  {&(_ZTV7S3579C3[3]),  3,10},
  {&(_ZTV7S3579C3[8]),  8,10},
};
extern VTBL_ENTRY _ZTI7S3579C3[];
extern  VTBL_ENTRY _ZTV7S3579C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C3[];
static VTBL_ENTRY alt_thunk_names103[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C3D0Ev,_ZTv0_n12_N7S3579C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3579C3D0Ev,_ZThn4_N7S3579C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C3D1Ev,_ZTv0_n12_N7S3579C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3579C3D1Ev,_ZThn4_N7S3579C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3579C3 = {  "S3579C3", // class name
  bases_S3579C3, 1,
  &(vtc_S3579C3[0]), // expected_vtbl_contents
  &(vtt_S3579C3[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3579C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3579C3),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3579C3),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names103,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3579C5  : virtual S731C14_nt {
  virtual  ~S3579C5(); // _ZN7S3579C5D2Ev
  S3579C5(); // tgen
};
//SIG(-1 S3579C5) C1{ VBC2{ vd m Fp} vd}


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

static void Test_S3579C5()
{
  extern Class_Descriptor cd_S3579C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3579C5, buf);
    S3579C5 *dp, &lv = *(dp=new (buf) S3579C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3579C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3579C5)");
    check_base_class_offset(lv, (S731C14_nt*), ABISELECT(8,4), "S3579C5");
    test_class_info(&lv, &cd_S3579C5);
    dp->~S3579C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3579C5(Test_S3579C5, "S3579C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3579C5C1Ev();
extern void _ZN7S3579C5D2Ev();
Name_Map name_map_S3579C5[] = {
  NSPAIR(_ZN7S3579C5C1Ev),
  NSPAIR(_ZN7S3579C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
static Base_Class bases_S3579C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C14_nt,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3579C5[];
extern void _ZN7S3579C5D1Ev();
extern void _ZN7S3579C5D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S3579C5D1Ev,_ZTv0_n12_N7S3579C5D1Ev)();
extern void ABISELECT(_ZThn8_N7S3579C5D1Ev,_ZThn4_N7S3579C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3579C5D0Ev,_ZTv0_n12_N7S3579C5D0Ev)();
extern void ABISELECT(_ZThn8_N7S3579C5D0Ev,_ZThn4_N7S3579C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3579C5[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C5[0]),
  (VTBL_ENTRY)&_ZN7S3579C5D1Ev,
  (VTBL_ENTRY)&_ZN7S3579C5D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3579C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C5D1Ev,_ZTv0_n12_N7S3579C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C5D0Ev,_ZTv0_n12_N7S3579C5D0Ev),
};
extern VTBL_ENTRY _ZTV7S3579C5[];
static  VTT_ENTRY vtt_S3579C5[] = {
  {&(_ZTV7S3579C5[3]),  3,10},
  {&(_ZTV7S3579C5[8]),  8,10},
};
extern VTBL_ENTRY _ZTI7S3579C5[];
extern  VTBL_ENTRY _ZTV7S3579C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C5[];
static VTBL_ENTRY alt_thunk_names104[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C5D0Ev,_ZTv0_n12_N7S3579C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3579C5D0Ev,_ZThn4_N7S3579C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C5D1Ev,_ZTv0_n12_N7S3579C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3579C5D1Ev,_ZThn4_N7S3579C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3579C5 = {  "S3579C5", // class name
  bases_S3579C5, 1,
  &(vtc_S3579C5[0]), // expected_vtbl_contents
  &(vtt_S3579C5[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3579C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3579C5),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3579C5),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names104,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3579C2  : S3579C3 , virtual S3579C5 {
  int s3579c2f0[6];
  virtual  ~S3579C2(); // _ZN7S3579C2D2Ev
  S3579C2(); // tgen
};
//SIG(-1 S3579C2) C1{ BC2{ VBC3{ vd m Fp} vd} VBC4{ VBC3 vd} vd Fi[6]}


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

static void Test_S3579C2()
{
  extern Class_Descriptor cd_S3579C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,11)];
    init_test(&cd_S3579C2, buf);
    S3579C2 *dp, &lv = *(dp=new (buf) S3579C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S3579C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3579C2)");
    check_base_class_offset(lv, (S731C14_nt*)(S3579C3*), ABISELECT(32,28), "S3579C2");
    check_base_class_offset(lv, (S731C14_nt*)(S3579C5*), ABISELECT(32,28), "S3579C2");
    check_base_class_offset(lv, (S3579C3*), 0, "S3579C2");
    check_base_class_offset(lv, (S3579C5*), ABISELECT(48,36), "S3579C2");
    check_field_offset(lv, s3579c2f0, ABISELECT(8,4), "S3579C2.s3579c2f0");
    test_class_info(&lv, &cd_S3579C2);
    dp->~S3579C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3579C2(Test_S3579C2, "S3579C2", ABISELECT(56,40));

#else // __cplusplus

extern void _ZN7S3579C2C1Ev();
extern void _ZN7S3579C2D2Ev();
Name_Map name_map_S3579C2[] = {
  NSPAIR(_ZN7S3579C2C1Ev),
  NSPAIR(_ZN7S3579C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S3579C3;
extern VTBL_ENTRY _ZTI7S3579C3[];
extern  VTBL_ENTRY _ZTV7S3579C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C3[];
extern Class_Descriptor cd_S3579C5;
extern VTBL_ENTRY _ZTI7S3579C5[];
extern  VTBL_ENTRY _ZTV7S3579C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C5[];
static Base_Class bases_S3579C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C14_nt,    ABISELECT(32,28), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S3579C3,    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_S3579C5,    ABISELECT(48,36), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3579C2[];
extern void _ZN7S3579C2D1Ev();
extern void _ZN7S3579C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S3579C2D1Ev,_ZTv0_n12_N7S3579C2D1Ev)();
extern void ABISELECT(_ZThn32_N7S3579C2D1Ev,_ZThn28_N7S3579C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3579C2D0Ev,_ZTv0_n12_N7S3579C2D0Ev)();
extern void ABISELECT(_ZThn32_N7S3579C2D0Ev,_ZThn28_N7S3579C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3579C2D1Ev,_ZTv0_n16_N7S3579C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S3579C2D1Ev,_ZThn36_N7S3579C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3579C2D0Ev,_ZTv0_n16_N7S3579C2D0Ev)();
extern void ABISELECT(_ZThn48_N7S3579C2D0Ev,_ZThn36_N7S3579C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3579C2[] = {
  ABISELECT(48,36),
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C2[0]),
  (VTBL_ENTRY)&_ZN7S3579C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3579C2D0Ev,
  ABISELECT(-32,-28),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S3579C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C2D1Ev,_ZTv0_n12_N7S3579C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C2D0Ev,_ZTv0_n12_N7S3579C2D0Ev),
  ABISELECT(-48,-36),
  ABISELECT(-16,-8),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI7S3579C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3579C2D1Ev,_ZTv0_n16_N7S3579C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3579C2D0Ev,_ZTv0_n16_N7S3579C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S3579C2[];
extern void _ZN7S3579C3D1Ev();
extern void _ZN7S3579C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3579C3__7S3579C2[] = {
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C3[0]),
  (VTBL_ENTRY)&_ZN7S3579C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3579C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3579C3D1Ev,_ZTv0_n12_N7S3579C3D1Ev)();
extern void ABISELECT(_ZThn32_N7S3579C3D1Ev,_ZThn28_N7S3579C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3579C3D0Ev,_ZTv0_n12_N7S3579C3D0Ev)();
extern void ABISELECT(_ZThn32_N7S3579C3D0Ev,_ZThn28_N7S3579C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__7S3579C3__7S3579C2[] = {
  ABISELECT(-32,-28),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S3579C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C3D1Ev,_ZTv0_n12_N7S3579C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C3D0Ev,_ZTv0_n12_N7S3579C3D0Ev),
};
extern void _ZN7S3579C5D1Ev();
extern void _ZN7S3579C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3579C5__7S3579C2[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C5[0]),
  (VTBL_ENTRY)&_ZN7S3579C5D1Ev,
  (VTBL_ENTRY)&_ZN7S3579C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3579C5D1Ev,_ZTv0_n12_N7S3579C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3579C5D0Ev,_ZTv0_n12_N7S3579C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__7S3579C5__7S3579C2[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S3579C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C5D1Ev,_ZTv0_n12_N7S3579C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C5D0Ev,_ZTv0_n12_N7S3579C5D0Ev),
};
static  VTT_ENTRY vtt_S3579C2[] = {
  {&(_ZTV7S3579C2[4]),  4,17},
  {&(_tg__ZTV7S3579C3__7S3579C2[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__7S3579C3__7S3579C2[3]),  3,5},
  {&(_ZTV7S3579C2[9]),  9,17},
  {&(_ZTV7S3579C2[15]),  15,17},
  {&(_tg__ZTV7S3579C5__7S3579C2[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__7S3579C5__7S3579C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S3579C2[];
extern  VTBL_ENTRY _ZTV7S3579C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C2[];
static VTBL_ENTRY alt_thunk_names105[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C3D0Ev,_ZTv0_n12_N7S3579C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3579C3D0Ev,_ZThn28_N7S3579C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C3D1Ev,_ZTv0_n12_N7S3579C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3579C3D1Ev,_ZThn28_N7S3579C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3579C2D0Ev,_ZTv0_n16_N7S3579C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3579C2D0Ev,_ZThn36_N7S3579C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3579C2D1Ev,_ZTv0_n16_N7S3579C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3579C2D1Ev,_ZThn36_N7S3579C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C2D0Ev,_ZTv0_n12_N7S3579C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3579C2D0Ev,_ZThn28_N7S3579C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C2D1Ev,_ZTv0_n12_N7S3579C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3579C2D1Ev,_ZThn28_N7S3579C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3579C2 = {  "S3579C2", // class name
  bases_S3579C2, 3,
  &(vtc_S3579C2[0]), // expected_vtbl_contents
  &(vtt_S3579C2[0]), // expected_vtt_contents
  ABISELECT(56,40), // object size
  NSPAIRA(_ZTI7S3579C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3579C2),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3579C2),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names105,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3579C6  : virtual S731C17_nt {
  long double s3579c6f0;
  ~S3579C6(); // tgen
  S3579C6(); // tgen
};
//SIG(-1 S3579C6) C1{ VBC2{ m} FD}


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

static void Test_S3579C6()
{
  extern Class_Descriptor cd_S3579C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,5)];
    init_test(&cd_S3579C6, buf);
    S3579C6 *dp, &lv = *(dp=new (buf) S3579C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S3579C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3579C6)");
    check_base_class_offset(lv, (S731C17_nt*), 0, "S3579C6");
    check_field_offset(lv, s3579c6f0, ABISELECT(16,4), "S3579C6.s3579c6f0");
    test_class_info(&lv, &cd_S3579C6);
    dp->~S3579C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3579C6(Test_S3579C6, "S3579C6", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S3579C6C1Ev();
extern void _ZN7S3579C6D1Ev();
Name_Map name_map_S3579C6[] = {
  NSPAIR(_ZN7S3579C6C1Ev),
  NSPAIR(_ZN7S3579C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S3579C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3579C6[];
static  VTBL_ENTRY vtc_S3579C6[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C6[0]),
};
extern VTBL_ENTRY _ZTV7S3579C6[];
static  VTT_ENTRY vtt_S3579C6[] = {
  {&(_ZTV7S3579C6[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S3579C6[];
extern  VTBL_ENTRY _ZTV7S3579C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C6[];
Class_Descriptor cd_S3579C6 = {  "S3579C6", // class name
  bases_S3579C6, 1,
  &(vtc_S3579C6[0]), // expected_vtbl_contents
  &(vtt_S3579C6[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S3579C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3579C6),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3579C6),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  S3579C9  : S731C14_nt {
  ~S3579C9(); // tgen
  S3579C9(); // tgen
};
//SIG(-1 S3579C9) C1{ BC2{ vd m Fp}}


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

static void Test_S3579C9()
{
  extern Class_Descriptor cd_S3579C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3579C9, buf);
    S3579C9 *dp, &lv = *(dp=new (buf) S3579C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3579C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3579C9)");
    check_base_class_offset(lv, (S731C14_nt*), 0, "S3579C9");
    test_class_info(&lv, &cd_S3579C9);
    dp->~S3579C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3579C9(Test_S3579C9, "S3579C9", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S3579C9C1Ev();
extern void _ZN7S3579C9D1Ev();
Name_Map name_map_S3579C9[] = {
  NSPAIR(_ZN7S3579C9C1Ev),
  NSPAIR(_ZN7S3579C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
static Base_Class bases_S3579C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C14_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3579C9[];
extern void _ZN7S3579C9D1Ev();
extern void _ZN7S3579C9D0Ev();
static  VTBL_ENTRY vtc_S3579C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C9[0]),
  (VTBL_ENTRY)&_ZN7S3579C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3579C9D0Ev,
};
extern VTBL_ENTRY _ZTI7S3579C9[];
extern  VTBL_ENTRY _ZTV7S3579C9[];
Class_Descriptor cd_S3579C9 = {  "S3579C9", // class name
  bases_S3579C9, 1,
  &(vtc_S3579C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S3579C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3579C9),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  S3579C12  : S731C17_nt {
};
//SIG(-1 S3579C12) C1{ BC2{ m}}



static void Test_S3579C12()
{
  extern Class_Descriptor cd_S3579C12;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S3579C12, buf);
    S3579C12 &lv = *(new (buf) S3579C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S3579C12)");
    check2(__alignof__(lv), 1, "__alignof__(S3579C12)");
    check_base_class_offset(lv, (S731C17_nt*), 0, "S3579C12");
    test_class_info(&lv, &cd_S3579C12);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3579C12(Test_S3579C12, "S3579C12", 1);

#else // __cplusplus

extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S3579C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3579C12[];
Class_Descriptor cd_S3579C12 = {  "S3579C12", // class name
  bases_S3579C12, 1,
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S3579C12),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  S3579C11  : S731C14_nt , S3579C3 , virtual S3579C6 , S3579C12 , S731C17_nt {
  virtual  ~S3579C11(); // _ZN8S3579C11D2Ev
  S3579C11(); // tgen
};
//SIG(-1 S3579C11) C1{ BC2{ vd m Fp} BC3{ VBC2 vd} VBC4{ VBC5{ m} FD} BC6{ BC5} BC5 vd}


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

static void Test_S3579C11()
{
  extern Class_Descriptor cd_S3579C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,11)];
    init_test(&cd_S3579C11, buf);
    S3579C11 *dp, &lv = *(dp=new (buf) S3579C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,40), "sizeof(S3579C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3579C11)");
    /*is_ambiguous_... S3579C11::S731C14_nt */ AMB_check_base_class_offset(lv, (S731C14_nt*), 0, "S3579C11");
    check_base_class_offset(lv, (S731C14_nt*)(S3579C3*), ABISELECT(24,12), "S3579C11");
    check_base_class_offset(lv, (S3579C3*), ABISELECT(16,8), "S3579C11");
    check_base_class_offset(lv, (S731C17_nt*)(S3579C6*), ABISELECT(80,36), "S3579C11");
    check_base_class_offset(lv, (S3579C6*), ABISELECT(48,20), "S3579C11");
    check_base_class_offset(lv, (S731C17_nt*)(S3579C12*), 0, "S3579C11");
    check_base_class_offset(lv, (S3579C12*), 0, "S3579C11");
    /*is_ambiguous_... S3579C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), ABISELECT(24,12), "S3579C11");
    test_class_info(&lv, &cd_S3579C11);
    dp->~S3579C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3579C11(Test_S3579C11, "S3579C11", ABISELECT(96,40));

#else // __cplusplus

extern void _ZN8S3579C11C1Ev();
extern void _ZN8S3579C11D2Ev();
Name_Map name_map_S3579C11[] = {
  NSPAIR(_ZN8S3579C11C1Ev),
  NSPAIR(_ZN8S3579C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S3579C3;
extern VTBL_ENTRY _ZTI7S3579C3[];
extern  VTBL_ENTRY _ZTV7S3579C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3579C6;
extern VTBL_ENTRY _ZTI7S3579C6[];
extern  VTBL_ENTRY _ZTV7S3579C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C6[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3579C12;
extern VTBL_ENTRY _ZTI8S3579C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S3579C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C14_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C14_nt,    ABISELECT(24,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3579C3,    ABISELECT(16,8), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    ABISELECT(80,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3579C6,    ABISELECT(48,20), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3579C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3579C11[];
extern void _ZN8S3579C11D1Ev();
extern void _ZN8S3579C11D0Ev();
extern void ABISELECT(_ZThn16_N8S3579C11D1Ev,_ZThn8_N8S3579C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S3579C11D0Ev,_ZThn8_N8S3579C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3579C11D1Ev,_ZTv0_n12_N8S3579C11D1Ev)();
extern void ABISELECT(_ZThn24_N8S3579C11D1Ev,_ZThn12_N8S3579C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3579C11D0Ev,_ZTv0_n12_N8S3579C11D0Ev)();
extern void ABISELECT(_ZThn24_N8S3579C11D0Ev,_ZThn12_N8S3579C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3579C11[] = {
  ABISELECT(80,36),
  ABISELECT(48,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S3579C11[0]),
  (VTBL_ENTRY)&_ZN8S3579C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3579C11D0Ev,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3579C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3579C11D1Ev,_ZThn8_N8S3579C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3579C11D0Ev,_ZThn8_N8S3579C11D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3579C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C11D1Ev,_ZTv0_n12_N8S3579C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C11D0Ev,_ZTv0_n12_N8S3579C11D0Ev),
  ABISELECT(32,16),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S3579C11[0]),
};
extern VTBL_ENTRY _ZTV8S3579C11[];
extern void _ZN7S3579C3D1Ev();
extern void _ZN7S3579C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3579C3__8S3579C11[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C3[0]),
  (VTBL_ENTRY)&_ZN7S3579C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3579C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3579C3D1Ev,_ZTv0_n12_N7S3579C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S3579C3D1Ev,_ZThn4_N7S3579C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3579C3D0Ev,_ZTv0_n12_N7S3579C3D0Ev)();
extern void ABISELECT(_ZThn8_N7S3579C3D0Ev,_ZThn4_N7S3579C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__7S3579C3__8S3579C11[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3579C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C3D1Ev,_ZTv0_n12_N7S3579C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C3D0Ev,_ZTv0_n12_N7S3579C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S3579C6__8S3579C11[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C6[0]),
};
static  VTT_ENTRY vtt_S3579C11[] = {
  {&(_ZTV8S3579C11[5]),  5,20},
  {&(_tg__ZTV7S3579C3__8S3579C11[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__7S3579C3__8S3579C11[3]),  3,5},
  {&(_ZTV8S3579C11[10]),  10,20},
  {&(_ZTV8S3579C11[15]),  15,20},
  {&(_ZTV8S3579C11[20]),  20,20},
  {&(_tg__ZTV7S3579C6__8S3579C11[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S3579C11[];
extern  VTBL_ENTRY _ZTV8S3579C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3579C11[];
static VTBL_ENTRY alt_thunk_names106[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C3D0Ev,_ZTv0_n12_N7S3579C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3579C3D0Ev,_ZThn4_N7S3579C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C3D1Ev,_ZTv0_n12_N7S3579C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3579C3D1Ev,_ZThn4_N7S3579C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3579C11D0Ev,_ZTv0_n12_N8S3579C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S3579C11D0Ev,_ZThn12_N8S3579C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3579C11D1Ev,_ZTv0_n12_N8S3579C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S3579C11D1Ev,_ZThn12_N8S3579C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3579C11 = {  "S3579C11", // class name
  bases_S3579C11, 8,
  &(vtc_S3579C11[0]), // expected_vtbl_contents
  &(vtt_S3579C11[0]), // expected_vtt_contents
  ABISELECT(96,40), // object size
  NSPAIRA(_ZTI8S3579C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S3579C11),20, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3579C11),7, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names106,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3579C10  : S731C17_nt , S3579C9 , virtual S731C14_nt , S3579C5 , virtual S3579C11 {
  virtual void  v1(); // _ZN8S3579C102v1Ev
  ~S3579C10(); // tgen
  S3579C10(); // tgen
};
//SIG(-1 S3579C10) C1{ BC2{ m} BC3{ BC4{ vd m Fp}} VBC4 BC5{ VBC4 vd} VBC6{ BC4 BC7{ VBC4 vd} VBC8{ VBC2 FD} BC9{ BC2} BC2 vd} v1}


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

static void Test_S3579C10()
{
  extern Class_Descriptor cd_S3579C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,15)];
    init_test(&cd_S3579C10, buf);
    S3579C10 *dp, &lv = *(dp=new (buf) S3579C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,56), "sizeof(S3579C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3579C10)");
    /*is_ambiguous_... S3579C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*), 0, "S3579C10");
    check_base_class_offset(lv, (S731C14_nt*)(S3579C9*), 0, "S3579C10");
    check_base_class_offset(lv, (S3579C9*), 0, "S3579C10");
    /*is_ambiguous_... S3579C10::S731C14_nt */ AMB_check_base_class_offset(lv, (S731C14_nt*), ABISELECT(24,12), "S3579C10");
    check_base_class_offset(lv, (S731C14_nt*)(S3579C5*), ABISELECT(24,12), "S3579C10");
    check_base_class_offset(lv, (S731C14_nt*)(S3579C3*)(S3579C11*), ABISELECT(24,12), "S3579C10");
    check_base_class_offset(lv, (S3579C5*), ABISELECT(16,8), "S3579C10");
    /*is_ambiguous_... S3579C11::S731C14_nt */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S3579C11*), ABISELECT(40,20), "S3579C10");
    check_base_class_offset(lv, (S3579C3*)(S3579C11*), ABISELECT(56,28), "S3579C10");
    check_base_class_offset(lv, (S731C17_nt*)(S3579C6*), ABISELECT(112,52), "S3579C10");
    check_base_class_offset(lv, (S3579C6*)(S3579C11*), ABISELECT(80,36), "S3579C10");
    check_base_class_offset(lv, (S731C17_nt*)(S3579C12*)(S3579C11*), ABISELECT(40,20), "S3579C10");
    check_base_class_offset(lv, (S3579C12*)(S3579C11*), ABISELECT(40,20), "S3579C10");
    /*is_ambiguous_... S3579C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3579C11*), ABISELECT(64,32), "S3579C10");
    check_base_class_offset(lv, (S3579C11*), ABISELECT(40,20), "S3579C10");
    test_class_info(&lv, &cd_S3579C10);
    dp->~S3579C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3579C10(Test_S3579C10, "S3579C10", ABISELECT(128,56));

#else // __cplusplus

extern void _ZN8S3579C10C1Ev();
extern void _ZN8S3579C10D1Ev();
Name_Map name_map_S3579C10[] = {
  NSPAIR(_ZN8S3579C10C1Ev),
  NSPAIR(_ZN8S3579C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S3579C9;
extern VTBL_ENTRY _ZTI7S3579C9[];
extern  VTBL_ENTRY _ZTV7S3579C9[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S3579C5;
extern VTBL_ENTRY _ZTI7S3579C5[];
extern  VTBL_ENTRY _ZTV7S3579C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C5[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S3579C3;
extern VTBL_ENTRY _ZTI7S3579C3[];
extern  VTBL_ENTRY _ZTV7S3579C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3579C6;
extern VTBL_ENTRY _ZTI7S3579C6[];
extern  VTBL_ENTRY _ZTV7S3579C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C6[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3579C12;
extern VTBL_ENTRY _ZTI8S3579C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3579C11;
extern VTBL_ENTRY _ZTI8S3579C11[];
extern  VTBL_ENTRY _ZTV8S3579C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3579C11[];
static Base_Class bases_S3579C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C14_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3579C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S731C14_nt,    ABISELECT(24,12), //bcp->offset
    14, //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_S3579C5,    ABISELECT(16,8), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C14_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
    12, //immediately_derived
  0, 0},
  {&cd_S3579C3,    ABISELECT(56,28), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(112,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3579C6,    ABISELECT(80,36), //bcp->offset
    32, //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
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3579C12,    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
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3579C11,    ABISELECT(40,20), //bcp->offset
    19, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3579C10[];
extern void _ZN8S3579C10D1Ev();
extern void _ZN8S3579C10D0Ev();
extern void _ZN8S3579C102v1Ev();
extern void ABISELECT(_ZThn16_N8S3579C10D1Ev,_ZThn8_N8S3579C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S3579C10D0Ev,_ZThn8_N8S3579C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3579C10D1Ev,_ZTv0_n12_N8S3579C10D1Ev)();
extern void ABISELECT(_ZThn24_N8S3579C10D1Ev,_ZThn12_N8S3579C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3579C10D0Ev,_ZTv0_n12_N8S3579C10D0Ev)();
extern void ABISELECT(_ZThn24_N8S3579C10D0Ev,_ZThn12_N8S3579C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3579C10D1Ev,_ZTv0_n24_N8S3579C10D1Ev)();
extern void ABISELECT(_ZThn40_N8S3579C10D1Ev,_ZThn20_N8S3579C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3579C10D0Ev,_ZTv0_n24_N8S3579C10D0Ev)();
extern void ABISELECT(_ZThn40_N8S3579C10D0Ev,_ZThn20_N8S3579C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S3579C10D1Ev,_ZTvn8_n24_N8S3579C10D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S3579C10D0Ev,_ZTvn8_n24_N8S3579C10D0Ev)();
static  VTBL_ENTRY vtc_S3579C10[] = {
  ABISELECT(112,52),
  ABISELECT(80,36),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&_ZN8S3579C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3579C10D0Ev,
  (VTBL_ENTRY)&_ZN8S3579C102v1Ev,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3579C10D1Ev,_ZThn8_N8S3579C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3579C10D0Ev,_ZThn8_N8S3579C10D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C10D1Ev,_ZTv0_n12_N8S3579C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C10D0Ev,_ZTv0_n12_N8S3579C10D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(72,32),
  ABISELECT(40,16),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3579C10D1Ev,_ZTv0_n24_N8S3579C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3579C10D0Ev,_ZTv0_n24_N8S3579C10D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S3579C10D1Ev,_ZTvn8_n24_N8S3579C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S3579C10D0Ev,_ZTvn8_n24_N8S3579C10D0Ev),
  ABISELECT(32,16),
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
};
extern VTBL_ENTRY _ZTV8S3579C10[];
extern void _ZN7S3579C5D1Ev();
extern void _ZN7S3579C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3579C5__8S3579C10[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C5[0]),
  (VTBL_ENTRY)&_ZN7S3579C5D1Ev,
  (VTBL_ENTRY)&_ZN7S3579C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3579C5D1Ev,_ZTv0_n12_N7S3579C5D1Ev)();
extern void ABISELECT(_ZThn8_N7S3579C5D1Ev,_ZThn4_N7S3579C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3579C5D0Ev,_ZTv0_n12_N7S3579C5D0Ev)();
extern void ABISELECT(_ZThn8_N7S3579C5D0Ev,_ZThn4_N7S3579C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__7S3579C5__8S3579C10[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3579C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C5D1Ev,_ZTv0_n12_N7S3579C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C5D0Ev,_ZTv0_n12_N7S3579C5D0Ev),
};
extern void _ZN8S3579C11D1Ev();
extern void _ZN8S3579C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3579C11__8S3579C10[] = {
  ABISELECT(72,32),
  ABISELECT(40,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S3579C11[0]),
  (VTBL_ENTRY)&_ZN8S3579C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3579C11D0Ev,
};
extern void _ZN7S3579C3D1Ev();
extern void _ZN7S3579C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3579C38S3579C11__8S3579C10[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C3[0]),
  (VTBL_ENTRY)&_ZN7S3579C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3579C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3579C3D1Ev,_ZTv0_n12_N7S3579C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3579C3D0Ev,_ZTv0_n12_N7S3579C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__7S3579C38S3579C11__8S3579C10[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S3579C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C3D1Ev,_ZTv0_n12_N7S3579C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C3D0Ev,_ZTv0_n12_N7S3579C3D0Ev),
};
extern void ABISELECT(_ZThn16_N8S3579C11D1Ev,_ZThn8_N8S3579C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S3579C11D0Ev,_ZThn8_N8S3579C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3579C3__8S3579C11__8S3579C10[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3579C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3579C11D1Ev,_ZThn8_N8S3579C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3579C11D0Ev,_ZThn8_N8S3579C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3579C11D1Ev,_ZTv0_n12_N8S3579C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3579C11D0Ev,_ZTv0_n12_N8S3579C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A1__8S3579C11__8S3579C10[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S3579C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C11D1Ev,_ZTv0_n12_N8S3579C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C11D0Ev,_ZTv0_n12_N8S3579C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S3579C6__8S3579C11__8S3579C10[] = {
  ABISELECT(32,16),
  ABISELECT(-40,-16),
  (VTBL_ENTRY)&(_ZTI8S3579C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S3579C6__8S3579C10[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C6[0]),
};
static  VTT_ENTRY vtt_S3579C10[] = {
  {&(_ZTV8S3579C10[6]),  6,35},
  {&(_tg__ZTV7S3579C5__8S3579C10[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__7S3579C5__8S3579C10[3]),  3,5},
  {&(_ZTV8S3579C10[17]),  17,35},
  {&(_ZTV8S3579C10[12]),  12,35},
  {&(_ZTV8S3579C10[25]),  25,35},
  {&(_ZTV8S3579C10[30]),  30,35},
  {&(_ZTV8S3579C10[35]),  35,35},
  {&(_tg__ZTV8S3579C11__8S3579C10[5]),  5,7},
  {&(_tg__ZTV7S3579C38S3579C11__8S3579C10[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__7S3579C38S3579C11__8S3579C10[3]),  3,5},
  {&(_tg__ZTV7S3579C3__8S3579C11__8S3579C10[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__A1__8S3579C11__8S3579C10[3]),  3,5},
  {&(_tg__ZTV7S3579C6__8S3579C11__8S3579C10[3]),  3,3},
  {&(_tg__ZTV7S3579C6__8S3579C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S3579C10[];
extern  VTBL_ENTRY _ZTV8S3579C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3579C10[];
static VTBL_ENTRY alt_thunk_names107[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C5D0Ev,_ZTv0_n12_N7S3579C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3579C5D0Ev,_ZThn4_N7S3579C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C5D1Ev,_ZTv0_n12_N7S3579C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3579C5D1Ev,_ZThn4_N7S3579C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3579C10D0Ev,_ZTv0_n24_N8S3579C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S3579C10D0Ev,_ZThn20_N8S3579C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3579C10D1Ev,_ZTv0_n24_N8S3579C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S3579C10D1Ev,_ZThn20_N8S3579C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3579C10D0Ev,_ZTv0_n12_N8S3579C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S3579C10D0Ev,_ZThn12_N8S3579C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3579C10D1Ev,_ZTv0_n12_N8S3579C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S3579C10D1Ev,_ZThn12_N8S3579C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3579C10 = {  "S3579C10", // class name
  bases_S3579C10, 13,
  &(vtc_S3579C10[0]), // expected_vtbl_contents
  &(vtt_S3579C10[0]), // expected_vtt_contents
  ABISELECT(128,56), // object size
  NSPAIRA(_ZTI8S3579C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S3579C10),35, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3579C10),15, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names107,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3579C13  : virtual S3579C10 {
  virtual  ~S3579C13(); // _ZN8S3579C13D2Ev
  virtual void  v2(); // _ZN8S3579C132v2Ev
  S3579C13(); // tgen
};
//SIG(-1 S3579C13) C1{ VBC2{ BC3{ m} BC4{ BC5{ vd m Fp}} VBC5 BC6{ VBC5 vd} VBC7{ BC5 BC8{ VBC5 vd} VBC9{ VBC3 FD} BC10{ BC3} BC3 vd} v2} vd v1}


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

static void Test_S3579C13()
{
  extern Class_Descriptor cd_S3579C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,15)];
    init_test(&cd_S3579C13, buf);
    S3579C13 *dp, &lv = *(dp=new (buf) S3579C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,56), "sizeof(S3579C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3579C13)");
    /*is_ambiguous_... S3579C10::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3579C10*), ABISELECT(8,4), "S3579C13");
    check_base_class_offset(lv, (S731C14_nt*)(S3579C9*)(S3579C10*), ABISELECT(8,4), "S3579C13");
    check_base_class_offset(lv, (S3579C9*)(S3579C10*), ABISELECT(8,4), "S3579C13");
    /*is_ambiguous_... S3579C10::S731C14_nt */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S3579C10*), ABISELECT(32,16), "S3579C13");
    check_base_class_offset(lv, (S731C14_nt*)(S3579C5*)(S3579C10*), ABISELECT(32,16), "S3579C13");
    check_base_class_offset(lv, (S731C14_nt*)(S3579C3*)(S3579C11*), ABISELECT(32,16), "S3579C13");
    check_base_class_offset(lv, (S3579C5*)(S3579C10*), ABISELECT(24,12), "S3579C13");
    /*is_ambiguous_... S3579C11::S731C14_nt */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S3579C11*), ABISELECT(48,24), "S3579C13");
    check_base_class_offset(lv, (S3579C3*)(S3579C11*), ABISELECT(64,32), "S3579C13");
    check_base_class_offset(lv, (S731C17_nt*)(S3579C6*), 0, "S3579C13");
    check_base_class_offset(lv, (S3579C6*)(S3579C11*), ABISELECT(80,40), "S3579C13");
    check_base_class_offset(lv, (S731C17_nt*)(S3579C12*)(S3579C11*), ABISELECT(48,24), "S3579C13");
    check_base_class_offset(lv, (S3579C12*)(S3579C11*), ABISELECT(48,24), "S3579C13");
    /*is_ambiguous_... S3579C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3579C11*), ABISELECT(72,36), "S3579C13");
    check_base_class_offset(lv, (S3579C11*)(S3579C10*), ABISELECT(48,24), "S3579C13");
    check_base_class_offset(lv, (S3579C10*), ABISELECT(8,4), "S3579C13");
    test_class_info(&lv, &cd_S3579C13);
    dp->~S3579C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3579C13(Test_S3579C13, "S3579C13", ABISELECT(112,56));

#else // __cplusplus

extern void _ZN8S3579C13C1Ev();
extern void _ZN8S3579C13D2Ev();
Name_Map name_map_S3579C13[] = {
  NSPAIR(_ZN8S3579C13C1Ev),
  NSPAIR(_ZN8S3579C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S3579C9;
extern VTBL_ENTRY _ZTI7S3579C9[];
extern  VTBL_ENTRY _ZTV7S3579C9[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S3579C5;
extern VTBL_ENTRY _ZTI7S3579C5[];
extern  VTBL_ENTRY _ZTV7S3579C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C5[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S3579C3;
extern VTBL_ENTRY _ZTI7S3579C3[];
extern  VTBL_ENTRY _ZTV7S3579C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3579C6;
extern VTBL_ENTRY _ZTI7S3579C6[];
extern  VTBL_ENTRY _ZTV7S3579C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C6[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3579C12;
extern VTBL_ENTRY _ZTI8S3579C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3579C11;
extern VTBL_ENTRY _ZTI8S3579C11[];
extern  VTBL_ENTRY _ZTV8S3579C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3579C11[];
extern Class_Descriptor cd_S3579C10;
extern VTBL_ENTRY _ZTI8S3579C10[];
extern  VTBL_ENTRY _ZTV8S3579C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3579C10[];
static Base_Class bases_S3579C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C14_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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_S3579C9,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S731C14_nt,    ABISELECT(32,16), //bcp->offset
    26, //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_S3579C5,    ABISELECT(24,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S731C14_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3579C3,    ABISELECT(64,32), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3579C6,    ABISELECT(80,40), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S731C17_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3579C12,    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
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3579C11,    ABISELECT(48,24), //bcp->offset
    31, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S3579C10,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3579C13[];
extern void _ZN8S3579C13D1Ev();
extern void _ZN8S3579C13D0Ev();
extern void _ZN8S3579C132v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S3579C13D1Ev,_ZTv0_n28_N8S3579C13D1Ev)();
extern void ABISELECT(_ZThn8_N8S3579C13D1Ev,_ZThn4_N8S3579C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3579C13D0Ev,_ZTv0_n28_N8S3579C13D0Ev)();
extern void ABISELECT(_ZThn8_N8S3579C13D0Ev,_ZThn4_N8S3579C13D0Ev)() __attribute__((weak));
extern void _ZN8S3579C102v1Ev();
extern void ABISELECT(_ZTvn16_n56_N8S3579C13D1Ev,_ZTvn8_n28_N8S3579C13D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S3579C13D0Ev,_ZTvn8_n28_N8S3579C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3579C13D1Ev,_ZTv0_n12_N8S3579C13D1Ev)();
extern void ABISELECT(_ZThn32_N8S3579C13D1Ev,_ZThn16_N8S3579C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3579C13D0Ev,_ZTv0_n12_N8S3579C13D0Ev)();
extern void ABISELECT(_ZThn32_N8S3579C13D0Ev,_ZThn16_N8S3579C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3579C13D1Ev,_ZTv0_n24_N8S3579C13D1Ev)();
extern void ABISELECT(_ZThn48_N8S3579C13D1Ev,_ZThn24_N8S3579C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3579C13D0Ev,_ZTv0_n24_N8S3579C13D0Ev)();
extern void ABISELECT(_ZThn48_N8S3579C13D0Ev,_ZThn24_N8S3579C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S3579C13D1Ev,_ZTvn8_n24_N8S3579C13D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S3579C13D0Ev,_ZTvn8_n24_N8S3579C13D0Ev)();
static  VTBL_ENTRY vtc_S3579C13[] = {
  0,
  ABISELECT(80,40),
  ABISELECT(48,24),
  ABISELECT(32,16),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S3579C13[0]),
  (VTBL_ENTRY)&_ZN8S3579C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3579C13D0Ev,
  (VTBL_ENTRY)&_ZN8S3579C132v2Ev,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(72,36),
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S3579C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3579C13D1Ev,_ZTv0_n28_N8S3579C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3579C13D0Ev,_ZTv0_n28_N8S3579C13D0Ev),
  (VTBL_ENTRY)&_ZN8S3579C102v1Ev,
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3579C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S3579C13D1Ev,_ZTvn8_n28_N8S3579C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S3579C13D0Ev,_ZTvn8_n28_N8S3579C13D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S3579C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C13D1Ev,_ZTv0_n12_N8S3579C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C13D0Ev,_ZTv0_n12_N8S3579C13D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S3579C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3579C13D1Ev,_ZTv0_n24_N8S3579C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3579C13D0Ev,_ZTv0_n24_N8S3579C13D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S3579C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S3579C13D1Ev,_ZTvn8_n24_N8S3579C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S3579C13D0Ev,_ZTvn8_n24_N8S3579C13D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S3579C13[0]),
};
extern VTBL_ENTRY _ZTV8S3579C13[];
extern void _ZN8S3579C10D1Ev();
extern void _ZN8S3579C10D0Ev();
extern void _ZN8S3579C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3579C10__8S3579C13[] = {
  ABISELECT(-8,-4),
  ABISELECT(72,36),
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&_ZN8S3579C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3579C10D0Ev,
  (VTBL_ENTRY)&_ZN8S3579C102v1Ev,
};
extern void _ZN7S3579C5D1Ev();
extern void _ZN7S3579C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3579C58S3579C10__8S3579C13[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C5[0]),
  (VTBL_ENTRY)&_ZN7S3579C5D1Ev,
  (VTBL_ENTRY)&_ZN7S3579C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3579C5D1Ev,_ZTv0_n12_N7S3579C5D1Ev)();
extern void ABISELECT(_ZThn8_N7S3579C5D1Ev,_ZThn4_N7S3579C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3579C5D0Ev,_ZTv0_n12_N7S3579C5D0Ev)();
extern void ABISELECT(_ZThn8_N7S3579C5D0Ev,_ZThn4_N7S3579C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__7S3579C58S3579C10__8S3579C13[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3579C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C5D1Ev,_ZTv0_n12_N7S3579C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C5D0Ev,_ZTv0_n12_N7S3579C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3579C10D1Ev,_ZTv0_n12_N8S3579C10D1Ev)();
extern void ABISELECT(_ZThn24_N8S3579C10D1Ev,_ZThn12_N8S3579C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3579C10D0Ev,_ZTv0_n12_N8S3579C10D0Ev)();
extern void ABISELECT(_ZThn24_N8S3579C10D0Ev,_ZThn12_N8S3579C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A1__8S3579C10__8S3579C13[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C10D1Ev,_ZTv0_n12_N8S3579C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C10D0Ev,_ZTv0_n12_N8S3579C10D0Ev),
};
extern void ABISELECT(_ZThn16_N8S3579C10D1Ev,_ZThn8_N8S3579C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S3579C10D0Ev,_ZThn8_N8S3579C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3579C5__8S3579C10__8S3579C13[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3579C10D1Ev,_ZThn8_N8S3579C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3579C10D0Ev,_ZThn8_N8S3579C10D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3579C10D1Ev,_ZTv0_n24_N8S3579C10D1Ev)();
extern void ABISELECT(_ZThn40_N8S3579C10D1Ev,_ZThn20_N8S3579C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3579C10D0Ev,_ZTv0_n24_N8S3579C10D0Ev)();
extern void ABISELECT(_ZThn40_N8S3579C10D0Ev,_ZThn20_N8S3579C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3579C11__8S3579C10__8S3579C13[] = {
  ABISELECT(-40,-20),
  ABISELECT(-48,-24),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3579C10D1Ev,_ZTv0_n24_N8S3579C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3579C10D0Ev,_ZTv0_n24_N8S3579C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N8S3579C10D1Ev,_ZTvn8_n24_N8S3579C10D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S3579C10D0Ev,_ZTvn8_n24_N8S3579C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3579C38S3579C11__8S3579C10__8S3579C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S3579C10D1Ev,_ZTvn8_n24_N8S3579C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S3579C10D0Ev,_ZTvn8_n24_N8S3579C10D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S3579C6__8S3579C10__8S3579C13[] = {
  ABISELECT(-80,-40),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
};
extern void _ZN8S3579C11D1Ev();
extern void _ZN8S3579C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3579C11__8S3579C13[] = {
  ABISELECT(-48,-24),
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S3579C11[0]),
  (VTBL_ENTRY)&_ZN8S3579C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3579C11D0Ev,
};
extern void _ZN7S3579C3D1Ev();
extern void _ZN7S3579C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3579C38S3579C11__8S3579C13[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C3[0]),
  (VTBL_ENTRY)&_ZN7S3579C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3579C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3579C3D1Ev,_ZTv0_n12_N7S3579C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3579C3D0Ev,_ZTv0_n12_N7S3579C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__7S3579C38S3579C11__8S3579C13[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S3579C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C3D1Ev,_ZTv0_n12_N7S3579C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C3D0Ev,_ZTv0_n12_N7S3579C3D0Ev),
};
extern void ABISELECT(_ZThn16_N8S3579C11D1Ev,_ZThn8_N8S3579C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S3579C11D0Ev,_ZThn8_N8S3579C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3579C3__8S3579C11__8S3579C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3579C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3579C11D1Ev,_ZThn8_N8S3579C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3579C11D0Ev,_ZThn8_N8S3579C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3579C11D1Ev,_ZTv0_n12_N8S3579C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3579C11D0Ev,_ZTv0_n12_N8S3579C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A1__8S3579C11__8S3579C13[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S3579C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C11D1Ev,_ZTv0_n12_N8S3579C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C11D0Ev,_ZTv0_n12_N8S3579C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S3579C6__8S3579C11__8S3579C13[] = {
  ABISELECT(-80,-40),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S3579C11[0]),
};
static  VTBL_ENTRY _tg__ZTV7S3579C6__8S3579C13[] = {
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C6[0]),
};
static  VTT_ENTRY vtt_S3579C13[] = {
  {&(_ZTV8S3579C13[7]),  7,47},
  {&(_ZTV8S3579C13[18]),  18,47},
  {&(_ZTV8S3579C13[29]),  29,47},
  {&(_ZTV8S3579C13[24]),  24,47},
  {&(_ZTV8S3579C13[37]),  37,47},
  {&(_ZTV8S3579C13[42]),  42,47},
  {&(_ZTV8S3579C13[47]),  47,47},
  {&(_tg__ZTV8S3579C10__8S3579C13[6]),  6,9},
  {&(_tg__ZTV7S3579C58S3579C10__8S3579C13[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__7S3579C58S3579C10__8S3579C13[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__A1__8S3579C10__8S3579C13[3]),  3,5},
  {&(_tg__ZTV7S3579C5__8S3579C10__8S3579C13[3]),  3,5},
  {&(_tg__ZTV8S3579C11__8S3579C10__8S3579C13[6]),  6,8},
  {&(_tg__ZTV7S3579C38S3579C11__8S3579C10__8S3579C13[3]),  3,5},
  {&(_tg__ZTV7S3579C6__8S3579C10__8S3579C13[3]),  3,3},
  {&(_tg__ZTV8S3579C11__8S3579C13[5]),  5,7},
  {&(_tg__ZTV7S3579C38S3579C11__8S3579C13[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__7S3579C38S3579C11__8S3579C13[3]),  3,5},
  {&(_tg__ZTV7S3579C3__8S3579C11__8S3579C13[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__A1__8S3579C11__8S3579C13[3]),  3,5},
  {&(_tg__ZTV7S3579C6__8S3579C11__8S3579C13[3]),  3,3},
  {&(_tg__ZTV7S3579C6__8S3579C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S3579C13[];
extern  VTBL_ENTRY _ZTV8S3579C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3579C13[];
static VTBL_ENTRY alt_thunk_names108[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3579C10D0Ev,_ZTv0_n24_N8S3579C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S3579C10D0Ev,_ZThn20_N8S3579C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3579C10D1Ev,_ZTv0_n24_N8S3579C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S3579C10D1Ev,_ZThn20_N8S3579C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3579C10D0Ev,_ZTv0_n12_N8S3579C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S3579C10D0Ev,_ZThn12_N8S3579C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3579C10D1Ev,_ZTv0_n12_N8S3579C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S3579C10D1Ev,_ZThn12_N8S3579C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C5D0Ev,_ZTv0_n12_N7S3579C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3579C5D0Ev,_ZThn4_N7S3579C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C5D1Ev,_ZTv0_n12_N7S3579C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3579C5D1Ev,_ZThn4_N7S3579C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3579C13D0Ev,_ZTv0_n24_N8S3579C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S3579C13D0Ev,_ZThn24_N8S3579C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3579C13D1Ev,_ZTv0_n24_N8S3579C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S3579C13D1Ev,_ZThn24_N8S3579C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3579C13D0Ev,_ZTv0_n12_N8S3579C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S3579C13D0Ev,_ZThn16_N8S3579C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3579C13D1Ev,_ZTv0_n12_N8S3579C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S3579C13D1Ev,_ZThn16_N8S3579C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3579C13D0Ev,_ZTv0_n28_N8S3579C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S3579C13D0Ev,_ZThn4_N8S3579C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3579C13D1Ev,_ZTv0_n28_N8S3579C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S3579C13D1Ev,_ZThn4_N8S3579C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3579C13 = {  "S3579C13", // class name
  bases_S3579C13, 14,
  &(vtc_S3579C13[0]), // expected_vtbl_contents
  &(vtt_S3579C13[0]), // expected_vtt_contents
  ABISELECT(112,56), // object size
  NSPAIRA(_ZTI8S3579C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S3579C13),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3579C13),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names108,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3579C8  : virtual S3579C9 , virtual S3579C6 , S3579C10 , virtual S3579C13 {
  virtual  ~S3579C8(); // _ZN7S3579C8D2Ev
  S3579C8(); // tgen
};
//SIG(-1 S3579C8) C1{ VBC2{ BC3{ vd m Fp}} VBC4{ VBC5{ m} FD} BC6{ BC5 BC2 VBC3 BC7{ VBC3 vd} VBC8{ BC3 BC9{ VBC3 vd} VBC4 BC10{ BC5} BC5 vd} v1} VBC11{ VBC6 vd v2} vd}


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

static void Test_S3579C8()
{
  extern Class_Descriptor cd_S3579C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,20)];
    init_test(&cd_S3579C8, buf);
    S3579C8 *dp, &lv = *(dp=new (buf) S3579C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,76), "sizeof(S3579C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3579C8)");
    /*is_ambiguous_... S3579C8::S3579C9 */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S3579C9*), ABISELECT(24,12), "S3579C8");
    /*is_ambiguous_... S3579C8::S3579C9 */ AMB_check_base_class_offset(lv, (S3579C9*), ABISELECT(24,12), "S3579C8");
    check_base_class_offset(lv, (S731C17_nt*)(S3579C6*), ABISELECT(80,36), "S3579C8");
    check_base_class_offset(lv, (S3579C6*), ABISELECT(48,20), "S3579C8");
    check_base_class_offset(lv, (S3579C6*)(S3579C11*), ABISELECT(48,20), "S3579C8");
    /*is_ambiguous_... S3579C8::S3579C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3579C10*), 0, "S3579C8");
    /*is_ambiguous_... S3579C8::S3579C10 */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S3579C9*)(S3579C10*), 0, "S3579C8");
    /*is_ambiguous_... S3579C8::S3579C10 */ AMB_check_base_class_offset(lv, (S3579C9*)(S3579C10*), 0, "S3579C8");
    /*is_ambiguous_... S3579C8::S3579C10 */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S3579C10*), ABISELECT(80,36), "S3579C8");
    /*is_ambiguous_... S3579C8::S3579C10 */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S3579C5*)(S3579C10*), ABISELECT(80,36), "S3579C8");
    check_base_class_offset(lv, (S731C14_nt*)(S3579C3*)(S3579C11*), ABISELECT(80,36), "S3579C8");
    /*is_ambiguous_... S3579C8::S3579C10 */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S3579C10*), ABISELECT(80,36), "S3579C8");
    /*is_ambiguous_... S3579C8::S3579C10 */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S3579C5*)(S3579C10*), ABISELECT(80,36), "S3579C8");
    /*is_ambiguous_... S3579C8::S3579C10 */ AMB_check_base_class_offset(lv, (S3579C5*)(S3579C10*), ABISELECT(16,8), "S3579C8");
    /*is_ambiguous_... S3579C11::S731C14_nt */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S3579C11*), ABISELECT(96,44), "S3579C8");
    check_base_class_offset(lv, (S3579C3*)(S3579C11*), ABISELECT(112,52), "S3579C8");
    check_base_class_offset(lv, (S731C17_nt*)(S3579C12*)(S3579C11*), ABISELECT(96,44), "S3579C8");
    check_base_class_offset(lv, (S3579C12*)(S3579C11*), ABISELECT(96,44), "S3579C8");
    /*is_ambiguous_... S3579C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3579C11*), ABISELECT(120,56), "S3579C8");
    /*is_ambiguous_... S3579C8::S3579C10 */ AMB_check_base_class_offset(lv, (S3579C11*)(S3579C10*), ABISELECT(96,44), "S3579C8");
    /*is_ambiguous_... S3579C8::S3579C10 */ AMB_check_base_class_offset(lv, (S3579C11*)(S3579C10*), ABISELECT(96,44), "S3579C8");
    /*is_ambiguous_... S3579C8::S3579C10 */ AMB_check_base_class_offset(lv, (S3579C10*), 0, "S3579C8");
    /*is_ambiguous_... S3579C8::S3579C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3579C10*), ABISELECT(136,64), "S3579C8");
    /*is_ambiguous_... S3579C8::S3579C10 */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S3579C9*)(S3579C10*), ABISELECT(136,64), "S3579C8");
    /*is_ambiguous_... S3579C8::S3579C10 */ AMB_check_base_class_offset(lv, (S3579C9*)(S3579C10*), ABISELECT(136,64), "S3579C8");
    /*is_ambiguous_... S3579C8::S3579C10 */ AMB_check_base_class_offset(lv, (S3579C5*)(S3579C10*), ABISELECT(152,72), "S3579C8");
    check_base_class_offset(lv, (S3579C10*)(S3579C13*), ABISELECT(136,64), "S3579C8");
    check_base_class_offset(lv, (S3579C13*), ABISELECT(128,60), "S3579C8");
    test_class_info(&lv, &cd_S3579C8);
    dp->~S3579C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3579C8(Test_S3579C8, "S3579C8", ABISELECT(160,76));

#else // __cplusplus

extern void _ZN7S3579C8C1Ev();
extern void _ZN7S3579C8D2Ev();
Name_Map name_map_S3579C8[] = {
  NSPAIR(_ZN7S3579C8C1Ev),
  NSPAIR(_ZN7S3579C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S3579C9;
extern VTBL_ENTRY _ZTI7S3579C9[];
extern  VTBL_ENTRY _ZTV7S3579C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3579C6;
extern VTBL_ENTRY _ZTI7S3579C6[];
extern  VTBL_ENTRY _ZTV7S3579C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C6[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S3579C9;
extern VTBL_ENTRY _ZTI7S3579C9[];
extern  VTBL_ENTRY _ZTV7S3579C9[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S3579C5;
extern VTBL_ENTRY _ZTI7S3579C5[];
extern  VTBL_ENTRY _ZTV7S3579C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C5[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S3579C3;
extern VTBL_ENTRY _ZTI7S3579C3[];
extern  VTBL_ENTRY _ZTV7S3579C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3579C12;
extern VTBL_ENTRY _ZTI8S3579C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3579C11;
extern VTBL_ENTRY _ZTI8S3579C11[];
extern  VTBL_ENTRY _ZTV8S3579C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3579C11[];
extern Class_Descriptor cd_S3579C10;
extern VTBL_ENTRY _ZTI8S3579C10[];
extern  VTBL_ENTRY _ZTV8S3579C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3579C10[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S3579C9;
extern VTBL_ENTRY _ZTI7S3579C9[];
extern  VTBL_ENTRY _ZTV7S3579C9[];
extern Class_Descriptor cd_S3579C5;
extern VTBL_ENTRY _ZTI7S3579C5[];
extern  VTBL_ENTRY _ZTV7S3579C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C5[];
extern Class_Descriptor cd_S3579C10;
extern VTBL_ENTRY _ZTI8S3579C10[];
extern  VTBL_ENTRY _ZTV8S3579C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3579C10[];
extern Class_Descriptor cd_S3579C13;
extern VTBL_ENTRY _ZTI8S3579C13[];
extern  VTBL_ENTRY _ZTV8S3579C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3579C13[];
static Base_Class bases_S3579C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C14_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3579C9,    ABISELECT(24,12), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    ABISELECT(80,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3579C6,    ABISELECT(48,20), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S731C14_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3579C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C14_nt,    ABISELECT(80,36), //bcp->offset
    25, //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
    4, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3579C5,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S731C14_nt,    ABISELECT(96,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S3579C3,    ABISELECT(112,52), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(96,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3579C12,    ABISELECT(96,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(120,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_S3579C11,    ABISELECT(96,44), //bcp->offset
    30, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S3579C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    ABISELECT(136,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_S731C14_nt,    ABISELECT(136,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
    8, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3579C9,    ABISELECT(136,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
    9, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3579C5,    ABISELECT(152,72), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3579C10,    ABISELECT(136,64), //bcp->offset
    55, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S3579C13,    ABISELECT(128,60), //bcp->offset
    43, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3579C8[];
extern void _ZN7S3579C8D1Ev();
extern void _ZN7S3579C8D0Ev();
extern void _ZN8S3579C102v1Ev();
extern void ABISELECT(_ZThn16_N7S3579C8D1Ev,_ZThn8_N7S3579C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S3579C8D0Ev,_ZThn8_N7S3579C8D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3579C8D1Ev,_ZTv0_n12_N7S3579C8D1Ev)();
extern void ABISELECT(_ZThn24_N7S3579C8D1Ev,_ZThn12_N7S3579C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3579C8D0Ev,_ZTv0_n12_N7S3579C8D0Ev)();
extern void ABISELECT(_ZThn24_N7S3579C8D0Ev,_ZThn12_N7S3579C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3579C8D1Ev,_ZTv0_n12_N7S3579C8D1Ev)();
extern void ABISELECT(_ZThn80_N7S3579C8D1Ev,_ZThn36_N7S3579C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3579C8D0Ev,_ZTv0_n12_N7S3579C8D0Ev)();
extern void ABISELECT(_ZThn80_N7S3579C8D0Ev,_ZThn36_N7S3579C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3579C8D1Ev,_ZTv0_n24_N7S3579C8D1Ev)();
extern void ABISELECT(_ZThn96_N7S3579C8D1Ev,_ZThn44_N7S3579C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3579C8D0Ev,_ZTv0_n24_N7S3579C8D0Ev)();
extern void ABISELECT(_ZThn96_N7S3579C8D0Ev,_ZThn44_N7S3579C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N7S3579C8D1Ev,_ZTvn8_n24_N7S3579C8D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S3579C8D0Ev,_ZTvn8_n24_N7S3579C8D0Ev)();
extern void ABISELECT(_ZTv0_n64_N7S3579C8D1Ev,_ZTv0_n32_N7S3579C8D1Ev)();
extern void ABISELECT(_ZThn128_N7S3579C8D1Ev,_ZThn60_N7S3579C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S3579C8D0Ev,_ZTv0_n32_N7S3579C8D0Ev)();
extern void ABISELECT(_ZThn128_N7S3579C8D0Ev,_ZThn60_N7S3579C8D0Ev)() __attribute__((weak));
extern void _ZN8S3579C132v2Ev();
extern void ABISELECT(_ZTv0_n56_N7S3579C8D1Ev,_ZTv0_n28_N7S3579C8D1Ev)();
extern void ABISELECT(_ZThn136_N7S3579C8D1Ev,_ZThn64_N7S3579C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3579C8D0Ev,_ZTv0_n28_N7S3579C8D0Ev)();
extern void ABISELECT(_ZThn136_N7S3579C8D0Ev,_ZThn64_N7S3579C8D0Ev)() __attribute__((weak));
extern void _ZN8S3579C102v1Ev();
extern void ABISELECT(_ZTvn16_n56_N7S3579C8D1Ev,_ZTvn8_n28_N7S3579C8D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N7S3579C8D0Ev,_ZTvn8_n28_N7S3579C8D0Ev)();
static  VTBL_ENTRY vtc_S3579C8[] = {
  ABISELECT(136,64),
  ABISELECT(128,60),
  ABISELECT(24,12),
  ABISELECT(80,36),
  ABISELECT(48,20),
  ABISELECT(96,44),
  ABISELECT(80,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C8[0]),
  (VTBL_ENTRY)&_ZN7S3579C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3579C8D0Ev,
  (VTBL_ENTRY)&_ZN8S3579C102v1Ev,
  ABISELECT(64,28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3579C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S3579C8D1Ev,_ZThn8_N7S3579C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S3579C8D0Ev,_ZThn8_N7S3579C8D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S3579C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C8D1Ev,_ZTv0_n12_N7S3579C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C8D0Ev,_ZTv0_n12_N7S3579C8D0Ev),
  ABISELECT(32,16),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI7S3579C8[0]),
  ABISELECT(-80,-36),
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI7S3579C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C8D1Ev,_ZTv0_n12_N7S3579C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C8D0Ev,_ZTv0_n12_N7S3579C8D0Ev),
  ABISELECT(-96,-44),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI7S3579C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3579C8D1Ev,_ZTv0_n24_N7S3579C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3579C8D0Ev,_ZTv0_n24_N7S3579C8D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-112,-52),
  (VTBL_ENTRY)&(_ZTI7S3579C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S3579C8D1Ev,_ZTvn8_n24_N7S3579C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S3579C8D0Ev,_ZTvn8_n24_N7S3579C8D0Ev),
  0,
  ABISELECT(-128,-60),
  ABISELECT(-48,-24),
  ABISELECT(-80,-40),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(8,4),
  ABISELECT(-128,-60),
  (VTBL_ENTRY)&(_ZTI7S3579C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3579C8D1Ev,_ZTv0_n32_N7S3579C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3579C8D0Ev,_ZTv0_n32_N7S3579C8D0Ev),
  (VTBL_ENTRY)&_ZN8S3579C132v2Ev,
  0,
  ABISELECT(-136,-64),
  ABISELECT(-56,-28),
  ABISELECT(-88,-44),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-136,-64),
  (VTBL_ENTRY)&(_ZTI7S3579C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3579C8D1Ev,_ZTv0_n28_N7S3579C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3579C8D0Ev,_ZTv0_n28_N7S3579C8D0Ev),
  (VTBL_ENTRY)&_ZN8S3579C102v1Ev,
  ABISELECT(-72,-36),
  ABISELECT(-152,-72),
  (VTBL_ENTRY)&(_ZTI7S3579C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N7S3579C8D1Ev,_ZTvn8_n28_N7S3579C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N7S3579C8D0Ev,_ZTvn8_n28_N7S3579C8D0Ev),
};
extern VTBL_ENTRY _ZTV7S3579C8[];
extern void _ZN8S3579C10D1Ev();
extern void _ZN8S3579C10D0Ev();
extern void _ZN8S3579C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3579C10__A__7S3579C8[] = {
  ABISELECT(80,36),
  ABISELECT(48,20),
  ABISELECT(96,44),
  ABISELECT(80,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&_ZN8S3579C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3579C10D0Ev,
  (VTBL_ENTRY)&_ZN8S3579C102v1Ev,
};
extern void _ZN7S3579C5D1Ev();
extern void _ZN7S3579C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3579C58S3579C10__7S3579C8[] = {
  ABISELECT(64,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C5[0]),
  (VTBL_ENTRY)&_ZN7S3579C5D1Ev,
  (VTBL_ENTRY)&_ZN7S3579C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3579C5D1Ev,_ZTv0_n12_N7S3579C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S3579C5D1Ev,_ZThn28_N7S3579C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3579C5D0Ev,_ZTv0_n12_N7S3579C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S3579C5D0Ev,_ZThn28_N7S3579C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__7S3579C58S3579C10__7S3579C8[] = {
  ABISELECT(-64,-28),
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI7S3579C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C5D1Ev,_ZTv0_n12_N7S3579C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C5D0Ev,_ZTv0_n12_N7S3579C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3579C10D1Ev,_ZTv0_n12_N8S3579C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S3579C10D1Ev,_ZThn36_N8S3579C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3579C10D0Ev,_ZTv0_n12_N8S3579C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S3579C10D0Ev,_ZThn36_N8S3579C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A1__8S3579C10__A__7S3579C8[] = {
  ABISELECT(-80,-36),
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C10D1Ev,_ZTv0_n12_N8S3579C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C10D0Ev,_ZTv0_n12_N8S3579C10D0Ev),
};
extern void ABISELECT(_ZThn16_N8S3579C10D1Ev,_ZThn8_N8S3579C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S3579C10D0Ev,_ZThn8_N8S3579C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3579C5__8S3579C10__A__7S3579C8[] = {
  ABISELECT(64,28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3579C10D1Ev,_ZThn8_N8S3579C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3579C10D0Ev,_ZThn8_N8S3579C10D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3579C10D1Ev,_ZTv0_n24_N8S3579C10D1Ev)();
extern void ABISELECT(_ZThn96_N8S3579C10D1Ev,_ZThn44_N8S3579C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3579C10D0Ev,_ZTv0_n24_N8S3579C10D0Ev)();
extern void ABISELECT(_ZThn96_N8S3579C10D0Ev,_ZThn44_N8S3579C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3579C11__8S3579C10__A__7S3579C8[] = {
  ABISELECT(-96,-44),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3579C10D1Ev,_ZTv0_n24_N8S3579C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3579C10D0Ev,_ZTv0_n24_N8S3579C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N8S3579C10D1Ev,_ZTvn8_n24_N8S3579C10D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S3579C10D0Ev,_ZTvn8_n24_N8S3579C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3579C38S3579C11__8S3579C10__A__7S3579C8[] = {
  ABISELECT(-32,-16),
  ABISELECT(-112,-52),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S3579C10D1Ev,_ZTvn8_n24_N8S3579C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S3579C10D0Ev,_ZTvn8_n24_N8S3579C10D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S3579C6__8S3579C10__A__7S3579C8[] = {
  ABISELECT(32,16),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S3579C6__7S3579C8[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C6[0]),
};
extern void _ZN8S3579C11D1Ev();
extern void _ZN8S3579C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3579C11__7S3579C8[] = {
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S3579C11[0]),
  (VTBL_ENTRY)&_ZN8S3579C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3579C11D0Ev,
};
extern void _ZN7S3579C3D1Ev();
extern void _ZN7S3579C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3579C38S3579C11__7S3579C8[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C3[0]),
  (VTBL_ENTRY)&_ZN7S3579C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3579C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3579C3D1Ev,_ZTv0_n12_N7S3579C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3579C3D0Ev,_ZTv0_n12_N7S3579C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__7S3579C38S3579C11__7S3579C8[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S3579C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C3D1Ev,_ZTv0_n12_N7S3579C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C3D0Ev,_ZTv0_n12_N7S3579C3D0Ev),
};
extern void ABISELECT(_ZThn16_N8S3579C11D1Ev,_ZThn8_N8S3579C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S3579C11D0Ev,_ZThn8_N8S3579C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3579C3__8S3579C11__7S3579C8[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3579C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3579C11D1Ev,_ZThn8_N8S3579C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3579C11D0Ev,_ZThn8_N8S3579C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3579C11D1Ev,_ZTv0_n12_N8S3579C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3579C11D0Ev,_ZTv0_n12_N8S3579C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A1__8S3579C11__7S3579C8[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S3579C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C11D1Ev,_ZTv0_n12_N8S3579C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C11D0Ev,_ZTv0_n12_N8S3579C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S3579C6__8S3579C11__7S3579C8[] = {
  ABISELECT(32,16),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S3579C11[0]),
};
extern void _ZN8S3579C13D1Ev();
extern void _ZN8S3579C13D0Ev();
extern void _ZN8S3579C132v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3579C13__7S3579C8[] = {
  ABISELECT(-48,-24),
  ABISELECT(-80,-40),
  ABISELECT(-32,-16),
  ABISELECT(-48,-24),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S3579C13[0]),
  (VTBL_ENTRY)&_ZN8S3579C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3579C13D0Ev,
  (VTBL_ENTRY)&_ZN8S3579C132v2Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S3579C13D1Ev,_ZTv0_n28_N8S3579C13D1Ev)();
extern void ABISELECT(_ZThn8_N8S3579C13D1Ev,_ZThn4_N8S3579C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3579C13D0Ev,_ZTv0_n28_N8S3579C13D0Ev)();
extern void ABISELECT(_ZThn8_N8S3579C13D0Ev,_ZThn4_N8S3579C13D0Ev)() __attribute__((weak));
extern void _ZN8S3579C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3579C10__8S3579C13__7S3579C8[] = {
  0,
  ABISELECT(-8,-4),
  ABISELECT(-56,-28),
  ABISELECT(-88,-44),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S3579C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3579C13D1Ev,_ZTv0_n28_N8S3579C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3579C13D0Ev,_ZTv0_n28_N8S3579C13D0Ev),
  (VTBL_ENTRY)&_ZN8S3579C102v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3579C13D1Ev,_ZTv0_n12_N8S3579C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3579C13D0Ev,_ZTv0_n12_N8S3579C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A1__8S3579C13__7S3579C8[] = {
  ABISELECT(48,24),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S3579C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C13D1Ev,_ZTv0_n12_N8S3579C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C13D0Ev,_ZTv0_n12_N8S3579C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N8S3579C13D1Ev,_ZTvn8_n28_N8S3579C13D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S3579C13D0Ev,_ZTvn8_n28_N8S3579C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3579C58S3579C10__8S3579C13__7S3579C8[] = {
  ABISELECT(-72,-36),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3579C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S3579C13D1Ev,_ZTvn8_n28_N8S3579C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S3579C13D0Ev,_ZTvn8_n28_N8S3579C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3579C13D1Ev,_ZTv0_n24_N8S3579C13D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3579C13D0Ev,_ZTv0_n24_N8S3579C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3579C11__8S3579C13__7S3579C8[] = {
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S3579C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3579C13D1Ev,_ZTv0_n24_N8S3579C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3579C13D0Ev,_ZTv0_n24_N8S3579C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N8S3579C13D1Ev,_ZTvn8_n24_N8S3579C13D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S3579C13D0Ev,_ZTvn8_n24_N8S3579C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3579C38S3579C11__8S3579C13__7S3579C8[] = {
  ABISELECT(-32,-16),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S3579C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S3579C13D1Ev,_ZTvn8_n24_N8S3579C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S3579C13D0Ev,_ZTvn8_n24_N8S3579C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S3579C6__8S3579C13__7S3579C8[] = {
  ABISELECT(32,16),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S3579C13[0]),
};
extern void _ZN8S3579C10D1Ev();
extern void _ZN8S3579C10D0Ev();
extern void _ZN8S3579C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3579C10__A1__7S3579C8[] = {
  ABISELECT(-56,-28),
  ABISELECT(-88,-44),
  ABISELECT(-40,-20),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&_ZN8S3579C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3579C10D0Ev,
  (VTBL_ENTRY)&_ZN8S3579C102v1Ev,
};
extern void _ZN7S3579C5D1Ev();
extern void _ZN7S3579C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3579C58S3579C10__A1__7S3579C8[] = {
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C5[0]),
  (VTBL_ENTRY)&_ZN7S3579C5D1Ev,
  (VTBL_ENTRY)&_ZN7S3579C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3579C5D1Ev,_ZTv0_n12_N7S3579C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3579C5D0Ev,_ZTv0_n12_N7S3579C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__7S3579C58S3579C10__A1__7S3579C8[] = {
  ABISELECT(72,36),
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S3579C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C5D1Ev,_ZTv0_n12_N7S3579C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C5D0Ev,_ZTv0_n12_N7S3579C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3579C10D1Ev,_ZTv0_n12_N8S3579C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3579C10D0Ev,_ZTv0_n12_N8S3579C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A1__8S3579C10__A1__7S3579C8[] = {
  ABISELECT(56,28),
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C10D1Ev,_ZTv0_n12_N8S3579C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C10D0Ev,_ZTv0_n12_N8S3579C10D0Ev),
};
extern void ABISELECT(_ZThn16_N8S3579C10D1Ev,_ZThn8_N8S3579C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S3579C10D0Ev,_ZThn8_N8S3579C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3579C5__8S3579C10__A1__7S3579C8[] = {
  ABISELECT(-72,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3579C10D1Ev,_ZThn8_N8S3579C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3579C10D0Ev,_ZThn8_N8S3579C10D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3579C10D1Ev,_ZTv0_n24_N8S3579C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3579C10D0Ev,_ZTv0_n24_N8S3579C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3579C11__8S3579C10__A1__7S3579C8[] = {
  ABISELECT(40,20),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-16,-8),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3579C10D1Ev,_ZTv0_n24_N8S3579C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3579C10D0Ev,_ZTv0_n24_N8S3579C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N8S3579C10D1Ev,_ZTvn8_n24_N8S3579C10D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S3579C10D0Ev,_ZTvn8_n24_N8S3579C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3579C38S3579C11__8S3579C10__A1__7S3579C8[] = {
  ABISELECT(-32,-16),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S3579C10D1Ev,_ZTvn8_n24_N8S3579C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S3579C10D0Ev,_ZTvn8_n24_N8S3579C10D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S3579C6__8S3579C10__A1__7S3579C8[] = {
  ABISELECT(32,16),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
};
static  VTT_ENTRY vtt_S3579C8[] = {
  {&(_ZTV7S3579C8[9]),  9,71},
  {&(_tg__ZTV8S3579C10__A__7S3579C8[6]),  6,9},
  {&(_tg__ZTV7S3579C58S3579C10__7S3579C8[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__7S3579C58S3579C10__7S3579C8[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__A1__8S3579C10__A__7S3579C8[3]),  3,5},
  {&(_tg__ZTV7S3579C5__8S3579C10__A__7S3579C8[3]),  3,5},
  {&(_tg__ZTV8S3579C11__8S3579C10__A__7S3579C8[6]),  6,8},
  {&(_tg__ZTV7S3579C38S3579C11__8S3579C10__A__7S3579C8[3]),  3,5},
  {&(_tg__ZTV7S3579C6__8S3579C10__A__7S3579C8[3]),  3,3},
  {&(_ZTV7S3579C8[20]),  20,71},
  {&(_ZTV7S3579C8[25]),  25,71},
  {&(_ZTV7S3579C8[28]),  28,71},
  {&(_ZTV7S3579C8[15]),  15,71},
  {&(_ZTV7S3579C8[36]),  36,71},
  {&(_ZTV7S3579C8[41]),  41,71},
  {&(_ZTV7S3579C8[52]),  52,71},
  {&(_ZTV7S3579C8[63]),  63,71},
  {&(_ZTV7S3579C8[69]),  69,71},
  {&(_tg__ZTV7S3579C6__7S3579C8[3]),  3,3},
  {&(_tg__ZTV8S3579C11__7S3579C8[5]),  5,7},
  {&(_tg__ZTV7S3579C38S3579C11__7S3579C8[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__7S3579C38S3579C11__7S3579C8[3]),  3,5},
  {&(_tg__ZTV7S3579C3__8S3579C11__7S3579C8[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__A1__8S3579C11__7S3579C8[3]),  3,5},
  {&(_tg__ZTV7S3579C6__8S3579C11__7S3579C8[3]),  3,3},
  {&(_tg__ZTV8S3579C13__7S3579C8[7]),  7,10},
  {&(_tg__ZTV8S3579C10__8S3579C13__7S3579C8[8]),  8,11},
  {&(_tg__ZTV10S731C14_nt__A1__8S3579C13__7S3579C8[3]),  3,5},
  {&(_tg__ZTV7S3579C58S3579C10__8S3579C13__7S3579C8[3]),  3,5},
  {&(_tg__ZTV8S3579C11__8S3579C13__7S3579C8[6]),  6,8},
  {&(_tg__ZTV7S3579C38S3579C11__8S3579C13__7S3579C8[3]),  3,5},
  {&(_tg__ZTV7S3579C6__8S3579C13__7S3579C8[3]),  3,3},
  {&(_tg__ZTV8S3579C10__A1__7S3579C8[6]),  6,9},
  {&(_tg__ZTV7S3579C58S3579C10__A1__7S3579C8[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__7S3579C58S3579C10__A1__7S3579C8[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__A1__8S3579C10__A1__7S3579C8[3]),  3,5},
  {&(_tg__ZTV7S3579C5__8S3579C10__A1__7S3579C8[3]),  3,5},
  {&(_tg__ZTV8S3579C11__8S3579C10__A1__7S3579C8[6]),  6,8},
  {&(_tg__ZTV7S3579C38S3579C11__8S3579C10__A1__7S3579C8[3]),  3,5},
  {&(_tg__ZTV7S3579C6__8S3579C10__A1__7S3579C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S3579C8[];
extern  VTBL_ENTRY _ZTV7S3579C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C8[];
static VTBL_ENTRY alt_thunk_names109[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3579C13D0Ev,_ZTv0_n28_N8S3579C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S3579C13D0Ev,_ZThn4_N8S3579C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3579C13D1Ev,_ZTv0_n28_N8S3579C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S3579C13D1Ev,_ZThn4_N8S3579C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3579C10D0Ev,_ZTv0_n24_N8S3579C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3579C10D0Ev,_ZThn44_N8S3579C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3579C10D1Ev,_ZTv0_n24_N8S3579C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3579C10D1Ev,_ZThn44_N8S3579C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3579C10D0Ev,_ZTv0_n12_N8S3579C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S3579C10D0Ev,_ZThn36_N8S3579C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3579C10D1Ev,_ZTv0_n12_N8S3579C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S3579C10D1Ev,_ZThn36_N8S3579C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C5D0Ev,_ZTv0_n12_N7S3579C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S3579C5D0Ev,_ZThn28_N7S3579C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C5D1Ev,_ZTv0_n12_N7S3579C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S3579C5D1Ev,_ZThn28_N7S3579C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3579C8D0Ev,_ZTv0_n28_N7S3579C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S3579C8D0Ev,_ZThn64_N7S3579C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3579C8D1Ev,_ZTv0_n28_N7S3579C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S3579C8D1Ev,_ZThn64_N7S3579C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3579C8D0Ev,_ZTv0_n32_N7S3579C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S3579C8D0Ev,_ZThn60_N7S3579C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3579C8D1Ev,_ZTv0_n32_N7S3579C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S3579C8D1Ev,_ZThn60_N7S3579C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3579C8D0Ev,_ZTv0_n24_N7S3579C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3579C8D0Ev,_ZThn44_N7S3579C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3579C8D1Ev,_ZTv0_n24_N7S3579C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3579C8D1Ev,_ZThn44_N7S3579C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C8D0Ev,_ZTv0_n12_N7S3579C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3579C8D0Ev,_ZThn36_N7S3579C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S3579C8D0Ev,_ZThn12_N7S3579C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C8D1Ev,_ZTv0_n12_N7S3579C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3579C8D1Ev,_ZThn36_N7S3579C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S3579C8D1Ev,_ZThn12_N7S3579C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3579C8 = {  "S3579C8", // class name
  bases_S3579C8, 22,
  &(vtc_S3579C8[0]), // expected_vtbl_contents
  &(vtt_S3579C8[0]), // expected_vtt_contents
  ABISELECT(160,76), // object size
  NSPAIRA(_ZTI7S3579C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S3579C8),71, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3579C8),40, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names109,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3579C1  : S3579C2 , virtual S3579C6 , S3579C8 {
  long double s3579c1f0;
  virtual  ~S3579C1(); // _ZN7S3579C1D2Ev
  S3579C1(); // tgen
};
//SIG(1 S3579C1) C1{ BC2{ BC3{ VBC4{ vd m Fp} vd} VBC5{ VBC4 vd} vd Fi[6]} VBC6{ VBC7{ m} FD} BC8{ VBC9{ BC4} VBC6 BC10{ BC7 BC9 VBC4 BC5 VBC11{ BC4 BC3 VBC6 BC12{ BC7} BC7 vd} v1} VBC13{ VBC10 vd v2} vd} vd FD}


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

static void Test_S3579C1()
{
  extern Class_Descriptor cd_S3579C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,31)];
    init_test(&cd_S3579C1, buf);
    S3579C1 *dp, &lv = *(dp=new (buf) S3579C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,120), "sizeof(S3579C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3579C1)");
    check_base_class_offset(lv, (S731C14_nt*)(S3579C3*)(S3579C2*), ABISELECT(80,52), "S3579C1");
    /*is_ambiguous_... S3579C1::S3579C5 */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S3579C5*), ABISELECT(80,52), "S3579C1");
    /*is_ambiguous_... S3579C8::S3579C10 */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S3579C10*)(S3579C8*), ABISELECT(80,52), "S3579C1");
    /*is_ambiguous_... S3579C8::S3579C10 */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S3579C5*)(S3579C10*)(S3579C8*), ABISELECT(80,52), "S3579C1");
    check_base_class_offset(lv, (S731C14_nt*)(S3579C3*)(S3579C11*), ABISELECT(80,52), "S3579C1");
    /*is_ambiguous_... S3579C1::S3579C10 */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S3579C10*), ABISELECT(80,52), "S3579C1");
    /*is_ambiguous_... S3579C1::S3579C10 */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S3579C5*)(S3579C10*), ABISELECT(80,52), "S3579C1");
    check_base_class_offset(lv, (S3579C3*)(S3579C2*), 0, "S3579C1");
    check_base_class_offset(lv, (S3579C5*)(S3579C2*), ABISELECT(96,60), "S3579C1");
    check_base_class_offset(lv, (S3579C2*), 0, "S3579C1");
    check_base_class_offset(lv, (S731C17_nt*)(S3579C6*), 0, "S3579C1");
    check_base_class_offset(lv, (S3579C6*), ABISELECT(112,64), "S3579C1");
    check_base_class_offset(lv, (S3579C6*)(S3579C8*), ABISELECT(112,64), "S3579C1");
    check_base_class_offset(lv, (S3579C6*)(S3579C11*), ABISELECT(112,64), "S3579C1");
    /*is_ambiguous_... S3579C1::S3579C9 */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S3579C9*), ABISELECT(144,80), "S3579C1");
    /*is_ambiguous_... S3579C8::S3579C9 */ AMB_check_base_class_offset(lv, (S3579C9*)(S3579C8*), ABISELECT(144,80), "S3579C1");
    /*is_ambiguous_... S3579C8::S3579C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3579C10*)(S3579C8*), ABISELECT(32,28), "S3579C1");
    /*is_ambiguous_... S3579C8::S3579C10 */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S3579C9*)(S3579C10*)(S3579C8*), ABISELECT(32,28), "S3579C1");
    /*is_ambiguous_... S3579C8::S3579C10 */ AMB_check_base_class_offset(lv, (S3579C9*)(S3579C10*)(S3579C8*), ABISELECT(32,28), "S3579C1");
    /*is_ambiguous_... S3579C8::S3579C10 */ AMB_check_base_class_offset(lv, (S3579C5*)(S3579C10*)(S3579C8*), ABISELECT(48,36), "S3579C1");
    /*is_ambiguous_... S3579C11::S731C14_nt */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S3579C11*), ABISELECT(160,88), "S3579C1");
    check_base_class_offset(lv, (S3579C3*)(S3579C11*), ABISELECT(176,96), "S3579C1");
    check_base_class_offset(lv, (S731C17_nt*)(S3579C12*)(S3579C11*), ABISELECT(160,88), "S3579C1");
    check_base_class_offset(lv, (S3579C12*)(S3579C11*), ABISELECT(160,88), "S3579C1");
    /*is_ambiguous_... S3579C11::S731C17_nt */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3579C11*), ABISELECT(184,100), "S3579C1");
    /*is_ambiguous_... S3579C8::S3579C10 */ AMB_check_base_class_offset(lv, (S3579C11*)(S3579C10*)(S3579C8*), ABISELECT(160,88), "S3579C1");
    /*is_ambiguous_... S3579C1::S3579C10 */ AMB_check_base_class_offset(lv, (S3579C11*)(S3579C10*), ABISELECT(160,88), "S3579C1");
    /*is_ambiguous_... S3579C8::S3579C10 */ AMB_check_base_class_offset(lv, (S3579C10*)(S3579C8*), ABISELECT(32,28), "S3579C1");
    /*is_ambiguous_... S3579C1::S3579C10 */ AMB_check_base_class_offset(lv, (S731C17_nt*)(S3579C10*), ABISELECT(200,108), "S3579C1");
    /*is_ambiguous_... S3579C1::S3579C10 */ AMB_check_base_class_offset(lv, (S731C14_nt*)(S3579C9*)(S3579C10*), ABISELECT(200,108), "S3579C1");
    /*is_ambiguous_... S3579C1::S3579C10 */ AMB_check_base_class_offset(lv, (S3579C9*)(S3579C10*), ABISELECT(200,108), "S3579C1");
    /*is_ambiguous_... S3579C1::S3579C10 */ AMB_check_base_class_offset(lv, (S3579C5*)(S3579C10*), ABISELECT(216,116), "S3579C1");
    check_base_class_offset(lv, (S3579C10*)(S3579C13*), ABISELECT(200,108), "S3579C1");
    check_base_class_offset(lv, (S3579C13*)(S3579C8*), ABISELECT(192,104), "S3579C1");
    check_base_class_offset(lv, (S3579C8*), ABISELECT(32,28), "S3579C1");
    check_field_offset(lv, s3579c1f0, ABISELECT(64,40), "S3579C1.s3579c1f0");
    test_class_info(&lv, &cd_S3579C1);
    dp->~S3579C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3579C1(Test_S3579C1, "S3579C1", ABISELECT(224,120));

#else // __cplusplus

extern void _ZN7S3579C1C1Ev();
extern void _ZN7S3579C1D2Ev();
Name_Map name_map_S3579C1[] = {
  NSPAIR(_ZN7S3579C1C1Ev),
  NSPAIR(_ZN7S3579C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S3579C3;
extern VTBL_ENTRY _ZTI7S3579C3[];
extern  VTBL_ENTRY _ZTV7S3579C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C3[];
extern Class_Descriptor cd_S3579C5;
extern VTBL_ENTRY _ZTI7S3579C5[];
extern  VTBL_ENTRY _ZTV7S3579C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C5[];
extern Class_Descriptor cd_S3579C2;
extern VTBL_ENTRY _ZTI7S3579C2[];
extern  VTBL_ENTRY _ZTV7S3579C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C2[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3579C6;
extern VTBL_ENTRY _ZTI7S3579C6[];
extern  VTBL_ENTRY _ZTV7S3579C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C6[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S3579C9;
extern VTBL_ENTRY _ZTI7S3579C9[];
extern  VTBL_ENTRY _ZTV7S3579C9[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S3579C9;
extern VTBL_ENTRY _ZTI7S3579C9[];
extern  VTBL_ENTRY _ZTV7S3579C9[];
extern Class_Descriptor cd_S3579C5;
extern VTBL_ENTRY _ZTI7S3579C5[];
extern  VTBL_ENTRY _ZTV7S3579C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C5[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S3579C3;
extern VTBL_ENTRY _ZTI7S3579C3[];
extern  VTBL_ENTRY _ZTV7S3579C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C3[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3579C12;
extern VTBL_ENTRY _ZTI8S3579C12[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3579C11;
extern VTBL_ENTRY _ZTI8S3579C11[];
extern  VTBL_ENTRY _ZTV8S3579C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3579C11[];
extern Class_Descriptor cd_S3579C10;
extern VTBL_ENTRY _ZTI8S3579C10[];
extern  VTBL_ENTRY _ZTV8S3579C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3579C10[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S3579C9;
extern VTBL_ENTRY _ZTI7S3579C9[];
extern  VTBL_ENTRY _ZTV7S3579C9[];
extern Class_Descriptor cd_S3579C5;
extern VTBL_ENTRY _ZTI7S3579C5[];
extern  VTBL_ENTRY _ZTV7S3579C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C5[];
extern Class_Descriptor cd_S3579C10;
extern VTBL_ENTRY _ZTI8S3579C10[];
extern  VTBL_ENTRY _ZTV8S3579C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3579C10[];
extern Class_Descriptor cd_S3579C13;
extern VTBL_ENTRY _ZTI8S3579C13[];
extern  VTBL_ENTRY _ZTV8S3579C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3579C13[];
extern Class_Descriptor cd_S3579C8;
extern VTBL_ENTRY _ZTI7S3579C8[];
extern  VTBL_ENTRY _ZTV7S3579C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C8[];
static Base_Class bases_S3579C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C14_nt,    ABISELECT(80,52), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S3579C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3579C5,    ABISELECT(96,60), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3579C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3579C6,    ABISELECT(112,64), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S731C14_nt,    ABISELECT(144,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3579C9,    ABISELECT(144,80), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S731C17_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
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S731C14_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
    16, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3579C9,    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
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3579C5,    ABISELECT(48,36), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S731C14_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
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3579C3,    ABISELECT(176,96), //bcp->offset
    56, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3579C12,    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
    17, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(184,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3579C11,    ABISELECT(160,88), //bcp->offset
    48, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S3579C10,    ABISELECT(32,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S731C17_nt,    ABISELECT(200,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S731C14_nt,    ABISELECT(200,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3579C9,    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
    10, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S3579C5,    ABISELECT(216,116), //bcp->offset
    84, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S3579C10,    ABISELECT(200,108), //bcp->offset
    73, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S3579C13,    ABISELECT(192,104), //bcp->offset
    61, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S3579C8,    ABISELECT(32,28), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3579C1[];
extern void _ZN7S3579C1D1Ev();
extern void _ZN7S3579C1D0Ev();
extern void ABISELECT(_ZThn32_N7S3579C1D1Ev,_ZThn28_N7S3579C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S3579C1D0Ev,_ZThn28_N7S3579C1D0Ev)();
extern void _ZN8S3579C102v1Ev();
extern void ABISELECT(_ZThn48_N7S3579C1D1Ev,_ZThn36_N7S3579C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S3579C1D0Ev,_ZThn36_N7S3579C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3579C1D1Ev,_ZTv0_n12_N7S3579C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S3579C1D1Ev,_ZThn52_N7S3579C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3579C1D0Ev,_ZTv0_n12_N7S3579C1D0Ev)();
extern void ABISELECT(_ZThn80_N7S3579C1D0Ev,_ZThn52_N7S3579C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3579C1D1Ev,_ZTv0_n16_N7S3579C1D1Ev)();
extern void ABISELECT(_ZThn96_N7S3579C1D1Ev,_ZThn60_N7S3579C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3579C1D0Ev,_ZTv0_n16_N7S3579C1D0Ev)();
extern void ABISELECT(_ZThn96_N7S3579C1D0Ev,_ZThn60_N7S3579C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3579C1D1Ev,_ZTv0_n12_N7S3579C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S3579C1D1Ev,_ZThn80_N7S3579C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3579C1D0Ev,_ZTv0_n12_N7S3579C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S3579C1D0Ev,_ZThn80_N7S3579C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3579C1D1Ev,_ZTv0_n24_N7S3579C1D1Ev)();
extern void ABISELECT(_ZThn160_N7S3579C1D1Ev,_ZThn88_N7S3579C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3579C1D0Ev,_ZTv0_n24_N7S3579C1D0Ev)();
extern void ABISELECT(_ZThn160_N7S3579C1D0Ev,_ZThn88_N7S3579C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N7S3579C1D1Ev,_ZTvn8_n24_N7S3579C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S3579C1D0Ev,_ZTvn8_n24_N7S3579C1D0Ev)();
extern void ABISELECT(_ZTv0_n64_N7S3579C1D1Ev,_ZTv0_n32_N7S3579C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S3579C1D1Ev,_ZThn104_N7S3579C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S3579C1D0Ev,_ZTv0_n32_N7S3579C1D0Ev)();
extern void ABISELECT(_ZThn192_N7S3579C1D0Ev,_ZThn104_N7S3579C1D0Ev)() __attribute__((weak));
extern void _ZN8S3579C132v2Ev();
extern void ABISELECT(_ZTv0_n56_N7S3579C1D1Ev,_ZTv0_n28_N7S3579C1D1Ev)();
extern void ABISELECT(_ZThn200_N7S3579C1D1Ev,_ZThn108_N7S3579C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3579C1D0Ev,_ZTv0_n28_N7S3579C1D0Ev)();
extern void ABISELECT(_ZThn200_N7S3579C1D0Ev,_ZThn108_N7S3579C1D0Ev)() __attribute__((weak));
extern void _ZN8S3579C102v1Ev();
extern void ABISELECT(_ZTvn16_n56_N7S3579C1D1Ev,_ZTvn8_n28_N7S3579C1D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N7S3579C1D0Ev,_ZTvn8_n28_N7S3579C1D0Ev)();
static  VTBL_ENTRY vtc_S3579C1[] = {
  ABISELECT(200,108),
  ABISELECT(192,104),
  ABISELECT(160,88),
  ABISELECT(144,80),
  0,
  ABISELECT(112,64),
  ABISELECT(96,60),
  ABISELECT(80,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C1[0]),
  (VTBL_ENTRY)&_ZN7S3579C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3579C1D0Ev,
  ABISELECT(168,80),
  ABISELECT(160,76),
  ABISELECT(112,52),
  ABISELECT(-32,-28),
  ABISELECT(80,36),
  ABISELECT(128,60),
  ABISELECT(48,24),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S3579C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S3579C1D1Ev,_ZThn28_N7S3579C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S3579C1D0Ev,_ZThn28_N7S3579C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3579C102v1Ev,
  ABISELECT(32,16),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI7S3579C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S3579C1D1Ev,_ZThn36_N7S3579C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S3579C1D0Ev,_ZThn36_N7S3579C1D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S3579C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C1D1Ev,_ZTv0_n12_N7S3579C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C1D0Ev,_ZTv0_n12_N7S3579C1D0Ev),
  ABISELECT(-96,-60),
  ABISELECT(-16,-8),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S3579C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3579C1D1Ev,_ZTv0_n16_N7S3579C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3579C1D0Ev,_ZTv0_n16_N7S3579C1D0Ev),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S3579C1[0]),
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S3579C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C1D1Ev,_ZTv0_n12_N7S3579C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C1D0Ev,_ZTv0_n12_N7S3579C1D0Ev),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  ABISELECT(-48,-24),
  ABISELECT(-80,-36),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S3579C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3579C1D1Ev,_ZTv0_n24_N7S3579C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3579C1D0Ev,_ZTv0_n24_N7S3579C1D0Ev),
  ABISELECT(-96,-44),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI7S3579C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S3579C1D1Ev,_ZTvn8_n24_N7S3579C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S3579C1D0Ev,_ZTvn8_n24_N7S3579C1D0Ev),
  0,
  ABISELECT(-192,-104),
  ABISELECT(-192,-104),
  ABISELECT(-80,-40),
  ABISELECT(-32,-16),
  ABISELECT(-112,-52),
  ABISELECT(8,4),
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI7S3579C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3579C1D1Ev,_ZTv0_n32_N7S3579C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3579C1D0Ev,_ZTv0_n32_N7S3579C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3579C132v2Ev,
  0,
  ABISELECT(-200,-108),
  ABISELECT(-200,-108),
  ABISELECT(-88,-44),
  ABISELECT(-40,-20),
  ABISELECT(-120,-56),
  ABISELECT(-200,-108),
  (VTBL_ENTRY)&(_ZTI7S3579C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3579C1D1Ev,_ZTv0_n28_N7S3579C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3579C1D0Ev,_ZTv0_n28_N7S3579C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3579C102v1Ev,
  ABISELECT(-136,-64),
  ABISELECT(-216,-116),
  (VTBL_ENTRY)&(_ZTI7S3579C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N7S3579C1D1Ev,_ZTvn8_n28_N7S3579C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N7S3579C1D0Ev,_ZTvn8_n28_N7S3579C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S3579C1[];
extern void _ZN7S3579C2D1Ev();
extern void _ZN7S3579C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3579C2__7S3579C1[] = {
  ABISELECT(96,60),
  ABISELECT(80,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C2[0]),
  (VTBL_ENTRY)&_ZN7S3579C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3579C2D0Ev,
};
extern void _ZN7S3579C3D1Ev();
extern void _ZN7S3579C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3579C37S3579C2__7S3579C1[] = {
  ABISELECT(80,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C3[0]),
  (VTBL_ENTRY)&_ZN7S3579C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3579C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3579C3D1Ev,_ZTv0_n12_N7S3579C3D1Ev)();
extern void ABISELECT(_ZThn80_N7S3579C3D1Ev,_ZThn52_N7S3579C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3579C3D0Ev,_ZTv0_n12_N7S3579C3D0Ev)();
extern void ABISELECT(_ZThn80_N7S3579C3D0Ev,_ZThn52_N7S3579C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__7S3579C37S3579C2__7S3579C1[] = {
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S3579C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C3D1Ev,_ZTv0_n12_N7S3579C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C3D0Ev,_ZTv0_n12_N7S3579C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3579C2D1Ev,_ZTv0_n12_N7S3579C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S3579C2D1Ev,_ZThn52_N7S3579C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3579C2D0Ev,_ZTv0_n12_N7S3579C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S3579C2D0Ev,_ZThn52_N7S3579C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__7S3579C2__7S3579C1[] = {
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S3579C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C2D1Ev,_ZTv0_n12_N7S3579C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C2D0Ev,_ZTv0_n12_N7S3579C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S3579C2D1Ev,_ZTv0_n16_N7S3579C2D1Ev)();
extern void ABISELECT(_ZThn96_N7S3579C2D1Ev,_ZThn60_N7S3579C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3579C2D0Ev,_ZTv0_n16_N7S3579C2D0Ev)();
extern void ABISELECT(_ZThn96_N7S3579C2D0Ev,_ZThn60_N7S3579C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3579C5__7S3579C2__7S3579C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(-16,-8),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S3579C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3579C2D1Ev,_ZTv0_n16_N7S3579C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3579C2D0Ev,_ZTv0_n16_N7S3579C2D0Ev),
};
extern void _ZN7S3579C8D1Ev();
extern void _ZN7S3579C8D0Ev();
extern void _ZN8S3579C102v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3579C8__7S3579C1[] = {
  ABISELECT(168,80),
  ABISELECT(160,76),
  ABISELECT(112,52),
  ABISELECT(-32,-28),
  ABISELECT(80,36),
  ABISELECT(128,60),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C8[0]),
  (VTBL_ENTRY)&_ZN7S3579C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3579C8D0Ev,
  (VTBL_ENTRY)&_ZN8S3579C102v1Ev,
};
extern void _ZN8S3579C10D1Ev();
extern void _ZN8S3579C10D0Ev();
extern void _ZN8S3579C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3579C107S3579C8__7S3579C1[] = {
  ABISELECT(-32,-28),
  ABISELECT(80,36),
  ABISELECT(128,60),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&_ZN8S3579C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3579C10D0Ev,
  (VTBL_ENTRY)&_ZN8S3579C102v1Ev,
};
extern void _ZN7S3579C5D1Ev();
extern void _ZN7S3579C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3579C58S3579C107S3579C8__A1__7S3579C1[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C5[0]),
  (VTBL_ENTRY)&_ZN7S3579C5D1Ev,
  (VTBL_ENTRY)&_ZN7S3579C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3579C5D1Ev,_ZTv0_n12_N7S3579C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S3579C5D1Ev,_ZThn16_N7S3579C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3579C5D0Ev,_ZTv0_n12_N7S3579C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S3579C5D0Ev,_ZThn16_N7S3579C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__7S3579C58S3579C107S3579C8__A1__7S3579C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S3579C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C5D1Ev,_ZTv0_n12_N7S3579C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C5D0Ev,_ZTv0_n12_N7S3579C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3579C10D1Ev,_ZTv0_n12_N8S3579C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S3579C10D1Ev,_ZThn24_N8S3579C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3579C10D0Ev,_ZTv0_n12_N8S3579C10D0Ev)();
extern void ABISELECT(_ZThn48_N8S3579C10D0Ev,_ZThn24_N8S3579C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A1__8S3579C107S3579C8__7S3579C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C10D1Ev,_ZTv0_n12_N8S3579C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C10D0Ev,_ZTv0_n12_N8S3579C10D0Ev),
};
extern void ABISELECT(_ZThn16_N8S3579C10D1Ev,_ZThn8_N8S3579C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S3579C10D0Ev,_ZThn8_N8S3579C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3579C5__8S3579C107S3579C8__7S3579C1[] = {
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3579C10D1Ev,_ZThn8_N8S3579C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3579C10D0Ev,_ZThn8_N8S3579C10D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3579C10D1Ev,_ZTv0_n24_N8S3579C10D1Ev)();
extern void ABISELECT(_ZThn128_N8S3579C10D1Ev,_ZThn60_N8S3579C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3579C10D0Ev,_ZTv0_n24_N8S3579C10D0Ev)();
extern void ABISELECT(_ZThn128_N8S3579C10D0Ev,_ZThn60_N8S3579C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3579C11__8S3579C107S3579C8__7S3579C1[] = {
  ABISELECT(-128,-60),
  ABISELECT(-160,-88),
  ABISELECT(-48,-24),
  ABISELECT(-80,-36),
  ABISELECT(-128,-60),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3579C10D1Ev,_ZTv0_n24_N8S3579C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3579C10D0Ev,_ZTv0_n24_N8S3579C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N8S3579C10D1Ev,_ZTvn8_n24_N8S3579C10D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S3579C10D0Ev,_ZTvn8_n24_N8S3579C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3579C38S3579C11__8S3579C107S3579C8__7S3579C1[] = {
  ABISELECT(-96,-44),
  ABISELECT(-144,-68),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S3579C10D1Ev,_ZTvn8_n24_N8S3579C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S3579C10D0Ev,_ZTvn8_n24_N8S3579C10D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S3579C6__8S3579C107S3579C8__7S3579C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
};
extern void ABISELECT(_ZTv0_n24_N7S3579C8D1Ev,_ZTv0_n12_N7S3579C8D1Ev)();
extern void ABISELECT(_ZThn112_N7S3579C8D1Ev,_ZThn52_N7S3579C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3579C8D0Ev,_ZTv0_n12_N7S3579C8D0Ev)();
extern void ABISELECT(_ZThn112_N7S3579C8D0Ev,_ZThn52_N7S3579C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3579C9__7S3579C8__7S3579C1[] = {
  ABISELECT(-112,-52),
  ABISELECT(-112,-52),
  (VTBL_ENTRY)&(_ZTI7S3579C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C8D1Ev,_ZTv0_n12_N7S3579C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C8D0Ev,_ZTv0_n12_N7S3579C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S3579C6__7S3579C8__7S3579C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI7S3579C8[0]),
};
extern void ABISELECT(_ZTv0_n24_N7S3579C8D1Ev,_ZTv0_n12_N7S3579C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S3579C8D1Ev,_ZThn24_N7S3579C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3579C8D0Ev,_ZTv0_n12_N7S3579C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S3579C8D0Ev,_ZThn24_N7S3579C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A2__7S3579C8__7S3579C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S3579C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C8D1Ev,_ZTv0_n12_N7S3579C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C8D0Ev,_ZTv0_n12_N7S3579C8D0Ev),
};
extern void ABISELECT(_ZThn16_N7S3579C8D1Ev,_ZThn8_N7S3579C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S3579C8D0Ev,_ZThn8_N7S3579C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3579C58S3579C10__7S3579C8__7S3579C1[] = {
  ABISELECT(32,16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3579C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S3579C8D1Ev,_ZThn8_N7S3579C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S3579C8D0Ev,_ZThn8_N7S3579C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S3579C8D1Ev,_ZTv0_n24_N7S3579C8D1Ev)();
extern void ABISELECT(_ZThn128_N7S3579C8D1Ev,_ZThn60_N7S3579C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3579C8D0Ev,_ZTv0_n24_N7S3579C8D0Ev)();
extern void ABISELECT(_ZThn128_N7S3579C8D0Ev,_ZThn60_N7S3579C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3579C11__7S3579C8__7S3579C1[] = {
  ABISELECT(-128,-60),
  ABISELECT(-160,-88),
  ABISELECT(-48,-24),
  ABISELECT(-80,-36),
  ABISELECT(-128,-60),
  (VTBL_ENTRY)&(_ZTI7S3579C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3579C8D1Ev,_ZTv0_n24_N7S3579C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3579C8D0Ev,_ZTv0_n24_N7S3579C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N7S3579C8D1Ev,_ZTvn8_n24_N7S3579C8D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S3579C8D0Ev,_ZTvn8_n24_N7S3579C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3579C38S3579C11__7S3579C8__7S3579C1[] = {
  ABISELECT(-96,-44),
  ABISELECT(-144,-68),
  (VTBL_ENTRY)&(_ZTI7S3579C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S3579C8D1Ev,_ZTvn8_n24_N7S3579C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S3579C8D0Ev,_ZTvn8_n24_N7S3579C8D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S3579C8D1Ev,_ZTv0_n32_N7S3579C8D1Ev)();
extern void ABISELECT(_ZThn160_N7S3579C8D1Ev,_ZThn76_N7S3579C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S3579C8D0Ev,_ZTv0_n32_N7S3579C8D0Ev)();
extern void ABISELECT(_ZThn160_N7S3579C8D0Ev,_ZThn76_N7S3579C8D0Ev)() __attribute__((weak));
extern void _ZN8S3579C132v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3579C13__7S3579C8__7S3579C1[] = {
  0,
  ABISELECT(-160,-76),
  ABISELECT(-192,-104),
  ABISELECT(-80,-40),
  ABISELECT(-32,-16),
  ABISELECT(-112,-52),
  ABISELECT(8,4),
  ABISELECT(-160,-76),
  (VTBL_ENTRY)&(_ZTI7S3579C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3579C8D1Ev,_ZTv0_n32_N7S3579C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3579C8D0Ev,_ZTv0_n32_N7S3579C8D0Ev),
  (VTBL_ENTRY)&_ZN8S3579C132v2Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S3579C8D1Ev,_ZTv0_n28_N7S3579C8D1Ev)();
extern void ABISELECT(_ZThn168_N7S3579C8D1Ev,_ZThn80_N7S3579C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3579C8D0Ev,_ZTv0_n28_N7S3579C8D0Ev)();
extern void ABISELECT(_ZThn168_N7S3579C8D0Ev,_ZThn80_N7S3579C8D0Ev)() __attribute__((weak));
extern void _ZN8S3579C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3579C10__A1__7S3579C8__7S3579C1[] = {
  0,
  ABISELECT(-168,-80),
  ABISELECT(-200,-108),
  ABISELECT(-88,-44),
  ABISELECT(-40,-20),
  ABISELECT(-120,-56),
  ABISELECT(-168,-80),
  (VTBL_ENTRY)&(_ZTI7S3579C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3579C8D1Ev,_ZTv0_n28_N7S3579C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3579C8D0Ev,_ZTv0_n28_N7S3579C8D0Ev),
  (VTBL_ENTRY)&_ZN8S3579C102v1Ev,
};
extern void ABISELECT(_ZTvn16_n56_N7S3579C8D1Ev,_ZTvn8_n28_N7S3579C8D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N7S3579C8D0Ev,_ZTvn8_n28_N7S3579C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3579C58S3579C10__A1__7S3579C8__7S3579C1[] = {
  ABISELECT(-136,-64),
  ABISELECT(-184,-88),
  (VTBL_ENTRY)&(_ZTI7S3579C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N7S3579C8D1Ev,_ZTvn8_n28_N7S3579C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N7S3579C8D0Ev,_ZTvn8_n28_N7S3579C8D0Ev),
};
extern void _ZN7S3579C5D1Ev();
extern void _ZN7S3579C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3579C5__7S3579C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C5[0]),
  (VTBL_ENTRY)&_ZN7S3579C5D1Ev,
  (VTBL_ENTRY)&_ZN7S3579C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3579C5D1Ev,_ZTv0_n12_N7S3579C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3579C5D0Ev,_ZTv0_n12_N7S3579C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__7S3579C5__7S3579C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S3579C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C5D1Ev,_ZTv0_n12_N7S3579C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C5D0Ev,_ZTv0_n12_N7S3579C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S3579C6__7S3579C1[] = {
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C6[0]),
};
extern void _ZN8S3579C11D1Ev();
extern void _ZN8S3579C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3579C11__7S3579C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-48,-24),
  ABISELECT(-80,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S3579C11[0]),
  (VTBL_ENTRY)&_ZN8S3579C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3579C11D0Ev,
};
extern void _ZN7S3579C3D1Ev();
extern void _ZN7S3579C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3579C38S3579C11__A1__7S3579C1[] = {
  ABISELECT(-96,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C3[0]),
  (VTBL_ENTRY)&_ZN7S3579C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3579C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3579C3D1Ev,_ZTv0_n12_N7S3579C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3579C3D0Ev,_ZTv0_n12_N7S3579C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__7S3579C38S3579C11__A1__7S3579C1[] = {
  ABISELECT(96,44),
  ABISELECT(96,44),
  (VTBL_ENTRY)&(_ZTI7S3579C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C3D1Ev,_ZTv0_n12_N7S3579C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C3D0Ev,_ZTv0_n12_N7S3579C3D0Ev),
};
extern void ABISELECT(_ZThn16_N8S3579C11D1Ev,_ZThn8_N8S3579C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S3579C11D0Ev,_ZThn8_N8S3579C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3579C3__8S3579C11__7S3579C1[] = {
  ABISELECT(-96,-44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3579C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3579C11D1Ev,_ZThn8_N8S3579C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3579C11D0Ev,_ZThn8_N8S3579C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3579C11D1Ev,_ZTv0_n12_N8S3579C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3579C11D0Ev,_ZTv0_n12_N8S3579C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A1__8S3579C11__7S3579C1[] = {
  ABISELECT(80,36),
  ABISELECT(80,36),
  (VTBL_ENTRY)&(_ZTI8S3579C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C11D1Ev,_ZTv0_n12_N8S3579C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C11D0Ev,_ZTv0_n12_N8S3579C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S3579C6__8S3579C11__7S3579C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S3579C11[0]),
};
extern void _ZN8S3579C13D1Ev();
extern void _ZN8S3579C13D0Ev();
extern void _ZN8S3579C132v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3579C13__7S3579C1[] = {
  ABISELECT(-192,-104),
  ABISELECT(-80,-40),
  ABISELECT(-32,-16),
  ABISELECT(-112,-52),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S3579C13[0]),
  (VTBL_ENTRY)&_ZN8S3579C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3579C13D0Ev,
  (VTBL_ENTRY)&_ZN8S3579C132v2Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S3579C13D1Ev,_ZTv0_n28_N8S3579C13D1Ev)();
extern void ABISELECT(_ZThn8_N8S3579C13D1Ev,_ZThn4_N8S3579C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3579C13D0Ev,_ZTv0_n28_N8S3579C13D0Ev)();
extern void ABISELECT(_ZThn8_N8S3579C13D0Ev,_ZThn4_N8S3579C13D0Ev)() __attribute__((weak));
extern void _ZN8S3579C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3579C10__8S3579C13__7S3579C1[] = {
  0,
  ABISELECT(-8,-4),
  ABISELECT(-200,-108),
  ABISELECT(-88,-44),
  ABISELECT(-40,-20),
  ABISELECT(-120,-56),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S3579C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3579C13D1Ev,_ZTv0_n28_N8S3579C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3579C13D0Ev,_ZTv0_n28_N8S3579C13D0Ev),
  (VTBL_ENTRY)&_ZN8S3579C102v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3579C13D1Ev,_ZTv0_n12_N8S3579C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3579C13D0Ev,_ZTv0_n12_N8S3579C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A1__8S3579C13__7S3579C1[] = {
  ABISELECT(112,52),
  ABISELECT(112,52),
  (VTBL_ENTRY)&(_ZTI8S3579C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C13D1Ev,_ZTv0_n12_N8S3579C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C13D0Ev,_ZTv0_n12_N8S3579C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N8S3579C13D1Ev,_ZTvn8_n28_N8S3579C13D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S3579C13D0Ev,_ZTvn8_n28_N8S3579C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3579C58S3579C10__8S3579C13__7S3579C1[] = {
  ABISELECT(-136,-64),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3579C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S3579C13D1Ev,_ZTvn8_n28_N8S3579C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S3579C13D0Ev,_ZTvn8_n28_N8S3579C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3579C13D1Ev,_ZTv0_n24_N8S3579C13D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3579C13D0Ev,_ZTv0_n24_N8S3579C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3579C11__8S3579C13__7S3579C1[] = {
  ABISELECT(32,16),
  ABISELECT(-160,-88),
  ABISELECT(-48,-24),
  ABISELECT(-80,-36),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S3579C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3579C13D1Ev,_ZTv0_n24_N8S3579C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3579C13D0Ev,_ZTv0_n24_N8S3579C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N8S3579C13D1Ev,_ZTvn8_n24_N8S3579C13D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S3579C13D0Ev,_ZTvn8_n24_N8S3579C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3579C38S3579C11__8S3579C13__7S3579C1[] = {
  ABISELECT(-96,-44),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S3579C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S3579C13D1Ev,_ZTvn8_n24_N8S3579C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S3579C13D0Ev,_ZTvn8_n24_N8S3579C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S3579C6__8S3579C13__7S3579C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI8S3579C13[0]),
};
extern void _ZN8S3579C10D1Ev();
extern void _ZN8S3579C10D0Ev();
extern void _ZN8S3579C102v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3579C10__A1__7S3579C1[] = {
  ABISELECT(-200,-108),
  ABISELECT(-88,-44),
  ABISELECT(-40,-20),
  ABISELECT(-120,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&_ZN8S3579C10D1Ev,
  (VTBL_ENTRY)&_ZN8S3579C10D0Ev,
  (VTBL_ENTRY)&_ZN8S3579C102v1Ev,
};
extern void _ZN7S3579C5D1Ev();
extern void _ZN7S3579C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3579C58S3579C10__A2__7S3579C1[] = {
  ABISELECT(-136,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S3579C5[0]),
  (VTBL_ENTRY)&_ZN7S3579C5D1Ev,
  (VTBL_ENTRY)&_ZN7S3579C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3579C5D1Ev,_ZTv0_n12_N7S3579C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3579C5D0Ev,_ZTv0_n12_N7S3579C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__7S3579C58S3579C10__A2__7S3579C1[] = {
  ABISELECT(136,64),
  ABISELECT(136,64),
  (VTBL_ENTRY)&(_ZTI7S3579C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C5D1Ev,_ZTv0_n12_N7S3579C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3579C5D0Ev,_ZTv0_n12_N7S3579C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3579C10D1Ev,_ZTv0_n12_N8S3579C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3579C10D0Ev,_ZTv0_n12_N8S3579C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__A1__8S3579C10__A1__7S3579C1[] = {
  ABISELECT(120,56),
  ABISELECT(120,56),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C10D1Ev,_ZTv0_n12_N8S3579C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3579C10D0Ev,_ZTv0_n12_N8S3579C10D0Ev),
};
extern void ABISELECT(_ZThn16_N8S3579C10D1Ev,_ZThn8_N8S3579C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S3579C10D0Ev,_ZThn8_N8S3579C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3579C5__8S3579C10__A1__7S3579C1[] = {
  ABISELECT(-136,-64),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3579C10D1Ev,_ZThn8_N8S3579C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S3579C10D0Ev,_ZThn8_N8S3579C10D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S3579C10D1Ev,_ZTv0_n24_N8S3579C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3579C10D0Ev,_ZTv0_n24_N8S3579C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3579C11__8S3579C10__A1__7S3579C1[] = {
  ABISELECT(40,20),
  ABISELECT(-160,-88),
  ABISELECT(-48,-24),
  ABISELECT(-80,-36),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3579C10D1Ev,_ZTv0_n24_N8S3579C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3579C10D0Ev,_ZTv0_n24_N8S3579C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N8S3579C10D1Ev,_ZTvn8_n24_N8S3579C10D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S3579C10D0Ev,_ZTvn8_n24_N8S3579C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3579C38S3579C11__8S3579C10__A1__7S3579C1[] = {
  ABISELECT(-96,-44),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S3579C10D1Ev,_ZTvn8_n24_N8S3579C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S3579C10D0Ev,_ZTvn8_n24_N8S3579C10D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S3579C6__8S3579C10__A1__7S3579C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(88,44),
  (VTBL_ENTRY)&(_ZTI8S3579C10[0]),
};
static  VTT_ENTRY vtt_S3579C1[] = {
  {&(_ZTV7S3579C1[10]),  10,89},
  {&(_tg__ZTV7S3579C2__7S3579C1[4]),  4,6},
  {&(_tg__ZTV7S3579C37S3579C2__7S3579C1[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__7S3579C37S3579C2__7S3579C1[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__7S3579C2__7S3579C1[3]),  3,5},
  {&(_tg__ZTV7S3579C5__7S3579C2__7S3579C1[4]),  4,6},
  {&(_tg__ZTV7S3579C8__7S3579C1[9]),  9,12},
  {&(_tg__ZTV8S3579C107S3579C8__7S3579C1[6]),  6,9},
  {&(_tg__ZTV7S3579C58S3579C107S3579C8__A1__7S3579C1[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__7S3579C58S3579C107S3579C8__A1__7S3579C1[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__A1__8S3579C107S3579C8__7S3579C1[3]),  3,5},
  {&(_tg__ZTV7S3579C5__8S3579C107S3579C8__7S3579C1[3]),  3,5},
  {&(_tg__ZTV8S3579C11__8S3579C107S3579C8__7S3579C1[6]),  6,8},
  {&(_tg__ZTV7S3579C38S3579C11__8S3579C107S3579C8__7S3579C1[3]),  3,5},
  {&(_tg__ZTV7S3579C6__8S3579C107S3579C8__7S3579C1[3]),  3,3},
  {&(_tg__ZTV7S3579C9__7S3579C8__7S3579C1[3]),  3,5},
  {&(_tg__ZTV7S3579C6__7S3579C8__7S3579C1[3]),  3,3},
  {&(_tg__ZTV10S731C14_nt__A2__7S3579C8__7S3579C1[3]),  3,5},
  {&(_tg__ZTV7S3579C58S3579C10__7S3579C8__7S3579C1[3]),  3,5},
  {&(_tg__ZTV8S3579C11__7S3579C8__7S3579C1[6]),  6,8},
  {&(_tg__ZTV7S3579C38S3579C11__7S3579C8__7S3579C1[3]),  3,5},
  {&(_tg__ZTV8S3579C13__7S3579C8__7S3579C1[9]),  9,12},
  {&(_tg__ZTV8S3579C10__A1__7S3579C8__7S3579C1[8]),  8,11},
  {&(_tg__ZTV7S3579C58S3579C10__A1__7S3579C8__7S3579C1[3]),  3,5},
  {&(_ZTV7S3579C1[32]),  32,89},
  {&(_ZTV7S3579C1[38]),  38,89},
  {&(_ZTV7S3579C1[43]),  43,89},
  {&(_ZTV7S3579C1[21]),  21,89},
  {&(_ZTV7S3579C1[46]),  46,89},
  {&(_ZTV7S3579C1[27]),  27,89},
  {&(_ZTV7S3579C1[54]),  54,89},
  {&(_ZTV7S3579C1[59]),  59,89},
  {&(_ZTV7S3579C1[70]),  70,89},
  {&(_ZTV7S3579C1[81]),  81,89},
  {&(_ZTV7S3579C1[87]),  87,89},
  {&(_tg__ZTV7S3579C5__7S3579C1[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__7S3579C5__7S3579C1[3]),  3,5},
  {&(_tg__ZTV7S3579C6__7S3579C1[3]),  3,3},
  {&(_tg__ZTV8S3579C11__7S3579C1[5]),  5,7},
  {&(_tg__ZTV7S3579C38S3579C11__A1__7S3579C1[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__7S3579C38S3579C11__A1__7S3579C1[3]),  3,5},
  {&(_tg__ZTV7S3579C3__8S3579C11__7S3579C1[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__A1__8S3579C11__7S3579C1[3]),  3,5},
  {&(_tg__ZTV7S3579C6__8S3579C11__7S3579C1[3]),  3,3},
  {&(_tg__ZTV8S3579C13__7S3579C1[7]),  7,10},
  {&(_tg__ZTV8S3579C10__8S3579C13__7S3579C1[8]),  8,11},
  {&(_tg__ZTV10S731C14_nt__A1__8S3579C13__7S3579C1[3]),  3,5},
  {&(_tg__ZTV7S3579C58S3579C10__8S3579C13__7S3579C1[3]),  3,5},
  {&(_tg__ZTV8S3579C11__8S3579C13__7S3579C1[6]),  6,8},
  {&(_tg__ZTV7S3579C38S3579C11__8S3579C13__7S3579C1[3]),  3,5},
  {&(_tg__ZTV7S3579C6__8S3579C13__7S3579C1[3]),  3,3},
  {&(_tg__ZTV8S3579C10__A1__7S3579C1[6]),  6,9},
  {&(_tg__ZTV7S3579C58S3579C10__A2__7S3579C1[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__7S3579C58S3579C10__A2__7S3579C1[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__A1__8S3579C10__A1__7S3579C1[3]),  3,5},
  {&(_tg__ZTV7S3579C5__8S3579C10__A1__7S3579C1[3]),  3,5},
  {&(_tg__ZTV8S3579C11__8S3579C10__A1__7S3579C1[6]),  6,8},
  {&(_tg__ZTV7S3579C38S3579C11__8S3579C10__A1__7S3579C1[3]),  3,5},
  {&(_tg__ZTV7S3579C6__8S3579C10__A1__7S3579C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S3579C1[];
extern  VTBL_ENTRY _ZTV7S3579C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3579C1[];
static VTBL_ENTRY alt_thunk_names110[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3579C13D0Ev,_ZTv0_n28_N8S3579C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S3579C13D0Ev,_ZThn4_N8S3579C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3579C13D1Ev,_ZTv0_n28_N8S3579C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S3579C13D1Ev,_ZThn4_N8S3579C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3579C8D0Ev,_ZTv0_n28_N7S3579C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S3579C8D0Ev,_ZThn80_N7S3579C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3579C8D1Ev,_ZTv0_n28_N7S3579C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S3579C8D1Ev,_ZThn80_N7S3579C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3579C8D0Ev,_ZTv0_n32_N7S3579C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S3579C8D0Ev,_ZThn76_N7S3579C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3579C8D1Ev,_ZTv0_n32_N7S3579C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S3579C8D1Ev,_ZThn76_N7S3579C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3579C8D0Ev,_ZTv0_n24_N7S3579C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S3579C8D0Ev,_ZThn60_N7S3579C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3579C8D1Ev,_ZTv0_n24_N7S3579C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S3579C8D1Ev,_ZThn60_N7S3579C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C8D0Ev,_ZTv0_n12_N7S3579C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3579C8D0Ev,_ZThn24_N7S3579C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S3579C8D0Ev,_ZThn52_N7S3579C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C8D1Ev,_ZTv0_n12_N7S3579C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3579C8D1Ev,_ZThn24_N7S3579C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S3579C8D1Ev,_ZThn52_N7S3579C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3579C10D0Ev,_ZTv0_n24_N8S3579C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3579C10D0Ev,_ZThn60_N8S3579C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3579C10D1Ev,_ZTv0_n24_N8S3579C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3579C10D1Ev,_ZThn60_N8S3579C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3579C10D0Ev,_ZTv0_n12_N8S3579C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S3579C10D0Ev,_ZThn24_N8S3579C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3579C10D1Ev,_ZTv0_n12_N8S3579C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S3579C10D1Ev,_ZThn24_N8S3579C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C5D0Ev,_ZTv0_n12_N7S3579C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3579C5D0Ev,_ZThn16_N7S3579C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C5D1Ev,_ZTv0_n12_N7S3579C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3579C5D1Ev,_ZThn16_N7S3579C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3579C2D0Ev,_ZTv0_n16_N7S3579C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3579C2D0Ev,_ZThn60_N7S3579C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3579C2D1Ev,_ZTv0_n16_N7S3579C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3579C2D1Ev,_ZThn60_N7S3579C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C2D0Ev,_ZTv0_n12_N7S3579C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3579C2D0Ev,_ZThn52_N7S3579C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C2D1Ev,_ZTv0_n12_N7S3579C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3579C2D1Ev,_ZThn52_N7S3579C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C3D0Ev,_ZTv0_n12_N7S3579C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3579C3D0Ev,_ZThn52_N7S3579C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C3D1Ev,_ZTv0_n12_N7S3579C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3579C3D1Ev,_ZThn52_N7S3579C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3579C1D0Ev,_ZTv0_n28_N7S3579C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S3579C1D0Ev,_ZThn108_N7S3579C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3579C1D1Ev,_ZTv0_n28_N7S3579C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S3579C1D1Ev,_ZThn108_N7S3579C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3579C1D0Ev,_ZTv0_n32_N7S3579C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S3579C1D0Ev,_ZThn104_N7S3579C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3579C1D1Ev,_ZTv0_n32_N7S3579C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S3579C1D1Ev,_ZThn104_N7S3579C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3579C1D0Ev,_ZTv0_n24_N7S3579C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S3579C1D0Ev,_ZThn88_N7S3579C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3579C1D1Ev,_ZTv0_n24_N7S3579C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S3579C1D1Ev,_ZThn88_N7S3579C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3579C1D0Ev,_ZTv0_n16_N7S3579C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3579C1D0Ev,_ZThn60_N7S3579C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3579C1D1Ev,_ZTv0_n16_N7S3579C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S3579C1D1Ev,_ZThn60_N7S3579C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C1D0Ev,_ZTv0_n12_N7S3579C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S3579C1D0Ev,_ZThn80_N7S3579C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3579C1D0Ev,_ZThn52_N7S3579C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3579C1D1Ev,_ZTv0_n12_N7S3579C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S3579C1D1Ev,_ZThn80_N7S3579C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3579C1D1Ev,_ZThn52_N7S3579C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3579C1 = {  "S3579C1", // class name
  bases_S3579C1, 26,
  &(vtc_S3579C1[0]), // expected_vtbl_contents
  &(vtt_S3579C1[0]), // expected_vtt_contents
  ABISELECT(224,120), // object size
  NSPAIRA(_ZTI7S3579C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3579C1),89, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3579C1),59, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names110,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17885C3  {
  virtual  ~S17885C3(); // _ZN8S17885C3D1Ev
  virtual void  v2(); // _ZN8S17885C32v2Ev
  S17885C3(); // tgen
};
//SIG(-1 S17885C3) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN8S17885C3C1Ev();
extern void _ZN8S17885C3D1Ev();
Name_Map name_map_S17885C3[] = {
  NSPAIR(_ZN8S17885C3C1Ev),
  NSPAIR(_ZN8S17885C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S17885C3[];
extern void _ZN8S17885C3D1Ev();
extern void _ZN8S17885C3D0Ev();
extern void _ZN8S17885C32v2Ev();
static  VTBL_ENTRY vtc_S17885C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S17885C3[0]),
  (VTBL_ENTRY)&_ZN8S17885C3D1Ev,
  (VTBL_ENTRY)&_ZN8S17885C3D0Ev,
  (VTBL_ENTRY)&_ZN8S17885C32v2Ev,
};
extern VTBL_ENTRY _ZTI8S17885C3[];
extern  VTBL_ENTRY _ZTV8S17885C3[];
Class_Descriptor cd_S17885C3 = {  "S17885C3", // class name
  0,0,//no base classes
  &(vtc_S17885C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S17885C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S17885C3),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  S17885C6_nt  {
  void *s17885c6f0;
  void  mf17885c6(); // _ZN11S17885C6_nt9mf17885c6Ev
};
//SIG(-1 S17885C6_nt) C1{ m Fp}


void  S17885C6_nt ::mf17885c6(){}

//skip512 S17885C6_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S17885C6_nt[];
VTBL_ENTRY *P__ZTI11S17885C6_nt = _ZTI11S17885C6_nt; 
Class_Descriptor cd_S17885C6_nt = {  "S17885C6_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S17885C6_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  S17885C4  : S6441C4_nt , S17885C6_nt {
  void *s17885c4f0[3];
  virtual  ~S17885C4(); // _ZN8S17885C4D1Ev
  S17885C4(); // tgen
};
//SIG(-1 S17885C4) C1{ BC2{ m Fp} BC3{ m Fp} vd Fp[3]}


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

static void Test_S17885C4()
{
  extern Class_Descriptor cd_S17885C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S17885C4, buf);
    S17885C4 *dp, &lv = *(dp=new (buf) S17885C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S17885C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17885C4)");
    check_base_class_offset(lv, (S6441C4_nt*), ABISELECT(8,4), "S17885C4");
    check_base_class_offset(lv, (S17885C6_nt*), ABISELECT(16,8), "S17885C4");
    check_field_offset(lv, s17885c4f0, ABISELECT(24,12), "S17885C4.s17885c4f0");
    test_class_info(&lv, &cd_S17885C4);
    dp->~S17885C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS17885C4(Test_S17885C4, "S17885C4", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S17885C4C1Ev();
extern void _ZN8S17885C4D1Ev();
Name_Map name_map_S17885C4[] = {
  NSPAIR(_ZN8S17885C4C1Ev),
  NSPAIR(_ZN8S17885C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6441C4_nt;
extern VTBL_ENTRY _ZTI10S6441C4_nt[];
extern Class_Descriptor cd_S17885C6_nt;
extern VTBL_ENTRY _ZTI11S17885C6_nt[];
static Base_Class bases_S17885C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6441C4_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S17885C6_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 _ZTI8S17885C4[];
extern void _ZN8S17885C4D1Ev();
extern void _ZN8S17885C4D0Ev();
static  VTBL_ENTRY vtc_S17885C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S17885C4[0]),
  (VTBL_ENTRY)&_ZN8S17885C4D1Ev,
  (VTBL_ENTRY)&_ZN8S17885C4D0Ev,
};
extern VTBL_ENTRY _ZTI8S17885C4[];
extern  VTBL_ENTRY _ZTV8S17885C4[];
Class_Descriptor cd_S17885C4 = {  "S17885C4", // class name
  bases_S17885C4, 2,
  &(vtc_S17885C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S17885C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S17885C4),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  S17885C2  : S17885C3 {
  ::S17885C4 s17885c2f0;
  void *s17885c2f1;
  virtual  ~S17885C2(); // _ZN8S17885C2D1Ev
  virtual void  v1(); // _ZN8S17885C22v1Ev
  S17885C2(); // tgen
};
//SIG(-1 S17885C2) C1{ BC2{ vd v2} vd v1 FC3{ BC4{ m Fp} BC5{ m Fp} vd Fp[3]} Fp}


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

static void Test_S17885C2()
{
  extern Class_Descriptor cd_S17885C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S17885C2, buf);
    S17885C2 *dp, &lv = *(dp=new (buf) S17885C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S17885C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17885C2)");
    check_base_class_offset(lv, (S17885C3*), 0, "S17885C2");
    check_field_offset(lv, s17885c2f0, ABISELECT(8,4), "S17885C2.s17885c2f0");
    check_field_offset(lv, s17885c2f1, ABISELECT(56,28), "S17885C2.s17885c2f1");
    test_class_info(&lv, &cd_S17885C2);
    dp->~S17885C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS17885C2(Test_S17885C2, "S17885C2", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S17885C2C1Ev();
extern void _ZN8S17885C2D1Ev();
Name_Map name_map_S17885C2[] = {
  NSPAIR(_ZN8S17885C2C1Ev),
  NSPAIR(_ZN8S17885C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S17885C3;
extern VTBL_ENTRY _ZTI8S17885C3[];
extern  VTBL_ENTRY _ZTV8S17885C3[];
static Base_Class bases_S17885C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S17885C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S17885C2[];
extern void _ZN8S17885C2D1Ev();
extern void _ZN8S17885C2D0Ev();
extern void _ZN8S17885C32v2Ev();
extern void _ZN8S17885C22v1Ev();
static  VTBL_ENTRY vtc_S17885C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S17885C2[0]),
  (VTBL_ENTRY)&_ZN8S17885C2D1Ev,
  (VTBL_ENTRY)&_ZN8S17885C2D0Ev,
  (VTBL_ENTRY)&_ZN8S17885C32v2Ev,
  (VTBL_ENTRY)&_ZN8S17885C22v1Ev,
};
extern VTBL_ENTRY _ZTI8S17885C2[];
extern  VTBL_ENTRY _ZTV8S17885C2[];
Class_Descriptor cd_S17885C2 = {  "S17885C2", // class name
  bases_S17885C2, 1,
  &(vtc_S17885C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S17885C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S17885C2),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  S17885C8_nt  {
  ::S3027C5_nt s17885c8f0;
  void  mf17885c8(); // _ZN11S17885C8_nt9mf17885c8Ev
};
//SIG(-1 S17885C8_nt) C1{ m FC2{ m Fp Fi FC3{ m} FC4{ m}}}


void  S17885C8_nt ::mf17885c8(){}

//skip512 S17885C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17885C12  {
  void *s17885c12f0;
  void  mf17885c12(); // _ZN9S17885C1210mf17885c12Ev
};
//SIG(-1 S17885C12) C1{ m Fp}


void  S17885C12 ::mf17885c12(){}

static void Test_S17885C12()
{
  {
    init_simple_test("S17885C12");
    S17885C12 lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S17885C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17885C12)");
    check_field_offset(lv, s17885c12f0, 0, "S17885C12.s17885c12f0");
  }
}
static Arrange_To_Call_Me vS17885C12(Test_S17885C12, "S17885C12", ABISELECT(8,4));

#else // __cplusplus

extern VTBL_ENTRY _ZTI9S17885C12[];
VTBL_ENTRY *P__ZTI9S17885C12 = _ZTI9S17885C12; 
Class_Descriptor cd_S17885C12 = {  "S17885C12", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S17885C12),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  S17885C7  {
  void *s17885c7f0;
  ::S17885C8_nt s17885c7f1;
  ::S17885C12 s17885c7f2;
  void  mf17885c7(); // _ZN8S17885C79mf17885c7Ev
};
//SIG(-1 S17885C7) C1{ m Fp FC2{ m FC3{ m Fp Fi FC4{ m} FC5{ m}}} FC6{ m Fp}}


void  S17885C7 ::mf17885c7(){}

static void Test_S17885C7()
{
  {
    init_simple_test("S17885C7");
    S17885C7 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S17885C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17885C7)");
    check_field_offset(lv, s17885c7f0, 0, "S17885C7.s17885c7f0");
    check_field_offset(lv, s17885c7f1, ABISELECT(8,4), "S17885C7.s17885c7f1");
    check_field_offset(lv, s17885c7f2, ABISELECT(24,16), "S17885C7.s17885c7f2");
  }
}
static Arrange_To_Call_Me vS17885C7(Test_S17885C7, "S17885C7", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17885C14  {
  virtual  ~S17885C14(); // _ZN9S17885C14D1Ev
  virtual void  v4(); // _ZN9S17885C142v4Ev
  S17885C14(); // tgen
};
//SIG(-1 S17885C14) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN9S17885C14C1Ev();
extern void _ZN9S17885C14D1Ev();
Name_Map name_map_S17885C14[] = {
  NSPAIR(_ZN9S17885C14C1Ev),
  NSPAIR(_ZN9S17885C14D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S17885C14[];
extern void _ZN9S17885C14D1Ev();
extern void _ZN9S17885C14D0Ev();
extern void _ZN9S17885C142v4Ev();
static  VTBL_ENTRY vtc_S17885C14[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S17885C14[0]),
  (VTBL_ENTRY)&_ZN9S17885C14D1Ev,
  (VTBL_ENTRY)&_ZN9S17885C14D0Ev,
  (VTBL_ENTRY)&_ZN9S17885C142v4Ev,
};
extern VTBL_ENTRY _ZTI9S17885C14[];
extern  VTBL_ENTRY _ZTV9S17885C14[];
Class_Descriptor cd_S17885C14 = {  "S17885C14", // class name
  0,0,//no base classes
  &(vtc_S17885C14[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S17885C14),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S17885C14),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  S17885C13  : S17885C14 {
  void *s17885c13f0;
  ::S7166C16_nt s17885c13f1;
  virtual void  v3(); // _ZN9S17885C132v3Ev
  ~S17885C13(); // tgen
  S17885C13(); // tgen
};
//SIG(-1 S17885C13) C1{ BC2{ vd v2} v1 Fp FC3{}}


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

static void Test_S17885C13()
{
  extern Class_Descriptor cd_S17885C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S17885C13, buf);
    S17885C13 *dp, &lv = *(dp=new (buf) S17885C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S17885C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17885C13)");
    check_base_class_offset(lv, (S17885C14*), 0, "S17885C13");
    check_field_offset(lv, s17885c13f0, ABISELECT(8,4), "S17885C13.s17885c13f0");
    check_field_offset(lv, s17885c13f1, ABISELECT(16,8), "S17885C13.s17885c13f1");
    test_class_info(&lv, &cd_S17885C13);
    dp->~S17885C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS17885C13(Test_S17885C13, "S17885C13", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S17885C13C1Ev();
extern void _ZN9S17885C13D1Ev();
Name_Map name_map_S17885C13[] = {
  NSPAIR(_ZN9S17885C13C1Ev),
  NSPAIR(_ZN9S17885C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S17885C14;
extern VTBL_ENTRY _ZTI9S17885C14[];
extern  VTBL_ENTRY _ZTV9S17885C14[];
static Base_Class bases_S17885C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S17885C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S17885C13[];
extern void _ZN9S17885C13D1Ev();
extern void _ZN9S17885C13D0Ev();
extern void _ZN9S17885C142v4Ev();
extern void _ZN9S17885C132v3Ev();
static  VTBL_ENTRY vtc_S17885C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S17885C13[0]),
  (VTBL_ENTRY)&_ZN9S17885C13D1Ev,
  (VTBL_ENTRY)&_ZN9S17885C13D0Ev,
  (VTBL_ENTRY)&_ZN9S17885C142v4Ev,
  (VTBL_ENTRY)&_ZN9S17885C132v3Ev,
};
extern VTBL_ENTRY _ZTI9S17885C13[];
extern  VTBL_ENTRY _ZTV9S17885C13[];
Class_Descriptor cd_S17885C13 = {  "S17885C13", // class name
  bases_S17885C13, 1,
  &(vtc_S17885C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S17885C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S17885C13),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  S17885C1  {
  void *s17885c1f0[2];
  ::S17885C2 s17885c1f1;
  ::S17885C7 s17885c1f2;
  char s17885c1f3;
  ::S17885C13 s17885c1f4;
  void  mf17885c1(); // _ZN8S17885C19mf17885c1Ev
};
//SIG(1 S17885C1) C1{ m Fp[2] FC2{ BC3{ vd v2} vd v1 FC4{ BC5{ m Fp} BC6{ m Fp} vd Fp[3]} Fp} FC7{ m Fp FC8{ m FC9{ m Fp Fi FC10{ m} FC11{ m}}} FC12{ m Fp}} Fc FC13{ BC14{ vd v4} v3 Fp FC15{}}}


void  S17885C1 ::mf17885c1(){}

static void Test_S17885C1()
{
  {
    init_simple_test("S17885C1");
    S17885C1 lv;
    check2(sizeof(lv), ABISELECT(144,76), "sizeof(S17885C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17885C1)");
    check_field_offset(lv, s17885c1f0, 0, "S17885C1.s17885c1f0");
    check_field_offset(lv, s17885c1f1, ABISELECT(16,8), "S17885C1.s17885c1f1");
    check_field_offset(lv, s17885c1f2, ABISELECT(80,40), "S17885C1.s17885c1f2");
    check_field_offset(lv, s17885c1f3, ABISELECT(112,60), "S17885C1.s17885c1f3");
    check_field_offset(lv, s17885c1f4, ABISELECT(120,64), "S17885C1.s17885c1f4");
  }
}
static Arrange_To_Call_Me vS17885C1(Test_S17885C1, "S17885C1", ABISELECT(144,76));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17522C3_nt  {
  char s17522c3f0[98];
};
//SIG(-1 S17522C3_nt) C1{ Fc[98]}



//skip512 S17522C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17522C2  {
  ::S17522C3_nt s17522c2f0;
  ::S17522C3_nt s17522c2f1;
  ::S17522C3_nt s17522c2f2;
  ::S17522C3_nt s17522c2f3;
};
//SIG(-1 S17522C2) C1{ FC2{ Fc[98]} FC2 FC2 FC2}



static void Test_S17522C2()
{
  {
    init_simple_test("S17522C2");
    S17522C2 lv;
    check2(sizeof(lv), 392, "sizeof(S17522C2)");
    check2(__alignof__(lv), 1, "__alignof__(S17522C2)");
    check_field_offset(lv, s17522c2f0, 0, "S17522C2.s17522c2f0");
    check_field_offset(lv, s17522c2f1, 98, "S17522C2.s17522c2f1");
    check_field_offset(lv, s17522c2f2, 196, "S17522C2.s17522c2f2");
    check_field_offset(lv, s17522c2f3, 294, "S17522C2.s17522c2f3");
  }
}
static Arrange_To_Call_Me vS17522C2(Test_S17522C2, "S17522C2", 392);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17522C1  {
  void *s17522c1f0;
  ::S17522C2 s17522c1f1;
  ::S10149C5 s17522c1f2[4];
  int s17522c1f3;
  void *s17522c1f4;
  char s17522c1f5[5];
  void *s17522c1f6[2];
  int s17522c1f7[14];
  void *s17522c1f8[4];
  void  mf17522c1(); // _ZN8S17522C19mf17522c1Ev
};
//SIG(1 S17522C1) C1{ m Fp FC2{ FC3{ Fc[98]} FC3 FC3 FC3} FC4{ Fi[3] Fc[68] Fi[4] Fc[36] Fi Fc[96] Fi Fc[560] Fi Fc[32] Fi Fc[256] Fi[13]}[4] Fi Fp Fc[5] Fp[2] Fi[14] Fp[4]}


void  S17522C1 ::mf17522c1(){}

static void Test_S17522C1()
{
  {
    init_simple_test("S17522C1");
    S17522C1 lv;
    check2(sizeof(lv), ABISELECT(5104,5068), "sizeof(S17522C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17522C1)");
    check_field_offset(lv, s17522c1f0, 0, "S17522C1.s17522c1f0");
    check_field_offset(lv, s17522c1f1, ABISELECT(8,4), "S17522C1.s17522c1f1");
    check_field_offset(lv, s17522c1f2, ABISELECT(400,396), "S17522C1.s17522c1f2");
    check_field_offset(lv, s17522c1f3, ABISELECT(4976,4972), "S17522C1.s17522c1f3");
    check_field_offset(lv, s17522c1f4, ABISELECT(4984,4976), "S17522C1.s17522c1f4");
    check_field_offset(lv, s17522c1f5, ABISELECT(4992,4980), "S17522C1.s17522c1f5");
    check_field_offset(lv, s17522c1f6, ABISELECT(5000,4988), "S17522C1.s17522c1f6");
    check_field_offset(lv, s17522c1f7, ABISELECT(5016,4996), "S17522C1.s17522c1f7");
    check_field_offset(lv, s17522c1f8, ABISELECT(5072,5052), "S17522C1.s17522c1f8");
  }
}
static Arrange_To_Call_Me vS17522C1(Test_S17522C1, "S17522C1", ABISELECT(5104,5068));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9697C2_nt  {
  ::S731C16_nt s9697c2f0;
  int s9697c2f1[2];
  char s9697c2f2;
  virtual  ~S9697C2_nt(); // _ZN10S9697C2_ntD1Ev
  virtual void  v4(); // _ZN10S9697C2_nt2v4Ev
  virtual void  v5(); // _ZN10S9697C2_nt2v5Ev
  virtual void  v6(); // _ZN10S9697C2_nt2v6Ev
  S9697C2_nt(); // tgen
};
//SIG(-1 S9697C2_nt) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9697C2_nt ::~S9697C2_nt(){ note_dtor("S9697C2_nt", this);}
void  S9697C2_nt ::v4(){vfunc_called(this, "_ZN10S9697C2_nt2v4Ev");}
void  S9697C2_nt ::v5(){vfunc_called(this, "_ZN10S9697C2_nt2v5Ev");}
void  S9697C2_nt ::v6(){vfunc_called(this, "_ZN10S9697C2_nt2v6Ev");}
S9697C2_nt ::S9697C2_nt(){ note_ctor("S9697C2_nt", this);} // tgen

//skip512 S9697C2_nt

#else // __cplusplus

extern void _ZN10S9697C2_ntC1Ev();
extern void _ZN10S9697C2_ntD1Ev();
Name_Map name_map_S9697C2_nt[] = {
  NSPAIR(_ZN10S9697C2_ntC1Ev),
  NSPAIR(_ZN10S9697C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S9697C2_nt[];
extern void _ZN10S9697C2_ntD1Ev();
extern void _ZN10S9697C2_ntD0Ev();
extern void _ZN10S9697C2_nt2v4Ev();
extern void _ZN10S9697C2_nt2v5Ev();
extern void _ZN10S9697C2_nt2v6Ev();
static  VTBL_ENTRY vtc_S9697C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S9697C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S9697C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S9697C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S9697C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S9697C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S9697C2_nt2v6Ev,
};
extern VTBL_ENTRY _ZTI10S9697C2_nt[];
VTBL_ENTRY *P__ZTI10S9697C2_nt = _ZTI10S9697C2_nt; 
extern  VTBL_ENTRY _ZTV10S9697C2_nt[];
Class_Descriptor cd_S9697C2_nt = {  "S9697C2_nt", // class name
  0,0,//no base classes
  &(vtc_S9697C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI10S9697C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S9697C2_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  S9697C10_nt  {
  int s9697c10f0[2];
  void  mf9697c10(); // _ZN11S9697C10_nt9mf9697c10Ev
};
//SIG(-1 S9697C10_nt) C1{ m Fi[2]}


void  S9697C10_nt ::mf9697c10(){}

//skip512 S9697C10_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9697C8_nt  {
  ::S28C9_nt s9697c8f0;
  ::S9697C10_nt s9697c8f1;
  void  mf9697c8(); // _ZN10S9697C8_nt8mf9697c8Ev
};
//SIG(-1 S9697C8_nt) C1{ m FC2{ m Fi[2]} FC3{ m Fi[2]}}


void  S9697C8_nt ::mf9697c8(){}

//skip512 S9697C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9697C7  {
  ::S9697C8_nt s9697c7f0;
  ::S9697C10_nt s9697c7f1;
  int s9697c7f2;
  void  mf9697c7(); // _ZN7S9697C78mf9697c7Ev
};
//SIG(-1 S9697C7) C1{ m FC2{ m FC3{ m Fi[2]} FC4{ m Fi[2]}} FC4 Fi}


void  S9697C7 ::mf9697c7(){}

static void Test_S9697C7()
{
  {
    init_simple_test("S9697C7");
    S9697C7 lv;
    check2(sizeof(lv), 28, "sizeof(S9697C7)");
    check2(__alignof__(lv), 4, "__alignof__(S9697C7)");
    check_field_offset(lv, s9697c7f0, 0, "S9697C7.s9697c7f0");
    check_field_offset(lv, s9697c7f1, 16, "S9697C7.s9697c7f1");
    check_field_offset(lv, s9697c7f2, 24, "S9697C7.s9697c7f2");
  }
}
static Arrange_To_Call_Me vS9697C7(Test_S9697C7, "S9697C7", 28);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9697C1  : S9697C2_nt {
  void *s9697c1f0;
  ::S28C39_nt s9697c1f1;
  ::S17885C12 s9697c1f2;
  ::S9697C7 s9697c1f3;
  ::S17885C12 s9697c1f4;
  ::S9697C10_nt s9697c1f5;
  void *s9697c1f6[3];
  int s9697c1f7;
  virtual  ~S9697C1(); // _ZN7S9697C1D1Ev
  virtual void  v1(); // _ZN7S9697C12v1Ev
  virtual void  v2(); // _ZN7S9697C12v2Ev
  virtual void  v3(); // _ZN7S9697C12v3Ev
  S9697C1(); // tgen
};
//SIG(1 S9697C1) C1{ BC2{ vd v4 v5 v6 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 Fp FC5{ m Fp[2]} FC6{ m Fp} FC7{ m FC8{ m FC9{ m Fi[2]} FC10{ m Fi[2]}} FC10 Fi} FC6 FC10 Fp[3] Fi}


 S9697C1 ::~S9697C1(){ note_dtor("S9697C1", this);}
void  S9697C1 ::v1(){vfunc_called(this, "_ZN7S9697C12v1Ev");}
void  S9697C1 ::v2(){vfunc_called(this, "_ZN7S9697C12v2Ev");}
void  S9697C1 ::v3(){vfunc_called(this, "_ZN7S9697C12v3Ev");}
S9697C1 ::S9697C1(){ note_ctor("S9697C1", this);} // tgen

static void Test_S9697C1()
{
  extern Class_Descriptor cd_S9697C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,26)];
    init_test(&cd_S9697C1, buf);
    S9697C1 *dp, &lv = *(dp=new (buf) S9697C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,100), "sizeof(S9697C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9697C1)");
    check_base_class_offset(lv, (S9697C2_nt*), 0, "S9697C1");
    check_field_offset(lv, s9697c1f0, ABISELECT(40,28), "S9697C1.s9697c1f0");
    check_field_offset(lv, s9697c1f1, ABISELECT(48,32), "S9697C1.s9697c1f1");
    check_field_offset(lv, s9697c1f2, ABISELECT(64,40), "S9697C1.s9697c1f2");
    check_field_offset(lv, s9697c1f3, ABISELECT(72,44), "S9697C1.s9697c1f3");
    check_field_offset(lv, s9697c1f4, ABISELECT(104,72), "S9697C1.s9697c1f4");
    check_field_offset(lv, s9697c1f5, ABISELECT(112,76), "S9697C1.s9697c1f5");
    check_field_offset(lv, s9697c1f6, ABISELECT(120,84), "S9697C1.s9697c1f6");
    check_field_offset(lv, s9697c1f7, ABISELECT(144,96), "S9697C1.s9697c1f7");
    test_class_info(&lv, &cd_S9697C1);
    dp->~S9697C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9697C1(Test_S9697C1, "S9697C1", ABISELECT(152,100));

#else // __cplusplus

extern void _ZN7S9697C1C1Ev();
extern void _ZN7S9697C1D1Ev();
Name_Map name_map_S9697C1[] = {
  NSPAIR(_ZN7S9697C1C1Ev),
  NSPAIR(_ZN7S9697C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9697C2_nt;
extern VTBL_ENTRY _ZTI10S9697C2_nt[];
extern  VTBL_ENTRY _ZTV10S9697C2_nt[];
static Base_Class bases_S9697C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9697C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9697C1[];
extern void _ZN7S9697C1D1Ev();
extern void _ZN7S9697C1D0Ev();
extern void _ZN10S9697C2_nt2v4Ev();
extern void _ZN10S9697C2_nt2v5Ev();
extern void _ZN10S9697C2_nt2v6Ev();
extern void _ZN7S9697C12v1Ev();
extern void _ZN7S9697C12v2Ev();
extern void _ZN7S9697C12v3Ev();
static  VTBL_ENTRY vtc_S9697C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9697C1[0]),
  (VTBL_ENTRY)&_ZN7S9697C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9697C1D0Ev,
  (VTBL_ENTRY)&_ZN10S9697C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S9697C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S9697C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN7S9697C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9697C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9697C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S9697C1[];
extern  VTBL_ENTRY _ZTV7S9697C1[];
Class_Descriptor cd_S9697C1 = {  "S9697C1", // class name
  bases_S9697C1, 1,
  &(vtc_S9697C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,100), // object size
  NSPAIRA(_ZTI7S9697C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9697C1),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  S21798C2  {
  void *s21798c2f0;
  char s21798c2f1;
  __tsi64 s21798c2f2[2];
  void *s21798c2f3[3];
  int s21798c2f4;
  virtual  ~S21798C2(); // _ZN8S21798C2D1Ev
  virtual void  v1(); // _ZN8S21798C22v1Ev
  S21798C2(); // tgen
};
//SIG(-1 S21798C2) C1{ vd v1 Fp Fc FL[2] Fp[3] Fi}


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

static void Test_S21798C2()
{
  extern Class_Descriptor cd_S21798C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S21798C2, buf);
    S21798C2 *dp, &lv = *(dp=new (buf) S21798C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S21798C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21798C2)");
    check_field_offset(lv, s21798c2f0, ABISELECT(8,4), "S21798C2.s21798c2f0");
    check_field_offset(lv, s21798c2f1, ABISELECT(16,8), "S21798C2.s21798c2f1");
    check_field_offset(lv, s21798c2f2, ABISELECT(24,12), "S21798C2.s21798c2f2");
    check_field_offset(lv, s21798c2f3, ABISELECT(40,28), "S21798C2.s21798c2f3");
    check_field_offset(lv, s21798c2f4, ABISELECT(64,40), "S21798C2.s21798c2f4");
    test_class_info(&lv, &cd_S21798C2);
    dp->~S21798C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21798C2(Test_S21798C2, "S21798C2", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN8S21798C2C1Ev();
extern void _ZN8S21798C2D1Ev();
Name_Map name_map_S21798C2[] = {
  NSPAIR(_ZN8S21798C2C1Ev),
  NSPAIR(_ZN8S21798C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21798C2[];
extern void _ZN8S21798C2D1Ev();
extern void _ZN8S21798C2D0Ev();
extern void _ZN8S21798C22v1Ev();
static  VTBL_ENTRY vtc_S21798C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21798C2[0]),
  (VTBL_ENTRY)&_ZN8S21798C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21798C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21798C22v1Ev,
};
extern VTBL_ENTRY _ZTI8S21798C2[];
extern  VTBL_ENTRY _ZTV8S21798C2[];
Class_Descriptor cd_S21798C2 = {  "S21798C2", // class name
  0,0,//no base classes
  &(vtc_S21798C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI8S21798C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21798C2),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  S21798C5  {
  char s21798c5f0:8;
  char s21798c5f1;
  void *s21798c5f2;
  long double s21798c5f3;
  int s21798c5f4[2];
  virtual  ~S21798C5(); // _ZN8S21798C5D1Ev
  virtual void  v2(); // _ZN8S21798C52v2Ev
  S21798C5(); // tgen
};
//SIG(-1 S21798C5) C1{ vd v1 Fc:8 Fc Fp FD Fi[2]}


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

static void Test_S21798C5()
{
  extern Class_Descriptor cd_S21798C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S21798C5, buf);
    S21798C5 *dp, &lv = *(dp=new (buf) S21798C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S21798C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21798C5)");
    set_bf_and_test(lv, s21798c5f0, ABISELECT(8,4), 0, 8, 1, "S21798C5");
    set_bf_and_test(lv, s21798c5f0, ABISELECT(8,4), 0, 8, hide_sll(1LL<<7), "S21798C5");
    check_field_offset(lv, s21798c5f1, ABISELECT(9,5), "S21798C5.s21798c5f1");
    check_field_offset(lv, s21798c5f2, ABISELECT(16,8), "S21798C5.s21798c5f2");
    check_field_offset(lv, s21798c5f3, ABISELECT(32,12), "S21798C5.s21798c5f3");
    check_field_offset(lv, s21798c5f4, ABISELECT(48,24), "S21798C5.s21798c5f4");
    test_class_info(&lv, &cd_S21798C5);
    dp->~S21798C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21798C5(Test_S21798C5, "S21798C5", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S21798C5C1Ev();
extern void _ZN8S21798C5D1Ev();
Name_Map name_map_S21798C5[] = {
  NSPAIR(_ZN8S21798C5C1Ev),
  NSPAIR(_ZN8S21798C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21798C5[];
extern void _ZN8S21798C5D1Ev();
extern void _ZN8S21798C5D0Ev();
extern void _ZN8S21798C52v2Ev();
static  VTBL_ENTRY vtc_S21798C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21798C5[0]),
  (VTBL_ENTRY)&_ZN8S21798C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21798C5D0Ev,
  (VTBL_ENTRY)&_ZN8S21798C52v2Ev,
};
extern VTBL_ENTRY _ZTI8S21798C5[];
extern  VTBL_ENTRY _ZTV8S21798C5[];
Class_Descriptor cd_S21798C5 = {  "S21798C5", // class name
  0,0,//no base classes
  &(vtc_S21798C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S21798C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21798C5),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  S21798C4  : S21798C5 {
  void *s21798c4f0;
  __tsi64 s21798c4f1;
  ::S21798C5 s21798c4f2[5];
  long double s21798c4f3[2];
  short s21798c4f4;
  ::S21798C2 s21798c4f5;
  virtual  ~S21798C4(); // _ZN8S21798C4D1Ev
  S21798C4(); // tgen
};
//SIG(1 S21798C4) C1{ BC2{ vd v1 Fc:8 Fc Fp FD Fi[2]} vd Fp FL FC2[5] FD[2] Fs FC3{ vd v2 Fp Fc FL[2] Fp[3] Fi}}


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

static void Test_S21798C4()
{
  extern Class_Descriptor cd_S21798C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(33,70)];
    init_test(&cd_S21798C4, buf);
    S21798C4 *dp, &lv = *(dp=new (buf) S21798C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(512,276), "sizeof(S21798C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21798C4)");
    check_base_class_offset(lv, (S21798C5*), 0, "S21798C4");
    check_field_offset(lv, s21798c4f0, ABISELECT(56,32), "S21798C4.s21798c4f0");
    check_field_offset(lv, s21798c4f1, ABISELECT(64,36), "S21798C4.s21798c4f1");
    check_field_offset(lv, s21798c4f2, ABISELECT(80,44), "S21798C4.s21798c4f2");
    check_field_offset(lv, s21798c4f3, ABISELECT(400,204), "S21798C4.s21798c4f3");
    check_field_offset(lv, s21798c4f4, ABISELECT(432,228), "S21798C4.s21798c4f4");
    check_field_offset(lv, s21798c4f5, ABISELECT(440,232), "S21798C4.s21798c4f5");
    test_class_info(&lv, &cd_S21798C4);
    dp->~S21798C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21798C4(Test_S21798C4, "S21798C4", ABISELECT(512,276));

#else // __cplusplus

extern void _ZN8S21798C4C1Ev();
extern void _ZN8S21798C4D1Ev();
Name_Map name_map_S21798C4[] = {
  NSPAIR(_ZN8S21798C4C1Ev),
  NSPAIR(_ZN8S21798C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21798C5;
extern VTBL_ENTRY _ZTI8S21798C5[];
extern  VTBL_ENTRY _ZTV8S21798C5[];
static Base_Class bases_S21798C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21798C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21798C4[];
extern void _ZN8S21798C4D1Ev();
extern void _ZN8S21798C4D0Ev();
extern void _ZN8S21798C52v2Ev();
static  VTBL_ENTRY vtc_S21798C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21798C4[0]),
  (VTBL_ENTRY)&_ZN8S21798C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21798C4D0Ev,
  (VTBL_ENTRY)&_ZN8S21798C52v2Ev,
};
extern VTBL_ENTRY _ZTI8S21798C4[];
extern  VTBL_ENTRY _ZTV8S21798C4[];
Class_Descriptor cd_S21798C4 = {  "S21798C4", // class name
  bases_S21798C4, 1,
  &(vtc_S21798C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(512,276), // object size
  NSPAIRA(_ZTI8S21798C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S21798C4),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21798C3  {
  void *s21798c3f0;
  int s21798c3f1;
  ::S21798C2 s21798c3f2;
  ::S21798C4 s21798c3f3[3];
  void  mf21798c3(); // _ZN8S21798C39mf21798c3Ev
};
//SIG(-1 S21798C3) C1{ m Fp Fi FC2{ vd v1 Fp Fc FL[2] Fp[3] Fi} FC3{ BC4{ vd v2 Fc:8 Fc Fp FD Fi[2]} vd Fp FL FC4[5] FD[2] Fs FC2}[3]}


void  S21798C3 ::mf21798c3(){}

static void Test_S21798C3()
{
  {
    init_simple_test("S21798C3");
    static S21798C3 lv;
    check2(sizeof(lv), ABISELECT(1632,880), "sizeof(S21798C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21798C3)");
    check_field_offset(lv, s21798c3f0, 0, "S21798C3.s21798c3f0");
    check_field_offset(lv, s21798c3f1, ABISELECT(8,4), "S21798C3.s21798c3f1");
    check_field_offset(lv, s21798c3f2, ABISELECT(16,8), "S21798C3.s21798c3f2");
    check_field_offset(lv, s21798c3f3, ABISELECT(96,52), "S21798C3.s21798c3f3");
  }
}
static Arrange_To_Call_Me vS21798C3(Test_S21798C3, "S21798C3", ABISELECT(1632,880));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21798C1  {
  void *s21798c1f0[2];
  ::S21798C2 s21798c1f1;
  void *s21798c1f2;
  ::S21798C3 s21798c1f3;
  int s21798c1f4:32;
  int s21798c1f5:8;
  __tsi64 s21798c1f6;
  void  mf21798c1(); // _ZN8S21798C19mf21798c1Ev
  virtual  ~S21798C1(); // _ZN8S21798C1D1Ev
  S21798C1(); // tgen
};
//SIG(1 S21798C1) C1{ vd m Fp[2] FC2{ vd v1 Fp Fc FL[2] Fp[3] Fi} Fp FC3{ m Fp Fi FC2 FC4{ BC5{ vd v2 Fc:8 Fc Fp FD Fi[2]} vd Fp FL FC5[5] FD[2] Fs FC2}[3]} Fi:32 Fi:8 FL}


void  S21798C1 ::mf21798c1(){}
 S21798C1 ::~S21798C1(){ note_dtor("S21798C1", this);}
S21798C1 ::S21798C1(){ note_ctor("S21798C1", this);} // tgen

static void Test_S21798C1()
{
  extern Class_Descriptor cd_S21798C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(111,240)];
    init_test(&cd_S21798C1, buf);
    S21798C1 *dp, &lv = *(dp=new (buf) S21798C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1760,956), "sizeof(S21798C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21798C1)");
    check_field_offset(lv, s21798c1f0, ABISELECT(8,4), "S21798C1.s21798c1f0");
    check_field_offset(lv, s21798c1f1, ABISELECT(24,12), "S21798C1.s21798c1f1");
    check_field_offset(lv, s21798c1f2, ABISELECT(96,56), "S21798C1.s21798c1f2");
    check_field_offset(lv, s21798c1f3, ABISELECT(112,60), "S21798C1.s21798c1f3");
    set_bf_and_test(lv, s21798c1f4, ABISELECT(1744,940), 0, 32, 1, "S21798C1");
    set_bf_and_test(lv, s21798c1f4, ABISELECT(1744,940), 0, 32, hide_sll(1LL<<31), "S21798C1");
    set_bf_and_test(lv, s21798c1f5, ABISELECT(1748,944), 0, 8, 1, "S21798C1");
    set_bf_and_test(lv, s21798c1f5, ABISELECT(1748,944), 0, 8, hide_sll(1LL<<7), "S21798C1");
    check_field_offset(lv, s21798c1f6, ABISELECT(1752,948), "S21798C1.s21798c1f6");
    test_class_info(&lv, &cd_S21798C1);
    dp->~S21798C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21798C1(Test_S21798C1, "S21798C1", ABISELECT(1760,956));

#else // __cplusplus

extern void _ZN8S21798C1C1Ev();
extern void _ZN8S21798C1D1Ev();
Name_Map name_map_S21798C1[] = {
  NSPAIR(_ZN8S21798C1C1Ev),
  NSPAIR(_ZN8S21798C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21798C1[];
extern void _ZN8S21798C1D1Ev();
extern void _ZN8S21798C1D0Ev();
static  VTBL_ENTRY vtc_S21798C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21798C1[0]),
  (VTBL_ENTRY)&_ZN8S21798C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21798C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21798C1[];
extern  VTBL_ENTRY _ZTV8S21798C1[];
Class_Descriptor cd_S21798C1 = {  "S21798C1", // class name
  0,0,//no base classes
  &(vtc_S21798C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1760,956), // object size
  NSPAIRA(_ZTI8S21798C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21798C1),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  S10130C2_nt  {
  void *s10130c2f0;
  int s10130c2f1;
  virtual  ~S10130C2_nt(); // _ZN11S10130C2_ntD1Ev
  virtual void  v7(); // _ZN11S10130C2_nt2v7Ev
  virtual void  v8(); // _ZN11S10130C2_nt2v8Ev
  virtual void  v9(); // _ZN11S10130C2_nt2v9Ev
  virtual void  v10(); // _ZN11S10130C2_nt3v10Ev
  virtual void  v11(); // _ZN11S10130C2_nt3v11Ev
  virtual void  v12(); // _ZN11S10130C2_nt3v12Ev
  virtual void  v13(); // _ZN11S10130C2_nt3v13Ev
  virtual void  v14(); // _ZN11S10130C2_nt3v14Ev
  virtual void  v15(); // _ZN11S10130C2_nt3v15Ev
  virtual void  v16(); // _ZN11S10130C2_nt3v16Ev
  S10130C2_nt(); // tgen
};
//SIG(-1 S10130C2_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fp Fi}


 S10130C2_nt ::~S10130C2_nt(){ note_dtor("S10130C2_nt", this);}
void  S10130C2_nt ::v7(){vfunc_called(this, "_ZN11S10130C2_nt2v7Ev");}
void  S10130C2_nt ::v8(){vfunc_called(this, "_ZN11S10130C2_nt2v8Ev");}
void  S10130C2_nt ::v9(){vfunc_called(this, "_ZN11S10130C2_nt2v9Ev");}
void  S10130C2_nt ::v10(){vfunc_called(this, "_ZN11S10130C2_nt3v10Ev");}
void  S10130C2_nt ::v11(){vfunc_called(this, "_ZN11S10130C2_nt3v11Ev");}
void  S10130C2_nt ::v12(){vfunc_called(this, "_ZN11S10130C2_nt3v12Ev");}
void  S10130C2_nt ::v13(){vfunc_called(this, "_ZN11S10130C2_nt3v13Ev");}
void  S10130C2_nt ::v14(){vfunc_called(this, "_ZN11S10130C2_nt3v14Ev");}
void  S10130C2_nt ::v15(){vfunc_called(this, "_ZN11S10130C2_nt3v15Ev");}
void  S10130C2_nt ::v16(){vfunc_called(this, "_ZN11S10130C2_nt3v16Ev");}
S10130C2_nt ::S10130C2_nt(){ note_ctor("S10130C2_nt", this);} // tgen

//skip512 S10130C2_nt

#else // __cplusplus

extern void _ZN11S10130C2_ntC1Ev();
extern void _ZN11S10130C2_ntD1Ev();
Name_Map name_map_S10130C2_nt[] = {
  NSPAIR(_ZN11S10130C2_ntC1Ev),
  NSPAIR(_ZN11S10130C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S10130C2_nt[];
extern void _ZN11S10130C2_ntD1Ev();
extern void _ZN11S10130C2_ntD0Ev();
extern void _ZN11S10130C2_nt2v7Ev();
extern void _ZN11S10130C2_nt2v8Ev();
extern void _ZN11S10130C2_nt2v9Ev();
extern void _ZN11S10130C2_nt3v10Ev();
extern void _ZN11S10130C2_nt3v11Ev();
extern void _ZN11S10130C2_nt3v12Ev();
extern void _ZN11S10130C2_nt3v13Ev();
extern void _ZN11S10130C2_nt3v14Ev();
extern void _ZN11S10130C2_nt3v15Ev();
extern void _ZN11S10130C2_nt3v16Ev();
static  VTBL_ENTRY vtc_S10130C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S10130C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S10130C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S10130C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S10130C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S10130C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S10130C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S10130C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S10130C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S10130C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S10130C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S10130C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S10130C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN11S10130C2_nt3v16Ev,
};
extern VTBL_ENTRY _ZTI11S10130C2_nt[];
VTBL_ENTRY *P__ZTI11S10130C2_nt = _ZTI11S10130C2_nt; 
extern  VTBL_ENTRY _ZTV11S10130C2_nt[];
Class_Descriptor cd_S10130C2_nt = {  "S10130C2_nt", // class name
  0,0,//no base classes
  &(vtc_S10130C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI11S10130C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S10130C2_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  S10130C3  {
  virtual  ~S10130C3(); // _ZN8S10130C3D1Ev
  virtual void  v17(); // _ZN8S10130C33v17Ev
  S10130C3(); // tgen
};
//SIG(-1 S10130C3) C1{ vd v1}


 S10130C3 ::~S10130C3(){ note_dtor("S10130C3", this);}
void  S10130C3 ::v17(){vfunc_called(this, "_ZN8S10130C33v17Ev");}
S10130C3 ::S10130C3(){ note_ctor("S10130C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S10130C3C1Ev();
extern void _ZN8S10130C3D1Ev();
Name_Map name_map_S10130C3[] = {
  NSPAIR(_ZN8S10130C3C1Ev),
  NSPAIR(_ZN8S10130C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10130C3[];
extern void _ZN8S10130C3D1Ev();
extern void _ZN8S10130C3D0Ev();
extern void _ZN8S10130C33v17Ev();
static  VTBL_ENTRY vtc_S10130C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10130C3[0]),
  (VTBL_ENTRY)&_ZN8S10130C3D1Ev,
  (VTBL_ENTRY)&_ZN8S10130C3D0Ev,
  (VTBL_ENTRY)&_ZN8S10130C33v17Ev,
};
extern VTBL_ENTRY _ZTI8S10130C3[];
extern  VTBL_ENTRY _ZTV8S10130C3[];
Class_Descriptor cd_S10130C3 = {  "S10130C3", // class name
  0,0,//no base classes
  &(vtc_S10130C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S10130C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10130C3),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  S10130C4_nt  {
  char s10130c4f0;
  __tsi64 s10130c4f1[2];
  char s10130c4f2;
  virtual  ~S10130C4_nt(); // _ZN11S10130C4_ntD1Ev
  virtual void  v18(); // _ZN11S10130C4_nt3v18Ev
  S10130C4_nt(); // tgen
};
//SIG(-1 S10130C4_nt) C1{ vd v1 Fc FL[2] Fc}


 S10130C4_nt ::~S10130C4_nt(){ note_dtor("S10130C4_nt", this);}
void  S10130C4_nt ::v18(){vfunc_called(this, "_ZN11S10130C4_nt3v18Ev");}
S10130C4_nt ::S10130C4_nt(){ note_ctor("S10130C4_nt", this);} // tgen

//skip512 S10130C4_nt

#else // __cplusplus

extern void _ZN11S10130C4_ntC1Ev();
extern void _ZN11S10130C4_ntD1Ev();
Name_Map name_map_S10130C4_nt[] = {
  NSPAIR(_ZN11S10130C4_ntC1Ev),
  NSPAIR(_ZN11S10130C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S10130C4_nt[];
extern void _ZN11S10130C4_ntD1Ev();
extern void _ZN11S10130C4_ntD0Ev();
extern void _ZN11S10130C4_nt3v18Ev();
static  VTBL_ENTRY vtc_S10130C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S10130C4_nt[0]),
  (VTBL_ENTRY)&_ZN11S10130C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S10130C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S10130C4_nt3v18Ev,
};
extern VTBL_ENTRY _ZTI11S10130C4_nt[];
VTBL_ENTRY *P__ZTI11S10130C4_nt = _ZTI11S10130C4_nt; 
extern  VTBL_ENTRY _ZTV11S10130C4_nt[];
Class_Descriptor cd_S10130C4_nt = {  "S10130C4_nt", // class name
  0,0,//no base classes
  &(vtc_S10130C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI11S10130C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S10130C4_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  S10130C1  : S10130C2_nt , S10130C3 , S10130C4_nt {
  int s10130c1f0;
  ::S731C20 s10130c1f1;
  char s10130c1f2;
  void *s10130c1f3[2];
  virtual  ~S10130C1(); // _ZN8S10130C1D1Ev
  virtual void  v1(); // _ZN8S10130C12v1Ev
  virtual void  v2(); // _ZN8S10130C12v2Ev
  virtual void  v3(); // _ZN8S10130C12v3Ev
  virtual void  v4(); // _ZN8S10130C12v4Ev
  virtual void  v5(); // _ZN8S10130C12v5Ev
  virtual void  v6(); // _ZN8S10130C12v6Ev
  S10130C1(); // tgen
};
//SIG(1 S10130C1) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 Fp Fi} BC3{ vd v17} BC4{ vd v18 Fc FL[2] Fc} vd v1 v2 v3 v4 v5 v6 Fi FC5{ m Fp Fi[2] FC6{ m}} Fc Fp[2]}


 S10130C1 ::~S10130C1(){ note_dtor("S10130C1", this);}
void  S10130C1 ::v1(){vfunc_called(this, "_ZN8S10130C12v1Ev");}
void  S10130C1 ::v2(){vfunc_called(this, "_ZN8S10130C12v2Ev");}
void  S10130C1 ::v3(){vfunc_called(this, "_ZN8S10130C12v3Ev");}
void  S10130C1 ::v4(){vfunc_called(this, "_ZN8S10130C12v4Ev");}
void  S10130C1 ::v5(){vfunc_called(this, "_ZN8S10130C12v5Ev");}
void  S10130C1 ::v6(){vfunc_called(this, "_ZN8S10130C12v6Ev");}
S10130C1 ::S10130C1(){ note_ctor("S10130C1", this);} // tgen

static void Test_S10130C1()
{
  extern Class_Descriptor cd_S10130C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,20)];
    init_test(&cd_S10130C1, buf);
    S10130C1 *dp, &lv = *(dp=new (buf) S10130C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,76), "sizeof(S10130C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10130C1)");
    check_base_class_offset(lv, (S10130C2_nt*), 0, "S10130C1");
    check_base_class_offset(lv, (S10130C3*), ABISELECT(24,12), "S10130C1");
    check_base_class_offset(lv, (S10130C4_nt*), ABISELECT(32,16), "S10130C1");
    check_field_offset(lv, s10130c1f0, ABISELECT(68,44), "S10130C1.s10130c1f0");
    check_field_offset(lv, s10130c1f1, ABISELECT(72,48), "S10130C1.s10130c1f1");
    check_field_offset(lv, s10130c1f2, ABISELECT(96,64), "S10130C1.s10130c1f2");
    check_field_offset(lv, s10130c1f3, ABISELECT(104,68), "S10130C1.s10130c1f3");
    test_class_info(&lv, &cd_S10130C1);
    dp->~S10130C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10130C1(Test_S10130C1, "S10130C1", ABISELECT(120,76));

#else // __cplusplus

extern void _ZN8S10130C1C1Ev();
extern void _ZN8S10130C1D1Ev();
Name_Map name_map_S10130C1[] = {
  NSPAIR(_ZN8S10130C1C1Ev),
  NSPAIR(_ZN8S10130C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10130C2_nt;
extern VTBL_ENTRY _ZTI11S10130C2_nt[];
extern  VTBL_ENTRY _ZTV11S10130C2_nt[];
extern Class_Descriptor cd_S10130C3;
extern VTBL_ENTRY _ZTI8S10130C3[];
extern  VTBL_ENTRY _ZTV8S10130C3[];
extern Class_Descriptor cd_S10130C4_nt;
extern VTBL_ENTRY _ZTI11S10130C4_nt[];
extern  VTBL_ENTRY _ZTV11S10130C4_nt[];
static Base_Class bases_S10130C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10130C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10130C3,    ABISELECT(24,12), //bcp->offset
    20, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10130C4_nt,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10130C1[];
extern void _ZN8S10130C1D1Ev();
extern void _ZN8S10130C1D0Ev();
extern void _ZN11S10130C2_nt2v7Ev();
extern void _ZN11S10130C2_nt2v8Ev();
extern void _ZN11S10130C2_nt2v9Ev();
extern void _ZN11S10130C2_nt3v10Ev();
extern void _ZN11S10130C2_nt3v11Ev();
extern void _ZN11S10130C2_nt3v12Ev();
extern void _ZN11S10130C2_nt3v13Ev();
extern void _ZN11S10130C2_nt3v14Ev();
extern void _ZN11S10130C2_nt3v15Ev();
extern void _ZN11S10130C2_nt3v16Ev();
extern void _ZN8S10130C12v1Ev();
extern void _ZN8S10130C12v2Ev();
extern void _ZN8S10130C12v3Ev();
extern void _ZN8S10130C12v4Ev();
extern void _ZN8S10130C12v5Ev();
extern void _ZN8S10130C12v6Ev();
extern void ABISELECT(_ZThn24_N8S10130C1D1Ev,_ZThn12_N8S10130C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S10130C1D0Ev,_ZThn12_N8S10130C1D0Ev)();
extern void _ZN8S10130C33v17Ev();
extern void ABISELECT(_ZThn32_N8S10130C1D1Ev,_ZThn16_N8S10130C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S10130C1D0Ev,_ZThn16_N8S10130C1D0Ev)();
extern void _ZN11S10130C4_nt3v18Ev();
static  VTBL_ENTRY vtc_S10130C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10130C1[0]),
  (VTBL_ENTRY)&_ZN8S10130C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10130C1D0Ev,
  (VTBL_ENTRY)&_ZN11S10130C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S10130C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S10130C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S10130C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S10130C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S10130C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S10130C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S10130C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S10130C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN11S10130C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN8S10130C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10130C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10130C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10130C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10130C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10130C12v6Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S10130C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S10130C1D1Ev,_ZThn12_N8S10130C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S10130C1D0Ev,_ZThn12_N8S10130C1D0Ev),
  (VTBL_ENTRY)&_ZN8S10130C33v17Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S10130C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S10130C1D1Ev,_ZThn16_N8S10130C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N8S10130C1D0Ev,_ZThn16_N8S10130C1D0Ev),
  (VTBL_ENTRY)&_ZN11S10130C4_nt3v18Ev,
};
extern VTBL_ENTRY _ZTI8S10130C1[];
extern  VTBL_ENTRY _ZTV8S10130C1[];
Class_Descriptor cd_S10130C1 = {  "S10130C1", // class name
  bases_S10130C1, 3,
  &(vtc_S10130C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,76), // object size
  NSPAIRA(_ZTI8S10130C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S10130C1),30, //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  S9252C2  {
  ::S731C16_nt s9252c2f0;
  int s9252c2f1[2];
  char s9252c2f2;
  virtual  ~S9252C2(); // _ZN7S9252C2D1Ev
  virtual void  v3(); // _ZN7S9252C22v3Ev
  virtual void  v4(); // _ZN7S9252C22v4Ev
  virtual void  v5(); // _ZN7S9252C22v5Ev
  S9252C2(); // tgen
};
//SIG(-1 S9252C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9252C2 ::~S9252C2(){ note_dtor("S9252C2", this);}
void  S9252C2 ::v3(){vfunc_called(this, "_ZN7S9252C22v3Ev");}
void  S9252C2 ::v4(){vfunc_called(this, "_ZN7S9252C22v4Ev");}
void  S9252C2 ::v5(){vfunc_called(this, "_ZN7S9252C22v5Ev");}
S9252C2 ::S9252C2(){ note_ctor("S9252C2", this);} // tgen

static void Test_S9252C2()
{
  extern Class_Descriptor cd_S9252C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9252C2, buf);
    S9252C2 *dp, &lv = *(dp=new (buf) S9252C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9252C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9252C2)");
    check_field_offset(lv, s9252c2f0, ABISELECT(8,4), "S9252C2.s9252c2f0");
    check_field_offset(lv, s9252c2f1, ABISELECT(24,16), "S9252C2.s9252c2f1");
    check_field_offset(lv, s9252c2f2, ABISELECT(32,24), "S9252C2.s9252c2f2");
    test_class_info(&lv, &cd_S9252C2);
    dp->~S9252C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9252C2(Test_S9252C2, "S9252C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9252C2C1Ev();
extern void _ZN7S9252C2D1Ev();
Name_Map name_map_S9252C2[] = {
  NSPAIR(_ZN7S9252C2C1Ev),
  NSPAIR(_ZN7S9252C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9252C2[];
extern void _ZN7S9252C2D1Ev();
extern void _ZN7S9252C2D0Ev();
extern void _ZN7S9252C22v3Ev();
extern void _ZN7S9252C22v4Ev();
extern void _ZN7S9252C22v5Ev();
static  VTBL_ENTRY vtc_S9252C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9252C2[0]),
  (VTBL_ENTRY)&_ZN7S9252C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9252C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9252C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9252C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9252C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9252C2[];
extern  VTBL_ENTRY _ZTV7S9252C2[];
Class_Descriptor cd_S9252C2 = {  "S9252C2", // class name
  0,0,//no base classes
  &(vtc_S9252C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9252C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9252C2),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  S9252C5  {
  ::S731C20 s9252c5f0;
  ::S731C20 s9252c5f1;
  char s9252c5f2[3];
  ::S9697C10_nt s9252c5f3;
  ::S731C16_nt s9252c5f4;
  void  mf9252c5(); // _ZN7S9252C58mf9252c5Ev
};
//SIG(-1 S9252C5) C1{ m FC2{ m Fp Fi[2] FC3{ m}} FC2 Fc[3] FC4{ m Fi[2]} FC5{ m Fp Fi FC3}}


void  S9252C5 ::mf9252c5(){}

static void Test_S9252C5()
{
  {
    init_simple_test("S9252C5");
    S9252C5 lv;
    check2(sizeof(lv), ABISELECT(80,56), "sizeof(S9252C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9252C5)");
    check_field_offset(lv, s9252c5f0, 0, "S9252C5.s9252c5f0");
    check_field_offset(lv, s9252c5f1, ABISELECT(24,16), "S9252C5.s9252c5f1");
    check_field_offset(lv, s9252c5f2, ABISELECT(48,32), "S9252C5.s9252c5f2");
    check_field_offset(lv, s9252c5f3, ABISELECT(52,36), "S9252C5.s9252c5f3");
    check_field_offset(lv, s9252c5f4, ABISELECT(64,44), "S9252C5.s9252c5f4");
  }
}
static Arrange_To_Call_Me vS9252C5(Test_S9252C5, "S9252C5", ABISELECT(80,56));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9252C1  : S9252C2 {
  char s9252c1f0[2];
  int s9252c1f1[2];
  ::S9252C5 s9252c1f2;
  int s9252c1f3[2];
  char s9252c1f4[3];
  void *s9252c1f5[3];
  virtual  ~S9252C1(); // _ZN7S9252C1D1Ev
  virtual void  v1(); // _ZN7S9252C12v1Ev
  virtual void  v2(); // _ZN7S9252C12v2Ev
  S9252C1(); // tgen
};
//SIG(1 S9252C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 Fc[2] Fi[2] FC5{ m FC6{ m Fp Fi[2] FC4} FC6 Fc[3] FC7{ m Fi[2]} FC3} Fi[2] Fc[3] Fp[3]}


 S9252C1 ::~S9252C1(){ note_dtor("S9252C1", this);}
void  S9252C1 ::v1(){vfunc_called(this, "_ZN7S9252C12v1Ev");}
void  S9252C1 ::v2(){vfunc_called(this, "_ZN7S9252C12v2Ev");}
S9252C1 ::S9252C1(){ note_ctor("S9252C1", this);} // tgen

static void Test_S9252C1()
{
  extern Class_Descriptor cd_S9252C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,30)];
    init_test(&cd_S9252C1, buf);
    S9252C1 *dp, &lv = *(dp=new (buf) S9252C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,116), "sizeof(S9252C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9252C1)");
    check_base_class_offset(lv, (S9252C2*), 0, "S9252C1");
    check_field_offset(lv, s9252c1f0, ABISELECT(33,25), "S9252C1.s9252c1f0");
    check_field_offset(lv, s9252c1f1, ABISELECT(36,28), "S9252C1.s9252c1f1");
    check_field_offset(lv, s9252c1f2, ABISELECT(48,36), "S9252C1.s9252c1f2");
    check_field_offset(lv, s9252c1f3, ABISELECT(128,92), "S9252C1.s9252c1f3");
    check_field_offset(lv, s9252c1f4, ABISELECT(136,100), "S9252C1.s9252c1f4");
    check_field_offset(lv, s9252c1f5, ABISELECT(144,104), "S9252C1.s9252c1f5");
    test_class_info(&lv, &cd_S9252C1);
    dp->~S9252C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9252C1(Test_S9252C1, "S9252C1", ABISELECT(168,116));

#else // __cplusplus

extern void _ZN7S9252C1C1Ev();
extern void _ZN7S9252C1D1Ev();
Name_Map name_map_S9252C1[] = {
  NSPAIR(_ZN7S9252C1C1Ev),
  NSPAIR(_ZN7S9252C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9252C2;
extern VTBL_ENTRY _ZTI7S9252C2[];
extern  VTBL_ENTRY _ZTV7S9252C2[];
static Base_Class bases_S9252C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9252C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9252C1[];
extern void _ZN7S9252C1D1Ev();
extern void _ZN7S9252C1D0Ev();
extern void _ZN7S9252C22v3Ev();
extern void _ZN7S9252C22v4Ev();
extern void _ZN7S9252C22v5Ev();
extern void _ZN7S9252C12v1Ev();
extern void _ZN7S9252C12v2Ev();
static  VTBL_ENTRY vtc_S9252C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9252C1[0]),
  (VTBL_ENTRY)&_ZN7S9252C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9252C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9252C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9252C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9252C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9252C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9252C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9252C1[];
extern  VTBL_ENTRY _ZTV7S9252C1[];
Class_Descriptor cd_S9252C1 = {  "S9252C1", // class name
  bases_S9252C1, 1,
  &(vtc_S9252C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,116), // object size
  NSPAIRA(_ZTI7S9252C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9252C1),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  S10150C2  {
  virtual  ~S10150C2(); // _ZN8S10150C2D1Ev
  virtual void  v7(); // _ZN8S10150C22v7Ev
  virtual void  v8(); // _ZN8S10150C22v8Ev
  virtual void  v9(); // _ZN8S10150C22v9Ev
  virtual void  v10(); // _ZN8S10150C23v10Ev
  virtual void  v11(); // _ZN8S10150C23v11Ev
  virtual void  v12(); // _ZN8S10150C23v12Ev
  virtual void  v13(); // _ZN8S10150C23v13Ev
  virtual void  v14(); // _ZN8S10150C23v14Ev
  virtual void  v15(); // _ZN8S10150C23v15Ev
  S10150C2(); // tgen
};
//SIG(-1 S10150C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S10150C2 ::~S10150C2(){ note_dtor("S10150C2", this);}
void  S10150C2 ::v7(){vfunc_called(this, "_ZN8S10150C22v7Ev");}
void  S10150C2 ::v8(){vfunc_called(this, "_ZN8S10150C22v8Ev");}
void  S10150C2 ::v9(){vfunc_called(this, "_ZN8S10150C22v9Ev");}
void  S10150C2 ::v10(){vfunc_called(this, "_ZN8S10150C23v10Ev");}
void  S10150C2 ::v11(){vfunc_called(this, "_ZN8S10150C23v11Ev");}
void  S10150C2 ::v12(){vfunc_called(this, "_ZN8S10150C23v12Ev");}
void  S10150C2 ::v13(){vfunc_called(this, "_ZN8S10150C23v13Ev");}
void  S10150C2 ::v14(){vfunc_called(this, "_ZN8S10150C23v14Ev");}
void  S10150C2 ::v15(){vfunc_called(this, "_ZN8S10150C23v15Ev");}
S10150C2 ::S10150C2(){ note_ctor("S10150C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S10150C2C1Ev();
extern void _ZN8S10150C2D1Ev();
Name_Map name_map_S10150C2[] = {
  NSPAIR(_ZN8S10150C2C1Ev),
  NSPAIR(_ZN8S10150C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10150C2[];
extern void _ZN8S10150C2D1Ev();
extern void _ZN8S10150C2D0Ev();
extern void _ZN8S10150C22v7Ev();
extern void _ZN8S10150C22v8Ev();
extern void _ZN8S10150C22v9Ev();
extern void _ZN8S10150C23v10Ev();
extern void _ZN8S10150C23v11Ev();
extern void _ZN8S10150C23v12Ev();
extern void _ZN8S10150C23v13Ev();
extern void _ZN8S10150C23v14Ev();
extern void _ZN8S10150C23v15Ev();
static  VTBL_ENTRY vtc_S10150C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10150C2[0]),
  (VTBL_ENTRY)&_ZN8S10150C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10150C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10150C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10150C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10150C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10150C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10150C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10150C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10150C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10150C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10150C23v15Ev,
};
extern VTBL_ENTRY _ZTI8S10150C2[];
extern  VTBL_ENTRY _ZTV8S10150C2[];
Class_Descriptor cd_S10150C2 = {  "S10150C2", // class name
  0,0,//no base classes
  &(vtc_S10150C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S10150C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10150C2),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  S10150C1  : S10150C2 {
  ::S731C16_nt s10150c1f0;
  ::S731C16_nt s10150c1f1;
  ::S731C16_nt s10150c1f2;
  ::S731C16_nt s10150c1f3;
  ::S731C16_nt s10150c1f4;
  ::S731C16_nt s10150c1f5;
  ::S731C16_nt s10150c1f6;
  ::S731C16_nt s10150c1f7;
  void *s10150c1f8[2];
  int s10150c1f9[10];
  char s10150c1f10[13];
  void *s10150c1f11[7];
  virtual  ~S10150C1(); // _ZN8S10150C1D1Ev
  virtual void  v1(); // _ZN8S10150C12v1Ev
  virtual void  v2(); // _ZN8S10150C12v2Ev
  virtual void  v3(); // _ZN8S10150C12v3Ev
  virtual void  v4(); // _ZN8S10150C12v4Ev
  virtual void  v5(); // _ZN8S10150C12v5Ev
  virtual void  v6(); // _ZN8S10150C12v6Ev
  S10150C1(); // tgen
};
//SIG(1 S10150C1) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 v13 v14 v15} vd v1 v2 v3 v4 v5 v6 FC3{ m Fp Fi FC4{ m}} FC3 FC3 FC3 FC3 FC3 FC3 FC3 Fp[2] Fi[10] Fc[13] Fp[7]}


 S10150C1 ::~S10150C1(){ note_dtor("S10150C1", this);}
void  S10150C1 ::v1(){vfunc_called(this, "_ZN8S10150C12v1Ev");}
void  S10150C1 ::v2(){vfunc_called(this, "_ZN8S10150C12v2Ev");}
void  S10150C1 ::v3(){vfunc_called(this, "_ZN8S10150C12v3Ev");}
void  S10150C1 ::v4(){vfunc_called(this, "_ZN8S10150C12v4Ev");}
void  S10150C1 ::v5(){vfunc_called(this, "_ZN8S10150C12v5Ev");}
void  S10150C1 ::v6(){vfunc_called(this, "_ZN8S10150C12v6Ev");}
S10150C1 ::S10150C1(){ note_ctor("S10150C1", this);} // tgen

static void Test_S10150C1()
{
  extern Class_Descriptor cd_S10150C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(34,49)];
    init_test(&cd_S10150C1, buf);
    S10150C1 *dp, &lv = *(dp=new (buf) S10150C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(264,192), "sizeof(S10150C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10150C1)");
    check_base_class_offset(lv, (S10150C2*), 0, "S10150C1");
    check_field_offset(lv, s10150c1f0, ABISELECT(8,4), "S10150C1.s10150c1f0");
    check_field_offset(lv, s10150c1f1, ABISELECT(24,16), "S10150C1.s10150c1f1");
    check_field_offset(lv, s10150c1f2, ABISELECT(40,28), "S10150C1.s10150c1f2");
    check_field_offset(lv, s10150c1f3, ABISELECT(56,40), "S10150C1.s10150c1f3");
    check_field_offset(lv, s10150c1f4, ABISELECT(72,52), "S10150C1.s10150c1f4");
    check_field_offset(lv, s10150c1f5, ABISELECT(88,64), "S10150C1.s10150c1f5");
    check_field_offset(lv, s10150c1f6, ABISELECT(104,76), "S10150C1.s10150c1f6");
    check_field_offset(lv, s10150c1f7, ABISELECT(120,88), "S10150C1.s10150c1f7");
    check_field_offset(lv, s10150c1f8, ABISELECT(136,100), "S10150C1.s10150c1f8");
    check_field_offset(lv, s10150c1f9, ABISELECT(152,108), "S10150C1.s10150c1f9");
    check_field_offset(lv, s10150c1f10, ABISELECT(192,148), "S10150C1.s10150c1f10");
    check_field_offset(lv, s10150c1f11, ABISELECT(208,164), "S10150C1.s10150c1f11");
    test_class_info(&lv, &cd_S10150C1);
    dp->~S10150C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10150C1(Test_S10150C1, "S10150C1", ABISELECT(264,192));

#else // __cplusplus

extern void _ZN8S10150C1C1Ev();
extern void _ZN8S10150C1D1Ev();
Name_Map name_map_S10150C1[] = {
  NSPAIR(_ZN8S10150C1C1Ev),
  NSPAIR(_ZN8S10150C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10150C2;
extern VTBL_ENTRY _ZTI8S10150C2[];
extern  VTBL_ENTRY _ZTV8S10150C2[];
static Base_Class bases_S10150C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10150C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10150C1[];
extern void _ZN8S10150C1D1Ev();
extern void _ZN8S10150C1D0Ev();
extern void _ZN8S10150C22v7Ev();
extern void _ZN8S10150C22v8Ev();
extern void _ZN8S10150C22v9Ev();
extern void _ZN8S10150C23v10Ev();
extern void _ZN8S10150C23v11Ev();
extern void _ZN8S10150C23v12Ev();
extern void _ZN8S10150C23v13Ev();
extern void _ZN8S10150C23v14Ev();
extern void _ZN8S10150C23v15Ev();
extern void _ZN8S10150C12v1Ev();
extern void _ZN8S10150C12v2Ev();
extern void _ZN8S10150C12v3Ev();
extern void _ZN8S10150C12v4Ev();
extern void _ZN8S10150C12v5Ev();
extern void _ZN8S10150C12v6Ev();
static  VTBL_ENTRY vtc_S10150C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10150C1[0]),
  (VTBL_ENTRY)&_ZN8S10150C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10150C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10150C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10150C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10150C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10150C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10150C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10150C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10150C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10150C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10150C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10150C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10150C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10150C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10150C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10150C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10150C12v6Ev,
};
extern VTBL_ENTRY _ZTI8S10150C1[];
extern  VTBL_ENTRY _ZTV8S10150C1[];
Class_Descriptor cd_S10150C1 = {  "S10150C1", // class name
  bases_S10150C1, 1,
  &(vtc_S10150C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(264,192), // object size
  NSPAIRA(_ZTI8S10150C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10150C1),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11218C3_nt  {
  char s11218c3f0[16];
};
//SIG(-1 S11218C3_nt) C1{ Fc[16]}



//skip512 S11218C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11218C4_nt  {
  char s11218c4f0[6];
};
//SIG(-1 S11218C4_nt) C1{ Fc[6]}



//skip512 S11218C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11218C5_nt  {
  char s11218c5f0[256];
};
//SIG(-1 S11218C5_nt) C1{ Fc[256]}



//skip512 S11218C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11218C2  {
  ::S11218C3_nt s11218c2f0;
  ::S11218C4_nt s11218c2f1;
  ::S11218C5_nt s11218c2f2;
};
//SIG(-1 S11218C2) C1{ FC2{ Fc[16]} FC3{ Fc[6]} FC4{ Fc[256]}}



static void Test_S11218C2()
{
  {
    init_simple_test("S11218C2");
    S11218C2 lv;
    check2(sizeof(lv), 278, "sizeof(S11218C2)");
    check2(__alignof__(lv), 1, "__alignof__(S11218C2)");
    check_field_offset(lv, s11218c2f0, 0, "S11218C2.s11218c2f0");
    check_field_offset(lv, s11218c2f1, 16, "S11218C2.s11218c2f1");
    check_field_offset(lv, s11218c2f2, 22, "S11218C2.s11218c2f2");
  }
}
static Arrange_To_Call_Me vS11218C2(Test_S11218C2, "S11218C2", 278);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11218C7  {
  char s11218c7f0[126];
};
//SIG(-1 S11218C7) C1{ Fc[126]}



static void Test_S11218C7()
{
  {
    init_simple_test("S11218C7");
    S11218C7 lv;
    check2(sizeof(lv), 126, "sizeof(S11218C7)");
    check2(__alignof__(lv), 1, "__alignof__(S11218C7)");
    check_field_offset(lv, s11218c7f0, 0, "S11218C7.s11218c7f0");
  }
}
static Arrange_To_Call_Me vS11218C7(Test_S11218C7, "S11218C7", 126);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11218C9_nt  {
  __tsi64 s11218c9f0;
};
//SIG(-1 S11218C9_nt) C1{ FL}



//skip512 S11218C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11218C6  {
  ::S11218C7 s11218c6f0;
  ::S11218C3_nt s11218c6f1;
  int s11218c6f2;
  short s11218c6f3;
  int s11218c6f4[2];
  char s11218c6f5[16];
  ::S11218C9_nt s11218c6f6;
  ::S11218C4_nt s11218c6f7;
  int s11218c6f8;
};
//SIG(-1 S11218C6) C1{ FC2{ Fc[126]} FC3{ Fc[16]} Fi Fs Fi[2] Fc[16] FC4{ FL} FC5{ Fc[6]} Fi}



static void Test_S11218C6()
{
  {
    init_simple_test("S11218C6");
    S11218C6 lv;
    check2(sizeof(lv), ABISELECT(200,196), "sizeof(S11218C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11218C6)");
    check_field_offset(lv, s11218c6f0, 0, "S11218C6.s11218c6f0");
    check_field_offset(lv, s11218c6f1, 126, "S11218C6.s11218c6f1");
    check_field_offset(lv, s11218c6f2, 144, "S11218C6.s11218c6f2");
    check_field_offset(lv, s11218c6f3, 148, "S11218C6.s11218c6f3");
    check_field_offset(lv, s11218c6f4, 152, "S11218C6.s11218c6f4");
    check_field_offset(lv, s11218c6f5, 160, "S11218C6.s11218c6f5");
    check_field_offset(lv, s11218c6f6, 176, "S11218C6.s11218c6f6");
    check_field_offset(lv, s11218c6f7, 184, "S11218C6.s11218c6f7");
    check_field_offset(lv, s11218c6f8, 192, "S11218C6.s11218c6f8");
  }
}
static Arrange_To_Call_Me vS11218C6(Test_S11218C6, "S11218C6", ABISELECT(200,196));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11218C1  {
  ::S11218C2 s11218c1f0;
  int s11218c1f1[2];
  void *s11218c1f2;
  int s11218c1f3;
  ::S11218C6 s11218c1f4[128];
  int s11218c1f5[4];
  ::S11218C6 s11218c1f6;
  int s11218c1f7[2];
};
//SIG(1 S11218C1) C1{ FC2{ FC3{ Fc[16]} FC4{ Fc[6]} FC5{ Fc[256]}} Fi[2] Fp Fi FC6{ FC7{ Fc[126]} FC3 Fi Fs Fi[2] Fc[16] FC8{ FL} FC4 Fi}[128] Fi[4] FC6 Fi[2]}



static void Test_S11218C1()
{
  {
    init_simple_test("S11218C1");
    S11218C1 lv;
    check2(sizeof(lv), ABISELECT(26128,25604), "sizeof(S11218C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11218C1)");
    check_field_offset(lv, s11218c1f0, 0, "S11218C1.s11218c1f0");
    check_field_offset(lv, s11218c1f1, 280, "S11218C1.s11218c1f1");
    check_field_offset(lv, s11218c1f2, 288, "S11218C1.s11218c1f2");
    check_field_offset(lv, s11218c1f3, ABISELECT(296,292), "S11218C1.s11218c1f3");
    check_field_offset(lv, s11218c1f4, ABISELECT(304,296), "S11218C1.s11218c1f4");
    check_field_offset(lv, s11218c1f5, ABISELECT(25904,25384), "S11218C1.s11218c1f5");
    check_field_offset(lv, s11218c1f6, ABISELECT(25920,25400), "S11218C1.s11218c1f6");
    check_field_offset(lv, s11218c1f7, ABISELECT(26120,25596), "S11218C1.s11218c1f7");
  }
}
static Arrange_To_Call_Me vS11218C1(Test_S11218C1, "S11218C1", ABISELECT(26128,25604));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11217C9_nt  {
  long s11217c9f0;
};
//SIG(-1 S11217C9_nt) C1{ Fl}



//skip512 S11217C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11217C6  {
  ::S11218C7 s11217c6f0;
  ::S11218C3_nt s11217c6f1;
  int s11217c6f2;
  short s11217c6f3;
  int s11217c6f4[2];
  char s11217c6f5[16];
  ::S11217C9_nt s11217c6f6;
  ::S11218C4_nt s11217c6f7;
  int s11217c6f8;
};
//SIG(-1 S11217C6) C1{ FC2{ Fc[126]} FC3{ Fc[16]} Fi Fs Fi[2] Fc[16] FC4{ Fl} FC5{ Fc[6]} Fi}



static void Test_S11217C6()
{
  {
    init_simple_test("S11217C6");
    S11217C6 lv;
    check2(sizeof(lv), ABISELECT(200,192), "sizeof(S11217C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11217C6)");
    check_field_offset(lv, s11217c6f0, 0, "S11217C6.s11217c6f0");
    check_field_offset(lv, s11217c6f1, 126, "S11217C6.s11217c6f1");
    check_field_offset(lv, s11217c6f2, 144, "S11217C6.s11217c6f2");
    check_field_offset(lv, s11217c6f3, 148, "S11217C6.s11217c6f3");
    check_field_offset(lv, s11217c6f4, 152, "S11217C6.s11217c6f4");
    check_field_offset(lv, s11217c6f5, 160, "S11217C6.s11217c6f5");
    check_field_offset(lv, s11217c6f6, 176, "S11217C6.s11217c6f6");
    check_field_offset(lv, s11217c6f7, ABISELECT(184,180), "S11217C6.s11217c6f7");
    check_field_offset(lv, s11217c6f8, ABISELECT(192,188), "S11217C6.s11217c6f8");
  }
}
static Arrange_To_Call_Me vS11217C6(Test_S11217C6, "S11217C6", ABISELECT(200,192));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11217C1  {
  ::S11218C2 s11217c1f0;
  int s11217c1f1[2];
  void *s11217c1f2;
  int s11217c1f3;
  ::S11217C6 s11217c1f4[128];
  int s11217c1f5[4];
  ::S11217C6 s11217c1f6;
  int s11217c1f7[2];
};
//SIG(1 S11217C1) C1{ FC2{ FC3{ Fc[16]} FC4{ Fc[6]} FC5{ Fc[256]}} Fi[2] Fp Fi FC6{ FC7{ Fc[126]} FC3 Fi Fs Fi[2] Fc[16] FC8{ Fl} FC4 Fi}[128] Fi[4] FC6 Fi[2]}



static void Test_S11217C1()
{
  {
    init_simple_test("S11217C1");
    S11217C1 lv;
    check2(sizeof(lv), ABISELECT(26128,25088), "sizeof(S11217C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11217C1)");
    check_field_offset(lv, s11217c1f0, 0, "S11217C1.s11217c1f0");
    check_field_offset(lv, s11217c1f1, 280, "S11217C1.s11217c1f1");
    check_field_offset(lv, s11217c1f2, 288, "S11217C1.s11217c1f2");
    check_field_offset(lv, s11217c1f3, ABISELECT(296,292), "S11217C1.s11217c1f3");
    check_field_offset(lv, s11217c1f4, ABISELECT(304,296), "S11217C1.s11217c1f4");
    check_field_offset(lv, s11217c1f5, ABISELECT(25904,24872), "S11217C1.s11217c1f5");
    check_field_offset(lv, s11217c1f6, ABISELECT(25920,24888), "S11217C1.s11217c1f6");
    check_field_offset(lv, s11217c1f7, ABISELECT(26120,25080), "S11217C1.s11217c1f7");
  }
}
static Arrange_To_Call_Me vS11217C1(Test_S11217C1, "S11217C1", ABISELECT(26128,25088));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20870C3  {
  virtual  ~S20870C3(); // _ZN8S20870C3D1Ev
  virtual void  v5(); // _ZN8S20870C32v5Ev
  virtual void  v6(); // _ZN8S20870C32v6Ev
  virtual void  v7(); // _ZN8S20870C32v7Ev
  virtual void  v8(); // _ZN8S20870C32v8Ev
  virtual void  v9(); // _ZN8S20870C32v9Ev
  virtual void  v10(); // _ZN8S20870C33v10Ev
  virtual void  v11(); // _ZN8S20870C33v11Ev
  virtual void  v12(); // _ZN8S20870C33v12Ev
  virtual void  v13(); // _ZN8S20870C33v13Ev
  S20870C3(); // tgen
};
//SIG(-1 S20870C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S20870C3 ::~S20870C3(){ note_dtor("S20870C3", this);}
void  S20870C3 ::v5(){vfunc_called(this, "_ZN8S20870C32v5Ev");}
void  S20870C3 ::v6(){vfunc_called(this, "_ZN8S20870C32v6Ev");}
void  S20870C3 ::v7(){vfunc_called(this, "_ZN8S20870C32v7Ev");}
void  S20870C3 ::v8(){vfunc_called(this, "_ZN8S20870C32v8Ev");}
void  S20870C3 ::v9(){vfunc_called(this, "_ZN8S20870C32v9Ev");}
void  S20870C3 ::v10(){vfunc_called(this, "_ZN8S20870C33v10Ev");}
void  S20870C3 ::v11(){vfunc_called(this, "_ZN8S20870C33v11Ev");}
void  S20870C3 ::v12(){vfunc_called(this, "_ZN8S20870C33v12Ev");}
void  S20870C3 ::v13(){vfunc_called(this, "_ZN8S20870C33v13Ev");}
S20870C3 ::S20870C3(){ note_ctor("S20870C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20870C3C1Ev();
extern void _ZN8S20870C3D1Ev();
Name_Map name_map_S20870C3[] = {
  NSPAIR(_ZN8S20870C3C1Ev),
  NSPAIR(_ZN8S20870C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20870C3[];
extern void _ZN8S20870C3D1Ev();
extern void _ZN8S20870C3D0Ev();
extern void _ZN8S20870C32v5Ev();
extern void _ZN8S20870C32v6Ev();
extern void _ZN8S20870C32v7Ev();
extern void _ZN8S20870C32v8Ev();
extern void _ZN8S20870C32v9Ev();
extern void _ZN8S20870C33v10Ev();
extern void _ZN8S20870C33v11Ev();
extern void _ZN8S20870C33v12Ev();
extern void _ZN8S20870C33v13Ev();
static  VTBL_ENTRY vtc_S20870C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20870C3[0]),
  (VTBL_ENTRY)&_ZN8S20870C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20870C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20870C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20870C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20870C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20870C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20870C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20870C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20870C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20870C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20870C33v13Ev,
};
extern VTBL_ENTRY _ZTI8S20870C3[];
extern  VTBL_ENTRY _ZTV8S20870C3[];
Class_Descriptor cd_S20870C3 = {  "S20870C3", // class name
  0,0,//no base classes
  &(vtc_S20870C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20870C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20870C3),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  S20870C4_nt  {
  void *s20870c4f0;
  virtual void  v14(); // _ZN11S20870C4_nt3v14Ev
  virtual void  v15(); // _ZN11S20870C4_nt3v15Ev
  virtual void  v16(); // _ZN11S20870C4_nt3v16Ev
  virtual void  v17(); // _ZN11S20870C4_nt3v17Ev
  virtual void  v18(); // _ZN11S20870C4_nt3v18Ev
  ~S20870C4_nt(); // tgen
  S20870C4_nt(); // tgen
};
//SIG(-1 S20870C4_nt) C1{ v1 v2 v3 v4 v5 Fp}


void  S20870C4_nt ::v14(){vfunc_called(this, "_ZN11S20870C4_nt3v14Ev");}
void  S20870C4_nt ::v15(){vfunc_called(this, "_ZN11S20870C4_nt3v15Ev");}
void  S20870C4_nt ::v16(){vfunc_called(this, "_ZN11S20870C4_nt3v16Ev");}
void  S20870C4_nt ::v17(){vfunc_called(this, "_ZN11S20870C4_nt3v17Ev");}
void  S20870C4_nt ::v18(){vfunc_called(this, "_ZN11S20870C4_nt3v18Ev");}
S20870C4_nt ::~S20870C4_nt(){ note_dtor("S20870C4_nt", this);} // tgen
S20870C4_nt ::S20870C4_nt(){ note_ctor("S20870C4_nt", this);} // tgen

//skip512 S20870C4_nt

#else // __cplusplus

extern void _ZN11S20870C4_ntC1Ev();
extern void _ZN11S20870C4_ntD1Ev();
Name_Map name_map_S20870C4_nt[] = {
  NSPAIR(_ZN11S20870C4_ntC1Ev),
  NSPAIR(_ZN11S20870C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20870C4_nt[];
extern void _ZN11S20870C4_nt3v14Ev();
extern void _ZN11S20870C4_nt3v15Ev();
extern void _ZN11S20870C4_nt3v16Ev();
extern void _ZN11S20870C4_nt3v17Ev();
extern void _ZN11S20870C4_nt3v18Ev();
static  VTBL_ENTRY vtc_S20870C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20870C4_nt[0]),
  (VTBL_ENTRY)&_ZN11S20870C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S20870C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN11S20870C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN11S20870C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN11S20870C4_nt3v18Ev,
};
extern VTBL_ENTRY _ZTI11S20870C4_nt[];
VTBL_ENTRY *P__ZTI11S20870C4_nt = _ZTI11S20870C4_nt; 
extern  VTBL_ENTRY _ZTV11S20870C4_nt[];
Class_Descriptor cd_S20870C4_nt = {  "S20870C4_nt", // class name
  0,0,//no base classes
  &(vtc_S20870C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI11S20870C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20870C4_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  S20870C2  : virtual S20870C3 , virtual S20870C4_nt {
  virtual void  v19(); // _ZN8S20870C23v19Ev
  virtual void  v20(); // _ZN8S20870C23v20Ev
  virtual void  v21(); // _ZN8S20870C23v21Ev
  virtual void  v22(); // _ZN8S20870C23v22Ev
  ~S20870C2(); // tgen
  S20870C2(); // tgen
};
//SIG(-1 S20870C2) C1{ VBC2{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13} VBC3{ v14 v15 v16 v17 v18 Fp} v1 v2 v3 v4}


void  S20870C2 ::v19(){vfunc_called(this, "_ZN8S20870C23v19Ev");}
void  S20870C2 ::v20(){vfunc_called(this, "_ZN8S20870C23v20Ev");}
void  S20870C2 ::v21(){vfunc_called(this, "_ZN8S20870C23v21Ev");}
void  S20870C2 ::v22(){vfunc_called(this, "_ZN8S20870C23v22Ev");}
S20870C2 ::~S20870C2(){ note_dtor("S20870C2", this);} // tgen
S20870C2 ::S20870C2(){ note_ctor("S20870C2", this);} // tgen

static void Test_S20870C2()
{
  extern Class_Descriptor cd_S20870C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20870C2, buf);
    S20870C2 *dp, &lv = *(dp=new (buf) S20870C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20870C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20870C2)");
    check_base_class_offset(lv, (S20870C3*), 0, "S20870C2");
    check_base_class_offset(lv, (S20870C4_nt*), ABISELECT(8,4), "S20870C2");
    test_class_info(&lv, &cd_S20870C2);
    dp->~S20870C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20870C2(Test_S20870C2, "S20870C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20870C2C1Ev();
extern void _ZN8S20870C2D1Ev();
Name_Map name_map_S20870C2[] = {
  NSPAIR(_ZN8S20870C2C1Ev),
  NSPAIR(_ZN8S20870C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20870C3;
extern VTBL_ENTRY _ZTI8S20870C3[];
extern  VTBL_ENTRY _ZTV8S20870C3[];
extern Class_Descriptor cd_S20870C4_nt;
extern VTBL_ENTRY _ZTI11S20870C4_nt[];
extern  VTBL_ENTRY _ZTV11S20870C4_nt[];
static Base_Class bases_S20870C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20870C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20870C4_nt,    ABISELECT(8,4), //bcp->offset
    29, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20870C2[];
extern void _ZN8S20870C2D1Ev();
extern void _ZN8S20870C2D0Ev();
extern void _ZN8S20870C32v5Ev();
extern void _ZN8S20870C32v6Ev();
extern void _ZN8S20870C32v7Ev();
extern void _ZN8S20870C32v8Ev();
extern void _ZN8S20870C32v9Ev();
extern void _ZN8S20870C33v10Ev();
extern void _ZN8S20870C33v11Ev();
extern void _ZN8S20870C33v12Ev();
extern void _ZN8S20870C33v13Ev();
extern void _ZN8S20870C23v19Ev();
extern void _ZN8S20870C23v20Ev();
extern void _ZN8S20870C23v21Ev();
extern void _ZN8S20870C23v22Ev();
extern void _ZN11S20870C4_nt3v14Ev();
extern void _ZN11S20870C4_nt3v15Ev();
extern void _ZN11S20870C4_nt3v16Ev();
extern void _ZN11S20870C4_nt3v17Ev();
extern void _ZN11S20870C4_nt3v18Ev();
static  VTBL_ENTRY vtc_S20870C2[] = {
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20870C2[0]),
  (VTBL_ENTRY)&_ZN8S20870C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20870C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20870C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20870C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20870C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20870C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20870C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20870C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20870C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20870C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20870C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20870C23v19Ev,
  (VTBL_ENTRY)&_ZN8S20870C23v20Ev,
  (VTBL_ENTRY)&_ZN8S20870C23v21Ev,
  (VTBL_ENTRY)&_ZN8S20870C23v22Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20870C2[0]),
  (VTBL_ENTRY)&_ZN11S20870C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S20870C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN11S20870C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN11S20870C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN11S20870C4_nt3v18Ev,
};
extern VTBL_ENTRY _ZTV8S20870C2[];
static  VTT_ENTRY vtt_S20870C2[] = {
  {&(_ZTV8S20870C2[14]),  14,41},
  {&(_ZTV8S20870C2[14]),  14,41},
  {&(_ZTV8S20870C2[36]),  36,41},
};
extern VTBL_ENTRY _ZTI8S20870C2[];
extern  VTBL_ENTRY _ZTV8S20870C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20870C2[];
Class_Descriptor cd_S20870C2 = {  "S20870C2", // class name
  bases_S20870C2, 2,
  &(vtc_S20870C2[0]), // expected_vtbl_contents
  &(vtt_S20870C2[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20870C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20870C2),41, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20870C2),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  S20870C6_nt  {
  long double s20870c6f0[9];
  virtual void  v23(); // _ZN11S20870C6_nt3v23Ev
  ~S20870C6_nt(); // tgen
  S20870C6_nt(); // tgen
};
//SIG(-1 S20870C6_nt) C1{ v1 FD[9]}


void  S20870C6_nt ::v23(){vfunc_called(this, "_ZN11S20870C6_nt3v23Ev");}
S20870C6_nt ::~S20870C6_nt(){ note_dtor("S20870C6_nt", this);} // tgen
S20870C6_nt ::S20870C6_nt(){ note_ctor("S20870C6_nt", this);} // tgen

//skip512 S20870C6_nt

#else // __cplusplus

extern void _ZN11S20870C6_ntC1Ev();
extern void _ZN11S20870C6_ntD1Ev();
Name_Map name_map_S20870C6_nt[] = {
  NSPAIR(_ZN11S20870C6_ntC1Ev),
  NSPAIR(_ZN11S20870C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20870C6_nt[];
extern void _ZN11S20870C6_nt3v23Ev();
static  VTBL_ENTRY vtc_S20870C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20870C6_nt[0]),
  (VTBL_ENTRY)&_ZN11S20870C6_nt3v23Ev,
};
extern VTBL_ENTRY _ZTI11S20870C6_nt[];
VTBL_ENTRY *P__ZTI11S20870C6_nt = _ZTI11S20870C6_nt; 
extern  VTBL_ENTRY _ZTV11S20870C6_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20870C5_nt  {
  ::S20870C6_nt s20870c5f0;
  __tsi64 s20870c5f1;
  void  mf20870c5(); // _ZN11S20870C5_nt9mf20870c5Ev
};
//SIG(-1 S20870C5_nt) C1{ m FC2{ v1 FD[9]} FL}


void  S20870C5_nt ::mf20870c5(){}

//skip512 S20870C5_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S20870C5_nt[];
VTBL_ENTRY *P__ZTI11S20870C5_nt = _ZTI11S20870C5_nt; 
Class_Descriptor cd_S20870C5_nt = {  "S20870C5_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(176,120), // object size
  NSPAIRA(_ZTI11S20870C5_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  S20870C1  : virtual S20870C2 , virtual S20870C5_nt {
  long double s20870c1f0;
  virtual  ~S20870C1(); // _ZN8S20870C1D2Ev
  virtual void  v1(); // _ZN8S20870C12v1Ev
  virtual void  v2(); // _ZN8S20870C12v2Ev
  virtual void  v3(); // _ZN8S20870C12v3Ev
  virtual void  v4(); // _ZN8S20870C12v4Ev
  S20870C1(); // tgen
};
//SIG(1 S20870C1) C1{ VBC2{ VBC3{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13} VBC4{ v14 v15 v16 v17 v18 Fp} v19 v20 v21 v22} VBC5{ m FC6{ v23 FD[9]} FL} vd v1 v2 v3 v4 FD}


 S20870C1 ::~S20870C1(){ note_dtor("S20870C1", this);}
void  S20870C1 ::v1(){vfunc_called(this, "_ZN8S20870C12v1Ev");}
void  S20870C1 ::v2(){vfunc_called(this, "_ZN8S20870C12v2Ev");}
void  S20870C1 ::v3(){vfunc_called(this, "_ZN8S20870C12v3Ev");}
void  S20870C1 ::v4(){vfunc_called(this, "_ZN8S20870C12v4Ev");}
S20870C1 ::S20870C1(){ note_ctor("S20870C1", this);} // tgen

static void Test_S20870C1()
{
  extern Class_Descriptor cd_S20870C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,37)];
    init_test(&cd_S20870C1, buf);
    S20870C1 *dp, &lv = *(dp=new (buf) S20870C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,144), "sizeof(S20870C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20870C1)");
    check_base_class_offset(lv, (S20870C3*)(S20870C2*), 0, "S20870C1");
    check_base_class_offset(lv, (S20870C4_nt*)(S20870C2*), ABISELECT(32,16), "S20870C1");
    check_base_class_offset(lv, (S20870C2*), 0, "S20870C1");
    check_base_class_offset(lv, (S20870C5_nt*), ABISELECT(48,24), "S20870C1");
    check_field_offset(lv, s20870c1f0, ABISELECT(16,4), "S20870C1.s20870c1f0");
    test_class_info(&lv, &cd_S20870C1);
    dp->~S20870C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20870C1(Test_S20870C1, "S20870C1", ABISELECT(224,144));

#else // __cplusplus

extern void _ZN8S20870C1C1Ev();
extern void _ZN8S20870C1D2Ev();
Name_Map name_map_S20870C1[] = {
  NSPAIR(_ZN8S20870C1C1Ev),
  NSPAIR(_ZN8S20870C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20870C3;
extern VTBL_ENTRY _ZTI8S20870C3[];
extern  VTBL_ENTRY _ZTV8S20870C3[];
extern Class_Descriptor cd_S20870C4_nt;
extern VTBL_ENTRY _ZTI11S20870C4_nt[];
extern  VTBL_ENTRY _ZTV11S20870C4_nt[];
extern Class_Descriptor cd_S20870C2;
extern VTBL_ENTRY _ZTI8S20870C2[];
extern  VTBL_ENTRY _ZTV8S20870C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20870C2[];
extern Class_Descriptor cd_S20870C5_nt;
extern VTBL_ENTRY _ZTI11S20870C5_nt[];
static Base_Class bases_S20870C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20870C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20870C4_nt,    ABISELECT(32,16), //bcp->offset
    39, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20870C2,    0, //bcp->offset
    -1, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20870C5_nt,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20870C1[];
extern void _ZN8S20870C1D1Ev();
extern void _ZN8S20870C1D0Ev();
extern void _ZN8S20870C32v5Ev();
extern void _ZN8S20870C32v6Ev();
extern void _ZN8S20870C32v7Ev();
extern void _ZN8S20870C32v8Ev();
extern void _ZN8S20870C32v9Ev();
extern void _ZN8S20870C33v10Ev();
extern void _ZN8S20870C33v11Ev();
extern void _ZN8S20870C33v12Ev();
extern void _ZN8S20870C33v13Ev();
extern void _ZN8S20870C23v19Ev();
extern void _ZN8S20870C23v20Ev();
extern void _ZN8S20870C23v21Ev();
extern void _ZN8S20870C23v22Ev();
extern void _ZN8S20870C12v1Ev();
extern void _ZN8S20870C12v2Ev();
extern void _ZN8S20870C12v3Ev();
extern void _ZN8S20870C12v4Ev();
extern void _ZN11S20870C4_nt3v14Ev();
extern void _ZN11S20870C4_nt3v15Ev();
extern void _ZN11S20870C4_nt3v16Ev();
extern void _ZN11S20870C4_nt3v17Ev();
extern void _ZN11S20870C4_nt3v18Ev();
static  VTBL_ENTRY vtc_S20870C1[] = {
  ABISELECT(48,24),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20870C1[0]),
  (VTBL_ENTRY)&_ZN8S20870C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20870C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20870C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20870C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20870C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20870C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20870C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20870C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20870C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20870C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20870C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20870C23v19Ev,
  (VTBL_ENTRY)&_ZN8S20870C23v20Ev,
  (VTBL_ENTRY)&_ZN8S20870C23v21Ev,
  (VTBL_ENTRY)&_ZN8S20870C23v22Ev,
  (VTBL_ENTRY)&_ZN8S20870C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20870C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20870C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20870C12v4Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20870C1[0]),
  (VTBL_ENTRY)&_ZN11S20870C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S20870C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN11S20870C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN11S20870C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN11S20870C4_nt3v18Ev,
};
extern VTBL_ENTRY _ZTV8S20870C1[];
extern void ABISELECT(_ZTv0_n24_N8S20870C2D1Ev,_ZTv0_n12_N8S20870C2D1Ev)();
extern void _ZN8S20870C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20870C2D0Ev,_ZTv0_n12_N8S20870C2D0Ev)();
extern void _ZN8S20870C2D0Ev() __attribute__((weak));
extern void _ZN8S20870C32v5Ev();
extern void _ZN8S20870C32v6Ev();
extern void _ZN8S20870C32v7Ev();
extern void _ZN8S20870C32v8Ev();
extern void _ZN8S20870C32v9Ev();
extern void _ZN8S20870C33v10Ev();
extern void _ZN8S20870C33v11Ev();
extern void _ZN8S20870C33v12Ev();
extern void _ZN8S20870C33v13Ev();
extern void _ZN8S20870C23v19Ev();
extern void _ZN8S20870C23v20Ev();
extern void _ZN8S20870C23v21Ev();
extern void _ZN8S20870C23v22Ev();
static  VTBL_ENTRY _tg__ZTV8S20870C2__8S20870C1[] = {
  ABISELECT(32,16),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20870C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20870C2D1Ev,_ZTv0_n12_N8S20870C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20870C2D0Ev,_ZTv0_n12_N8S20870C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20870C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20870C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20870C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20870C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20870C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20870C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20870C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20870C33v12Ev,
  (VTBL_ENTRY)&_ZN8S20870C33v13Ev,
  (VTBL_ENTRY)&_ZN8S20870C23v19Ev,
  (VTBL_ENTRY)&_ZN8S20870C23v20Ev,
  (VTBL_ENTRY)&_ZN8S20870C23v21Ev,
  (VTBL_ENTRY)&_ZN8S20870C23v22Ev,
};
extern void _ZN11S20870C4_nt3v14Ev();
extern void _ZN11S20870C4_nt3v15Ev();
extern void _ZN11S20870C4_nt3v16Ev();
extern void _ZN11S20870C4_nt3v17Ev();
extern void _ZN11S20870C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV11S20870C4_nt__8S20870C2__8S20870C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20870C2[0]),
  (VTBL_ENTRY)&_ZN11S20870C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S20870C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN11S20870C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN11S20870C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN11S20870C4_nt3v18Ev,
};
static  VTT_ENTRY vtt_S20870C1[] = {
  {&(_ZTV8S20870C1[20]),  20,51},
  {&(_ZTV8S20870C1[20]),  20,51},
  {&(_ZTV8S20870C1[20]),  20,51},
  {&(_ZTV8S20870C1[46]),  46,51},
  {&(_tg__ZTV8S20870C2__8S20870C1[14]),  14,29},
  {&(_tg__ZTV8S20870C2__8S20870C1[14]),  14,29},
  {&(_tg__ZTV11S20870C4_nt__8S20870C2__8S20870C1[7]),  7,12},
};
extern VTBL_ENTRY _ZTI8S20870C1[];
extern  VTBL_ENTRY _ZTV8S20870C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20870C1[];
static VTBL_ENTRY alt_thunk_names111[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20870C2D0Ev,_ZTv0_n12_N8S20870C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S20870C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20870C2D1Ev,_ZTv0_n12_N8S20870C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S20870C2D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20870C1 = {  "S20870C1", // class name
  bases_S20870C1, 4,
  &(vtc_S20870C1[0]), // expected_vtbl_contents
  &(vtt_S20870C1[0]), // expected_vtt_contents
  ABISELECT(224,144), // object size
  NSPAIRA(_ZTI8S20870C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20870C1),51, //virtual function table var
  20, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20870C1),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names111,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21538C2  {
  ::S11217C6 s21538c2f0;
  int s21538c2f1;
  ::S731C16_nt s21538c2f2;
  char s21538c2f3[2];
  void  mf21538c2(); // _ZN8S21538C29mf21538c2Ev
  virtual  ~S21538C2(); // _ZN8S21538C2D1Ev
  S21538C2(); // tgen
};
//SIG(-1 S21538C2) C1{ vd m FC2{ FC3{ Fc[126]} FC4{ Fc[16]} Fi Fs Fi[2] Fc[16] FC5{ Fl} FC6{ Fc[6]} Fi} Fi FC7{ m Fp Fi FC8{ m}} Fc[2]}


void  S21538C2 ::mf21538c2(){}
 S21538C2 ::~S21538C2(){ note_dtor("S21538C2", this);}
S21538C2 ::S21538C2(){ note_ctor("S21538C2", this);} // tgen

static void Test_S21538C2()
{
  extern Class_Descriptor cd_S21538C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,55)];
    init_test(&cd_S21538C2, buf);
    S21538C2 *dp, &lv = *(dp=new (buf) S21538C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,216), "sizeof(S21538C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21538C2)");
    check_field_offset(lv, s21538c2f0, ABISELECT(8,4), "S21538C2.s21538c2f0");
    check_field_offset(lv, s21538c2f1, ABISELECT(208,196), "S21538C2.s21538c2f1");
    check_field_offset(lv, s21538c2f2, ABISELECT(216,200), "S21538C2.s21538c2f2");
    check_field_offset(lv, s21538c2f3, ABISELECT(232,212), "S21538C2.s21538c2f3");
    test_class_info(&lv, &cd_S21538C2);
    dp->~S21538C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21538C2(Test_S21538C2, "S21538C2", ABISELECT(240,216));

#else // __cplusplus

extern void _ZN8S21538C2C1Ev();
extern void _ZN8S21538C2D1Ev();
Name_Map name_map_S21538C2[] = {
  NSPAIR(_ZN8S21538C2C1Ev),
  NSPAIR(_ZN8S21538C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21538C2[];
extern void _ZN8S21538C2D1Ev();
extern void _ZN8S21538C2D0Ev();
static  VTBL_ENTRY vtc_S21538C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21538C2[0]),
  (VTBL_ENTRY)&_ZN8S21538C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21538C2D0Ev,
};
extern VTBL_ENTRY _ZTI8S21538C2[];
extern  VTBL_ENTRY _ZTV8S21538C2[];
Class_Descriptor cd_S21538C2 = {  "S21538C2", // class name
  0,0,//no base classes
  &(vtc_S21538C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,216), // object size
  NSPAIRA(_ZTI8S21538C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21538C2),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  S21538C10_nt  {
  void *s21538c10f0;
  int s21538c10f1[3];
  virtual  ~S21538C10_nt(); // _ZN12S21538C10_ntD1Ev
  virtual void  v1(); // _ZN12S21538C10_nt2v1Ev
  S21538C10_nt(); // tgen
};
//SIG(-1 S21538C10_nt) C1{ vd v1 Fp Fi[3]}


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

//skip512 S21538C10_nt

#else // __cplusplus

extern void _ZN12S21538C10_ntC1Ev();
extern void _ZN12S21538C10_ntD1Ev();
Name_Map name_map_S21538C10_nt[] = {
  NSPAIR(_ZN12S21538C10_ntC1Ev),
  NSPAIR(_ZN12S21538C10_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI12S21538C10_nt[];
extern void _ZN12S21538C10_ntD1Ev();
extern void _ZN12S21538C10_ntD0Ev();
extern void _ZN12S21538C10_nt2v1Ev();
static  VTBL_ENTRY vtc_S21538C10_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S21538C10_nt[0]),
  (VTBL_ENTRY)&_ZN12S21538C10_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S21538C10_ntD0Ev,
  (VTBL_ENTRY)&_ZN12S21538C10_nt2v1Ev,
};
extern VTBL_ENTRY _ZTI12S21538C10_nt[];
VTBL_ENTRY *P__ZTI12S21538C10_nt = _ZTI12S21538C10_nt; 
extern  VTBL_ENTRY _ZTV12S21538C10_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21538C1  {
  ::S21538C2 s21538c1f0;
  ::S21538C10_nt s21538c1f1;
  void  mf21538c1(); // _ZN8S21538C19mf21538c1Ev
  virtual  ~S21538C1(); // _ZN8S21538C1D1Ev
  S21538C1(); // tgen
};
//SIG(1 S21538C1) C1{ vd m FC2{ vd m FC3{ FC4{ Fc[126]} FC5{ Fc[16]} Fi Fs Fi[2] Fc[16] FC6{ Fl} FC7{ Fc[6]} Fi} Fi FC8{ m Fp Fi FC9{ m}} Fc[2]} FC10{ vd v1 Fp Fi[3]}}


void  S21538C1 ::mf21538c1(){}
 S21538C1 ::~S21538C1(){ note_dtor("S21538C1", this);}
S21538C1 ::S21538C1(){ note_ctor("S21538C1", this);} // tgen

static void Test_S21538C1()
{
  extern Class_Descriptor cd_S21538C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,61)];
    init_test(&cd_S21538C1, buf);
    S21538C1 *dp, &lv = *(dp=new (buf) S21538C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,240), "sizeof(S21538C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21538C1)");
    check_field_offset(lv, s21538c1f0, ABISELECT(8,4), "S21538C1.s21538c1f0");
    check_field_offset(lv, s21538c1f1, ABISELECT(248,220), "S21538C1.s21538c1f1");
    test_class_info(&lv, &cd_S21538C1);
    dp->~S21538C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21538C1(Test_S21538C1, "S21538C1", ABISELECT(280,240));

#else // __cplusplus

extern void _ZN8S21538C1C1Ev();
extern void _ZN8S21538C1D1Ev();
Name_Map name_map_S21538C1[] = {
  NSPAIR(_ZN8S21538C1C1Ev),
  NSPAIR(_ZN8S21538C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21538C1[];
extern void _ZN8S21538C1D1Ev();
extern void _ZN8S21538C1D0Ev();
static  VTBL_ENTRY vtc_S21538C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21538C1[0]),
  (VTBL_ENTRY)&_ZN8S21538C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21538C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21538C1[];
extern  VTBL_ENTRY _ZTV8S21538C1[];
Class_Descriptor cd_S21538C1 = {  "S21538C1", // class name
  0,0,//no base classes
  &(vtc_S21538C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,240), // object size
  NSPAIRA(_ZTI8S21538C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21538C1),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  S21539C2  {
  ::S11218C6 s21539c2f0;
  int s21539c2f1;
  ::S731C16_nt s21539c2f2;
  char s21539c2f3[2];
  void  mf21539c2(); // _ZN8S21539C29mf21539c2Ev
  virtual  ~S21539C2(); // _ZN8S21539C2D1Ev
  S21539C2(); // tgen
};
//SIG(-1 S21539C2) C1{ vd m FC2{ FC3{ Fc[126]} FC4{ Fc[16]} Fi Fs Fi[2] Fc[16] FC5{ FL} FC6{ Fc[6]} Fi} Fi FC7{ m Fp Fi FC8{ m}} Fc[2]}


void  S21539C2 ::mf21539c2(){}
 S21539C2 ::~S21539C2(){ note_dtor("S21539C2", this);}
S21539C2 ::S21539C2(){ note_ctor("S21539C2", this);} // tgen

static void Test_S21539C2()
{
  extern Class_Descriptor cd_S21539C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,56)];
    init_test(&cd_S21539C2, buf);
    S21539C2 *dp, &lv = *(dp=new (buf) S21539C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,220), "sizeof(S21539C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21539C2)");
    check_field_offset(lv, s21539c2f0, ABISELECT(8,4), "S21539C2.s21539c2f0");
    check_field_offset(lv, s21539c2f1, ABISELECT(208,200), "S21539C2.s21539c2f1");
    check_field_offset(lv, s21539c2f2, ABISELECT(216,204), "S21539C2.s21539c2f2");
    check_field_offset(lv, s21539c2f3, ABISELECT(232,216), "S21539C2.s21539c2f3");
    test_class_info(&lv, &cd_S21539C2);
    dp->~S21539C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21539C2(Test_S21539C2, "S21539C2", ABISELECT(240,220));

#else // __cplusplus

extern void _ZN8S21539C2C1Ev();
extern void _ZN8S21539C2D1Ev();
Name_Map name_map_S21539C2[] = {
  NSPAIR(_ZN8S21539C2C1Ev),
  NSPAIR(_ZN8S21539C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21539C2[];
extern void _ZN8S21539C2D1Ev();
extern void _ZN8S21539C2D0Ev();
static  VTBL_ENTRY vtc_S21539C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21539C2[0]),
  (VTBL_ENTRY)&_ZN8S21539C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21539C2D0Ev,
};
extern VTBL_ENTRY _ZTI8S21539C2[];
extern  VTBL_ENTRY _ZTV8S21539C2[];
Class_Descriptor cd_S21539C2 = {  "S21539C2", // class name
  0,0,//no base classes
  &(vtc_S21539C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,220), // object size
  NSPAIRA(_ZTI8S21539C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21539C2),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  S21539C1  {
  ::S21539C2 s21539c1f0;
  ::S21538C10_nt s21539c1f1;
  void  mf21539c1(); // _ZN8S21539C19mf21539c1Ev
  virtual  ~S21539C1(); // _ZN8S21539C1D1Ev
  S21539C1(); // tgen
};
//SIG(1 S21539C1) C1{ vd m FC2{ vd m FC3{ FC4{ Fc[126]} FC5{ Fc[16]} Fi Fs Fi[2] Fc[16] FC6{ FL} FC7{ Fc[6]} Fi} Fi FC8{ m Fp Fi FC9{ m}} Fc[2]} FC10{ vd v1 Fp Fi[3]}}


void  S21539C1 ::mf21539c1(){}
 S21539C1 ::~S21539C1(){ note_dtor("S21539C1", this);}
S21539C1 ::S21539C1(){ note_ctor("S21539C1", this);} // tgen

static void Test_S21539C1()
{
  extern Class_Descriptor cd_S21539C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,62)];
    init_test(&cd_S21539C1, buf);
    S21539C1 *dp, &lv = *(dp=new (buf) S21539C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,244), "sizeof(S21539C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21539C1)");
    check_field_offset(lv, s21539c1f0, ABISELECT(8,4), "S21539C1.s21539c1f0");
    check_field_offset(lv, s21539c1f1, ABISELECT(248,224), "S21539C1.s21539c1f1");
    test_class_info(&lv, &cd_S21539C1);
    dp->~S21539C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21539C1(Test_S21539C1, "S21539C1", ABISELECT(280,244));

#else // __cplusplus

extern void _ZN8S21539C1C1Ev();
extern void _ZN8S21539C1D1Ev();
Name_Map name_map_S21539C1[] = {
  NSPAIR(_ZN8S21539C1C1Ev),
  NSPAIR(_ZN8S21539C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21539C1[];
extern void _ZN8S21539C1D1Ev();
extern void _ZN8S21539C1D0Ev();
static  VTBL_ENTRY vtc_S21539C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21539C1[0]),
  (VTBL_ENTRY)&_ZN8S21539C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21539C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21539C1[];
extern  VTBL_ENTRY _ZTV8S21539C1[];
Class_Descriptor cd_S21539C1 = {  "S21539C1", // class name
  0,0,//no base classes
  &(vtc_S21539C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,244), // object size
  NSPAIRA(_ZTI8S21539C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21539C1),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  S5074C3  {
  ::S731C16_nt s5074c3f0;
  int s5074c3f1[2];
  char s5074c3f2;
  virtual  ~S5074C3(); // _ZN7S5074C3D1Ev
  virtual void  v4(); // _ZN7S5074C32v4Ev
  virtual void  v5(); // _ZN7S5074C32v5Ev
  virtual void  v6(); // _ZN7S5074C32v6Ev
  S5074C3(); // tgen
};
//SIG(-1 S5074C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S5074C3 ::~S5074C3(){ note_dtor("S5074C3", this);}
void  S5074C3 ::v4(){vfunc_called(this, "_ZN7S5074C32v4Ev");}
void  S5074C3 ::v5(){vfunc_called(this, "_ZN7S5074C32v5Ev");}
void  S5074C3 ::v6(){vfunc_called(this, "_ZN7S5074C32v6Ev");}
S5074C3 ::S5074C3(){ note_ctor("S5074C3", this);} // tgen

static void Test_S5074C3()
{
  extern Class_Descriptor cd_S5074C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S5074C3, buf);
    S5074C3 *dp, &lv = *(dp=new (buf) S5074C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S5074C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5074C3)");
    check_field_offset(lv, s5074c3f0, ABISELECT(8,4), "S5074C3.s5074c3f0");
    check_field_offset(lv, s5074c3f1, ABISELECT(24,16), "S5074C3.s5074c3f1");
    check_field_offset(lv, s5074c3f2, ABISELECT(32,24), "S5074C3.s5074c3f2");
    test_class_info(&lv, &cd_S5074C3);
    dp->~S5074C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5074C3(Test_S5074C3, "S5074C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S5074C3C1Ev();
extern void _ZN7S5074C3D1Ev();
Name_Map name_map_S5074C3[] = {
  NSPAIR(_ZN7S5074C3C1Ev),
  NSPAIR(_ZN7S5074C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5074C3[];
extern void _ZN7S5074C3D1Ev();
extern void _ZN7S5074C3D0Ev();
extern void _ZN7S5074C32v4Ev();
extern void _ZN7S5074C32v5Ev();
extern void _ZN7S5074C32v6Ev();
static  VTBL_ENTRY vtc_S5074C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5074C3[0]),
  (VTBL_ENTRY)&_ZN7S5074C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5074C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5074C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5074C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5074C32v6Ev,
};
extern VTBL_ENTRY _ZTI7S5074C3[];
extern  VTBL_ENTRY _ZTV7S5074C3[];
Class_Descriptor cd_S5074C3 = {  "S5074C3", // class name
  0,0,//no base classes
  &(vtc_S5074C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S5074C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5074C3),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  S5074C2_nt  : S5074C3 {
  void *s5074c2f0;
  virtual void  v7(); // _ZN10S5074C2_nt2v7Ev
  virtual void  v8(); // _ZN10S5074C2_nt2v8Ev
  ~S5074C2_nt(); // tgen
  S5074C2_nt(); // tgen
};
//SIG(-1 S5074C2_nt) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S5074C2_nt ::v7(){vfunc_called(this, "_ZN10S5074C2_nt2v7Ev");}
void  S5074C2_nt ::v8(){vfunc_called(this, "_ZN10S5074C2_nt2v8Ev");}
S5074C2_nt ::~S5074C2_nt(){ note_dtor("S5074C2_nt", this);} // tgen
S5074C2_nt ::S5074C2_nt(){ note_ctor("S5074C2_nt", this);} // tgen

//skip512 S5074C2_nt

#else // __cplusplus

extern void _ZN10S5074C2_ntC1Ev();
extern void _ZN10S5074C2_ntD1Ev();
Name_Map name_map_S5074C2_nt[] = {
  NSPAIR(_ZN10S5074C2_ntC1Ev),
  NSPAIR(_ZN10S5074C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5074C3;
extern VTBL_ENTRY _ZTI7S5074C3[];
extern  VTBL_ENTRY _ZTV7S5074C3[];
static Base_Class bases_S5074C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5074C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S5074C2_nt[];
extern void _ZN10S5074C2_ntD1Ev();
extern void _ZN10S5074C2_ntD0Ev();
extern void _ZN7S5074C32v4Ev();
extern void _ZN7S5074C32v5Ev();
extern void _ZN7S5074C32v6Ev();
extern void _ZN10S5074C2_nt2v7Ev();
extern void _ZN10S5074C2_nt2v8Ev();
static  VTBL_ENTRY vtc_S5074C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S5074C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S5074C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S5074C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S5074C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5074C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5074C32v6Ev,
  (VTBL_ENTRY)&_ZN10S5074C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S5074C2_nt2v8Ev,
};
extern VTBL_ENTRY _ZTI10S5074C2_nt[];
VTBL_ENTRY *P__ZTI10S5074C2_nt = _ZTI10S5074C2_nt; 
extern  VTBL_ENTRY _ZTV10S5074C2_nt[];
Class_Descriptor cd_S5074C2_nt = {  "S5074C2_nt", // class name
  bases_S5074C2_nt, 1,
  &(vtc_S5074C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI10S5074C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S5074C2_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  S5074C8_nt  {
  void *s5074c8f0[2];
  void  mf5074c8(); // _ZN10S5074C8_nt8mf5074c8Ev
};
//SIG(-1 S5074C8_nt) C1{ m Fp[2]}


void  S5074C8_nt ::mf5074c8(){}

//skip512 S5074C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5074C1  : S5074C2_nt {
  ::S731C16_nt s5074c1f0;
  ::S17885C12 s5074c1f1;
  ::S28C39_nt s5074c1f2;
  int s5074c1f3;
  ::S17885C12 s5074c1f4;
  void *s5074c1f5[2];
  ::S5074C8_nt s5074c1f6;
  int s5074c1f7;
  virtual  ~S5074C1(); // _ZN7S5074C1D1Ev
  virtual void  v1(); // _ZN7S5074C12v1Ev
  virtual void  v2(); // _ZN7S5074C12v2Ev
  virtual void  v3(); // _ZN7S5074C12v3Ev
  S5074C1(); // tgen
};
//SIG(1 S5074C1) C1{ BC2{ BC3{ vd v4 v5 v6 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v7 v8 Fp} vd v1 v2 v3 FC4 FC6{ m Fp} FC7{ m Fp[2]} Fi FC6 Fp[2] FC8{ m Fp[2]} Fi}


 S5074C1 ::~S5074C1(){ note_dtor("S5074C1", this);}
void  S5074C1 ::v1(){vfunc_called(this, "_ZN7S5074C12v1Ev");}
void  S5074C1 ::v2(){vfunc_called(this, "_ZN7S5074C12v2Ev");}
void  S5074C1 ::v3(){vfunc_called(this, "_ZN7S5074C12v3Ev");}
S5074C1 ::S5074C1(){ note_ctor("S5074C1", this);} // tgen

static void Test_S5074C1()
{
  extern Class_Descriptor cd_S5074C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,22)];
    init_test(&cd_S5074C1, buf);
    S5074C1 *dp, &lv = *(dp=new (buf) S5074C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,84), "sizeof(S5074C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5074C1)");
    check_base_class_offset(lv, (S5074C3*)(S5074C2_nt*), 0, "S5074C1");
    check_base_class_offset(lv, (S5074C2_nt*), 0, "S5074C1");
    check_field_offset(lv, s5074c1f0, ABISELECT(48,32), "S5074C1.s5074c1f0");
    check_field_offset(lv, s5074c1f1, ABISELECT(64,44), "S5074C1.s5074c1f1");
    check_field_offset(lv, s5074c1f2, ABISELECT(72,48), "S5074C1.s5074c1f2");
    check_field_offset(lv, s5074c1f3, ABISELECT(88,56), "S5074C1.s5074c1f3");
    check_field_offset(lv, s5074c1f4, ABISELECT(96,60), "S5074C1.s5074c1f4");
    check_field_offset(lv, s5074c1f5, ABISELECT(104,64), "S5074C1.s5074c1f5");
    check_field_offset(lv, s5074c1f6, ABISELECT(120,72), "S5074C1.s5074c1f6");
    check_field_offset(lv, s5074c1f7, ABISELECT(136,80), "S5074C1.s5074c1f7");
    test_class_info(&lv, &cd_S5074C1);
    dp->~S5074C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5074C1(Test_S5074C1, "S5074C1", ABISELECT(144,84));

#else // __cplusplus

extern void _ZN7S5074C1C1Ev();
extern void _ZN7S5074C1D1Ev();
Name_Map name_map_S5074C1[] = {
  NSPAIR(_ZN7S5074C1C1Ev),
  NSPAIR(_ZN7S5074C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5074C3;
extern VTBL_ENTRY _ZTI7S5074C3[];
extern  VTBL_ENTRY _ZTV7S5074C3[];
extern Class_Descriptor cd_S5074C2_nt;
extern VTBL_ENTRY _ZTI10S5074C2_nt[];
extern  VTBL_ENTRY _ZTV10S5074C2_nt[];
static Base_Class bases_S5074C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5074C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5074C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S5074C1[];
extern void _ZN7S5074C1D1Ev();
extern void _ZN7S5074C1D0Ev();
extern void _ZN7S5074C32v4Ev();
extern void _ZN7S5074C32v5Ev();
extern void _ZN7S5074C32v6Ev();
extern void _ZN10S5074C2_nt2v7Ev();
extern void _ZN10S5074C2_nt2v8Ev();
extern void _ZN7S5074C12v1Ev();
extern void _ZN7S5074C12v2Ev();
extern void _ZN7S5074C12v3Ev();
static  VTBL_ENTRY vtc_S5074C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5074C1[0]),
  (VTBL_ENTRY)&_ZN7S5074C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5074C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5074C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5074C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5074C32v6Ev,
  (VTBL_ENTRY)&_ZN10S5074C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S5074C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S5074C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5074C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5074C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S5074C1[];
extern  VTBL_ENTRY _ZTV7S5074C1[];
Class_Descriptor cd_S5074C1 = {  "S5074C1", // class name
  bases_S5074C1, 2,
  &(vtc_S5074C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,84), // object size
  NSPAIRA(_ZTI7S5074C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5074C1),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  S9238C2  {
  ::S731C16_nt s9238c2f0;
  int s9238c2f1[2];
  char s9238c2f2;
  virtual  ~S9238C2(); // _ZN7S9238C2D1Ev
  virtual void  v3(); // _ZN7S9238C22v3Ev
  virtual void  v4(); // _ZN7S9238C22v4Ev
  virtual void  v5(); // _ZN7S9238C22v5Ev
  S9238C2(); // tgen
};
//SIG(-1 S9238C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9238C2 ::~S9238C2(){ note_dtor("S9238C2", this);}
void  S9238C2 ::v3(){vfunc_called(this, "_ZN7S9238C22v3Ev");}
void  S9238C2 ::v4(){vfunc_called(this, "_ZN7S9238C22v4Ev");}
void  S9238C2 ::v5(){vfunc_called(this, "_ZN7S9238C22v5Ev");}
S9238C2 ::S9238C2(){ note_ctor("S9238C2", this);} // tgen

static void Test_S9238C2()
{
  extern Class_Descriptor cd_S9238C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9238C2, buf);
    S9238C2 *dp, &lv = *(dp=new (buf) S9238C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9238C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9238C2)");
    check_field_offset(lv, s9238c2f0, ABISELECT(8,4), "S9238C2.s9238c2f0");
    check_field_offset(lv, s9238c2f1, ABISELECT(24,16), "S9238C2.s9238c2f1");
    check_field_offset(lv, s9238c2f2, ABISELECT(32,24), "S9238C2.s9238c2f2");
    test_class_info(&lv, &cd_S9238C2);
    dp->~S9238C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9238C2(Test_S9238C2, "S9238C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9238C2C1Ev();
extern void _ZN7S9238C2D1Ev();
Name_Map name_map_S9238C2[] = {
  NSPAIR(_ZN7S9238C2C1Ev),
  NSPAIR(_ZN7S9238C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9238C2[];
extern void _ZN7S9238C2D1Ev();
extern void _ZN7S9238C2D0Ev();
extern void _ZN7S9238C22v3Ev();
extern void _ZN7S9238C22v4Ev();
extern void _ZN7S9238C22v5Ev();
static  VTBL_ENTRY vtc_S9238C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9238C2[0]),
  (VTBL_ENTRY)&_ZN7S9238C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9238C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9238C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9238C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9238C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9238C2[];
extern  VTBL_ENTRY _ZTV7S9238C2[];
Class_Descriptor cd_S9238C2 = {  "S9238C2", // class name
  0,0,//no base classes
  &(vtc_S9238C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9238C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9238C2),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  S9238C6  {
  char s9238c6f0;
  __tsi64 s9238c6f1;
  char s9238c6f2[65];
  void  mf9238c6(); // _ZN7S9238C68mf9238c6Ev
};
//SIG(-1 S9238C6) C1{ m Fc FL Fc[65]}


void  S9238C6 ::mf9238c6(){}

static void Test_S9238C6()
{
  {
    init_simple_test("S9238C6");
    S9238C6 lv;
    check2(sizeof(lv), ABISELECT(88,80), "sizeof(S9238C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9238C6)");
    check_field_offset(lv, s9238c6f0, 0, "S9238C6.s9238c6f0");
    check_field_offset(lv, s9238c6f1, ABISELECT(8,4), "S9238C6.s9238c6f1");
    check_field_offset(lv, s9238c6f2, ABISELECT(16,12), "S9238C6.s9238c6f2");
  }
}
static Arrange_To_Call_Me vS9238C6(Test_S9238C6, "S9238C6", ABISELECT(88,80));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9238C7_nt  {
  char s9238c7f0[2];
  __tsi64 s9238c7f1;
  char s9238c7f2[74];
  int s9238c7f3[3];
  void  mf9238c7(); // _ZN10S9238C7_nt8mf9238c7Ev
};
//SIG(-1 S9238C7_nt) C1{ m Fc[2] FL Fc[74] Fi[3]}


void  S9238C7_nt ::mf9238c7(){}

//skip512 S9238C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9238C5  {
  int s9238c5f0[4];
  ::S9238C6 s9238c5f1;
  ::S9238C7_nt s9238c5f2;
  void  mf9238c5(); // _ZN7S9238C58mf9238c5Ev
};
//SIG(-1 S9238C5) C1{ m Fi[4] FC2{ m Fc FL Fc[65]} FC3{ m Fc[2] FL Fc[74] Fi[3]}}


void  S9238C5 ::mf9238c5(){}

static void Test_S9238C5()
{
  {
    init_simple_test("S9238C5");
    S9238C5 lv;
    check2(sizeof(lv), ABISELECT(208,196), "sizeof(S9238C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9238C5)");
    check_field_offset(lv, s9238c5f0, 0, "S9238C5.s9238c5f0");
    check_field_offset(lv, s9238c5f1, 16, "S9238C5.s9238c5f1");
    check_field_offset(lv, s9238c5f2, ABISELECT(104,96), "S9238C5.s9238c5f2");
  }
}
static Arrange_To_Call_Me vS9238C5(Test_S9238C5, "S9238C5", ABISELECT(208,196));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9238C1  : S9238C2 {
  ::S9238C5 s9238c1f0;
  void *s9238c1f1[2];
  virtual  ~S9238C1(); // _ZN7S9238C1D1Ev
  virtual void  v1(); // _ZN7S9238C12v1Ev
  virtual void  v2(); // _ZN7S9238C12v2Ev
  S9238C1(); // tgen
};
//SIG(1 S9238C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 FC5{ m Fi[4] FC6{ m Fc FL Fc[65]} FC7{ m Fc[2] FL Fc[74] Fi[3]}} Fp[2]}


 S9238C1 ::~S9238C1(){ note_dtor("S9238C1", this);}
void  S9238C1 ::v1(){vfunc_called(this, "_ZN7S9238C12v1Ev");}
void  S9238C1 ::v2(){vfunc_called(this, "_ZN7S9238C12v2Ev");}
S9238C1 ::S9238C1(){ note_ctor("S9238C1", this);} // tgen

static void Test_S9238C1()
{
  extern Class_Descriptor cd_S9238C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(34,59)];
    init_test(&cd_S9238C1, buf);
    S9238C1 *dp, &lv = *(dp=new (buf) S9238C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(264,232), "sizeof(S9238C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9238C1)");
    check_base_class_offset(lv, (S9238C2*), 0, "S9238C1");
    check_field_offset(lv, s9238c1f0, ABISELECT(40,28), "S9238C1.s9238c1f0");
    check_field_offset(lv, s9238c1f1, ABISELECT(248,224), "S9238C1.s9238c1f1");
    test_class_info(&lv, &cd_S9238C1);
    dp->~S9238C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9238C1(Test_S9238C1, "S9238C1", ABISELECT(264,232));

#else // __cplusplus

extern void _ZN7S9238C1C1Ev();
extern void _ZN7S9238C1D1Ev();
Name_Map name_map_S9238C1[] = {
  NSPAIR(_ZN7S9238C1C1Ev),
  NSPAIR(_ZN7S9238C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9238C2;
extern VTBL_ENTRY _ZTI7S9238C2[];
extern  VTBL_ENTRY _ZTV7S9238C2[];
static Base_Class bases_S9238C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9238C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9238C1[];
extern void _ZN7S9238C1D1Ev();
extern void _ZN7S9238C1D0Ev();
extern void _ZN7S9238C22v3Ev();
extern void _ZN7S9238C22v4Ev();
extern void _ZN7S9238C22v5Ev();
extern void _ZN7S9238C12v1Ev();
extern void _ZN7S9238C12v2Ev();
static  VTBL_ENTRY vtc_S9238C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9238C1[0]),
  (VTBL_ENTRY)&_ZN7S9238C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9238C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9238C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9238C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9238C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9238C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9238C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9238C1[];
extern  VTBL_ENTRY _ZTV7S9238C1[];
Class_Descriptor cd_S9238C1 = {  "S9238C1", // class name
  bases_S9238C1, 1,
  &(vtc_S9238C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(264,232), // object size
  NSPAIRA(_ZTI7S9238C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9238C1),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  S2077C4  {
  ::S731C16_nt s2077c4f0;
  int s2077c4f1[2];
  char s2077c4f2;
  virtual  ~S2077C4(); // _ZN7S2077C4D1Ev
  virtual void  v2(); // _ZN7S2077C42v2Ev
  virtual void  v3(); // _ZN7S2077C42v3Ev
  virtual void  v4(); // _ZN7S2077C42v4Ev
  S2077C4(); // tgen
};
//SIG(-1 S2077C4) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S2077C4 ::~S2077C4(){ note_dtor("S2077C4", this);}
void  S2077C4 ::v2(){vfunc_called(this, "_ZN7S2077C42v2Ev");}
void  S2077C4 ::v3(){vfunc_called(this, "_ZN7S2077C42v3Ev");}
void  S2077C4 ::v4(){vfunc_called(this, "_ZN7S2077C42v4Ev");}
S2077C4 ::S2077C4(){ note_ctor("S2077C4", this);} // tgen

static void Test_S2077C4()
{
  extern Class_Descriptor cd_S2077C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S2077C4, buf);
    S2077C4 *dp, &lv = *(dp=new (buf) S2077C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S2077C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2077C4)");
    check_field_offset(lv, s2077c4f0, ABISELECT(8,4), "S2077C4.s2077c4f0");
    check_field_offset(lv, s2077c4f1, ABISELECT(24,16), "S2077C4.s2077c4f1");
    check_field_offset(lv, s2077c4f2, ABISELECT(32,24), "S2077C4.s2077c4f2");
    test_class_info(&lv, &cd_S2077C4);
    dp->~S2077C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2077C4(Test_S2077C4, "S2077C4", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S2077C4C1Ev();
extern void _ZN7S2077C4D1Ev();
Name_Map name_map_S2077C4[] = {
  NSPAIR(_ZN7S2077C4C1Ev),
  NSPAIR(_ZN7S2077C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2077C4[];
extern void _ZN7S2077C4D1Ev();
extern void _ZN7S2077C4D0Ev();
extern void _ZN7S2077C42v2Ev();
extern void _ZN7S2077C42v3Ev();
extern void _ZN7S2077C42v4Ev();
static  VTBL_ENTRY vtc_S2077C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2077C4[0]),
  (VTBL_ENTRY)&_ZN7S2077C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2077C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2077C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2077C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2077C42v4Ev,
};
extern VTBL_ENTRY _ZTI7S2077C4[];
extern  VTBL_ENTRY _ZTV7S2077C4[];
Class_Descriptor cd_S2077C4 = {  "S2077C4", // class name
  0,0,//no base classes
  &(vtc_S2077C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S2077C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2077C4),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  S2077C3  : S2077C4 {
  void *s2077c3f0;
  virtual void  v5(); // _ZN7S2077C32v5Ev
  virtual void  v6(); // _ZN7S2077C32v6Ev
  ~S2077C3(); // tgen
  S2077C3(); // tgen
};
//SIG(-1 S2077C3) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S2077C3 ::v5(){vfunc_called(this, "_ZN7S2077C32v5Ev");}
void  S2077C3 ::v6(){vfunc_called(this, "_ZN7S2077C32v6Ev");}
S2077C3 ::~S2077C3(){ note_dtor("S2077C3", this);} // tgen
S2077C3 ::S2077C3(){ note_ctor("S2077C3", this);} // tgen

static void Test_S2077C3()
{
  extern Class_Descriptor cd_S2077C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S2077C3, buf);
    S2077C3 *dp, &lv = *(dp=new (buf) S2077C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S2077C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2077C3)");
    check_base_class_offset(lv, (S2077C4*), 0, "S2077C3");
    check_field_offset(lv, s2077c3f0, ABISELECT(40,28), "S2077C3.s2077c3f0");
    test_class_info(&lv, &cd_S2077C3);
    dp->~S2077C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2077C3(Test_S2077C3, "S2077C3", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S2077C3C1Ev();
extern void _ZN7S2077C3D1Ev();
Name_Map name_map_S2077C3[] = {
  NSPAIR(_ZN7S2077C3C1Ev),
  NSPAIR(_ZN7S2077C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2077C4;
extern VTBL_ENTRY _ZTI7S2077C4[];
extern  VTBL_ENTRY _ZTV7S2077C4[];
static Base_Class bases_S2077C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2077C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2077C3[];
extern void _ZN7S2077C3D1Ev();
extern void _ZN7S2077C3D0Ev();
extern void _ZN7S2077C42v2Ev();
extern void _ZN7S2077C42v3Ev();
extern void _ZN7S2077C42v4Ev();
extern void _ZN7S2077C32v5Ev();
extern void _ZN7S2077C32v6Ev();
static  VTBL_ENTRY vtc_S2077C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2077C3[0]),
  (VTBL_ENTRY)&_ZN7S2077C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2077C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2077C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2077C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2077C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2077C32v5Ev,
  (VTBL_ENTRY)&_ZN7S2077C32v6Ev,
};
extern VTBL_ENTRY _ZTI7S2077C3[];
extern  VTBL_ENTRY _ZTV7S2077C3[];
Class_Descriptor cd_S2077C3 = {  "S2077C3", // class name
  bases_S2077C3, 1,
  &(vtc_S2077C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S2077C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2077C3),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  S2077C2  : S2077C3 {
  void *s2077c2f0;
  ::S731C16_nt s2077c2f1;
  void *s2077c2f2[2];
  ::S17885C12 s2077c2f3;
  ::S5074C8_nt s2077c2f4;
  virtual  ~S2077C2(); // _ZN7S2077C2D1Ev
  virtual void  v7(); // _ZN7S2077C22v7Ev
  virtual void  v8(); // _ZN7S2077C22v8Ev
  virtual void  v9(); // _ZN7S2077C22v9Ev
  virtual void  v10(); // _ZN7S2077C23v10Ev
  S2077C2(); // tgen
};
//SIG(-1 S2077C2) C1{ BC2{ BC3{ vd v5 v6 v7 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v8 v9 Fp} vd v1 v2 v3 v4 Fp FC4 Fp[2] FC6{ m Fp} FC7{ m Fp[2]}}


 S2077C2 ::~S2077C2(){ note_dtor("S2077C2", this);}
void  S2077C2 ::v7(){vfunc_called(this, "_ZN7S2077C22v7Ev");}
void  S2077C2 ::v8(){vfunc_called(this, "_ZN7S2077C22v8Ev");}
void  S2077C2 ::v9(){vfunc_called(this, "_ZN7S2077C22v9Ev");}
void  S2077C2 ::v10(){vfunc_called(this, "_ZN7S2077C23v10Ev");}
S2077C2 ::S2077C2(){ note_ctor("S2077C2", this);} // tgen

static void Test_S2077C2()
{
  extern Class_Descriptor cd_S2077C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,18)];
    init_test(&cd_S2077C2, buf);
    S2077C2 *dp, &lv = *(dp=new (buf) S2077C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,68), "sizeof(S2077C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2077C2)");
    check_base_class_offset(lv, (S2077C4*)(S2077C3*), 0, "S2077C2");
    check_base_class_offset(lv, (S2077C3*), 0, "S2077C2");
    check_field_offset(lv, s2077c2f0, ABISELECT(48,32), "S2077C2.s2077c2f0");
    check_field_offset(lv, s2077c2f1, ABISELECT(56,36), "S2077C2.s2077c2f1");
    check_field_offset(lv, s2077c2f2, ABISELECT(72,48), "S2077C2.s2077c2f2");
    check_field_offset(lv, s2077c2f3, ABISELECT(88,56), "S2077C2.s2077c2f3");
    check_field_offset(lv, s2077c2f4, ABISELECT(96,60), "S2077C2.s2077c2f4");
    test_class_info(&lv, &cd_S2077C2);
    dp->~S2077C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2077C2(Test_S2077C2, "S2077C2", ABISELECT(112,68));

#else // __cplusplus

extern void _ZN7S2077C2C1Ev();
extern void _ZN7S2077C2D1Ev();
Name_Map name_map_S2077C2[] = {
  NSPAIR(_ZN7S2077C2C1Ev),
  NSPAIR(_ZN7S2077C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2077C4;
extern VTBL_ENTRY _ZTI7S2077C4[];
extern  VTBL_ENTRY _ZTV7S2077C4[];
extern Class_Descriptor cd_S2077C3;
extern VTBL_ENTRY _ZTI7S2077C3[];
extern  VTBL_ENTRY _ZTV7S2077C3[];
static Base_Class bases_S2077C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2077C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2077C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2077C2[];
extern void _ZN7S2077C2D1Ev();
extern void _ZN7S2077C2D0Ev();
extern void _ZN7S2077C42v2Ev();
extern void _ZN7S2077C42v3Ev();
extern void _ZN7S2077C42v4Ev();
extern void _ZN7S2077C32v5Ev();
extern void _ZN7S2077C32v6Ev();
extern void _ZN7S2077C22v7Ev();
extern void _ZN7S2077C22v8Ev();
extern void _ZN7S2077C22v9Ev();
extern void _ZN7S2077C23v10Ev();
static  VTBL_ENTRY vtc_S2077C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2077C2[0]),
  (VTBL_ENTRY)&_ZN7S2077C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2077C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2077C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2077C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2077C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2077C32v5Ev,
  (VTBL_ENTRY)&_ZN7S2077C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2077C22v7Ev,
  (VTBL_ENTRY)&_ZN7S2077C22v8Ev,
  (VTBL_ENTRY)&_ZN7S2077C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2077C23v10Ev,
};
extern VTBL_ENTRY _ZTI7S2077C2[];
extern  VTBL_ENTRY _ZTV7S2077C2[];
Class_Descriptor cd_S2077C2 = {  "S2077C2", // class name
  bases_S2077C2, 2,
  &(vtc_S2077C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,68), // object size
  NSPAIRA(_ZTI7S2077C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2077C2),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  S2077C1  : S2077C2 {
  virtual  ~S2077C1(); // _ZN7S2077C1D1Ev
  virtual void  v1(); // _ZN7S2077C12v1Ev
  S2077C1(); // tgen
};
//SIG(1 S2077C1) C1{ BC2{ BC3{ BC4{ vd v2 v3 v4 FC5{ m Fp Fi FC6{ m}} Fi[2] Fc} v5 v6 Fp} vd v7 v8 v9 v10 Fp FC5 Fp[2] FC7{ m Fp} FC8{ m Fp[2]}} vd v1}


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

static void Test_S2077C1()
{
  extern Class_Descriptor cd_S2077C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,18)];
    init_test(&cd_S2077C1, buf);
    S2077C1 *dp, &lv = *(dp=new (buf) S2077C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,68), "sizeof(S2077C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2077C1)");
    check_base_class_offset(lv, (S2077C4*)(S2077C3*)(S2077C2*), 0, "S2077C1");
    check_base_class_offset(lv, (S2077C3*)(S2077C2*), 0, "S2077C1");
    check_base_class_offset(lv, (S2077C2*), 0, "S2077C1");
    test_class_info(&lv, &cd_S2077C1);
    dp->~S2077C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2077C1(Test_S2077C1, "S2077C1", ABISELECT(112,68));

#else // __cplusplus

extern void _ZN7S2077C1C1Ev();
extern void _ZN7S2077C1D1Ev();
Name_Map name_map_S2077C1[] = {
  NSPAIR(_ZN7S2077C1C1Ev),
  NSPAIR(_ZN7S2077C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2077C4;
extern VTBL_ENTRY _ZTI7S2077C4[];
extern  VTBL_ENTRY _ZTV7S2077C4[];
extern Class_Descriptor cd_S2077C3;
extern VTBL_ENTRY _ZTI7S2077C3[];
extern  VTBL_ENTRY _ZTV7S2077C3[];
extern Class_Descriptor cd_S2077C2;
extern VTBL_ENTRY _ZTI7S2077C2[];
extern  VTBL_ENTRY _ZTV7S2077C2[];
static Base_Class bases_S2077C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2077C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2077C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2077C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2077C1[];
extern void _ZN7S2077C1D1Ev();
extern void _ZN7S2077C1D0Ev();
extern void _ZN7S2077C42v2Ev();
extern void _ZN7S2077C42v3Ev();
extern void _ZN7S2077C42v4Ev();
extern void _ZN7S2077C32v5Ev();
extern void _ZN7S2077C32v6Ev();
extern void _ZN7S2077C22v7Ev();
extern void _ZN7S2077C22v8Ev();
extern void _ZN7S2077C22v9Ev();
extern void _ZN7S2077C23v10Ev();
extern void _ZN7S2077C12v1Ev();
static  VTBL_ENTRY vtc_S2077C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2077C1[0]),
  (VTBL_ENTRY)&_ZN7S2077C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2077C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2077C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2077C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2077C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2077C32v5Ev,
  (VTBL_ENTRY)&_ZN7S2077C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2077C22v7Ev,
  (VTBL_ENTRY)&_ZN7S2077C22v8Ev,
  (VTBL_ENTRY)&_ZN7S2077C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2077C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2077C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S2077C1[];
extern  VTBL_ENTRY _ZTV7S2077C1[];
Class_Descriptor cd_S2077C1 = {  "S2077C1", // class name
  bases_S2077C1, 3,
  &(vtc_S2077C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,68), // object size
  NSPAIRA(_ZTI7S2077C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2077C1),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10023C2  {
  void *s10023c2f0;
  int s10023c2f1;
  virtual  ~S10023C2(); // _ZN8S10023C2D1Ev
  virtual void  v6(); // _ZN8S10023C22v6Ev
  virtual void  v7(); // _ZN8S10023C22v7Ev
  virtual void  v8(); // _ZN8S10023C22v8Ev
  virtual void  v9(); // _ZN8S10023C22v9Ev
  virtual void  v10(); // _ZN8S10023C23v10Ev
  virtual void  v11(); // _ZN8S10023C23v11Ev
  virtual void  v12(); // _ZN8S10023C23v12Ev
  virtual void  v13(); // _ZN8S10023C23v13Ev
  virtual void  v14(); // _ZN8S10023C23v14Ev
  virtual void  v15(); // _ZN8S10023C23v15Ev
  S10023C2(); // tgen
};
//SIG(-1 S10023C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fp Fi}


 S10023C2 ::~S10023C2(){ note_dtor("S10023C2", this);}
void  S10023C2 ::v6(){vfunc_called(this, "_ZN8S10023C22v6Ev");}
void  S10023C2 ::v7(){vfunc_called(this, "_ZN8S10023C22v7Ev");}
void  S10023C2 ::v8(){vfunc_called(this, "_ZN8S10023C22v8Ev");}
void  S10023C2 ::v9(){vfunc_called(this, "_ZN8S10023C22v9Ev");}
void  S10023C2 ::v10(){vfunc_called(this, "_ZN8S10023C23v10Ev");}
void  S10023C2 ::v11(){vfunc_called(this, "_ZN8S10023C23v11Ev");}
void  S10023C2 ::v12(){vfunc_called(this, "_ZN8S10023C23v12Ev");}
void  S10023C2 ::v13(){vfunc_called(this, "_ZN8S10023C23v13Ev");}
void  S10023C2 ::v14(){vfunc_called(this, "_ZN8S10023C23v14Ev");}
void  S10023C2 ::v15(){vfunc_called(this, "_ZN8S10023C23v15Ev");}
S10023C2 ::S10023C2(){ note_ctor("S10023C2", this);} // tgen

static void Test_S10023C2()
{
  extern Class_Descriptor cd_S10023C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S10023C2, buf);
    S10023C2 *dp, &lv = *(dp=new (buf) S10023C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S10023C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10023C2)");
    check_field_offset(lv, s10023c2f0, ABISELECT(8,4), "S10023C2.s10023c2f0");
    check_field_offset(lv, s10023c2f1, ABISELECT(16,8), "S10023C2.s10023c2f1");
    test_class_info(&lv, &cd_S10023C2);
    dp->~S10023C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10023C2(Test_S10023C2, "S10023C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S10023C2C1Ev();
extern void _ZN8S10023C2D1Ev();
Name_Map name_map_S10023C2[] = {
  NSPAIR(_ZN8S10023C2C1Ev),
  NSPAIR(_ZN8S10023C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10023C2[];
extern void _ZN8S10023C2D1Ev();
extern void _ZN8S10023C2D0Ev();
extern void _ZN8S10023C22v6Ev();
extern void _ZN8S10023C22v7Ev();
extern void _ZN8S10023C22v8Ev();
extern void _ZN8S10023C22v9Ev();
extern void _ZN8S10023C23v10Ev();
extern void _ZN8S10023C23v11Ev();
extern void _ZN8S10023C23v12Ev();
extern void _ZN8S10023C23v13Ev();
extern void _ZN8S10023C23v14Ev();
extern void _ZN8S10023C23v15Ev();
static  VTBL_ENTRY vtc_S10023C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10023C2[0]),
  (VTBL_ENTRY)&_ZN8S10023C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10023C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10023C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10023C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10023C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10023C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10023C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10023C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10023C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10023C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10023C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10023C23v15Ev,
};
extern VTBL_ENTRY _ZTI8S10023C2[];
extern  VTBL_ENTRY _ZTV8S10023C2[];
Class_Descriptor cd_S10023C2 = {  "S10023C2", // class name
  0,0,//no base classes
  &(vtc_S10023C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S10023C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10023C2),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  S10023C3  {
  virtual  ~S10023C3(); // _ZN8S10023C3D1Ev
  virtual void  v16(); // _ZN8S10023C33v16Ev
  S10023C3(); // tgen
};
//SIG(-1 S10023C3) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN8S10023C3C1Ev();
extern void _ZN8S10023C3D1Ev();
Name_Map name_map_S10023C3[] = {
  NSPAIR(_ZN8S10023C3C1Ev),
  NSPAIR(_ZN8S10023C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10023C3[];
extern void _ZN8S10023C3D1Ev();
extern void _ZN8S10023C3D0Ev();
extern void _ZN8S10023C33v16Ev();
static  VTBL_ENTRY vtc_S10023C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10023C3[0]),
  (VTBL_ENTRY)&_ZN8S10023C3D1Ev,
  (VTBL_ENTRY)&_ZN8S10023C3D0Ev,
  (VTBL_ENTRY)&_ZN8S10023C33v16Ev,
};
extern VTBL_ENTRY _ZTI8S10023C3[];
extern  VTBL_ENTRY _ZTV8S10023C3[];
Class_Descriptor cd_S10023C3 = {  "S10023C3", // class name
  0,0,//no base classes
  &(vtc_S10023C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S10023C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10023C3),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  S10023C1  : S10023C2 , S10023C3 {
  int s10023c1f0;
  void *s10023c1f1;
  ::S731C20 s10023c1f2;
  char s10023c1f3;
  void *s10023c1f4[4];
  virtual  ~S10023C1(); // _ZN8S10023C1D1Ev
  virtual void  v1(); // _ZN8S10023C12v1Ev
  virtual void  v2(); // _ZN8S10023C12v2Ev
  virtual void  v3(); // _ZN8S10023C12v3Ev
  virtual void  v4(); // _ZN8S10023C12v4Ev
  virtual void  v5(); // _ZN8S10023C12v5Ev
  S10023C1(); // tgen
};
//SIG(1 S10023C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp Fi} BC3{ vd v16} vd v1 v2 v3 v4 v5 Fi Fp FC4{ m Fp Fi[2] FC5{ m}} Fc Fp[4]}


 S10023C1 ::~S10023C1(){ note_dtor("S10023C1", this);}
void  S10023C1 ::v1(){vfunc_called(this, "_ZN8S10023C12v1Ev");}
void  S10023C1 ::v2(){vfunc_called(this, "_ZN8S10023C12v2Ev");}
void  S10023C1 ::v3(){vfunc_called(this, "_ZN8S10023C12v3Ev");}
void  S10023C1 ::v4(){vfunc_called(this, "_ZN8S10023C12v4Ev");}
void  S10023C1 ::v5(){vfunc_called(this, "_ZN8S10023C12v5Ev");}
S10023C1 ::S10023C1(){ note_ctor("S10023C1", this);} // tgen

static void Test_S10023C1()
{
  extern Class_Descriptor cd_S10023C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,16)];
    init_test(&cd_S10023C1, buf);
    S10023C1 *dp, &lv = *(dp=new (buf) S10023C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S10023C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10023C1)");
    check_base_class_offset(lv, (S10023C2*), 0, "S10023C1");
    check_base_class_offset(lv, (S10023C3*), ABISELECT(24,12), "S10023C1");
    check_field_offset(lv, s10023c1f0, ABISELECT(32,16), "S10023C1.s10023c1f0");
    check_field_offset(lv, s10023c1f1, ABISELECT(40,20), "S10023C1.s10023c1f1");
    check_field_offset(lv, s10023c1f2, ABISELECT(48,24), "S10023C1.s10023c1f2");
    check_field_offset(lv, s10023c1f3, ABISELECT(72,40), "S10023C1.s10023c1f3");
    check_field_offset(lv, s10023c1f4, ABISELECT(80,44), "S10023C1.s10023c1f4");
    test_class_info(&lv, &cd_S10023C1);
    dp->~S10023C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10023C1(Test_S10023C1, "S10023C1", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN8S10023C1C1Ev();
extern void _ZN8S10023C1D1Ev();
Name_Map name_map_S10023C1[] = {
  NSPAIR(_ZN8S10023C1C1Ev),
  NSPAIR(_ZN8S10023C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10023C2;
extern VTBL_ENTRY _ZTI8S10023C2[];
extern  VTBL_ENTRY _ZTV8S10023C2[];
extern Class_Descriptor cd_S10023C3;
extern VTBL_ENTRY _ZTI8S10023C3[];
extern  VTBL_ENTRY _ZTV8S10023C3[];
static Base_Class bases_S10023C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10023C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10023C3,    ABISELECT(24,12), //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
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10023C1[];
extern void _ZN8S10023C1D1Ev();
extern void _ZN8S10023C1D0Ev();
extern void _ZN8S10023C22v6Ev();
extern void _ZN8S10023C22v7Ev();
extern void _ZN8S10023C22v8Ev();
extern void _ZN8S10023C22v9Ev();
extern void _ZN8S10023C23v10Ev();
extern void _ZN8S10023C23v11Ev();
extern void _ZN8S10023C23v12Ev();
extern void _ZN8S10023C23v13Ev();
extern void _ZN8S10023C23v14Ev();
extern void _ZN8S10023C23v15Ev();
extern void _ZN8S10023C12v1Ev();
extern void _ZN8S10023C12v2Ev();
extern void _ZN8S10023C12v3Ev();
extern void _ZN8S10023C12v4Ev();
extern void _ZN8S10023C12v5Ev();
extern void ABISELECT(_ZThn24_N8S10023C1D1Ev,_ZThn12_N8S10023C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S10023C1D0Ev,_ZThn12_N8S10023C1D0Ev)();
extern void _ZN8S10023C33v16Ev();
static  VTBL_ENTRY vtc_S10023C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10023C1[0]),
  (VTBL_ENTRY)&_ZN8S10023C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10023C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10023C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10023C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10023C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10023C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10023C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10023C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10023C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10023C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10023C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10023C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10023C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10023C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10023C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10023C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10023C12v5Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S10023C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S10023C1D1Ev,_ZThn12_N8S10023C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S10023C1D0Ev,_ZThn12_N8S10023C1D0Ev),
  (VTBL_ENTRY)&_ZN8S10023C33v16Ev,
};
extern VTBL_ENTRY _ZTI8S10023C1[];
extern  VTBL_ENTRY _ZTV8S10023C1[];
Class_Descriptor cd_S10023C1 = {  "S10023C1", // class name
  bases_S10023C1, 2,
  &(vtc_S10023C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI8S10023C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S10023C1),24, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S44C6  : S28C13_nt {
};
//SIG(-1 S44C6) C1{ BC2{ m Fi}}



static void Test_S44C6()
{
  extern Class_Descriptor cd_S44C6;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S44C6, buf);
    S44C6 &lv = *(new (buf) S44C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S44C6)");
    check2(__alignof__(lv), 4, "__alignof__(S44C6)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S44C6");
    test_class_info(&lv, &cd_S44C6);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS44C6(Test_S44C6, "S44C6", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S44C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI5S44C6[];
Class_Descriptor cd_S44C6 = {  "S44C6", // class name
  bases_S44C6, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI5S44C6),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  S44C5  : S44C6 {
  void *s44c5f0;
  int s44c5f1;
  ::S17885C12 s44c5f2;
  void *s44c5f3[2];
  virtual  ~S44C5(); // _ZN5S44C5D1Ev
  virtual void  v2(); // _ZN5S44C52v2Ev
  virtual void  v3(); // _ZN5S44C52v3Ev
  virtual void  v4(); // _ZN5S44C52v4Ev
  virtual void  v5(); // _ZN5S44C52v5Ev
  virtual void  v6(); // _ZN5S44C52v6Ev
  virtual void  v7(); // _ZN5S44C52v7Ev
  virtual void  v8(); // _ZN5S44C52v8Ev
  virtual void  v9(); // _ZN5S44C52v9Ev
  virtual void  v10(); // _ZN5S44C53v10Ev
  virtual void  v11(); // _ZN5S44C53v11Ev
  virtual void  v12(); // _ZN5S44C53v12Ev
  virtual void  v13(); // _ZN5S44C53v13Ev
  S44C5(); // tgen
};
//SIG(-1 S44C5) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 Fp Fi FC4{ m Fp} Fp[2]}


 S44C5 ::~S44C5(){ note_dtor("S44C5", this);}
void  S44C5 ::v2(){vfunc_called(this, "_ZN5S44C52v2Ev");}
void  S44C5 ::v3(){vfunc_called(this, "_ZN5S44C52v3Ev");}
void  S44C5 ::v4(){vfunc_called(this, "_ZN5S44C52v4Ev");}
void  S44C5 ::v5(){vfunc_called(this, "_ZN5S44C52v5Ev");}
void  S44C5 ::v6(){vfunc_called(this, "_ZN5S44C52v6Ev");}
void  S44C5 ::v7(){vfunc_called(this, "_ZN5S44C52v7Ev");}
void  S44C5 ::v8(){vfunc_called(this, "_ZN5S44C52v8Ev");}
void  S44C5 ::v9(){vfunc_called(this, "_ZN5S44C52v9Ev");}
void  S44C5 ::v10(){vfunc_called(this, "_ZN5S44C53v10Ev");}
void  S44C5 ::v11(){vfunc_called(this, "_ZN5S44C53v11Ev");}
void  S44C5 ::v12(){vfunc_called(this, "_ZN5S44C53v12Ev");}
void  S44C5 ::v13(){vfunc_called(this, "_ZN5S44C53v13Ev");}
S44C5 ::S44C5(){ note_ctor("S44C5", this);} // tgen

static void Test_S44C5()
{
  extern Class_Descriptor cd_S44C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S44C5, buf);
    S44C5 *dp, &lv = *(dp=new (buf) S44C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S44C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S44C5)");
    check_base_class_offset(lv, (S28C13_nt*)(S44C6*), ABISELECT(8,4), "S44C5");
    check_base_class_offset(lv, (S44C6*), ABISELECT(8,4), "S44C5");
    check_field_offset(lv, s44c5f0, ABISELECT(16,8), "S44C5.s44c5f0");
    check_field_offset(lv, s44c5f1, ABISELECT(24,12), "S44C5.s44c5f1");
    check_field_offset(lv, s44c5f2, ABISELECT(32,16), "S44C5.s44c5f2");
    check_field_offset(lv, s44c5f3, ABISELECT(40,20), "S44C5.s44c5f3");
    test_class_info(&lv, &cd_S44C5);
    dp->~S44C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS44C5(Test_S44C5, "S44C5", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN5S44C5C1Ev();
extern void _ZN5S44C5D1Ev();
Name_Map name_map_S44C5[] = {
  NSPAIR(_ZN5S44C5C1Ev),
  NSPAIR(_ZN5S44C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S44C6;
extern VTBL_ENTRY _ZTI5S44C6[];
static Base_Class bases_S44C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S44C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI5S44C5[];
extern void _ZN5S44C5D1Ev();
extern void _ZN5S44C5D0Ev();
extern void _ZN5S44C52v2Ev();
extern void _ZN5S44C52v3Ev();
extern void _ZN5S44C52v4Ev();
extern void _ZN5S44C52v5Ev();
extern void _ZN5S44C52v6Ev();
extern void _ZN5S44C52v7Ev();
extern void _ZN5S44C52v8Ev();
extern void _ZN5S44C52v9Ev();
extern void _ZN5S44C53v10Ev();
extern void _ZN5S44C53v11Ev();
extern void _ZN5S44C53v12Ev();
extern void _ZN5S44C53v13Ev();
static  VTBL_ENTRY vtc_S44C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S44C5[0]),
  (VTBL_ENTRY)&_ZN5S44C5D1Ev,
  (VTBL_ENTRY)&_ZN5S44C5D0Ev,
  (VTBL_ENTRY)&_ZN5S44C52v2Ev,
  (VTBL_ENTRY)&_ZN5S44C52v3Ev,
  (VTBL_ENTRY)&_ZN5S44C52v4Ev,
  (VTBL_ENTRY)&_ZN5S44C52v5Ev,
  (VTBL_ENTRY)&_ZN5S44C52v6Ev,
  (VTBL_ENTRY)&_ZN5S44C52v7Ev,
  (VTBL_ENTRY)&_ZN5S44C52v8Ev,
  (VTBL_ENTRY)&_ZN5S44C52v9Ev,
  (VTBL_ENTRY)&_ZN5S44C53v10Ev,
  (VTBL_ENTRY)&_ZN5S44C53v11Ev,
  (VTBL_ENTRY)&_ZN5S44C53v12Ev,
  (VTBL_ENTRY)&_ZN5S44C53v13Ev,
};
extern VTBL_ENTRY _ZTI5S44C5[];
extern  VTBL_ENTRY _ZTV5S44C5[];
Class_Descriptor cd_S44C5 = {  "S44C5", // class name
  bases_S44C5, 2,
  &(vtc_S44C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI5S44C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV5S44C5),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S44C4  : S44C5 {
  int s44c4f0;
  virtual void  v14(); // _ZN5S44C43v14Ev
  virtual void  v15(); // _ZN5S44C43v15Ev
  ~S44C4(); // tgen
  S44C4(); // tgen
};
//SIG(-1 S44C4) C1{ BC2{ BC3{ BC4{ m Fi}} vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp Fi FC5{ m Fp} Fp[2]} v1 v2 Fi}


void  S44C4 ::v14(){vfunc_called(this, "_ZN5S44C43v14Ev");}
void  S44C4 ::v15(){vfunc_called(this, "_ZN5S44C43v15Ev");}
S44C4 ::~S44C4(){ note_dtor("S44C4", this);} // tgen
S44C4 ::S44C4(){ note_ctor("S44C4", this);} // tgen

static void Test_S44C4()
{
  extern Class_Descriptor cd_S44C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S44C4, buf);
    S44C4 *dp, &lv = *(dp=new (buf) S44C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S44C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S44C4)");
    check_base_class_offset(lv, (S28C13_nt*)(S44C6*)(S44C5*), ABISELECT(8,4), "S44C4");
    check_base_class_offset(lv, (S44C6*)(S44C5*), ABISELECT(8,4), "S44C4");
    check_base_class_offset(lv, (S44C5*), 0, "S44C4");
    check_field_offset(lv, s44c4f0, ABISELECT(56,28), "S44C4.s44c4f0");
    test_class_info(&lv, &cd_S44C4);
    dp->~S44C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS44C4(Test_S44C4, "S44C4", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN5S44C4C1Ev();
extern void _ZN5S44C4D1Ev();
Name_Map name_map_S44C4[] = {
  NSPAIR(_ZN5S44C4C1Ev),
  NSPAIR(_ZN5S44C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S44C6;
extern VTBL_ENTRY _ZTI5S44C6[];
extern Class_Descriptor cd_S44C5;
extern VTBL_ENTRY _ZTI5S44C5[];
extern  VTBL_ENTRY _ZTV5S44C5[];
static Base_Class bases_S44C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S44C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S44C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI5S44C4[];
extern void _ZN5S44C4D1Ev();
extern void _ZN5S44C4D0Ev();
extern void _ZN5S44C52v2Ev();
extern void _ZN5S44C52v3Ev();
extern void _ZN5S44C52v4Ev();
extern void _ZN5S44C52v5Ev();
extern void _ZN5S44C52v6Ev();
extern void _ZN5S44C52v7Ev();
extern void _ZN5S44C52v8Ev();
extern void _ZN5S44C52v9Ev();
extern void _ZN5S44C53v10Ev();
extern void _ZN5S44C53v11Ev();
extern void _ZN5S44C53v12Ev();
extern void _ZN5S44C53v13Ev();
extern void _ZN5S44C43v14Ev();
extern void _ZN5S44C43v15Ev();
static  VTBL_ENTRY vtc_S44C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S44C4[0]),
  (VTBL_ENTRY)&_ZN5S44C4D1Ev,
  (VTBL_ENTRY)&_ZN5S44C4D0Ev,
  (VTBL_ENTRY)&_ZN5S44C52v2Ev,
  (VTBL_ENTRY)&_ZN5S44C52v3Ev,
  (VTBL_ENTRY)&_ZN5S44C52v4Ev,
  (VTBL_ENTRY)&_ZN5S44C52v5Ev,
  (VTBL_ENTRY)&_ZN5S44C52v6Ev,
  (VTBL_ENTRY)&_ZN5S44C52v7Ev,
  (VTBL_ENTRY)&_ZN5S44C52v8Ev,
  (VTBL_ENTRY)&_ZN5S44C52v9Ev,
  (VTBL_ENTRY)&_ZN5S44C53v10Ev,
  (VTBL_ENTRY)&_ZN5S44C53v11Ev,
  (VTBL_ENTRY)&_ZN5S44C53v12Ev,
  (VTBL_ENTRY)&_ZN5S44C53v13Ev,
  (VTBL_ENTRY)&_ZN5S44C43v14Ev,
  (VTBL_ENTRY)&_ZN5S44C43v15Ev,
};
extern VTBL_ENTRY _ZTI5S44C4[];
extern  VTBL_ENTRY _ZTV5S44C4[];
Class_Descriptor cd_S44C4 = {  "S44C4", // class name
  bases_S44C4, 3,
  &(vtc_S44C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI5S44C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S44C4),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S44C3  : S44C4 {
  ~S44C3(); // tgen
  S44C3(); // tgen
};
//SIG(-1 S44C3) C1{ BC2{ BC3{ BC4{ BC5{ m Fi}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 Fp Fi FC6{ m Fp} Fp[2]} v13 v14 Fi}}


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

static void Test_S44C3()
{
  extern Class_Descriptor cd_S44C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S44C3, buf);
    S44C3 *dp, &lv = *(dp=new (buf) S44C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S44C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S44C3)");
    check_base_class_offset(lv, (S28C13_nt*)(S44C6*)(S44C5*)(S44C4*), ABISELECT(8,4), "S44C3");
    check_base_class_offset(lv, (S44C6*)(S44C5*)(S44C4*), ABISELECT(8,4), "S44C3");
    check_base_class_offset(lv, (S44C5*)(S44C4*), 0, "S44C3");
    check_base_class_offset(lv, (S44C4*), 0, "S44C3");
    test_class_info(&lv, &cd_S44C3);
    dp->~S44C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS44C3(Test_S44C3, "S44C3", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN5S44C3C1Ev();
extern void _ZN5S44C3D1Ev();
Name_Map name_map_S44C3[] = {
  NSPAIR(_ZN5S44C3C1Ev),
  NSPAIR(_ZN5S44C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S44C6;
extern VTBL_ENTRY _ZTI5S44C6[];
extern Class_Descriptor cd_S44C5;
extern VTBL_ENTRY _ZTI5S44C5[];
extern  VTBL_ENTRY _ZTV5S44C5[];
extern Class_Descriptor cd_S44C4;
extern VTBL_ENTRY _ZTI5S44C4[];
extern  VTBL_ENTRY _ZTV5S44C4[];
static Base_Class bases_S44C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S44C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S44C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S44C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI5S44C3[];
extern void _ZN5S44C3D1Ev();
extern void _ZN5S44C3D0Ev();
extern void _ZN5S44C52v2Ev();
extern void _ZN5S44C52v3Ev();
extern void _ZN5S44C52v4Ev();
extern void _ZN5S44C52v5Ev();
extern void _ZN5S44C52v6Ev();
extern void _ZN5S44C52v7Ev();
extern void _ZN5S44C52v8Ev();
extern void _ZN5S44C52v9Ev();
extern void _ZN5S44C53v10Ev();
extern void _ZN5S44C53v11Ev();
extern void _ZN5S44C53v12Ev();
extern void _ZN5S44C53v13Ev();
extern void _ZN5S44C43v14Ev();
extern void _ZN5S44C43v15Ev();
static  VTBL_ENTRY vtc_S44C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S44C3[0]),
  (VTBL_ENTRY)&_ZN5S44C3D1Ev,
  (VTBL_ENTRY)&_ZN5S44C3D0Ev,
  (VTBL_ENTRY)&_ZN5S44C52v2Ev,
  (VTBL_ENTRY)&_ZN5S44C52v3Ev,
  (VTBL_ENTRY)&_ZN5S44C52v4Ev,
  (VTBL_ENTRY)&_ZN5S44C52v5Ev,
  (VTBL_ENTRY)&_ZN5S44C52v6Ev,
  (VTBL_ENTRY)&_ZN5S44C52v7Ev,
  (VTBL_ENTRY)&_ZN5S44C52v8Ev,
  (VTBL_ENTRY)&_ZN5S44C52v9Ev,
  (VTBL_ENTRY)&_ZN5S44C53v10Ev,
  (VTBL_ENTRY)&_ZN5S44C53v11Ev,
  (VTBL_ENTRY)&_ZN5S44C53v12Ev,
  (VTBL_ENTRY)&_ZN5S44C53v13Ev,
  (VTBL_ENTRY)&_ZN5S44C43v14Ev,
  (VTBL_ENTRY)&_ZN5S44C43v15Ev,
};
extern VTBL_ENTRY _ZTI5S44C3[];
extern  VTBL_ENTRY _ZTV5S44C3[];
Class_Descriptor cd_S44C3 = {  "S44C3", // class name
  bases_S44C3, 4,
  &(vtc_S44C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI5S44C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S44C3),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S44C2  : S44C3 {
  virtual void  v16(); // _ZN5S44C23v16Ev
  ~S44C2(); // tgen
  S44C2(); // tgen
};
//SIG(-1 S44C2) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ m Fi}} vd v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 Fp Fi FC7{ m Fp} Fp[2]} v14 v15 Fi}} v1}


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

static void Test_S44C2()
{
  extern Class_Descriptor cd_S44C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S44C2, buf);
    S44C2 *dp, &lv = *(dp=new (buf) S44C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S44C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S44C2)");
    check_base_class_offset(lv, (S28C13_nt*)(S44C6*)(S44C5*)(S44C4*)(S44C3*), ABISELECT(8,4), "S44C2");
    check_base_class_offset(lv, (S44C6*)(S44C5*)(S44C4*)(S44C3*), ABISELECT(8,4), "S44C2");
    check_base_class_offset(lv, (S44C5*)(S44C4*)(S44C3*), 0, "S44C2");
    check_base_class_offset(lv, (S44C4*)(S44C3*), 0, "S44C2");
    check_base_class_offset(lv, (S44C3*), 0, "S44C2");
    test_class_info(&lv, &cd_S44C2);
    dp->~S44C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS44C2(Test_S44C2, "S44C2", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN5S44C2C1Ev();
extern void _ZN5S44C2D1Ev();
Name_Map name_map_S44C2[] = {
  NSPAIR(_ZN5S44C2C1Ev),
  NSPAIR(_ZN5S44C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S44C6;
extern VTBL_ENTRY _ZTI5S44C6[];
extern Class_Descriptor cd_S44C5;
extern VTBL_ENTRY _ZTI5S44C5[];
extern  VTBL_ENTRY _ZTV5S44C5[];
extern Class_Descriptor cd_S44C4;
extern VTBL_ENTRY _ZTI5S44C4[];
extern  VTBL_ENTRY _ZTV5S44C4[];
extern Class_Descriptor cd_S44C3;
extern VTBL_ENTRY _ZTI5S44C3[];
extern  VTBL_ENTRY _ZTV5S44C3[];
static Base_Class bases_S44C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S44C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S44C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S44C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S44C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI5S44C2[];
extern void _ZN5S44C2D1Ev();
extern void _ZN5S44C2D0Ev();
extern void _ZN5S44C52v2Ev();
extern void _ZN5S44C52v3Ev();
extern void _ZN5S44C52v4Ev();
extern void _ZN5S44C52v5Ev();
extern void _ZN5S44C52v6Ev();
extern void _ZN5S44C52v7Ev();
extern void _ZN5S44C52v8Ev();
extern void _ZN5S44C52v9Ev();
extern void _ZN5S44C53v10Ev();
extern void _ZN5S44C53v11Ev();
extern void _ZN5S44C53v12Ev();
extern void _ZN5S44C53v13Ev();
extern void _ZN5S44C43v14Ev();
extern void _ZN5S44C43v15Ev();
extern void _ZN5S44C23v16Ev();
static  VTBL_ENTRY vtc_S44C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S44C2[0]),
  (VTBL_ENTRY)&_ZN5S44C2D1Ev,
  (VTBL_ENTRY)&_ZN5S44C2D0Ev,
  (VTBL_ENTRY)&_ZN5S44C52v2Ev,
  (VTBL_ENTRY)&_ZN5S44C52v3Ev,
  (VTBL_ENTRY)&_ZN5S44C52v4Ev,
  (VTBL_ENTRY)&_ZN5S44C52v5Ev,
  (VTBL_ENTRY)&_ZN5S44C52v6Ev,
  (VTBL_ENTRY)&_ZN5S44C52v7Ev,
  (VTBL_ENTRY)&_ZN5S44C52v8Ev,
  (VTBL_ENTRY)&_ZN5S44C52v9Ev,
  (VTBL_ENTRY)&_ZN5S44C53v10Ev,
  (VTBL_ENTRY)&_ZN5S44C53v11Ev,
  (VTBL_ENTRY)&_ZN5S44C53v12Ev,
  (VTBL_ENTRY)&_ZN5S44C53v13Ev,
  (VTBL_ENTRY)&_ZN5S44C43v14Ev,
  (VTBL_ENTRY)&_ZN5S44C43v15Ev,
  (VTBL_ENTRY)&_ZN5S44C23v16Ev,
};
extern VTBL_ENTRY _ZTI5S44C2[];
extern  VTBL_ENTRY _ZTV5S44C2[];
Class_Descriptor cd_S44C2 = {  "S44C2", // class name
  bases_S44C2, 5,
  &(vtc_S44C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI5S44C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S44C2),19, //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  S44C1  : S44C2 {
  virtual void  v1(); // _ZN5S44C12v1Ev
  ~S44C1(); // tgen
  S44C1(); // tgen
};
//SIG(1 S44C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ BC7{ m Fi}} vd v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 Fp Fi FC8{ m Fp} Fp[2]} v14 v15 Fi}} v16} v1}


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

static void Test_S44C1()
{
  extern Class_Descriptor cd_S44C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S44C1, buf);
    S44C1 *dp, &lv = *(dp=new (buf) S44C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S44C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S44C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S44C6*)(S44C5*)(S44C4*)(S44C3*)(S44C2*), ABISELECT(8,4), "S44C1");
    check_base_class_offset(lv, (S44C6*)(S44C5*)(S44C4*)(S44C3*)(S44C2*), ABISELECT(8,4), "S44C1");
    check_base_class_offset(lv, (S44C5*)(S44C4*)(S44C3*)(S44C2*), 0, "S44C1");
    check_base_class_offset(lv, (S44C4*)(S44C3*)(S44C2*), 0, "S44C1");
    check_base_class_offset(lv, (S44C3*)(S44C2*), 0, "S44C1");
    check_base_class_offset(lv, (S44C2*), 0, "S44C1");
    test_class_info(&lv, &cd_S44C1);
    dp->~S44C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS44C1(Test_S44C1, "S44C1", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN5S44C1C1Ev();
extern void _ZN5S44C1D1Ev();
Name_Map name_map_S44C1[] = {
  NSPAIR(_ZN5S44C1C1Ev),
  NSPAIR(_ZN5S44C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S44C6;
extern VTBL_ENTRY _ZTI5S44C6[];
extern Class_Descriptor cd_S44C5;
extern VTBL_ENTRY _ZTI5S44C5[];
extern  VTBL_ENTRY _ZTV5S44C5[];
extern Class_Descriptor cd_S44C4;
extern VTBL_ENTRY _ZTI5S44C4[];
extern  VTBL_ENTRY _ZTV5S44C4[];
extern Class_Descriptor cd_S44C3;
extern VTBL_ENTRY _ZTI5S44C3[];
extern  VTBL_ENTRY _ZTV5S44C3[];
extern Class_Descriptor cd_S44C2;
extern VTBL_ENTRY _ZTI5S44C2[];
extern  VTBL_ENTRY _ZTV5S44C2[];
static Base_Class bases_S44C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S44C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S44C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S44C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S44C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S44C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI5S44C1[];
extern void _ZN5S44C1D1Ev();
extern void _ZN5S44C1D0Ev();
extern void _ZN5S44C52v2Ev();
extern void _ZN5S44C52v3Ev();
extern void _ZN5S44C52v4Ev();
extern void _ZN5S44C52v5Ev();
extern void _ZN5S44C52v6Ev();
extern void _ZN5S44C52v7Ev();
extern void _ZN5S44C52v8Ev();
extern void _ZN5S44C52v9Ev();
extern void _ZN5S44C53v10Ev();
extern void _ZN5S44C53v11Ev();
extern void _ZN5S44C53v12Ev();
extern void _ZN5S44C53v13Ev();
extern void _ZN5S44C43v14Ev();
extern void _ZN5S44C43v15Ev();
extern void _ZN5S44C23v16Ev();
extern void _ZN5S44C12v1Ev();
static  VTBL_ENTRY vtc_S44C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S44C1[0]),
  (VTBL_ENTRY)&_ZN5S44C1D1Ev,
  (VTBL_ENTRY)&_ZN5S44C1D0Ev,
  (VTBL_ENTRY)&_ZN5S44C52v2Ev,
  (VTBL_ENTRY)&_ZN5S44C52v3Ev,
  (VTBL_ENTRY)&_ZN5S44C52v4Ev,
  (VTBL_ENTRY)&_ZN5S44C52v5Ev,
  (VTBL_ENTRY)&_ZN5S44C52v6Ev,
  (VTBL_ENTRY)&_ZN5S44C52v7Ev,
  (VTBL_ENTRY)&_ZN5S44C52v8Ev,
  (VTBL_ENTRY)&_ZN5S44C52v9Ev,
  (VTBL_ENTRY)&_ZN5S44C53v10Ev,
  (VTBL_ENTRY)&_ZN5S44C53v11Ev,
  (VTBL_ENTRY)&_ZN5S44C53v12Ev,
  (VTBL_ENTRY)&_ZN5S44C53v13Ev,
  (VTBL_ENTRY)&_ZN5S44C43v14Ev,
  (VTBL_ENTRY)&_ZN5S44C43v15Ev,
  (VTBL_ENTRY)&_ZN5S44C23v16Ev,
  (VTBL_ENTRY)&_ZN5S44C12v1Ev,
};
extern VTBL_ENTRY _ZTI5S44C1[];
extern  VTBL_ENTRY _ZTV5S44C1[];
Class_Descriptor cd_S44C1 = {  "S44C1", // class name
  bases_S44C1, 6,
  &(vtc_S44C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI5S44C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S44C1),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4782C3  {
  ::S731C16_nt s4782c3f0;
  int s4782c3f1[2];
  char s4782c3f2;
  virtual  ~S4782C3(); // _ZN7S4782C3D1Ev
  virtual void  v3(); // _ZN7S4782C32v3Ev
  virtual void  v4(); // _ZN7S4782C32v4Ev
  virtual void  v5(); // _ZN7S4782C32v5Ev
  S4782C3(); // tgen
};
//SIG(-1 S4782C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4782C3 ::~S4782C3(){ note_dtor("S4782C3", this);}
void  S4782C3 ::v3(){vfunc_called(this, "_ZN7S4782C32v3Ev");}
void  S4782C3 ::v4(){vfunc_called(this, "_ZN7S4782C32v4Ev");}
void  S4782C3 ::v5(){vfunc_called(this, "_ZN7S4782C32v5Ev");}
S4782C3 ::S4782C3(){ note_ctor("S4782C3", this);} // tgen

static void Test_S4782C3()
{
  extern Class_Descriptor cd_S4782C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4782C3, buf);
    S4782C3 *dp, &lv = *(dp=new (buf) S4782C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4782C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4782C3)");
    check_field_offset(lv, s4782c3f0, ABISELECT(8,4), "S4782C3.s4782c3f0");
    check_field_offset(lv, s4782c3f1, ABISELECT(24,16), "S4782C3.s4782c3f1");
    check_field_offset(lv, s4782c3f2, ABISELECT(32,24), "S4782C3.s4782c3f2");
    test_class_info(&lv, &cd_S4782C3);
    dp->~S4782C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4782C3(Test_S4782C3, "S4782C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4782C3C1Ev();
extern void _ZN7S4782C3D1Ev();
Name_Map name_map_S4782C3[] = {
  NSPAIR(_ZN7S4782C3C1Ev),
  NSPAIR(_ZN7S4782C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4782C3[];
extern void _ZN7S4782C3D1Ev();
extern void _ZN7S4782C3D0Ev();
extern void _ZN7S4782C32v3Ev();
extern void _ZN7S4782C32v4Ev();
extern void _ZN7S4782C32v5Ev();
static  VTBL_ENTRY vtc_S4782C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4782C3[0]),
  (VTBL_ENTRY)&_ZN7S4782C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4782C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4782C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4782C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4782C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4782C3[];
extern  VTBL_ENTRY _ZTV7S4782C3[];
Class_Descriptor cd_S4782C3 = {  "S4782C3", // class name
  0,0,//no base classes
  &(vtc_S4782C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4782C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4782C3),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  S4782C2  : S4782C3 {
  void *s4782c2f0;
  virtual void  v6(); // _ZN7S4782C22v6Ev
  virtual void  v7(); // _ZN7S4782C22v7Ev
  ~S4782C2(); // tgen
  S4782C2(); // tgen
};
//SIG(-1 S4782C2) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S4782C2 ::v6(){vfunc_called(this, "_ZN7S4782C22v6Ev");}
void  S4782C2 ::v7(){vfunc_called(this, "_ZN7S4782C22v7Ev");}
S4782C2 ::~S4782C2(){ note_dtor("S4782C2", this);} // tgen
S4782C2 ::S4782C2(){ note_ctor("S4782C2", this);} // tgen

static void Test_S4782C2()
{
  extern Class_Descriptor cd_S4782C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S4782C2, buf);
    S4782C2 *dp, &lv = *(dp=new (buf) S4782C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S4782C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4782C2)");
    check_base_class_offset(lv, (S4782C3*), 0, "S4782C2");
    check_field_offset(lv, s4782c2f0, ABISELECT(40,28), "S4782C2.s4782c2f0");
    test_class_info(&lv, &cd_S4782C2);
    dp->~S4782C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4782C2(Test_S4782C2, "S4782C2", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S4782C2C1Ev();
extern void _ZN7S4782C2D1Ev();
Name_Map name_map_S4782C2[] = {
  NSPAIR(_ZN7S4782C2C1Ev),
  NSPAIR(_ZN7S4782C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4782C3;
extern VTBL_ENTRY _ZTI7S4782C3[];
extern  VTBL_ENTRY _ZTV7S4782C3[];
static Base_Class bases_S4782C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4782C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4782C2[];
extern void _ZN7S4782C2D1Ev();
extern void _ZN7S4782C2D0Ev();
extern void _ZN7S4782C32v3Ev();
extern void _ZN7S4782C32v4Ev();
extern void _ZN7S4782C32v5Ev();
extern void _ZN7S4782C22v6Ev();
extern void _ZN7S4782C22v7Ev();
static  VTBL_ENTRY vtc_S4782C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4782C2[0]),
  (VTBL_ENTRY)&_ZN7S4782C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4782C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4782C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4782C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4782C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4782C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4782C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S4782C2[];
extern  VTBL_ENTRY _ZTV7S4782C2[];
Class_Descriptor cd_S4782C2 = {  "S4782C2", // class name
  bases_S4782C2, 1,
  &(vtc_S4782C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S4782C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4782C2),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  S4782C9_nt  {
  char s4782c9f0[20];
};
//SIG(-1 S4782C9_nt) C1{ Fc[20]}



//skip512 S4782C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4782C8_nt  {
  ::S4782C9_nt s4782c8f0;
  char s4782c8f1[16];
};
//SIG(-1 S4782C8_nt) C1{ FC2{ Fc[20]} Fc[16]}



//skip512 S4782C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4782C1  : S4782C2 {
  int s4782c1f0;
  ::S8536C3_nt s4782c1f1;
  ::S4782C8_nt s4782c1f2;
  int s4782c1f3;
  virtual  ~S4782C1(); // _ZN7S4782C1D1Ev
  virtual void  v1(); // _ZN7S4782C12v1Ev
  virtual void  v2(); // _ZN7S4782C12v2Ev
  S4782C1(); // tgen
};
//SIG(1 S4782C1) C1{ BC2{ BC3{ vd v3 v4 v5 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v6 v7 Fp} vd v1 v2 Fi FC6{ m FC7{ FL[4]}} FC8{ FC9{ Fc[20]} Fc[16]} Fi}


 S4782C1 ::~S4782C1(){ note_dtor("S4782C1", this);}
void  S4782C1 ::v1(){vfunc_called(this, "_ZN7S4782C12v1Ev");}
void  S4782C1 ::v2(){vfunc_called(this, "_ZN7S4782C12v2Ev");}
S4782C1 ::S4782C1(){ note_ctor("S4782C1", this);} // tgen

static void Test_S4782C1()
{
  extern Class_Descriptor cd_S4782C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,28)];
    init_test(&cd_S4782C1, buf);
    S4782C1 *dp, &lv = *(dp=new (buf) S4782C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,108), "sizeof(S4782C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4782C1)");
    check_base_class_offset(lv, (S4782C3*)(S4782C2*), 0, "S4782C1");
    check_base_class_offset(lv, (S4782C2*), 0, "S4782C1");
    check_field_offset(lv, s4782c1f0, ABISELECT(48,32), "S4782C1.s4782c1f0");
    check_field_offset(lv, s4782c1f1, ABISELECT(56,36), "S4782C1.s4782c1f1");
    check_field_offset(lv, s4782c1f2, ABISELECT(88,68), "S4782C1.s4782c1f2");
    check_field_offset(lv, s4782c1f3, ABISELECT(124,104), "S4782C1.s4782c1f3");
    test_class_info(&lv, &cd_S4782C1);
    dp->~S4782C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4782C1(Test_S4782C1, "S4782C1", ABISELECT(128,108));

#else // __cplusplus

extern void _ZN7S4782C1C1Ev();
extern void _ZN7S4782C1D1Ev();
Name_Map name_map_S4782C1[] = {
  NSPAIR(_ZN7S4782C1C1Ev),
  NSPAIR(_ZN7S4782C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4782C3;
extern VTBL_ENTRY _ZTI7S4782C3[];
extern  VTBL_ENTRY _ZTV7S4782C3[];
extern Class_Descriptor cd_S4782C2;
extern VTBL_ENTRY _ZTI7S4782C2[];
extern  VTBL_ENTRY _ZTV7S4782C2[];
static Base_Class bases_S4782C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4782C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4782C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S4782C1[];
extern void _ZN7S4782C1D1Ev();
extern void _ZN7S4782C1D0Ev();
extern void _ZN7S4782C32v3Ev();
extern void _ZN7S4782C32v4Ev();
extern void _ZN7S4782C32v5Ev();
extern void _ZN7S4782C22v6Ev();
extern void _ZN7S4782C22v7Ev();
extern void _ZN7S4782C12v1Ev();
extern void _ZN7S4782C12v2Ev();
static  VTBL_ENTRY vtc_S4782C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4782C1[0]),
  (VTBL_ENTRY)&_ZN7S4782C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4782C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4782C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4782C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4782C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4782C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4782C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4782C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4782C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S4782C1[];
extern  VTBL_ENTRY _ZTV7S4782C1[];
Class_Descriptor cd_S4782C1 = {  "S4782C1", // class name
  bases_S4782C1, 2,
  &(vtc_S4782C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,108), // object size
  NSPAIRA(_ZTI7S4782C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4782C1),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  S19700C2  {
  int s19700c2f0;
  void *s19700c2f1;
  long double s19700c2f2;
  char s19700c2f3;
  void *s19700c2f4[4];
  long s19700c2f5;
  __tsi64 s19700c2f6[2];
  void  mf19700c2(); // _ZN8S19700C29mf19700c2Ev
};
//SIG(-1 S19700C2) C1{ m Fi Fp FD Fc Fp[4] Fl FL[2]}


void  S19700C2 ::mf19700c2(){}

static void Test_S19700C2()
{
  {
    init_simple_test("S19700C2");
    S19700C2 lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S19700C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19700C2)");
    check_field_offset(lv, s19700c2f0, 0, "S19700C2.s19700c2f0");
    check_field_offset(lv, s19700c2f1, ABISELECT(8,4), "S19700C2.s19700c2f1");
    check_field_offset(lv, s19700c2f2, ABISELECT(16,8), "S19700C2.s19700c2f2");
    check_field_offset(lv, s19700c2f3, ABISELECT(32,20), "S19700C2.s19700c2f3");
    check_field_offset(lv, s19700c2f4, ABISELECT(40,24), "S19700C2.s19700c2f4");
    check_field_offset(lv, s19700c2f5, ABISELECT(72,40), "S19700C2.s19700c2f5");
    check_field_offset(lv, s19700c2f6, ABISELECT(80,44), "S19700C2.s19700c2f6");
  }
}
static Arrange_To_Call_Me vS19700C2(Test_S19700C2, "S19700C2", ABISELECT(96,60));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S19700C2[];
VTBL_ENTRY *P__ZTI8S19700C2 = _ZTI8S19700C2; 
Class_Descriptor cd_S19700C2 = {  "S19700C2", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI8S19700C2),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  S19700C3  {
  char s19700c3f0[3];
  int s19700c3f1;
  ::S17885C12 s19700c3f2;
  ::S19700C2 s19700c3f3;
  ::S19700C2 s19700c3f4[3];
  void *s19700c3f5;
  void  mf19700c3(); // _ZN8S19700C39mf19700c3Ev
  virtual  ~S19700C3(); // _ZN8S19700C3D1Ev
  S19700C3(); // tgen
};
//SIG(1 S19700C3) C1{ vd m Fc[3] Fi FC2{ m Fp} FC3{ m Fi Fp FD Fc Fp[4] Fl FL[2]} FC3[3] Fp}


void  S19700C3 ::mf19700c3(){}
 S19700C3 ::~S19700C3(){ note_dtor("S19700C3", this);}
S19700C3 ::S19700C3(){ note_ctor("S19700C3", this);} // tgen

static void Test_S19700C3()
{
  extern Class_Descriptor cd_S19700C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(28,66)];
    init_test(&cd_S19700C3, buf);
    S19700C3 *dp, &lv = *(dp=new (buf) S19700C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,260), "sizeof(S19700C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19700C3)");
    check_field_offset(lv, s19700c3f0, ABISELECT(8,4), "S19700C3.s19700c3f0");
    check_field_offset(lv, s19700c3f1, ABISELECT(12,8), "S19700C3.s19700c3f1");
    check_field_offset(lv, s19700c3f2, ABISELECT(16,12), "S19700C3.s19700c3f2");
    check_field_offset(lv, s19700c3f3, ABISELECT(32,16), "S19700C3.s19700c3f3");
    check_field_offset(lv, s19700c3f4, ABISELECT(128,76), "S19700C3.s19700c3f4");
    check_field_offset(lv, s19700c3f5, ABISELECT(416,256), "S19700C3.s19700c3f5");
    test_class_info(&lv, &cd_S19700C3);
    dp->~S19700C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19700C3(Test_S19700C3, "S19700C3", ABISELECT(432,260));

#else // __cplusplus

extern void _ZN8S19700C3C1Ev();
extern void _ZN8S19700C3D1Ev();
Name_Map name_map_S19700C3[] = {
  NSPAIR(_ZN8S19700C3C1Ev),
  NSPAIR(_ZN8S19700C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19700C3[];
extern void _ZN8S19700C3D1Ev();
extern void _ZN8S19700C3D0Ev();
static  VTBL_ENTRY vtc_S19700C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19700C3[0]),
  (VTBL_ENTRY)&_ZN8S19700C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19700C3D0Ev,
};
extern VTBL_ENTRY _ZTI8S19700C3[];
extern  VTBL_ENTRY _ZTV8S19700C3[];
Class_Descriptor cd_S19700C3 = {  "S19700C3", // class name
  0,0,//no base classes
  &(vtc_S19700C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(432,260), // object size
  NSPAIRA(_ZTI8S19700C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19700C3),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  S19700C1  : virtual S19700C2 {
  int  :0;
  int s19700c1f1[2];
  __tsi64 s19700c1f2;
  ::S19700C3 s19700c1f3[10];
  int s19700c1f4;
  char s19700c1f5;
  short s19700c1f6;
  virtual  ~S19700C1(); // _ZN8S19700C1D2Ev
  virtual void  v1(); // _ZN8S19700C12v1Ev
  S19700C1(); // tgen
};
//SIG(1 S19700C1) C1{ VBC2{ m Fi Fp FD Fc Fp[4] Fl FL[2]} vd v1 Fi:0 Fi[2] FL FC3{ vd m Fc[3] Fi FC4{ m Fp} FC2 FC2[3] Fp}[10] Fi Fc Fs}


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

static void Test_S19700C1()
{
  extern Class_Descriptor cd_S19700C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(280,673)];
    init_test(&cd_S19700C1, buf);
    S19700C1 *dp, &lv = *(dp=new (buf) S19700C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4464,2688), "sizeof(S19700C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19700C1)");
    check_base_class_offset(lv, (S19700C2*), ABISELECT(4368,2628), "S19700C1");
    check_field_offset(lv, s19700c1f1, ABISELECT(8,4), "S19700C1.s19700c1f1");
    check_field_offset(lv, s19700c1f2, ABISELECT(16,12), "S19700C1.s19700c1f2");
    check_field_offset(lv, s19700c1f3, ABISELECT(32,20), "S19700C1.s19700c1f3");
    check_field_offset(lv, s19700c1f4, ABISELECT(4352,2620), "S19700C1.s19700c1f4");
    check_field_offset(lv, s19700c1f5, ABISELECT(4356,2624), "S19700C1.s19700c1f5");
    check_field_offset(lv, s19700c1f6, ABISELECT(4358,2626), "S19700C1.s19700c1f6");
    test_class_info(&lv, &cd_S19700C1);
    dp->~S19700C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19700C1(Test_S19700C1, "S19700C1", ABISELECT(4464,2688));

#else // __cplusplus

extern void _ZN8S19700C1C1Ev();
extern void _ZN8S19700C1D2Ev();
Name_Map name_map_S19700C1[] = {
  NSPAIR(_ZN8S19700C1C1Ev),
  NSPAIR(_ZN8S19700C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19700C2;
extern VTBL_ENTRY _ZTI8S19700C2[];
static Base_Class bases_S19700C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19700C2,    ABISELECT(4368,2628), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19700C1[];
extern void _ZN8S19700C1D1Ev();
extern void _ZN8S19700C1D0Ev();
extern void _ZN8S19700C12v1Ev();
static  VTBL_ENTRY vtc_S19700C1[] = {
  ABISELECT(4368,2628),
  0,
  (VTBL_ENTRY)&(_ZTI8S19700C1[0]),
  (VTBL_ENTRY)&_ZN8S19700C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19700C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19700C12v1Ev,
};
extern VTBL_ENTRY _ZTV8S19700C1[];
static  VTT_ENTRY vtt_S19700C1[] = {
  {&(_ZTV8S19700C1[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S19700C1[];
extern  VTBL_ENTRY _ZTV8S19700C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19700C1[];
Class_Descriptor cd_S19700C1 = {  "S19700C1", // class name
  bases_S19700C1, 1,
  &(vtc_S19700C1[0]), // expected_vtbl_contents
  &(vtt_S19700C1[0]), // expected_vtt_contents
  ABISELECT(4464,2688), // object size
  NSPAIRA(_ZTI8S19700C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19700C1),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19700C1),1, //virtual table table var
  0, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10308C2  {
  virtual  ~S10308C2(); // _ZN8S10308C2D1Ev
  virtual void  v9(); // _ZN8S10308C22v9Ev
  virtual void  v10(); // _ZN8S10308C23v10Ev
  virtual void  v11(); // _ZN8S10308C23v11Ev
  virtual void  v12(); // _ZN8S10308C23v12Ev
  virtual void  v13(); // _ZN8S10308C23v13Ev
  virtual void  v14(); // _ZN8S10308C23v14Ev
  virtual void  v15(); // _ZN8S10308C23v15Ev
  virtual void  v16(); // _ZN8S10308C23v16Ev
  virtual void  v17(); // _ZN8S10308C23v17Ev
  S10308C2(); // tgen
};
//SIG(-1 S10308C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S10308C2 ::~S10308C2(){ note_dtor("S10308C2", this);}
void  S10308C2 ::v9(){vfunc_called(this, "_ZN8S10308C22v9Ev");}
void  S10308C2 ::v10(){vfunc_called(this, "_ZN8S10308C23v10Ev");}
void  S10308C2 ::v11(){vfunc_called(this, "_ZN8S10308C23v11Ev");}
void  S10308C2 ::v12(){vfunc_called(this, "_ZN8S10308C23v12Ev");}
void  S10308C2 ::v13(){vfunc_called(this, "_ZN8S10308C23v13Ev");}
void  S10308C2 ::v14(){vfunc_called(this, "_ZN8S10308C23v14Ev");}
void  S10308C2 ::v15(){vfunc_called(this, "_ZN8S10308C23v15Ev");}
void  S10308C2 ::v16(){vfunc_called(this, "_ZN8S10308C23v16Ev");}
void  S10308C2 ::v17(){vfunc_called(this, "_ZN8S10308C23v17Ev");}
S10308C2 ::S10308C2(){ note_ctor("S10308C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S10308C2C1Ev();
extern void _ZN8S10308C2D1Ev();
Name_Map name_map_S10308C2[] = {
  NSPAIR(_ZN8S10308C2C1Ev),
  NSPAIR(_ZN8S10308C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10308C2[];
extern void _ZN8S10308C2D1Ev();
extern void _ZN8S10308C2D0Ev();
extern void _ZN8S10308C22v9Ev();
extern void _ZN8S10308C23v10Ev();
extern void _ZN8S10308C23v11Ev();
extern void _ZN8S10308C23v12Ev();
extern void _ZN8S10308C23v13Ev();
extern void _ZN8S10308C23v14Ev();
extern void _ZN8S10308C23v15Ev();
extern void _ZN8S10308C23v16Ev();
extern void _ZN8S10308C23v17Ev();
static  VTBL_ENTRY vtc_S10308C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10308C2[0]),
  (VTBL_ENTRY)&_ZN8S10308C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10308C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10308C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10308C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10308C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10308C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10308C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10308C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10308C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10308C23v16Ev,
  (VTBL_ENTRY)&_ZN8S10308C23v17Ev,
};
extern VTBL_ENTRY _ZTI8S10308C2[];
extern  VTBL_ENTRY _ZTV8S10308C2[];
Class_Descriptor cd_S10308C2 = {  "S10308C2", // class name
  0,0,//no base classes
  &(vtc_S10308C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S10308C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10308C2),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  S10308C1  : S10308C2 {
  void *s10308c1f0;
  ::S731C16_nt s10308c1f1;
  ::S731C16_nt s10308c1f2;
  void *s10308c1f3;
  int s10308c1f4[5];
  void *s10308c1f5;
  virtual  ~S10308C1(); // _ZN8S10308C1D1Ev
  virtual void  v1(); // _ZN8S10308C12v1Ev
  virtual void  v2(); // _ZN8S10308C12v2Ev
  virtual void  v3(); // _ZN8S10308C12v3Ev
  virtual void  v4(); // _ZN8S10308C12v4Ev
  virtual void  v5(); // _ZN8S10308C12v5Ev
  virtual void  v6(); // _ZN8S10308C12v6Ev
  virtual void  v7(); // _ZN8S10308C12v7Ev
  virtual void  v8(); // _ZN8S10308C12v8Ev
  S10308C1(); // tgen
};
//SIG(1 S10308C1) C1{ BC2{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17} vd v1 v2 v3 v4 v5 v6 v7 v8 Fp FC3{ m Fp Fi FC4{ m}} FC3 Fp Fi[5] Fp}


 S10308C1 ::~S10308C1(){ note_dtor("S10308C1", this);}
void  S10308C1 ::v1(){vfunc_called(this, "_ZN8S10308C12v1Ev");}
void  S10308C1 ::v2(){vfunc_called(this, "_ZN8S10308C12v2Ev");}
void  S10308C1 ::v3(){vfunc_called(this, "_ZN8S10308C12v3Ev");}
void  S10308C1 ::v4(){vfunc_called(this, "_ZN8S10308C12v4Ev");}
void  S10308C1 ::v5(){vfunc_called(this, "_ZN8S10308C12v5Ev");}
void  S10308C1 ::v6(){vfunc_called(this, "_ZN8S10308C12v6Ev");}
void  S10308C1 ::v7(){vfunc_called(this, "_ZN8S10308C12v7Ev");}
void  S10308C1 ::v8(){vfunc_called(this, "_ZN8S10308C12v8Ev");}
S10308C1 ::S10308C1(){ note_ctor("S10308C1", this);} // tgen

static void Test_S10308C1()
{
  extern Class_Descriptor cd_S10308C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S10308C1, buf);
    S10308C1 *dp, &lv = *(dp=new (buf) S10308C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S10308C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10308C1)");
    check_base_class_offset(lv, (S10308C2*), 0, "S10308C1");
    check_field_offset(lv, s10308c1f0, ABISELECT(8,4), "S10308C1.s10308c1f0");
    check_field_offset(lv, s10308c1f1, ABISELECT(16,8), "S10308C1.s10308c1f1");
    check_field_offset(lv, s10308c1f2, ABISELECT(32,20), "S10308C1.s10308c1f2");
    check_field_offset(lv, s10308c1f3, ABISELECT(48,32), "S10308C1.s10308c1f3");
    check_field_offset(lv, s10308c1f4, ABISELECT(56,36), "S10308C1.s10308c1f4");
    check_field_offset(lv, s10308c1f5, ABISELECT(80,56), "S10308C1.s10308c1f5");
    test_class_info(&lv, &cd_S10308C1);
    dp->~S10308C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10308C1(Test_S10308C1, "S10308C1", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN8S10308C1C1Ev();
extern void _ZN8S10308C1D1Ev();
Name_Map name_map_S10308C1[] = {
  NSPAIR(_ZN8S10308C1C1Ev),
  NSPAIR(_ZN8S10308C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10308C2;
extern VTBL_ENTRY _ZTI8S10308C2[];
extern  VTBL_ENTRY _ZTV8S10308C2[];
static Base_Class bases_S10308C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10308C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10308C1[];
extern void _ZN8S10308C1D1Ev();
extern void _ZN8S10308C1D0Ev();
extern void _ZN8S10308C22v9Ev();
extern void _ZN8S10308C23v10Ev();
extern void _ZN8S10308C23v11Ev();
extern void _ZN8S10308C23v12Ev();
extern void _ZN8S10308C23v13Ev();
extern void _ZN8S10308C23v14Ev();
extern void _ZN8S10308C23v15Ev();
extern void _ZN8S10308C23v16Ev();
extern void _ZN8S10308C23v17Ev();
extern void _ZN8S10308C12v1Ev();
extern void _ZN8S10308C12v2Ev();
extern void _ZN8S10308C12v3Ev();
extern void _ZN8S10308C12v4Ev();
extern void _ZN8S10308C12v5Ev();
extern void _ZN8S10308C12v6Ev();
extern void _ZN8S10308C12v7Ev();
extern void _ZN8S10308C12v8Ev();
static  VTBL_ENTRY vtc_S10308C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10308C1[0]),
  (VTBL_ENTRY)&_ZN8S10308C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10308C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10308C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10308C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10308C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10308C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10308C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10308C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10308C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10308C23v16Ev,
  (VTBL_ENTRY)&_ZN8S10308C23v17Ev,
  (VTBL_ENTRY)&_ZN8S10308C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10308C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10308C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10308C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10308C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10308C12v6Ev,
  (VTBL_ENTRY)&_ZN8S10308C12v7Ev,
  (VTBL_ENTRY)&_ZN8S10308C12v8Ev,
};
extern VTBL_ENTRY _ZTI8S10308C1[];
extern  VTBL_ENTRY _ZTV8S10308C1[];
Class_Descriptor cd_S10308C1 = {  "S10308C1", // class name
  bases_S10308C1, 1,
  &(vtc_S10308C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI8S10308C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10308C1),21, //virtual function table var
  2, // 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  S16709C3_nt  {
  __tsi64 s16709c3f0[2];
  void  mf16709c3(); // _ZN11S16709C3_nt9mf16709c3Ev
};
//SIG(-1 S16709C3_nt) C1{ m FL[2]}


void  S16709C3_nt ::mf16709c3(){}

//skip512 S16709C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16709C2_nt  {
  ::S16709C3_nt s16709c2f0;
  void  mf16709c2(); // _ZN11S16709C2_nt9mf16709c2Ev
};
//SIG(-1 S16709C2_nt) C1{ m FC2{ m FL[2]}}


void  S16709C2_nt ::mf16709c2(){}

//skip512 S16709C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16709C4_nt  {
  int s16709c4f0[3];
  char s16709c4f1;
  int s16709c4f2:4;
  int s16709c4f3:4;
  unsigned char s16709c4f4:1;
  unsigned char s16709c4f5:1;
  unsigned char s16709c4f6:1;
  unsigned char s16709c4f7:1;
  int s16709c4f8:8;
  int s16709c4f9:4;
  void *s16709c4f10;
  int s16709c4f11;
  void  mf16709c4(); // _ZN11S16709C4_nt9mf16709c4Ev
  virtual  ~S16709C4_nt(); // _ZN11S16709C4_ntD1Ev
  S16709C4_nt(); // tgen
};
//SIG(-1 S16709C4_nt) C1{ vd m Fi[3] Fc Fi:4 Fi:4 Fc:1 Fc:1 Fc:1 Fc:1 Fi:8 Fi:4 Fp Fi}


void  S16709C4_nt ::mf16709c4(){}
 S16709C4_nt ::~S16709C4_nt(){ note_dtor("S16709C4_nt", this);}
S16709C4_nt ::S16709C4_nt(){ note_ctor("S16709C4_nt", this);} // tgen

//skip512 S16709C4_nt

#else // __cplusplus

extern void _ZN11S16709C4_ntC1Ev();
extern void _ZN11S16709C4_ntD1Ev();
Name_Map name_map_S16709C4_nt[] = {
  NSPAIR(_ZN11S16709C4_ntC1Ev),
  NSPAIR(_ZN11S16709C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S16709C4_nt[];
extern void _ZN11S16709C4_ntD1Ev();
extern void _ZN11S16709C4_ntD0Ev();
static  VTBL_ENTRY vtc_S16709C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S16709C4_nt[0]),
  (VTBL_ENTRY)&_ZN11S16709C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S16709C4_ntD0Ev,
};
extern VTBL_ENTRY _ZTI11S16709C4_nt[];
VTBL_ENTRY *P__ZTI11S16709C4_nt = _ZTI11S16709C4_nt; 
extern  VTBL_ENTRY _ZTV11S16709C4_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16709C1  {
  int s16709c1f0;
  ::S16709C2_nt s16709c1f1;
  ::S16709C2_nt s16709c1f2;
  int s16709c1f3[2];
  char s16709c1f4[2];
  ::S16709C4_nt s16709c1f5;
  void  mf16709c1(); // _ZN8S16709C19mf16709c1Ev
};
//SIG(1 S16709C1) C1{ m Fi FC2{ m FC3{ m FL[2]}} FC2 Fi[2] Fc[2] FC4{ vd m Fi[3] Fc Fi:4 Fi:4 Fc:1 Fc:1 Fc:1 Fc:1 Fi:8 Fi:4 Fp Fi}}


void  S16709C1 ::mf16709c1(){}

static void Test_S16709C1()
{
  {
    init_simple_test("S16709C1");
    static S16709C1 lv;
    check2(sizeof(lv), ABISELECT(96,76), "sizeof(S16709C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16709C1)");
    check_field_offset(lv, s16709c1f0, 0, "S16709C1.s16709c1f0");
    check_field_offset(lv, s16709c1f1, ABISELECT(8,4), "S16709C1.s16709c1f1");
    check_field_offset(lv, s16709c1f2, ABISELECT(24,20), "S16709C1.s16709c1f2");
    check_field_offset(lv, s16709c1f3, ABISELECT(40,36), "S16709C1.s16709c1f3");
    check_field_offset(lv, s16709c1f4, ABISELECT(48,44), "S16709C1.s16709c1f4");
    check_field_offset(lv, s16709c1f5, ABISELECT(56,48), "S16709C1.s16709c1f5");
  }
}
static Arrange_To_Call_Me vS16709C1(Test_S16709C1, "S16709C1", ABISELECT(96,76));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1013C3  : S28C13_nt {
};
//SIG(-1 S1013C3) C1{ BC2{ m Fi}}



static void Test_S1013C3()
{
  extern Class_Descriptor cd_S1013C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1013C3, buf);
    S1013C3 &lv = *(new (buf) S1013C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1013C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1013C3)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S1013C3");
    test_class_info(&lv, &cd_S1013C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1013C3(Test_S1013C3, "S1013C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S1013C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1013C3[];
Class_Descriptor cd_S1013C3 = {  "S1013C3", // class name
  bases_S1013C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1013C3),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  S1013C2  : S1013C3 {
  void *s1013c2f0;
  int s1013c2f1;
  ::S17885C12 s1013c2f2;
  void *s1013c2f3[2];
  virtual  ~S1013C2(); // _ZN7S1013C2D1Ev
  virtual void  v6(); // _ZN7S1013C22v6Ev
  virtual void  v7(); // _ZN7S1013C22v7Ev
  virtual void  v8(); // _ZN7S1013C22v8Ev
  virtual void  v9(); // _ZN7S1013C22v9Ev
  virtual void  v10(); // _ZN7S1013C23v10Ev
  virtual void  v11(); // _ZN7S1013C23v11Ev
  virtual void  v12(); // _ZN7S1013C23v12Ev
  virtual void  v13(); // _ZN7S1013C23v13Ev
  virtual void  v14(); // _ZN7S1013C23v14Ev
  virtual void  v15(); // _ZN7S1013C23v15Ev
  virtual void  v16(); // _ZN7S1013C23v16Ev
  virtual void  v17(); // _ZN7S1013C23v17Ev
  S1013C2(); // tgen
};
//SIG(-1 S1013C2) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 Fp Fi FC4{ m Fp} Fp[2]}


 S1013C2 ::~S1013C2(){ note_dtor("S1013C2", this);}
void  S1013C2 ::v6(){vfunc_called(this, "_ZN7S1013C22v6Ev");}
void  S1013C2 ::v7(){vfunc_called(this, "_ZN7S1013C22v7Ev");}
void  S1013C2 ::v8(){vfunc_called(this, "_ZN7S1013C22v8Ev");}
void  S1013C2 ::v9(){vfunc_called(this, "_ZN7S1013C22v9Ev");}
void  S1013C2 ::v10(){vfunc_called(this, "_ZN7S1013C23v10Ev");}
void  S1013C2 ::v11(){vfunc_called(this, "_ZN7S1013C23v11Ev");}
void  S1013C2 ::v12(){vfunc_called(this, "_ZN7S1013C23v12Ev");}
void  S1013C2 ::v13(){vfunc_called(this, "_ZN7S1013C23v13Ev");}
void  S1013C2 ::v14(){vfunc_called(this, "_ZN7S1013C23v14Ev");}
void  S1013C2 ::v15(){vfunc_called(this, "_ZN7S1013C23v15Ev");}
void  S1013C2 ::v16(){vfunc_called(this, "_ZN7S1013C23v16Ev");}
void  S1013C2 ::v17(){vfunc_called(this, "_ZN7S1013C23v17Ev");}
S1013C2 ::S1013C2(){ note_ctor("S1013C2", this);} // tgen

static void Test_S1013C2()
{
  extern Class_Descriptor cd_S1013C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S1013C2, buf);
    S1013C2 *dp, &lv = *(dp=new (buf) S1013C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S1013C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1013C2)");
    check_base_class_offset(lv, (S28C13_nt*)(S1013C3*), ABISELECT(8,4), "S1013C2");
    check_base_class_offset(lv, (S1013C3*), ABISELECT(8,4), "S1013C2");
    check_field_offset(lv, s1013c2f0, ABISELECT(16,8), "S1013C2.s1013c2f0");
    check_field_offset(lv, s1013c2f1, ABISELECT(24,12), "S1013C2.s1013c2f1");
    check_field_offset(lv, s1013c2f2, ABISELECT(32,16), "S1013C2.s1013c2f2");
    check_field_offset(lv, s1013c2f3, ABISELECT(40,20), "S1013C2.s1013c2f3");
    test_class_info(&lv, &cd_S1013C2);
    dp->~S1013C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1013C2(Test_S1013C2, "S1013C2", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN7S1013C2C1Ev();
extern void _ZN7S1013C2D1Ev();
Name_Map name_map_S1013C2[] = {
  NSPAIR(_ZN7S1013C2C1Ev),
  NSPAIR(_ZN7S1013C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S1013C3;
extern VTBL_ENTRY _ZTI7S1013C3[];
static Base_Class bases_S1013C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1013C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1013C2[];
extern void _ZN7S1013C2D1Ev();
extern void _ZN7S1013C2D0Ev();
extern void _ZN7S1013C22v6Ev();
extern void _ZN7S1013C22v7Ev();
extern void _ZN7S1013C22v8Ev();
extern void _ZN7S1013C22v9Ev();
extern void _ZN7S1013C23v10Ev();
extern void _ZN7S1013C23v11Ev();
extern void _ZN7S1013C23v12Ev();
extern void _ZN7S1013C23v13Ev();
extern void _ZN7S1013C23v14Ev();
extern void _ZN7S1013C23v15Ev();
extern void _ZN7S1013C23v16Ev();
extern void _ZN7S1013C23v17Ev();
static  VTBL_ENTRY vtc_S1013C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1013C2[0]),
  (VTBL_ENTRY)&_ZN7S1013C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1013C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1013C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1013C22v7Ev,
  (VTBL_ENTRY)&_ZN7S1013C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1013C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1013C23v10Ev,
  (VTBL_ENTRY)&_ZN7S1013C23v11Ev,
  (VTBL_ENTRY)&_ZN7S1013C23v12Ev,
  (VTBL_ENTRY)&_ZN7S1013C23v13Ev,
  (VTBL_ENTRY)&_ZN7S1013C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1013C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1013C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1013C23v17Ev,
};
extern VTBL_ENTRY _ZTI7S1013C2[];
extern  VTBL_ENTRY _ZTV7S1013C2[];
Class_Descriptor cd_S1013C2 = {  "S1013C2", // class name
  bases_S1013C2, 2,
  &(vtc_S1013C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI7S1013C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1013C2),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1013C1  : S1013C2 {
  int s1013c1f0;
  virtual void  v1(); // _ZN7S1013C12v1Ev
  virtual void  v2(); // _ZN7S1013C12v2Ev
  virtual void  v3(); // _ZN7S1013C12v3Ev
  virtual void  v4(); // _ZN7S1013C12v4Ev
  virtual void  v5(); // _ZN7S1013C12v5Ev
  ~S1013C1(); // tgen
  S1013C1(); // tgen
};
//SIG(1 S1013C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 Fp Fi FC5{ m Fp} Fp[2]} v1 v2 v3 v4 v5 Fi}


void  S1013C1 ::v1(){vfunc_called(this, "_ZN7S1013C12v1Ev");}
void  S1013C1 ::v2(){vfunc_called(this, "_ZN7S1013C12v2Ev");}
void  S1013C1 ::v3(){vfunc_called(this, "_ZN7S1013C12v3Ev");}
void  S1013C1 ::v4(){vfunc_called(this, "_ZN7S1013C12v4Ev");}
void  S1013C1 ::v5(){vfunc_called(this, "_ZN7S1013C12v5Ev");}
S1013C1 ::~S1013C1(){ note_dtor("S1013C1", this);} // tgen
S1013C1 ::S1013C1(){ note_ctor("S1013C1", this);} // tgen

static void Test_S1013C1()
{
  extern Class_Descriptor cd_S1013C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S1013C1, buf);
    S1013C1 *dp, &lv = *(dp=new (buf) S1013C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S1013C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1013C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S1013C3*)(S1013C2*), ABISELECT(8,4), "S1013C1");
    check_base_class_offset(lv, (S1013C3*)(S1013C2*), ABISELECT(8,4), "S1013C1");
    check_base_class_offset(lv, (S1013C2*), 0, "S1013C1");
    check_field_offset(lv, s1013c1f0, ABISELECT(56,28), "S1013C1.s1013c1f0");
    test_class_info(&lv, &cd_S1013C1);
    dp->~S1013C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1013C1(Test_S1013C1, "S1013C1", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S1013C1C1Ev();
extern void _ZN7S1013C1D1Ev();
Name_Map name_map_S1013C1[] = {
  NSPAIR(_ZN7S1013C1C1Ev),
  NSPAIR(_ZN7S1013C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S1013C3;
extern VTBL_ENTRY _ZTI7S1013C3[];
extern Class_Descriptor cd_S1013C2;
extern VTBL_ENTRY _ZTI7S1013C2[];
extern  VTBL_ENTRY _ZTV7S1013C2[];
static Base_Class bases_S1013C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1013C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1013C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1013C1[];
extern void _ZN7S1013C1D1Ev();
extern void _ZN7S1013C1D0Ev();
extern void _ZN7S1013C22v6Ev();
extern void _ZN7S1013C22v7Ev();
extern void _ZN7S1013C22v8Ev();
extern void _ZN7S1013C22v9Ev();
extern void _ZN7S1013C23v10Ev();
extern void _ZN7S1013C23v11Ev();
extern void _ZN7S1013C23v12Ev();
extern void _ZN7S1013C23v13Ev();
extern void _ZN7S1013C23v14Ev();
extern void _ZN7S1013C23v15Ev();
extern void _ZN7S1013C23v16Ev();
extern void _ZN7S1013C23v17Ev();
extern void _ZN7S1013C12v1Ev();
extern void _ZN7S1013C12v2Ev();
extern void _ZN7S1013C12v3Ev();
extern void _ZN7S1013C12v4Ev();
extern void _ZN7S1013C12v5Ev();
static  VTBL_ENTRY vtc_S1013C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1013C1[0]),
  (VTBL_ENTRY)&_ZN7S1013C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1013C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1013C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1013C22v7Ev,
  (VTBL_ENTRY)&_ZN7S1013C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1013C22v9Ev,
  (VTBL_ENTRY)&_ZN7S1013C23v10Ev,
  (VTBL_ENTRY)&_ZN7S1013C23v11Ev,
  (VTBL_ENTRY)&_ZN7S1013C23v12Ev,
  (VTBL_ENTRY)&_ZN7S1013C23v13Ev,
  (VTBL_ENTRY)&_ZN7S1013C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1013C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1013C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1013C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1013C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1013C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1013C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1013C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1013C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S1013C1[];
extern  VTBL_ENTRY _ZTV7S1013C1[];
Class_Descriptor cd_S1013C1 = {  "S1013C1", // class name
  bases_S1013C1, 3,
  &(vtc_S1013C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S1013C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1013C1),21, //virtual function table var
  2, // 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  S16691C1  {
  int s16691c1f0;
  ::S8536C3_nt s16691c1f1;
  ::S8536C5_nt s16691c1f2;
  ::S9238C5 s16691c1f3;
  void  mf16691c1(); // _ZN8S16691C19mf16691c1Ev
};
//SIG(1 S16691C1) C1{ m Fi FC2{ m FC3{ FL[4]}} FC4{ m Fp FC5{ Fi[4]}} FC6{ m Fi[4] FC7{ m Fc FL Fc[65]} FC8{ m Fc[2] FL Fc[74] Fi[3]}}}


void  S16691C1 ::mf16691c1(){}

static void Test_S16691C1()
{
  {
    init_simple_test("S16691C1");
    S16691C1 lv;
    check2(sizeof(lv), ABISELECT(272,252), "sizeof(S16691C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16691C1)");
    check_field_offset(lv, s16691c1f0, 0, "S16691C1.s16691c1f0");
    check_field_offset(lv, s16691c1f1, ABISELECT(8,4), "S16691C1.s16691c1f1");
    check_field_offset(lv, s16691c1f2, ABISELECT(40,36), "S16691C1.s16691c1f2");
    check_field_offset(lv, s16691c1f3, ABISELECT(64,56), "S16691C1.s16691c1f3");
  }
}
static Arrange_To_Call_Me vS16691C1(Test_S16691C1, "S16691C1", ABISELECT(272,252));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9924C2  {
  virtual  ~S9924C2(); // _ZN7S9924C2D1Ev
  virtual void  v5(); // _ZN7S9924C22v5Ev
  virtual void  v6(); // _ZN7S9924C22v6Ev
  virtual void  v7(); // _ZN7S9924C22v7Ev
  virtual void  v8(); // _ZN7S9924C22v8Ev
  virtual void  v9(); // _ZN7S9924C22v9Ev
  virtual void  v10(); // _ZN7S9924C23v10Ev
  virtual void  v11(); // _ZN7S9924C23v11Ev
  virtual void  v12(); // _ZN7S9924C23v12Ev
  virtual void  v13(); // _ZN7S9924C23v13Ev
  S9924C2(); // tgen
};
//SIG(-1 S9924C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S9924C2 ::~S9924C2(){ note_dtor("S9924C2", this);}
void  S9924C2 ::v5(){vfunc_called(this, "_ZN7S9924C22v5Ev");}
void  S9924C2 ::v6(){vfunc_called(this, "_ZN7S9924C22v6Ev");}
void  S9924C2 ::v7(){vfunc_called(this, "_ZN7S9924C22v7Ev");}
void  S9924C2 ::v8(){vfunc_called(this, "_ZN7S9924C22v8Ev");}
void  S9924C2 ::v9(){vfunc_called(this, "_ZN7S9924C22v9Ev");}
void  S9924C2 ::v10(){vfunc_called(this, "_ZN7S9924C23v10Ev");}
void  S9924C2 ::v11(){vfunc_called(this, "_ZN7S9924C23v11Ev");}
void  S9924C2 ::v12(){vfunc_called(this, "_ZN7S9924C23v12Ev");}
void  S9924C2 ::v13(){vfunc_called(this, "_ZN7S9924C23v13Ev");}
S9924C2 ::S9924C2(){ note_ctor("S9924C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S9924C2C1Ev();
extern void _ZN7S9924C2D1Ev();
Name_Map name_map_S9924C2[] = {
  NSPAIR(_ZN7S9924C2C1Ev),
  NSPAIR(_ZN7S9924C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9924C2[];
extern void _ZN7S9924C2D1Ev();
extern void _ZN7S9924C2D0Ev();
extern void _ZN7S9924C22v5Ev();
extern void _ZN7S9924C22v6Ev();
extern void _ZN7S9924C22v7Ev();
extern void _ZN7S9924C22v8Ev();
extern void _ZN7S9924C22v9Ev();
extern void _ZN7S9924C23v10Ev();
extern void _ZN7S9924C23v11Ev();
extern void _ZN7S9924C23v12Ev();
extern void _ZN7S9924C23v13Ev();
static  VTBL_ENTRY vtc_S9924C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9924C2[0]),
  (VTBL_ENTRY)&_ZN7S9924C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9924C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9924C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9924C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9924C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9924C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9924C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9924C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9924C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9924C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9924C23v13Ev,
};
extern VTBL_ENTRY _ZTI7S9924C2[];
extern  VTBL_ENTRY _ZTV7S9924C2[];
Class_Descriptor cd_S9924C2 = {  "S9924C2", // class name
  0,0,//no base classes
  &(vtc_S9924C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9924C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9924C2),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  S9924C1  : S9924C2 {
  ::S731C16_nt s9924c1f0;
  ::S731C16_nt s9924c1f1;
  ::S731C16_nt s9924c1f2;
  int s9924c1f3;
  char s9924c1f4[3];
  int s9924c1f5;
  char s9924c1f6;
  void *s9924c1f7[4];
  virtual  ~S9924C1(); // _ZN7S9924C1D1Ev
  virtual void  v1(); // _ZN7S9924C12v1Ev
  virtual void  v2(); // _ZN7S9924C12v2Ev
  virtual void  v3(); // _ZN7S9924C12v3Ev
  virtual void  v4(); // _ZN7S9924C12v4Ev
  S9924C1(); // tgen
};
//SIG(1 S9924C1) C1{ BC2{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13} vd v1 v2 v3 v4 FC3{ m Fp Fi FC4{ m}} FC3 FC3 Fi Fc[3] Fi Fc Fp[4]}


 S9924C1 ::~S9924C1(){ note_dtor("S9924C1", this);}
void  S9924C1 ::v1(){vfunc_called(this, "_ZN7S9924C12v1Ev");}
void  S9924C1 ::v2(){vfunc_called(this, "_ZN7S9924C12v2Ev");}
void  S9924C1 ::v3(){vfunc_called(this, "_ZN7S9924C12v3Ev");}
void  S9924C1 ::v4(){vfunc_called(this, "_ZN7S9924C12v4Ev");}
S9924C1 ::S9924C1(){ note_ctor("S9924C1", this);} // tgen

static void Test_S9924C1()
{
  extern Class_Descriptor cd_S9924C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,19)];
    init_test(&cd_S9924C1, buf);
    S9924C1 *dp, &lv = *(dp=new (buf) S9924C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,72), "sizeof(S9924C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9924C1)");
    check_base_class_offset(lv, (S9924C2*), 0, "S9924C1");
    check_field_offset(lv, s9924c1f0, ABISELECT(8,4), "S9924C1.s9924c1f0");
    check_field_offset(lv, s9924c1f1, ABISELECT(24,16), "S9924C1.s9924c1f1");
    check_field_offset(lv, s9924c1f2, ABISELECT(40,28), "S9924C1.s9924c1f2");
    check_field_offset(lv, s9924c1f3, ABISELECT(56,40), "S9924C1.s9924c1f3");
    check_field_offset(lv, s9924c1f4, ABISELECT(60,44), "S9924C1.s9924c1f4");
    check_field_offset(lv, s9924c1f5, ABISELECT(64,48), "S9924C1.s9924c1f5");
    check_field_offset(lv, s9924c1f6, ABISELECT(68,52), "S9924C1.s9924c1f6");
    check_field_offset(lv, s9924c1f7, ABISELECT(72,56), "S9924C1.s9924c1f7");
    test_class_info(&lv, &cd_S9924C1);
    dp->~S9924C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9924C1(Test_S9924C1, "S9924C1", ABISELECT(104,72));

#else // __cplusplus

extern void _ZN7S9924C1C1Ev();
extern void _ZN7S9924C1D1Ev();
Name_Map name_map_S9924C1[] = {
  NSPAIR(_ZN7S9924C1C1Ev),
  NSPAIR(_ZN7S9924C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9924C2;
extern VTBL_ENTRY _ZTI7S9924C2[];
extern  VTBL_ENTRY _ZTV7S9924C2[];
static Base_Class bases_S9924C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9924C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9924C1[];
extern void _ZN7S9924C1D1Ev();
extern void _ZN7S9924C1D0Ev();
extern void _ZN7S9924C22v5Ev();
extern void _ZN7S9924C22v6Ev();
extern void _ZN7S9924C22v7Ev();
extern void _ZN7S9924C22v8Ev();
extern void _ZN7S9924C22v9Ev();
extern void _ZN7S9924C23v10Ev();
extern void _ZN7S9924C23v11Ev();
extern void _ZN7S9924C23v12Ev();
extern void _ZN7S9924C23v13Ev();
extern void _ZN7S9924C12v1Ev();
extern void _ZN7S9924C12v2Ev();
extern void _ZN7S9924C12v3Ev();
extern void _ZN7S9924C12v4Ev();
static  VTBL_ENTRY vtc_S9924C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9924C1[0]),
  (VTBL_ENTRY)&_ZN7S9924C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9924C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9924C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9924C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9924C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9924C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9924C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9924C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9924C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9924C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9924C23v13Ev,
  (VTBL_ENTRY)&_ZN7S9924C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9924C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9924C12v3Ev,
  (VTBL_ENTRY)&_ZN7S9924C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S9924C1[];
extern  VTBL_ENTRY _ZTV7S9924C1[];
Class_Descriptor cd_S9924C1 = {  "S9924C1", // class name
  bases_S9924C1, 1,
  &(vtc_S9924C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,72), // object size
  NSPAIRA(_ZTI7S9924C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9924C1),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4167C3_nt  {
  virtual  ~S4167C3_nt(); // _ZN10S4167C3_ntD1Ev
  virtual void  v1(); // _ZN10S4167C3_nt2v1Ev
  virtual void  v2(); // _ZN10S4167C3_nt2v2Ev
  virtual void  v3(); // _ZN10S4167C3_nt2v3Ev
  virtual void  v4(); // _ZN10S4167C3_nt2v4Ev
  virtual void  v5(); // _ZN10S4167C3_nt2v5Ev
  S4167C3_nt(); // tgen
};
//SIG(-1 S4167C3_nt) C1{ vd v1 v2 v3 v4 v5}


 S4167C3_nt ::~S4167C3_nt(){ note_dtor("S4167C3_nt", this);}
void  S4167C3_nt ::v1(){vfunc_called(this, "_ZN10S4167C3_nt2v1Ev");}
void  S4167C3_nt ::v2(){vfunc_called(this, "_ZN10S4167C3_nt2v2Ev");}
void  S4167C3_nt ::v3(){vfunc_called(this, "_ZN10S4167C3_nt2v3Ev");}
void  S4167C3_nt ::v4(){vfunc_called(this, "_ZN10S4167C3_nt2v4Ev");}
void  S4167C3_nt ::v5(){vfunc_called(this, "_ZN10S4167C3_nt2v5Ev");}
S4167C3_nt ::S4167C3_nt(){ note_ctor("S4167C3_nt", this);} // tgen

//skip512 S4167C3_nt

#else // __cplusplus

extern void _ZN10S4167C3_ntC1Ev();
extern void _ZN10S4167C3_ntD1Ev();
Name_Map name_map_S4167C3_nt[] = {
  NSPAIR(_ZN10S4167C3_ntC1Ev),
  NSPAIR(_ZN10S4167C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4167C3_nt[];
extern void _ZN10S4167C3_ntD1Ev();
extern void _ZN10S4167C3_ntD0Ev();
extern void _ZN10S4167C3_nt2v1Ev();
extern void _ZN10S4167C3_nt2v2Ev();
extern void _ZN10S4167C3_nt2v3Ev();
extern void _ZN10S4167C3_nt2v4Ev();
extern void _ZN10S4167C3_nt2v5Ev();
static  VTBL_ENTRY vtc_S4167C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4167C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S4167C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4167C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4167C3_nt2v1Ev,
  (VTBL_ENTRY)&_ZN10S4167C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4167C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4167C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4167C3_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI10S4167C3_nt[];
VTBL_ENTRY *P__ZTI10S4167C3_nt = _ZTI10S4167C3_nt; 
extern  VTBL_ENTRY _ZTV10S4167C3_nt[];
Class_Descriptor cd_S4167C3_nt = {  "S4167C3_nt", // class name
  0,0,//no base classes
  &(vtc_S4167C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S4167C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4167C3_nt),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4167C4  {
  virtual  ~S4167C4(); // _ZN7S4167C4D1Ev
  virtual void  v6(); // _ZN7S4167C42v6Ev
  S4167C4(); // tgen
};
//SIG(-1 S4167C4) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN7S4167C4C1Ev();
extern void _ZN7S4167C4D1Ev();
Name_Map name_map_S4167C4[] = {
  NSPAIR(_ZN7S4167C4C1Ev),
  NSPAIR(_ZN7S4167C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4167C4[];
extern void _ZN7S4167C4D1Ev();
extern void _ZN7S4167C4D0Ev();
extern void _ZN7S4167C42v6Ev();
static  VTBL_ENTRY vtc_S4167C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4167C4[0]),
  (VTBL_ENTRY)&_ZN7S4167C4D1Ev,
  (VTBL_ENTRY)&_ZN7S4167C4D0Ev,
  (VTBL_ENTRY)&_ZN7S4167C42v6Ev,
};
extern VTBL_ENTRY _ZTI7S4167C4[];
extern  VTBL_ENTRY _ZTV7S4167C4[];
Class_Descriptor cd_S4167C4 = {  "S4167C4", // class name
  0,0,//no base classes
  &(vtc_S4167C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S4167C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4167C4),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  S4167C5  {
  virtual  ~S4167C5(); // _ZN7S4167C5D1Ev
  virtual void  v7(); // _ZN7S4167C52v7Ev
  S4167C5(); // tgen
};
//SIG(-1 S4167C5) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN7S4167C5C1Ev();
extern void _ZN7S4167C5D1Ev();
Name_Map name_map_S4167C5[] = {
  NSPAIR(_ZN7S4167C5C1Ev),
  NSPAIR(_ZN7S4167C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4167C5[];
extern void _ZN7S4167C5D1Ev();
extern void _ZN7S4167C5D0Ev();
extern void _ZN7S4167C52v7Ev();
static  VTBL_ENTRY vtc_S4167C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4167C5[0]),
  (VTBL_ENTRY)&_ZN7S4167C5D1Ev,
  (VTBL_ENTRY)&_ZN7S4167C5D0Ev,
  (VTBL_ENTRY)&_ZN7S4167C52v7Ev,
};
extern VTBL_ENTRY _ZTI7S4167C5[];
extern  VTBL_ENTRY _ZTV7S4167C5[];
Class_Descriptor cd_S4167C5 = {  "S4167C5", // class name
  0,0,//no base classes
  &(vtc_S4167C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S4167C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4167C5),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  S4167C2  : S4167C3_nt , S4167C4 , S4167C5 {
  void *s4167c2f0[4];
  ::S17885C12 s4167c2f1;
  int s4167c2f2;
  virtual  ~S4167C2(); // _ZN7S4167C2D1Ev
  virtual void  v8(); // _ZN7S4167C22v8Ev
  virtual void  v9(); // _ZN7S4167C22v9Ev
  virtual void  v10(); // _ZN7S4167C23v10Ev
  virtual void  v11(); // _ZN7S4167C23v11Ev
  virtual void  v12(); // _ZN7S4167C23v12Ev
  virtual void  v13(); // _ZN7S4167C23v13Ev
  virtual void  v14(); // _ZN7S4167C23v14Ev
  S4167C2(); // tgen
};
//SIG(-1 S4167C2) C1{ BC2{ vd v8 v9 v10 v11 v12} BC3{ vd v13} BC4{ vd v14} vd v1 v2 v3 v4 v5 v6 v7 Fp[4] FC5{ m Fp} Fi}


 S4167C2 ::~S4167C2(){ note_dtor("S4167C2", this);}
void  S4167C2 ::v8(){vfunc_called(this, "_ZN7S4167C22v8Ev");}
void  S4167C2 ::v9(){vfunc_called(this, "_ZN7S4167C22v9Ev");}
void  S4167C2 ::v10(){vfunc_called(this, "_ZN7S4167C23v10Ev");}
void  S4167C2 ::v11(){vfunc_called(this, "_ZN7S4167C23v11Ev");}
void  S4167C2 ::v12(){vfunc_called(this, "_ZN7S4167C23v12Ev");}
void  S4167C2 ::v13(){vfunc_called(this, "_ZN7S4167C23v13Ev");}
void  S4167C2 ::v14(){vfunc_called(this, "_ZN7S4167C23v14Ev");}
S4167C2 ::S4167C2(){ note_ctor("S4167C2", this);} // tgen

static void Test_S4167C2()
{
  extern Class_Descriptor cd_S4167C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S4167C2, buf);
    S4167C2 *dp, &lv = *(dp=new (buf) S4167C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S4167C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4167C2)");
    check_base_class_offset(lv, (S4167C3_nt*), 0, "S4167C2");
    check_base_class_offset(lv, (S4167C4*), ABISELECT(8,4), "S4167C2");
    check_base_class_offset(lv, (S4167C5*), ABISELECT(16,8), "S4167C2");
    check_field_offset(lv, s4167c2f0, ABISELECT(24,12), "S4167C2.s4167c2f0");
    check_field_offset(lv, s4167c2f1, ABISELECT(56,28), "S4167C2.s4167c2f1");
    check_field_offset(lv, s4167c2f2, ABISELECT(64,32), "S4167C2.s4167c2f2");
    test_class_info(&lv, &cd_S4167C2);
    dp->~S4167C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4167C2(Test_S4167C2, "S4167C2", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN7S4167C2C1Ev();
extern void _ZN7S4167C2D1Ev();
Name_Map name_map_S4167C2[] = {
  NSPAIR(_ZN7S4167C2C1Ev),
  NSPAIR(_ZN7S4167C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4167C3_nt;
extern VTBL_ENTRY _ZTI10S4167C3_nt[];
extern  VTBL_ENTRY _ZTV10S4167C3_nt[];
extern Class_Descriptor cd_S4167C4;
extern VTBL_ENTRY _ZTI7S4167C4[];
extern  VTBL_ENTRY _ZTV7S4167C4[];
extern Class_Descriptor cd_S4167C5;
extern VTBL_ENTRY _ZTI7S4167C5[];
extern  VTBL_ENTRY _ZTV7S4167C5[];
static Base_Class bases_S4167C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4167C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4167C4,    ABISELECT(8,4), //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
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4167C5,    ABISELECT(16,8), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4167C2[];
extern void _ZN7S4167C2D1Ev();
extern void _ZN7S4167C2D0Ev();
extern void _ZN10S4167C3_nt2v1Ev();
extern void _ZN10S4167C3_nt2v2Ev();
extern void _ZN10S4167C3_nt2v3Ev();
extern void _ZN10S4167C3_nt2v4Ev();
extern void _ZN10S4167C3_nt2v5Ev();
extern void _ZN7S4167C22v8Ev();
extern void _ZN7S4167C22v9Ev();
extern void _ZN7S4167C23v10Ev();
extern void _ZN7S4167C23v11Ev();
extern void _ZN7S4167C23v12Ev();
extern void _ZN7S4167C23v13Ev();
extern void _ZN7S4167C23v14Ev();
extern void ABISELECT(_ZThn8_N7S4167C2D1Ev,_ZThn4_N7S4167C2D1Ev)();
extern void ABISELECT(_ZThn8_N7S4167C2D0Ev,_ZThn4_N7S4167C2D0Ev)();
extern void _ZN7S4167C42v6Ev();
extern void ABISELECT(_ZThn16_N7S4167C2D1Ev,_ZThn8_N7S4167C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S4167C2D0Ev,_ZThn8_N7S4167C2D0Ev)();
extern void _ZN7S4167C52v7Ev();
static  VTBL_ENTRY vtc_S4167C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4167C2[0]),
  (VTBL_ENTRY)&_ZN7S4167C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4167C2D0Ev,
  (VTBL_ENTRY)&_ZN10S4167C3_nt2v1Ev,
  (VTBL_ENTRY)&_ZN10S4167C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4167C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4167C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4167C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN7S4167C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4167C22v9Ev,
  (VTBL_ENTRY)&_ZN7S4167C23v10Ev,
  (VTBL_ENTRY)&_ZN7S4167C23v11Ev,
  (VTBL_ENTRY)&_ZN7S4167C23v12Ev,
  (VTBL_ENTRY)&_ZN7S4167C23v13Ev,
  (VTBL_ENTRY)&_ZN7S4167C23v14Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S4167C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S4167C2D1Ev,_ZThn4_N7S4167C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S4167C2D0Ev,_ZThn4_N7S4167C2D0Ev),
  (VTBL_ENTRY)&_ZN7S4167C42v6Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S4167C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S4167C2D1Ev,_ZThn8_N7S4167C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S4167C2D0Ev,_ZThn8_N7S4167C2D0Ev),
  (VTBL_ENTRY)&_ZN7S4167C52v7Ev,
};
extern VTBL_ENTRY _ZTI7S4167C2[];
extern  VTBL_ENTRY _ZTV7S4167C2[];
Class_Descriptor cd_S4167C2 = {  "S4167C2", // class name
  bases_S4167C2, 3,
  &(vtc_S4167C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI7S4167C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S4167C2),26, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4167C1  : S4167C2 {
  void *s4167c1f0[4];
  ~S4167C1(); // tgen
  S4167C1(); // tgen
};
//SIG(1 S4167C1) C1{ BC2{ BC3{ vd v1 v2 v3 v4 v5} BC4{ vd v6} BC5{ vd v7} vd v8 v9 v10 v11 v12 v13 v14 Fp[4] FC6{ m Fp} Fi} Fp[4]}


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

static void Test_S4167C1()
{
  extern Class_Descriptor cd_S4167C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[14];
    init_test(&cd_S4167C1, buf);
    S4167C1 *dp, &lv = *(dp=new (buf) S4167C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,52), "sizeof(S4167C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4167C1)");
    check_base_class_offset(lv, (S4167C3_nt*)(S4167C2*), 0, "S4167C1");
    check_base_class_offset(lv, (S4167C4*)(S4167C2*), ABISELECT(8,4), "S4167C1");
    check_base_class_offset(lv, (S4167C5*)(S4167C2*), ABISELECT(16,8), "S4167C1");
    check_base_class_offset(lv, (S4167C2*), 0, "S4167C1");
    check_field_offset(lv, s4167c1f0, ABISELECT(72,36), "S4167C1.s4167c1f0");
    test_class_info(&lv, &cd_S4167C1);
    dp->~S4167C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4167C1(Test_S4167C1, "S4167C1", ABISELECT(104,52));

#else // __cplusplus

extern void _ZN7S4167C1C1Ev();
extern void _ZN7S4167C1D1Ev();
Name_Map name_map_S4167C1[] = {
  NSPAIR(_ZN7S4167C1C1Ev),
  NSPAIR(_ZN7S4167C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4167C3_nt;
extern VTBL_ENTRY _ZTI10S4167C3_nt[];
extern  VTBL_ENTRY _ZTV10S4167C3_nt[];
extern Class_Descriptor cd_S4167C4;
extern VTBL_ENTRY _ZTI7S4167C4[];
extern  VTBL_ENTRY _ZTV7S4167C4[];
extern Class_Descriptor cd_S4167C5;
extern VTBL_ENTRY _ZTI7S4167C5[];
extern  VTBL_ENTRY _ZTV7S4167C5[];
extern Class_Descriptor cd_S4167C2;
extern VTBL_ENTRY _ZTI7S4167C2[];
extern  VTBL_ENTRY _ZTV7S4167C2[];
static Base_Class bases_S4167C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4167C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4167C4,    ABISELECT(8,4), //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
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4167C5,    ABISELECT(16,8), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4167C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S4167C1[];
extern void _ZN7S4167C1D1Ev();
extern void _ZN7S4167C1D0Ev();
extern void _ZN10S4167C3_nt2v1Ev();
extern void _ZN10S4167C3_nt2v2Ev();
extern void _ZN10S4167C3_nt2v3Ev();
extern void _ZN10S4167C3_nt2v4Ev();
extern void _ZN10S4167C3_nt2v5Ev();
extern void _ZN7S4167C22v8Ev();
extern void _ZN7S4167C22v9Ev();
extern void _ZN7S4167C23v10Ev();
extern void _ZN7S4167C23v11Ev();
extern void _ZN7S4167C23v12Ev();
extern void _ZN7S4167C23v13Ev();
extern void _ZN7S4167C23v14Ev();
extern void ABISELECT(_ZThn8_N7S4167C1D1Ev,_ZThn4_N7S4167C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S4167C1D0Ev,_ZThn4_N7S4167C1D0Ev)();
extern void _ZN7S4167C42v6Ev();
extern void ABISELECT(_ZThn16_N7S4167C1D1Ev,_ZThn8_N7S4167C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S4167C1D0Ev,_ZThn8_N7S4167C1D0Ev)();
extern void _ZN7S4167C52v7Ev();
static  VTBL_ENTRY vtc_S4167C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4167C1[0]),
  (VTBL_ENTRY)&_ZN7S4167C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4167C1D0Ev,
  (VTBL_ENTRY)&_ZN10S4167C3_nt2v1Ev,
  (VTBL_ENTRY)&_ZN10S4167C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4167C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4167C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4167C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN7S4167C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4167C22v9Ev,
  (VTBL_ENTRY)&_ZN7S4167C23v10Ev,
  (VTBL_ENTRY)&_ZN7S4167C23v11Ev,
  (VTBL_ENTRY)&_ZN7S4167C23v12Ev,
  (VTBL_ENTRY)&_ZN7S4167C23v13Ev,
  (VTBL_ENTRY)&_ZN7S4167C23v14Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S4167C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S4167C1D1Ev,_ZThn4_N7S4167C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S4167C1D0Ev,_ZThn4_N7S4167C1D0Ev),
  (VTBL_ENTRY)&_ZN7S4167C42v6Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S4167C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S4167C1D1Ev,_ZThn8_N7S4167C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S4167C1D0Ev,_ZThn8_N7S4167C1D0Ev),
  (VTBL_ENTRY)&_ZN7S4167C52v7Ev,
};
extern VTBL_ENTRY _ZTI7S4167C1[];
extern  VTBL_ENTRY _ZTV7S4167C1[];
Class_Descriptor cd_S4167C1 = {  "S4167C1", // class name
  bases_S4167C1, 4,
  &(vtc_S4167C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,52), // object size
  NSPAIRA(_ZTI7S4167C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4167C1),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  S16779C1  {
  int s16779c1f0;
  ::S3029C15_nt s16779c1f1;
  ::S8536C5_nt s16779c1f2;
  ::S9238C5 s16779c1f3;
  void  mf16779c1(); // _ZN8S16779C19mf16779c1Ev
};
//SIG(1 S16779C1) C1{ m Fi FC2{ m FL[4]} FC3{ m Fp FC4{ Fi[4]}} FC5{ m Fi[4] FC6{ m Fc FL Fc[65]} FC7{ m Fc[2] FL Fc[74] Fi[3]}}}


void  S16779C1 ::mf16779c1(){}

static void Test_S16779C1()
{
  {
    init_simple_test("S16779C1");
    S16779C1 lv;
    check2(sizeof(lv), ABISELECT(272,252), "sizeof(S16779C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16779C1)");
    check_field_offset(lv, s16779c1f0, 0, "S16779C1.s16779c1f0");
    check_field_offset(lv, s16779c1f1, ABISELECT(8,4), "S16779C1.s16779c1f1");
    check_field_offset(lv, s16779c1f2, ABISELECT(40,36), "S16779C1.s16779c1f2");
    check_field_offset(lv, s16779c1f3, ABISELECT(64,56), "S16779C1.s16779c1f3");
  }
}
static Arrange_To_Call_Me vS16779C1(Test_S16779C1, "S16779C1", ABISELECT(272,252));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20453C4  : S343C6_nt {
  virtual  ~S20453C4(); // _ZN8S20453C4D1Ev
  S20453C4(); // tgen
};
//SIG(-1 S20453C4) C1{ BC2{ vd m} vd}


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

static void Test_S20453C4()
{
  extern Class_Descriptor cd_S20453C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20453C4, buf);
    S20453C4 *dp, &lv = *(dp=new (buf) S20453C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20453C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20453C4)");
    check_base_class_offset(lv, (S343C6_nt*), 0, "S20453C4");
    test_class_info(&lv, &cd_S20453C4);
    dp->~S20453C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20453C4(Test_S20453C4, "S20453C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20453C4C1Ev();
extern void _ZN8S20453C4D1Ev();
Name_Map name_map_S20453C4[] = {
  NSPAIR(_ZN8S20453C4C1Ev),
  NSPAIR(_ZN8S20453C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
static Base_Class bases_S20453C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20453C4[];
extern void _ZN8S20453C4D1Ev();
extern void _ZN8S20453C4D0Ev();
static  VTBL_ENTRY vtc_S20453C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20453C4[0]),
  (VTBL_ENTRY)&_ZN8S20453C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20453C4D0Ev,
};
extern VTBL_ENTRY _ZTI8S20453C4[];
extern  VTBL_ENTRY _ZTV8S20453C4[];
Class_Descriptor cd_S20453C4 = {  "S20453C4", // class name
  bases_S20453C4, 1,
  &(vtc_S20453C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20453C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20453C4),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  S20453C3  : S20453C4 {
  virtual  ~S20453C3(); // _ZN8S20453C3D1Ev
  S20453C3(); // tgen
};
//SIG(-1 S20453C3) C1{ BC2{ BC3{ vd m} vd} vd}


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

static void Test_S20453C3()
{
  extern Class_Descriptor cd_S20453C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20453C3, buf);
    S20453C3 *dp, &lv = *(dp=new (buf) S20453C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20453C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20453C3)");
    check_base_class_offset(lv, (S343C6_nt*)(S20453C4*), 0, "S20453C3");
    check_base_class_offset(lv, (S20453C4*), 0, "S20453C3");
    test_class_info(&lv, &cd_S20453C3);
    dp->~S20453C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20453C3(Test_S20453C3, "S20453C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20453C3C1Ev();
extern void _ZN8S20453C3D1Ev();
Name_Map name_map_S20453C3[] = {
  NSPAIR(_ZN8S20453C3C1Ev),
  NSPAIR(_ZN8S20453C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20453C4;
extern VTBL_ENTRY _ZTI8S20453C4[];
extern  VTBL_ENTRY _ZTV8S20453C4[];
static Base_Class bases_S20453C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20453C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S20453C3[];
extern void _ZN8S20453C3D1Ev();
extern void _ZN8S20453C3D0Ev();
static  VTBL_ENTRY vtc_S20453C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20453C3[0]),
  (VTBL_ENTRY)&_ZN8S20453C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20453C3D0Ev,
};
extern VTBL_ENTRY _ZTI8S20453C3[];
extern  VTBL_ENTRY _ZTV8S20453C3[];
Class_Descriptor cd_S20453C3 = {  "S20453C3", // class name
  bases_S20453C3, 2,
  &(vtc_S20453C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20453C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20453C3),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20453C2_nt  : virtual S20453C3 , virtual S3461C5_nt {
  ~S20453C2_nt(); // tgen
  S20453C2_nt(); // tgen
};
//SIG(-1 S20453C2_nt) C1{ VBC2{ BC3{ BC4{ vd m} vd} vd} VBC5{ m FL}}


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

//skip512 S20453C2_nt

#else // __cplusplus

extern void _ZN11S20453C2_ntC1Ev();
extern void _ZN11S20453C2_ntD1Ev();
Name_Map name_map_S20453C2_nt[] = {
  NSPAIR(_ZN11S20453C2_ntC1Ev),
  NSPAIR(_ZN11S20453C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20453C4;
extern VTBL_ENTRY _ZTI8S20453C4[];
extern  VTBL_ENTRY _ZTV8S20453C4[];
extern Class_Descriptor cd_S20453C3;
extern VTBL_ENTRY _ZTI8S20453C3[];
extern  VTBL_ENTRY _ZTV8S20453C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
static Base_Class bases_S20453C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20453C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20453C3,    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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI11S20453C2_nt[];
extern void _ZN11S20453C2_ntD1Ev();
extern void _ZN11S20453C2_ntD0Ev();
static  VTBL_ENTRY vtc_S20453C2_nt[] = {
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S20453C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S20453C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20453C2_ntD0Ev,
};
extern VTBL_ENTRY _ZTV11S20453C2_nt[];
static  VTT_ENTRY vtt_S20453C2_nt[] = {
  {&(_ZTV11S20453C2_nt[5]),  5,7},
  {&(_ZTV11S20453C2_nt[5]),  5,7},
};
extern VTBL_ENTRY _ZTI11S20453C2_nt[];
VTBL_ENTRY *P__ZTI11S20453C2_nt = _ZTI11S20453C2_nt; 
extern  VTBL_ENTRY _ZTV11S20453C2_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20453C2_nt[];
Class_Descriptor cd_S20453C2_nt = {  "S20453C2_nt", // class name
  bases_S20453C2_nt, 4,
  &(vtc_S20453C2_nt[0]), // expected_vtbl_contents
  &(vtt_S20453C2_nt[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI11S20453C2_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV11S20453C2_nt),7, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S20453C2_nt),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20453C8  : S20453C4 {
  ::S20453C4 s20453c8f0;
  virtual  ~S20453C8(); // _ZN8S20453C8D1Ev
  S20453C8(); // tgen
};
//SIG(-1 S20453C8) C1{ BC2{ BC3{ vd m} vd} vd FC2}


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

static void Test_S20453C8()
{
  extern Class_Descriptor cd_S20453C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20453C8, buf);
    S20453C8 *dp, &lv = *(dp=new (buf) S20453C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20453C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20453C8)");
    check_base_class_offset(lv, (S343C6_nt*)(S20453C4*), 0, "S20453C8");
    check_base_class_offset(lv, (S20453C4*), 0, "S20453C8");
    check_field_offset(lv, s20453c8f0, ABISELECT(8,4), "S20453C8.s20453c8f0");
    test_class_info(&lv, &cd_S20453C8);
    dp->~S20453C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20453C8(Test_S20453C8, "S20453C8", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20453C8C1Ev();
extern void _ZN8S20453C8D1Ev();
Name_Map name_map_S20453C8[] = {
  NSPAIR(_ZN8S20453C8C1Ev),
  NSPAIR(_ZN8S20453C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20453C4;
extern VTBL_ENTRY _ZTI8S20453C4[];
extern  VTBL_ENTRY _ZTV8S20453C4[];
static Base_Class bases_S20453C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20453C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S20453C8[];
extern void _ZN8S20453C8D1Ev();
extern void _ZN8S20453C8D0Ev();
static  VTBL_ENTRY vtc_S20453C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20453C8[0]),
  (VTBL_ENTRY)&_ZN8S20453C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20453C8D0Ev,
};
extern VTBL_ENTRY _ZTI8S20453C8[];
extern  VTBL_ENTRY _ZTV8S20453C8[];
Class_Descriptor cd_S20453C8 = {  "S20453C8", // class name
  bases_S20453C8, 2,
  &(vtc_S20453C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20453C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20453C8),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  S20453C9  : S20453C4 , S343C6_nt , S731C17_nt , virtual S3461C5_nt {
  virtual  ~S20453C9(); // _ZN8S20453C9D2Ev
  S20453C9(); // tgen
};
//SIG(-1 S20453C9) C1{ BC2{ BC3{ vd m} vd} BC3 BC4{ m} VBC5{ m FL} vd}


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

static void Test_S20453C9()
{
  extern Class_Descriptor cd_S20453C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20453C9, buf);
    S20453C9 *dp, &lv = *(dp=new (buf) S20453C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20453C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20453C9)");
    check_base_class_offset(lv, (S343C6_nt*)(S20453C4*), 0, "S20453C9");
    check_base_class_offset(lv, (S20453C4*), 0, "S20453C9");
    /*is_ambiguous_... S20453C9::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*), ABISELECT(8,4), "S20453C9");
    check_base_class_offset(lv, (S731C17_nt*), 0, "S20453C9");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(16,8), "S20453C9");
    test_class_info(&lv, &cd_S20453C9);
    dp->~S20453C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20453C9(Test_S20453C9, "S20453C9", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S20453C9C1Ev();
extern void _ZN8S20453C9D2Ev();
Name_Map name_map_S20453C9[] = {
  NSPAIR(_ZN8S20453C9C1Ev),
  NSPAIR(_ZN8S20453C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20453C4;
extern VTBL_ENTRY _ZTI8S20453C4[];
extern  VTBL_ENTRY _ZTV8S20453C4[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
static Base_Class bases_S20453C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20453C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S343C6_nt,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3461C5_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20453C9[];
extern void _ZN8S20453C9D1Ev();
extern void _ZN8S20453C9D0Ev();
extern void ABISELECT(_ZThn8_N8S20453C9D1Ev,_ZThn4_N8S20453C9D1Ev)();
extern void ABISELECT(_ZThn8_N8S20453C9D0Ev,_ZThn4_N8S20453C9D0Ev)();
static  VTBL_ENTRY vtc_S20453C9[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20453C9[0]),
  (VTBL_ENTRY)&_ZN8S20453C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20453C9D0Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20453C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S20453C9D1Ev,_ZThn4_N8S20453C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S20453C9D0Ev,_ZThn4_N8S20453C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S20453C9[];
static  VTT_ENTRY vtt_S20453C9[] = {
  {&(_ZTV8S20453C9[3]),  3,9},
};
extern VTBL_ENTRY _ZTI8S20453C9[];
extern  VTBL_ENTRY _ZTV8S20453C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20453C9[];
Class_Descriptor cd_S20453C9 = {  "S20453C9", // class name
  bases_S20453C9, 5,
  &(vtc_S20453C9[0]), // expected_vtbl_contents
  &(vtt_S20453C9[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S20453C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20453C9),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20453C9),1, //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  S20453C7  : S20453C8 , virtual S20453C9 {
  int s20453c7f0;
  ~S20453C7(); // tgen
  S20453C7(); // tgen
};
//SIG(-1 S20453C7) C1{ BC2{ BC3{ BC4{ vd m} vd} vd FC3} VBC5{ BC3 BC4 BC6{ m} VBC7{ m FL} vd} Fi}


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

static void Test_S20453C7()
{
  extern Class_Descriptor cd_S20453C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S20453C7, buf);
    S20453C7 *dp, &lv = *(dp=new (buf) S20453C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S20453C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20453C7)");
    check_base_class_offset(lv, (S343C6_nt*)(S20453C4*)(S20453C8*), 0, "S20453C7");
    check_base_class_offset(lv, (S20453C4*)(S20453C8*), 0, "S20453C7");
    check_base_class_offset(lv, (S20453C8*), 0, "S20453C7");
    check_base_class_offset(lv, (S343C6_nt*)(S20453C4*)(S20453C9*), ABISELECT(24,12), "S20453C7");
    check_base_class_offset(lv, (S20453C4*)(S20453C9*), ABISELECT(24,12), "S20453C7");
    /*is_ambiguous_... S20453C9::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S20453C9*), ABISELECT(32,16), "S20453C7");
    check_base_class_offset(lv, (S731C17_nt*)(S20453C9*), ABISELECT(24,12), "S20453C7");
    check_base_class_offset(lv, (S3461C5_nt*)(S20453C9*), ABISELECT(40,20), "S20453C7");
    check_base_class_offset(lv, (S20453C9*), ABISELECT(24,12), "S20453C7");
    check_field_offset(lv, s20453c7f0, ABISELECT(16,8), "S20453C7.s20453c7f0");
    test_class_info(&lv, &cd_S20453C7);
    dp->~S20453C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20453C7(Test_S20453C7, "S20453C7", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S20453C7C1Ev();
extern void _ZN8S20453C7D1Ev();
Name_Map name_map_S20453C7[] = {
  NSPAIR(_ZN8S20453C7C1Ev),
  NSPAIR(_ZN8S20453C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20453C4;
extern VTBL_ENTRY _ZTI8S20453C4[];
extern  VTBL_ENTRY _ZTV8S20453C4[];
extern Class_Descriptor cd_S20453C8;
extern VTBL_ENTRY _ZTI8S20453C8[];
extern  VTBL_ENTRY _ZTV8S20453C8[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20453C4;
extern VTBL_ENTRY _ZTI8S20453C4[];
extern  VTBL_ENTRY _ZTV8S20453C4[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S20453C9;
extern VTBL_ENTRY _ZTI8S20453C9[];
extern  VTBL_ENTRY _ZTV8S20453C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20453C9[];
static Base_Class bases_S20453C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S20453C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20453C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S343C6_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_S20453C4,    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
    8, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(32,16), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S731C17_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
    8, //immediately_derived
  0, 0},
  {&cd_S3461C5_nt,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20453C9,    ABISELECT(24,12), //bcp->offset
    6, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20453C7[];
extern void _ZN8S20453C7D1Ev();
extern void _ZN8S20453C7D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S20453C7D1Ev,_ZTv0_n16_N8S20453C7D1Ev)();
extern void ABISELECT(_ZThn24_N8S20453C7D1Ev,_ZThn12_N8S20453C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20453C7D0Ev,_ZTv0_n16_N8S20453C7D0Ev)();
extern void ABISELECT(_ZThn24_N8S20453C7D0Ev,_ZThn12_N8S20453C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n32_N8S20453C7D1Ev,_ZTvn4_n16_N8S20453C7D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N8S20453C7D0Ev,_ZTvn4_n16_N8S20453C7D0Ev)();
static  VTBL_ENTRY vtc_S20453C7[] = {
  ABISELECT(40,20),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20453C7[0]),
  (VTBL_ENTRY)&_ZN8S20453C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20453C7D0Ev,
  ABISELECT(-24,-12),
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20453C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20453C7D1Ev,_ZTv0_n16_N8S20453C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20453C7D0Ev,_ZTv0_n16_N8S20453C7D0Ev),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20453C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20453C7D1Ev,_ZTvn4_n16_N8S20453C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20453C7D0Ev,_ZTvn4_n16_N8S20453C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S20453C7[];
extern void _ZN8S20453C9D1Ev();
extern void _ZN8S20453C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20453C9__8S20453C7[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20453C9[0]),
  (VTBL_ENTRY)&_ZN8S20453C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20453C9D0Ev,
};
static  VTT_ENTRY vtt_S20453C7[] = {
  {&(_ZTV8S20453C7[4]),  4,16},
  {&(_ZTV8S20453C7[10]),  10,16},
  {&(_ZTV8S20453C7[14]),  14,16},
  {&(_tg__ZTV8S20453C9__8S20453C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20453C7[];
extern  VTBL_ENTRY _ZTV8S20453C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20453C7[];
static VTBL_ENTRY alt_thunk_names112[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20453C7D0Ev,_ZTv0_n16_N8S20453C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20453C7D0Ev,_ZThn12_N8S20453C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20453C7D1Ev,_ZTv0_n16_N8S20453C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20453C7D1Ev,_ZThn12_N8S20453C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20453C7 = {  "S20453C7", // class name
  bases_S20453C7, 9,
  &(vtc_S20453C7[0]), // expected_vtbl_contents
  &(vtt_S20453C7[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S20453C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20453C7),16, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20453C7),4, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names112,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20453C1  : virtual S20453C2_nt , virtual S20453C7 {
  int  :0;
  ~S20453C1(); // tgen
  S20453C1(); // tgen
};
//SIG(1 S20453C1) C1{ VBC2{ VBC3{ BC4{ BC5{ vd m} vd} vd} VBC6{ m FL}} VBC7{ BC8{ BC4 vd FC4} VBC9{ BC4 BC5 BC10{ m} VBC6 vd} Fi} Fi:0}


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

static void Test_S20453C1()
{
  extern Class_Descriptor cd_S20453C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S20453C1, buf);
    S20453C1 *dp, &lv = *(dp=new (buf) S20453C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S20453C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20453C1)");
    check_base_class_offset(lv, (S343C6_nt*)(S20453C4*)(S20453C3*), 0, "S20453C1");
    check_base_class_offset(lv, (S20453C4*)(S20453C3*), 0, "S20453C1");
    check_base_class_offset(lv, (S20453C3*)(S20453C2_nt*), 0, "S20453C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S20453C2_nt*), ABISELECT(8,4), "S20453C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S20453C9*), ABISELECT(8,4), "S20453C1");
    check_base_class_offset(lv, (S20453C2_nt*), 0, "S20453C1");
    check_base_class_offset(lv, (S343C6_nt*)(S20453C4*)(S20453C8*)(S20453C7*), ABISELECT(16,12), "S20453C1");
    check_base_class_offset(lv, (S20453C4*)(S20453C8*)(S20453C7*), ABISELECT(16,12), "S20453C1");
    check_base_class_offset(lv, (S20453C8*)(S20453C7*), ABISELECT(16,12), "S20453C1");
    check_base_class_offset(lv, (S343C6_nt*)(S20453C4*)(S20453C9*), ABISELECT(40,24), "S20453C1");
    check_base_class_offset(lv, (S20453C4*)(S20453C9*), ABISELECT(40,24), "S20453C1");
    /*is_ambiguous_... S20453C9::S343C6_nt */ AMB_check_base_class_offset(lv, (S343C6_nt*)(S20453C9*), ABISELECT(48,28), "S20453C1");
    check_base_class_offset(lv, (S731C17_nt*)(S20453C9*), ABISELECT(40,24), "S20453C1");
    check_base_class_offset(lv, (S20453C9*)(S20453C7*), ABISELECT(40,24), "S20453C1");
    check_base_class_offset(lv, (S20453C7*), ABISELECT(16,12), "S20453C1");
    test_class_info(&lv, &cd_S20453C1);
    dp->~S20453C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20453C1(Test_S20453C1, "S20453C1", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S20453C1C1Ev();
extern void _ZN8S20453C1D1Ev();
Name_Map name_map_S20453C1[] = {
  NSPAIR(_ZN8S20453C1C1Ev),
  NSPAIR(_ZN8S20453C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20453C4;
extern VTBL_ENTRY _ZTI8S20453C4[];
extern  VTBL_ENTRY _ZTV8S20453C4[];
extern Class_Descriptor cd_S20453C3;
extern VTBL_ENTRY _ZTI8S20453C3[];
extern  VTBL_ENTRY _ZTV8S20453C3[];
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S20453C2_nt;
extern VTBL_ENTRY _ZTI11S20453C2_nt[];
extern  VTBL_ENTRY _ZTV11S20453C2_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20453C2_nt[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20453C4;
extern VTBL_ENTRY _ZTI8S20453C4[];
extern  VTBL_ENTRY _ZTV8S20453C4[];
extern Class_Descriptor cd_S20453C8;
extern VTBL_ENTRY _ZTI8S20453C8[];
extern  VTBL_ENTRY _ZTV8S20453C8[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S20453C4;
extern VTBL_ENTRY _ZTI8S20453C4[];
extern  VTBL_ENTRY _ZTV8S20453C4[];
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S20453C9;
extern VTBL_ENTRY _ZTI8S20453C9[];
extern  VTBL_ENTRY _ZTV8S20453C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20453C9[];
extern Class_Descriptor cd_S20453C7;
extern VTBL_ENTRY _ZTI8S20453C7[];
extern  VTBL_ENTRY _ZTV8S20453C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20453C7[];
static Base_Class bases_S20453C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20453C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20453C3,    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
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20453C2_nt,    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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S343C6_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
    9, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20453C4,    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
    10, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20453C8,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S343C6_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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20453C4,    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
    6, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S343C6_nt,    ABISELECT(48,28), //bcp->offset
    23, //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
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S731C17_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_S20453C9,    ABISELECT(40,24), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20453C7,    ABISELECT(16,12), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20453C1[];
extern void _ZN8S20453C1D1Ev();
extern void _ZN8S20453C1D0Ev();
extern void ABISELECT(_ZTv0_n40_N8S20453C1D1Ev,_ZTv0_n20_N8S20453C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20453C1D1Ev,_ZThn12_N8S20453C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20453C1D0Ev,_ZTv0_n20_N8S20453C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S20453C1D0Ev,_ZThn12_N8S20453C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20453C1D1Ev,_ZTv0_n16_N8S20453C1D1Ev)();
extern void ABISELECT(_ZThn40_N8S20453C1D1Ev,_ZThn24_N8S20453C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20453C1D0Ev,_ZTv0_n16_N8S20453C1D0Ev)();
extern void ABISELECT(_ZThn40_N8S20453C1D0Ev,_ZThn24_N8S20453C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn8_n32_N8S20453C1D1Ev,_ZTvn4_n16_N8S20453C1D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N8S20453C1D0Ev,_ZTvn4_n16_N8S20453C1D0Ev)();
static  VTBL_ENTRY vtc_S20453C1[] = {
  ABISELECT(40,24),
  ABISELECT(16,12),
  0,
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20453C1[0]),
  (VTBL_ENTRY)&_ZN8S20453C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20453C1D0Ev,
  ABISELECT(-16,-12),
  -8,
  ABISELECT(24,12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20453C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20453C1D1Ev,_ZTv0_n20_N8S20453C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20453C1D0Ev,_ZTv0_n20_N8S20453C1D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(-32,-20),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20453C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20453C1D1Ev,_ZTv0_n16_N8S20453C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20453C1D0Ev,_ZTv0_n16_N8S20453C1D0Ev),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20453C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20453C1D1Ev,_ZTvn4_n16_N8S20453C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20453C1D0Ev,_ZTvn4_n16_N8S20453C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20453C1[];
extern void ABISELECT(_ZTv0_n24_N11S20453C2_ntD1Ev,_ZTv0_n12_N11S20453C2_ntD1Ev)();
extern void _ZN11S20453C2_ntD1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N11S20453C2_ntD0Ev,_ZTv0_n12_N11S20453C2_ntD0Ev)();
extern void _ZN11S20453C2_ntD0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20453C2_nt__8S20453C1[] = {
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S20453C2_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N11S20453C2_ntD1Ev,_ZTv0_n12_N11S20453C2_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N11S20453C2_ntD0Ev,_ZTv0_n12_N11S20453C2_ntD0Ev),
};
extern void _ZN8S20453C7D1Ev();
extern void _ZN8S20453C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20453C7__8S20453C1[] = {
  -8,
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20453C7[0]),
  (VTBL_ENTRY)&_ZN8S20453C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20453C7D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20453C7D1Ev,_ZTv0_n16_N8S20453C7D1Ev)();
extern void ABISELECT(_ZThn24_N8S20453C7D1Ev,_ZThn12_N8S20453C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20453C7D0Ev,_ZTv0_n16_N8S20453C7D0Ev)();
extern void ABISELECT(_ZThn24_N8S20453C7D0Ev,_ZThn12_N8S20453C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20453C9__8S20453C7__8S20453C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-32,-20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20453C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20453C7D1Ev,_ZTv0_n16_N8S20453C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20453C7D0Ev,_ZTv0_n16_N8S20453C7D0Ev),
};
extern void ABISELECT(_ZTvn8_n32_N8S20453C7D1Ev,_ZTvn4_n16_N8S20453C7D1Ev)();
extern void ABISELECT(_ZTvn8_n32_N8S20453C7D0Ev,_ZTvn4_n16_N8S20453C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S343C6_nt8S20453C9__A2__8S20453C7__8S20453C1[] = {
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20453C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20453C7D1Ev,_ZTvn4_n16_N8S20453C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n32_N8S20453C7D0Ev,_ZTvn4_n16_N8S20453C7D0Ev),
};
extern void _ZN8S20453C9D1Ev();
extern void _ZN8S20453C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20453C9__8S20453C1[] = {
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20453C9[0]),
  (VTBL_ENTRY)&_ZN8S20453C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20453C9D0Ev,
};
static  VTT_ENTRY vtt_S20453C1[] = {
  {&(_ZTV8S20453C1[8]),  8,27},
  {&(_ZTV8S20453C1[8]),  8,27},
  {&(_ZTV8S20453C1[8]),  8,27},
  {&(_ZTV8S20453C1[15]),  15,27},
  {&(_ZTV8S20453C1[21]),  21,27},
  {&(_ZTV8S20453C1[25]),  25,27},
  {&(_tg__ZTV11S20453C2_nt__8S20453C1[5]),  5,7},
  {&(_tg__ZTV11S20453C2_nt__8S20453C1[5]),  5,7},
  {&(_tg__ZTV8S20453C7__8S20453C1[4]),  4,6},
  {&(_tg__ZTV8S20453C9__8S20453C7__8S20453C1[4]),  4,6},
  {&(_tg__ZTV9S343C6_nt8S20453C9__A2__8S20453C7__8S20453C1[2]),  2,4},
  {&(_tg__ZTV8S20453C9__8S20453C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20453C1[];
extern  VTBL_ENTRY _ZTV8S20453C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20453C1[];
static VTBL_ENTRY alt_thunk_names113[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20453C7D0Ev,_ZTv0_n16_N8S20453C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20453C7D0Ev,_ZThn12_N8S20453C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20453C7D1Ev,_ZTv0_n16_N8S20453C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20453C7D1Ev,_ZThn12_N8S20453C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N11S20453C2_ntD0Ev,_ZTv0_n12_N11S20453C2_ntD0Ev), // 
  (VTBL_ENTRY)_ZN11S20453C2_ntD0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N11S20453C2_ntD1Ev,_ZTv0_n12_N11S20453C2_ntD1Ev), // 
  (VTBL_ENTRY)_ZN11S20453C2_ntD1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20453C1D0Ev,_ZTv0_n16_N8S20453C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20453C1D0Ev,_ZThn24_N8S20453C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20453C1D1Ev,_ZTv0_n16_N8S20453C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20453C1D1Ev,_ZThn24_N8S20453C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20453C1D0Ev,_ZTv0_n20_N8S20453C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20453C1D0Ev,_ZThn12_N8S20453C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20453C1D1Ev,_ZTv0_n20_N8S20453C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20453C1D1Ev,_ZThn12_N8S20453C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20453C1 = {  "S20453C1", // class name
  bases_S20453C1, 14,
  &(vtc_S20453C1[0]), // expected_vtbl_contents
  &(vtt_S20453C1[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S20453C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20453C1),27, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20453C1),12, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names113,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2576C2_nt  : S28C13_nt {
  void *s2576c2f0;
  int s2576c2f1;
  ::S3461C5_nt s2576c2f2;
  int s2576c2f3[2];
  virtual  ~S2576C2_nt(); // _ZN10S2576C2_ntD1Ev
  virtual void  v2(); // _ZN10S2576C2_nt2v2Ev
  virtual void  v3(); // _ZN10S2576C2_nt2v3Ev
  S2576C2_nt(); // tgen
};
//SIG(-1 S2576C2_nt) C1{ BC2{ m Fi} vd v1 v2 Fp Fi FC3{ m FL} Fi[2]}


 S2576C2_nt ::~S2576C2_nt(){ note_dtor("S2576C2_nt", this);}
void  S2576C2_nt ::v2(){vfunc_called(this, "_ZN10S2576C2_nt2v2Ev");}
void  S2576C2_nt ::v3(){vfunc_called(this, "_ZN10S2576C2_nt2v3Ev");}
S2576C2_nt ::S2576C2_nt(){ note_ctor("S2576C2_nt", this);} // tgen

//skip512 S2576C2_nt

#else // __cplusplus

extern void _ZN10S2576C2_ntC1Ev();
extern void _ZN10S2576C2_ntD1Ev();
Name_Map name_map_S2576C2_nt[] = {
  NSPAIR(_ZN10S2576C2_ntC1Ev),
  NSPAIR(_ZN10S2576C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S2576C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2576C2_nt[];
extern void _ZN10S2576C2_ntD1Ev();
extern void _ZN10S2576C2_ntD0Ev();
extern void _ZN10S2576C2_nt2v2Ev();
extern void _ZN10S2576C2_nt2v3Ev();
static  VTBL_ENTRY vtc_S2576C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2576C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S2576C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2576C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S2576C2_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S2576C2_nt2v3Ev,
};
extern VTBL_ENTRY _ZTI10S2576C2_nt[];
VTBL_ENTRY *P__ZTI10S2576C2_nt = _ZTI10S2576C2_nt; 
extern  VTBL_ENTRY _ZTV10S2576C2_nt[];
Class_Descriptor cd_S2576C2_nt = {  "S2576C2_nt", // class name
  bases_S2576C2_nt, 1,
  &(vtc_S2576C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI10S2576C2_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV10S2576C2_nt),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2576C5  {
  int s2576c5f0[2];
  void *s2576c5f1;
  int s2576c5f2;
  void *s2576c5f3;
  int s2576c5f4;
  void *s2576c5f5;
  char s2576c5f6[2];
  void  mf2576c5(); // _ZN7S2576C58mf2576c5Ev
  virtual  ~S2576C5(); // _ZN7S2576C5D1Ev
  S2576C5(); // tgen
};
//SIG(-1 S2576C5) C1{ vd m Fi[2] Fp Fi Fp Fi Fp Fc[2]}


void  S2576C5 ::mf2576c5(){}
 S2576C5 ::~S2576C5(){ note_dtor("S2576C5", this);}
S2576C5 ::S2576C5(){ note_ctor("S2576C5", this);} // tgen

static void Test_S2576C5()
{
  extern Class_Descriptor cd_S2576C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S2576C5, buf);
    S2576C5 *dp, &lv = *(dp=new (buf) S2576C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S2576C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2576C5)");
    check_field_offset(lv, s2576c5f0, ABISELECT(8,4), "S2576C5.s2576c5f0");
    check_field_offset(lv, s2576c5f1, ABISELECT(16,12), "S2576C5.s2576c5f1");
    check_field_offset(lv, s2576c5f2, ABISELECT(24,16), "S2576C5.s2576c5f2");
    check_field_offset(lv, s2576c5f3, ABISELECT(32,20), "S2576C5.s2576c5f3");
    check_field_offset(lv, s2576c5f4, ABISELECT(40,24), "S2576C5.s2576c5f4");
    check_field_offset(lv, s2576c5f5, ABISELECT(48,28), "S2576C5.s2576c5f5");
    check_field_offset(lv, s2576c5f6, ABISELECT(56,32), "S2576C5.s2576c5f6");
    test_class_info(&lv, &cd_S2576C5);
    dp->~S2576C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2576C5(Test_S2576C5, "S2576C5", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S2576C5C1Ev();
extern void _ZN7S2576C5D1Ev();
Name_Map name_map_S2576C5[] = {
  NSPAIR(_ZN7S2576C5C1Ev),
  NSPAIR(_ZN7S2576C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2576C5[];
extern void _ZN7S2576C5D1Ev();
extern void _ZN7S2576C5D0Ev();
static  VTBL_ENTRY vtc_S2576C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2576C5[0]),
  (VTBL_ENTRY)&_ZN7S2576C5D1Ev,
  (VTBL_ENTRY)&_ZN7S2576C5D0Ev,
};
extern VTBL_ENTRY _ZTI7S2576C5[];
extern  VTBL_ENTRY _ZTV7S2576C5[];
Class_Descriptor cd_S2576C5 = {  "S2576C5", // class name
  0,0,//no base classes
  &(vtc_S2576C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S2576C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2576C5),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  S2576C1  : S2576C2_nt {
  ::S2576C5 s2576c1f0;
  ::S17885C12 s2576c1f1;
  virtual  ~S2576C1(); // _ZN7S2576C1D1Ev
  virtual void  v1(); // _ZN7S2576C12v1Ev
  S2576C1(); // tgen
};
//SIG(1 S2576C1) C1{ BC2{ BC3{ m Fi} vd v2 v3 Fp Fi FC4{ m FL} Fi[2]} vd v1 FC5{ vd m Fi[2] Fp Fi Fp Fi Fp Fc[2]} FC6{ m Fp}}


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

static void Test_S2576C1()
{
  extern Class_Descriptor cd_S2576C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,19)];
    init_test(&cd_S2576C1, buf);
    S2576C1 *dp, &lv = *(dp=new (buf) S2576C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,72), "sizeof(S2576C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2576C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S2576C2_nt*), ABISELECT(8,4), "S2576C1");
    check_base_class_offset(lv, (S2576C2_nt*), 0, "S2576C1");
    check_field_offset(lv, s2576c1f0, ABISELECT(48,32), "S2576C1.s2576c1f0");
    check_field_offset(lv, s2576c1f1, ABISELECT(112,68), "S2576C1.s2576c1f1");
    test_class_info(&lv, &cd_S2576C1);
    dp->~S2576C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2576C1(Test_S2576C1, "S2576C1", ABISELECT(120,72));

#else // __cplusplus

extern void _ZN7S2576C1C1Ev();
extern void _ZN7S2576C1D1Ev();
Name_Map name_map_S2576C1[] = {
  NSPAIR(_ZN7S2576C1C1Ev),
  NSPAIR(_ZN7S2576C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S2576C2_nt;
extern VTBL_ENTRY _ZTI10S2576C2_nt[];
extern  VTBL_ENTRY _ZTV10S2576C2_nt[];
static Base_Class bases_S2576C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2576C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2576C1[];
extern void _ZN7S2576C1D1Ev();
extern void _ZN7S2576C1D0Ev();
extern void _ZN10S2576C2_nt2v2Ev();
extern void _ZN10S2576C2_nt2v3Ev();
extern void _ZN7S2576C12v1Ev();
static  VTBL_ENTRY vtc_S2576C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2576C1[0]),
  (VTBL_ENTRY)&_ZN7S2576C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2576C1D0Ev,
  (VTBL_ENTRY)&_ZN10S2576C2_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S2576C2_nt2v3Ev,
  (VTBL_ENTRY)&_ZN7S2576C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S2576C1[];
extern  VTBL_ENTRY _ZTV7S2576C1[];
Class_Descriptor cd_S2576C1 = {  "S2576C1", // class name
  bases_S2576C1, 2,
  &(vtc_S2576C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,72), // object size
  NSPAIRA(_ZTI7S2576C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2576C1),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  S16429C4  {
  char s16429c4f0[2];
  short s16429c4f1;
  char s16429c4f2[1024];
  void  mf16429c4(); // _ZN8S16429C49mf16429c4Ev
};
//SIG(-1 S16429C4) C1{ m Fc[2] Fs Fc[1024]}


void  S16429C4 ::mf16429c4(){}

static void Test_S16429C4()
{
  {
    init_simple_test("S16429C4");
    S16429C4 lv;
    check2(sizeof(lv), 1028, "sizeof(S16429C4)");
    check2(__alignof__(lv), 2, "__alignof__(S16429C4)");
    check_field_offset(lv, s16429c4f0, 0, "S16429C4.s16429c4f0");
    check_field_offset(lv, s16429c4f1, 2, "S16429C4.s16429c4f1");
    check_field_offset(lv, s16429c4f2, 4, "S16429C4.s16429c4f2");
  }
}
static Arrange_To_Call_Me vS16429C4(Test_S16429C4, "S16429C4", 1028);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16429C6  {
  short s16429c6f0[9];
  void  mf16429c6(); // _ZN8S16429C69mf16429c6Ev
};
//SIG(-1 S16429C6) C1{ m Fs[9]}


void  S16429C6 ::mf16429c6(){}

static void Test_S16429C6()
{
  {
    init_simple_test("S16429C6");
    S16429C6 lv;
    check2(sizeof(lv), 18, "sizeof(S16429C6)");
    check2(__alignof__(lv), 2, "__alignof__(S16429C6)");
    check_field_offset(lv, s16429c6f0, 0, "S16429C6.s16429c6f0");
  }
}
static Arrange_To_Call_Me vS16429C6(Test_S16429C6, "S16429C6", 18);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S16429C5  : S16429C6 {
  ::S16429C6 s16429c5f0[7];
  short s16429c5f1;
};
//SIG(-1 S16429C5) C1{ BC2{ m Fs[9]} FC2[7] Fs}



static void Test_S16429C5()
{
  extern Class_Descriptor cd_S16429C5;
  void *lvp;
  {
    short buf[74];
    init_test(&cd_S16429C5, buf);
    S16429C5 &lv = *(new (buf) S16429C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), 146, "sizeof(S16429C5)");
    check2(__alignof__(lv), 2, "__alignof__(S16429C5)");
    check_base_class_offset(lv, (S16429C6*), 0, "S16429C5");
    check_field_offset(lv, s16429c5f0, 18, "S16429C5.s16429c5f0");
    check_field_offset(lv, s16429c5f1, 144, "S16429C5.s16429c5f1");
    test_class_info(&lv, &cd_S16429C5);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS16429C5(Test_S16429C5, "S16429C5", 146);

#else // __cplusplus

extern Class_Descriptor cd_S16429C6;
static Base_Class bases_S16429C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S16429C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S16429C5 = {  "S16429C5", // class name
  bases_S16429C5, 1,
  0, // no vftv
  0, //no vtt
  146, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16429C1  {
  ::S17885C12 s16429c1f0;
  ::S17885C6_nt s16429c1f1;
  ::S16429C4 s16429c1f2;
  ::S16429C4 s16429c1f3;
  int s16429c1f4;
  void *s16429c1f5[5];
  char s16429c1f6[1026];
  ::S16429C5 s16429c1f7;
  short s16429c1f8;
  void  mf16429c1(); // _ZN8S16429C19mf16429c1Ev
};
//SIG(1 S16429C1) C1{ m FC2{ m Fp} FC3{ m Fp} FC4{ m Fc[2] Fs Fc[1024]} FC4 Fi Fp[5] Fc[1026] FC5{ BC6{ m Fs[9]} FC6[7] Fs} Fs}


void  S16429C1 ::mf16429c1(){}

static void Test_S16429C1()
{
  {
    init_simple_test("S16429C1");
    S16429C1 lv;
    check2(sizeof(lv), ABISELECT(3296,3264), "sizeof(S16429C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16429C1)");
    check_field_offset(lv, s16429c1f0, 0, "S16429C1.s16429c1f0");
    check_field_offset(lv, s16429c1f1, ABISELECT(8,4), "S16429C1.s16429c1f1");
    check_field_offset(lv, s16429c1f2, ABISELECT(16,8), "S16429C1.s16429c1f2");
    check_field_offset(lv, s16429c1f3, ABISELECT(1044,1036), "S16429C1.s16429c1f3");
    check_field_offset(lv, s16429c1f4, ABISELECT(2072,2064), "S16429C1.s16429c1f4");
    check_field_offset(lv, s16429c1f5, ABISELECT(2080,2068), "S16429C1.s16429c1f5");
    check_field_offset(lv, s16429c1f6, ABISELECT(2120,2088), "S16429C1.s16429c1f6");
    check_field_offset(lv, s16429c1f7, ABISELECT(3146,3114), "S16429C1.s16429c1f7");
    check_field_offset(lv, s16429c1f8, ABISELECT(3292,3260), "S16429C1.s16429c1f8");
  }
}
static Arrange_To_Call_Me vS16429C1(Test_S16429C1, "S16429C1", ABISELECT(3296,3264));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4023C2  : S343C6_nt {
  int s4023c2f0;
  char s4023c2f1[4];
  int s4023c2f2;
  void *s4023c2f3[2];
  virtual  ~S4023C2(); // _ZN7S4023C2D1Ev
  virtual void  v4(); // _ZN7S4023C22v4Ev
  virtual void  v5(); // _ZN7S4023C22v5Ev
  virtual void  v6(); // _ZN7S4023C22v6Ev
  virtual void  v7(); // _ZN7S4023C22v7Ev
  S4023C2(); // tgen
};
//SIG(-1 S4023C2) C1{ BC2{ vd m} vd v1 v2 v3 v4 Fi Fc[4] Fi Fp[2]}


 S4023C2 ::~S4023C2(){ note_dtor("S4023C2", this);}
void  S4023C2 ::v4(){vfunc_called(this, "_ZN7S4023C22v4Ev");}
void  S4023C2 ::v5(){vfunc_called(this, "_ZN7S4023C22v5Ev");}
void  S4023C2 ::v6(){vfunc_called(this, "_ZN7S4023C22v6Ev");}
void  S4023C2 ::v7(){vfunc_called(this, "_ZN7S4023C22v7Ev");}
S4023C2 ::S4023C2(){ note_ctor("S4023C2", this);} // tgen

static void Test_S4023C2()
{
  extern Class_Descriptor cd_S4023C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S4023C2, buf);
    S4023C2 *dp, &lv = *(dp=new (buf) S4023C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S4023C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4023C2)");
    check_base_class_offset(lv, (S343C6_nt*), 0, "S4023C2");
    check_field_offset(lv, s4023c2f0, ABISELECT(8,4), "S4023C2.s4023c2f0");
    check_field_offset(lv, s4023c2f1, ABISELECT(12,8), "S4023C2.s4023c2f1");
    check_field_offset(lv, s4023c2f2, ABISELECT(16,12), "S4023C2.s4023c2f2");
    check_field_offset(lv, s4023c2f3, ABISELECT(24,16), "S4023C2.s4023c2f3");
    test_class_info(&lv, &cd_S4023C2);
    dp->~S4023C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4023C2(Test_S4023C2, "S4023C2", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S4023C2C1Ev();
extern void _ZN7S4023C2D1Ev();
Name_Map name_map_S4023C2[] = {
  NSPAIR(_ZN7S4023C2C1Ev),
  NSPAIR(_ZN7S4023C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
static Base_Class bases_S4023C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4023C2[];
extern void _ZN7S4023C2D1Ev();
extern void _ZN7S4023C2D0Ev();
extern void _ZN7S4023C22v4Ev();
extern void _ZN7S4023C22v5Ev();
extern void _ZN7S4023C22v6Ev();
extern void _ZN7S4023C22v7Ev();
static  VTBL_ENTRY vtc_S4023C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4023C2[0]),
  (VTBL_ENTRY)&_ZN7S4023C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4023C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4023C22v4Ev,
  (VTBL_ENTRY)&_ZN7S4023C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4023C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4023C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S4023C2[];
extern  VTBL_ENTRY _ZTV7S4023C2[];
Class_Descriptor cd_S4023C2 = {  "S4023C2", // class name
  bases_S4023C2, 1,
  &(vtc_S4023C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S4023C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4023C2),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  S4023C4  {
  char s4023c4f0;
  __tsi64 s4023c4f1;
  void  mf4023c4(); // _ZN7S4023C48mf4023c4Ev
};
//SIG(-1 S4023C4) C1{ m Fc FL}


void  S4023C4 ::mf4023c4(){}

static void Test_S4023C4()
{
  {
    init_simple_test("S4023C4");
    S4023C4 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4023C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4023C4)");
    check_field_offset(lv, s4023c4f0, 0, "S4023C4.s4023c4f0");
    check_field_offset(lv, s4023c4f1, ABISELECT(8,4), "S4023C4.s4023c4f1");
  }
}
static Arrange_To_Call_Me vS4023C4(Test_S4023C4, "S4023C4", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4023C1  : S4023C2 {
  ::S4023C4 s4023c1f0;
  void *s4023c1f1;
  ::S17885C12 s4023c1f2;
  ::S17885C6_nt s4023c1f3;
  virtual  ~S4023C1(); // _ZN7S4023C1D1Ev
  virtual void  v1(); // _ZN7S4023C12v1Ev
  virtual void  v2(); // _ZN7S4023C12v2Ev
  virtual void  v3(); // _ZN7S4023C12v3Ev
  S4023C1(); // tgen
};
//SIG(1 S4023C1) C1{ BC2{ BC3{ vd m} vd v4 v5 v6 v7 Fi Fc[4] Fi Fp[2]} vd v1 v2 v3 FC4{ m Fc FL} Fp FC5{ m Fp} FC6{ m Fp}}


 S4023C1 ::~S4023C1(){ note_dtor("S4023C1", this);}
void  S4023C1 ::v1(){vfunc_called(this, "_ZN7S4023C12v1Ev");}
void  S4023C1 ::v2(){vfunc_called(this, "_ZN7S4023C12v2Ev");}
void  S4023C1 ::v3(){vfunc_called(this, "_ZN7S4023C12v3Ev");}
S4023C1 ::S4023C1(){ note_ctor("S4023C1", this);} // tgen

static void Test_S4023C1()
{
  extern Class_Descriptor cd_S4023C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S4023C1, buf);
    S4023C1 *dp, &lv = *(dp=new (buf) S4023C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S4023C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4023C1)");
    check_base_class_offset(lv, (S343C6_nt*)(S4023C2*), 0, "S4023C1");
    check_base_class_offset(lv, (S4023C2*), 0, "S4023C1");
    check_field_offset(lv, s4023c1f0, ABISELECT(40,24), "S4023C1.s4023c1f0");
    check_field_offset(lv, s4023c1f1, ABISELECT(56,36), "S4023C1.s4023c1f1");
    check_field_offset(lv, s4023c1f2, ABISELECT(64,40), "S4023C1.s4023c1f2");
    check_field_offset(lv, s4023c1f3, ABISELECT(72,44), "S4023C1.s4023c1f3");
    test_class_info(&lv, &cd_S4023C1);
    dp->~S4023C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4023C1(Test_S4023C1, "S4023C1", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN7S4023C1C1Ev();
extern void _ZN7S4023C1D1Ev();
Name_Map name_map_S4023C1[] = {
  NSPAIR(_ZN7S4023C1C1Ev),
  NSPAIR(_ZN7S4023C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S343C6_nt;
extern VTBL_ENTRY _ZTI9S343C6_nt[];
extern  VTBL_ENTRY _ZTV9S343C6_nt[];
extern Class_Descriptor cd_S4023C2;
extern VTBL_ENTRY _ZTI7S4023C2[];
extern  VTBL_ENTRY _ZTV7S4023C2[];
static Base_Class bases_S4023C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S343C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4023C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S4023C1[];
extern void _ZN7S4023C1D1Ev();
extern void _ZN7S4023C1D0Ev();
extern void _ZN7S4023C22v4Ev();
extern void _ZN7S4023C22v5Ev();
extern void _ZN7S4023C22v6Ev();
extern void _ZN7S4023C22v7Ev();
extern void _ZN7S4023C12v1Ev();
extern void _ZN7S4023C12v2Ev();
extern void _ZN7S4023C12v3Ev();
static  VTBL_ENTRY vtc_S4023C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4023C1[0]),
  (VTBL_ENTRY)&_ZN7S4023C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4023C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4023C22v4Ev,
  (VTBL_ENTRY)&_ZN7S4023C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4023C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4023C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4023C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4023C12v2Ev,
  (VTBL_ENTRY)&_ZN7S4023C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S4023C1[];
extern  VTBL_ENTRY _ZTV7S4023C1[];
Class_Descriptor cd_S4023C1 = {  "S4023C1", // class name
  bases_S4023C1, 2,
  &(vtc_S4023C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI7S4023C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4023C1),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  S16373C1  {
  ::S5074C8_nt s16373c1f0;
  ::S731C16_nt s16373c1f1;
  void *s16373c1f2[10];
  int s16373c1f3[5];
  ::S3027C4_nt s16373c1f4;
  ::S731C15_nt s16373c1f5;
  void  mf16373c1(); // _ZN8S16373C19mf16373c1Ev
};
//SIG(1 S16373C1) C1{ m FC2{ m Fp[2]} FC3{ m Fp Fi FC4{ m}} Fp[10] Fi[5] FC5{ BC6{ m Fp Fi FC4 FC7{ m}}} FC8{ m FC3 Fi}}


void  S16373C1 ::mf16373c1(){}

static void Test_S16373C1()
{
  {
    init_simple_test("S16373C1");
    S16373C1 lv;
    check2(sizeof(lv), ABISELECT(176,108), "sizeof(S16373C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16373C1)");
    check_field_offset(lv, s16373c1f0, 0, "S16373C1.s16373c1f0");
    check_field_offset(lv, s16373c1f1, ABISELECT(16,8), "S16373C1.s16373c1f1");
    check_field_offset(lv, s16373c1f2, ABISELECT(32,20), "S16373C1.s16373c1f2");
    check_field_offset(lv, s16373c1f3, ABISELECT(112,60), "S16373C1.s16373c1f3");
    check_field_offset(lv, s16373c1f4, ABISELECT(136,80), "S16373C1.s16373c1f4");
    check_field_offset(lv, s16373c1f5, ABISELECT(152,92), "S16373C1.s16373c1f5");
  }
}
static Arrange_To_Call_Me vS16373C1(Test_S16373C1, "S16373C1", ABISELECT(176,108));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8211C6_nt  {
  void *s8211c6f0;
  void  mf8211c6(); // _ZN10S8211C6_nt8mf8211c6Ev
};
//SIG(-1 S8211C6_nt) C1{ m Fp}


void  S8211C6_nt ::mf8211c6(){}

//skip512 S8211C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8211C8  {
  void *s8211c8f0;
  void  mf8211c8(); // _ZN7S8211C88mf8211c8Ev
};
//SIG(-1 S8211C8) C1{ m Fp}


void  S8211C8 ::mf8211c8(){}

static void Test_S8211C8()
{
  {
    init_simple_test("S8211C8");
    S8211C8 lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8211C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8211C8)");
    check_field_offset(lv, s8211c8f0, 0, "S8211C8.s8211c8f0");
  }
}
static Arrange_To_Call_Me vS8211C8(Test_S8211C8, "S8211C8", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8211C10  {
  void *s8211c10f0;
  void  mf8211c10(); // _ZN8S8211C109mf8211c10Ev
};
//SIG(-1 S8211C10) C1{ m Fp}


void  S8211C10 ::mf8211c10(){}

static void Test_S8211C10()
{
  {
    init_simple_test("S8211C10");
    S8211C10 lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8211C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8211C10)");
    check_field_offset(lv, s8211c10f0, 0, "S8211C10.s8211c10f0");
  }
}
static Arrange_To_Call_Me vS8211C10(Test_S8211C10, "S8211C10", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8211C1  : S731C14_nt {
  ::S17885C12 s8211c1f0;
  ::S17885C6_nt s8211c1f1;
  ::S6441C4_nt s8211c1f2;
  ::S8211C6_nt s8211c1f3;
  ::S8211C6_nt s8211c1f4;
  ::S8211C8 s8211c1f5;
  ::S8211C8 s8211c1f6;
  ::S8211C10 s8211c1f7;
  virtual  ~S8211C1(); // _ZN7S8211C1D1Ev
  S8211C1(); // tgen
};
//SIG(1 S8211C1) C1{ BC2{ vd m Fp} vd FC3{ m Fp} FC4{ m Fp} FC5{ m Fp} FC6{ m Fp} FC6 FC7{ m Fp} FC7 FC8{ m Fp}}


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

static void Test_S8211C1()
{
  extern Class_Descriptor cd_S8211C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S8211C1, buf);
    S8211C1 *dp, &lv = *(dp=new (buf) S8211C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S8211C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8211C1)");
    check_base_class_offset(lv, (S731C14_nt*), 0, "S8211C1");
    check_field_offset(lv, s8211c1f0, ABISELECT(16,8), "S8211C1.s8211c1f0");
    check_field_offset(lv, s8211c1f1, ABISELECT(24,12), "S8211C1.s8211c1f1");
    check_field_offset(lv, s8211c1f2, ABISELECT(32,16), "S8211C1.s8211c1f2");
    check_field_offset(lv, s8211c1f3, ABISELECT(40,20), "S8211C1.s8211c1f3");
    check_field_offset(lv, s8211c1f4, ABISELECT(48,24), "S8211C1.s8211c1f4");
    check_field_offset(lv, s8211c1f5, ABISELECT(56,28), "S8211C1.s8211c1f5");
    check_field_offset(lv, s8211c1f6, ABISELECT(64,32), "S8211C1.s8211c1f6");
    check_field_offset(lv, s8211c1f7, ABISELECT(72,36), "S8211C1.s8211c1f7");
    test_class_info(&lv, &cd_S8211C1);
    dp->~S8211C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8211C1(Test_S8211C1, "S8211C1", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN7S8211C1C1Ev();
extern void _ZN7S8211C1D1Ev();
Name_Map name_map_S8211C1[] = {
  NSPAIR(_ZN7S8211C1C1Ev),
  NSPAIR(_ZN7S8211C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
static Base_Class bases_S8211C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C14_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8211C1[];
extern void _ZN7S8211C1D1Ev();
extern void _ZN7S8211C1D0Ev();
static  VTBL_ENTRY vtc_S8211C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8211C1[0]),
  (VTBL_ENTRY)&_ZN7S8211C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8211C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8211C1[];
extern  VTBL_ENTRY _ZTV7S8211C1[];
Class_Descriptor cd_S8211C1 = {  "S8211C1", // class name
  bases_S8211C1, 1,
  &(vtc_S8211C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI7S8211C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8211C1),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  S10131C2  {
  void *s10131c2f0;
  int s10131c2f1;
  virtual  ~S10131C2(); // _ZN8S10131C2D1Ev
  virtual void  v7(); // _ZN8S10131C22v7Ev
  virtual void  v8(); // _ZN8S10131C22v8Ev
  virtual void  v9(); // _ZN8S10131C22v9Ev
  virtual void  v10(); // _ZN8S10131C23v10Ev
  virtual void  v11(); // _ZN8S10131C23v11Ev
  virtual void  v12(); // _ZN8S10131C23v12Ev
  virtual void  v13(); // _ZN8S10131C23v13Ev
  virtual void  v14(); // _ZN8S10131C23v14Ev
  virtual void  v15(); // _ZN8S10131C23v15Ev
  virtual void  v16(); // _ZN8S10131C23v16Ev
  S10131C2(); // tgen
};
//SIG(-1 S10131C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fp Fi}


 S10131C2 ::~S10131C2(){ note_dtor("S10131C2", this);}
void  S10131C2 ::v7(){vfunc_called(this, "_ZN8S10131C22v7Ev");}
void  S10131C2 ::v8(){vfunc_called(this, "_ZN8S10131C22v8Ev");}
void  S10131C2 ::v9(){vfunc_called(this, "_ZN8S10131C22v9Ev");}
void  S10131C2 ::v10(){vfunc_called(this, "_ZN8S10131C23v10Ev");}
void  S10131C2 ::v11(){vfunc_called(this, "_ZN8S10131C23v11Ev");}
void  S10131C2 ::v12(){vfunc_called(this, "_ZN8S10131C23v12Ev");}
void  S10131C2 ::v13(){vfunc_called(this, "_ZN8S10131C23v13Ev");}
void  S10131C2 ::v14(){vfunc_called(this, "_ZN8S10131C23v14Ev");}
void  S10131C2 ::v15(){vfunc_called(this, "_ZN8S10131C23v15Ev");}
void  S10131C2 ::v16(){vfunc_called(this, "_ZN8S10131C23v16Ev");}
S10131C2 ::S10131C2(){ note_ctor("S10131C2", this);} // tgen

static void Test_S10131C2()
{
  extern Class_Descriptor cd_S10131C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S10131C2, buf);
    S10131C2 *dp, &lv = *(dp=new (buf) S10131C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S10131C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10131C2)");
    check_field_offset(lv, s10131c2f0, ABISELECT(8,4), "S10131C2.s10131c2f0");
    check_field_offset(lv, s10131c2f1, ABISELECT(16,8), "S10131C2.s10131c2f1");
    test_class_info(&lv, &cd_S10131C2);
    dp->~S10131C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10131C2(Test_S10131C2, "S10131C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S10131C2C1Ev();
extern void _ZN8S10131C2D1Ev();
Name_Map name_map_S10131C2[] = {
  NSPAIR(_ZN8S10131C2C1Ev),
  NSPAIR(_ZN8S10131C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10131C2[];
extern void _ZN8S10131C2D1Ev();
extern void _ZN8S10131C2D0Ev();
extern void _ZN8S10131C22v7Ev();
extern void _ZN8S10131C22v8Ev();
extern void _ZN8S10131C22v9Ev();
extern void _ZN8S10131C23v10Ev();
extern void _ZN8S10131C23v11Ev();
extern void _ZN8S10131C23v12Ev();
extern void _ZN8S10131C23v13Ev();
extern void _ZN8S10131C23v14Ev();
extern void _ZN8S10131C23v15Ev();
extern void _ZN8S10131C23v16Ev();
static  VTBL_ENTRY vtc_S10131C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10131C2[0]),
  (VTBL_ENTRY)&_ZN8S10131C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10131C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10131C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10131C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10131C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10131C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10131C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10131C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10131C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10131C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10131C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10131C23v16Ev,
};
extern VTBL_ENTRY _ZTI8S10131C2[];
extern  VTBL_ENTRY _ZTV8S10131C2[];
Class_Descriptor cd_S10131C2 = {  "S10131C2", // class name
  0,0,//no base classes
  &(vtc_S10131C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S10131C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10131C2),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  S10131C3  {
  virtual  ~S10131C3(); // _ZN8S10131C3D1Ev
  virtual void  v17(); // _ZN8S10131C33v17Ev
  S10131C3(); // tgen
};
//SIG(-1 S10131C3) C1{ vd v1}


 S10131C3 ::~S10131C3(){ note_dtor("S10131C3", this);}
void  S10131C3 ::v17(){vfunc_called(this, "_ZN8S10131C33v17Ev");}
S10131C3 ::S10131C3(){ note_ctor("S10131C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S10131C3C1Ev();
extern void _ZN8S10131C3D1Ev();
Name_Map name_map_S10131C3[] = {
  NSPAIR(_ZN8S10131C3C1Ev),
  NSPAIR(_ZN8S10131C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10131C3[];
extern void _ZN8S10131C3D1Ev();
extern void _ZN8S10131C3D0Ev();
extern void _ZN8S10131C33v17Ev();
static  VTBL_ENTRY vtc_S10131C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10131C3[0]),
  (VTBL_ENTRY)&_ZN8S10131C3D1Ev,
  (VTBL_ENTRY)&_ZN8S10131C3D0Ev,
  (VTBL_ENTRY)&_ZN8S10131C33v17Ev,
};
extern VTBL_ENTRY _ZTI8S10131C3[];
extern  VTBL_ENTRY _ZTV8S10131C3[];
Class_Descriptor cd_S10131C3 = {  "S10131C3", // class name
  0,0,//no base classes
  &(vtc_S10131C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S10131C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10131C3),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  S10131C1  : S10131C2 , S10131C3 {
  void *s10131c1f0[21];
  virtual  ~S10131C1(); // _ZN8S10131C1D1Ev
  virtual void  v1(); // _ZN8S10131C12v1Ev
  virtual void  v2(); // _ZN8S10131C12v2Ev
  virtual void  v3(); // _ZN8S10131C12v3Ev
  virtual void  v4(); // _ZN8S10131C12v4Ev
  virtual void  v5(); // _ZN8S10131C12v5Ev
  virtual void  v6(); // _ZN8S10131C12v6Ev
  S10131C1(); // tgen
};
//SIG(1 S10131C1) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 Fp Fi} BC3{ vd v17} vd v1 v2 v3 v4 v5 v6 Fp[21]}


 S10131C1 ::~S10131C1(){ note_dtor("S10131C1", this);}
void  S10131C1 ::v1(){vfunc_called(this, "_ZN8S10131C12v1Ev");}
void  S10131C1 ::v2(){vfunc_called(this, "_ZN8S10131C12v2Ev");}
void  S10131C1 ::v3(){vfunc_called(this, "_ZN8S10131C12v3Ev");}
void  S10131C1 ::v4(){vfunc_called(this, "_ZN8S10131C12v4Ev");}
void  S10131C1 ::v5(){vfunc_called(this, "_ZN8S10131C12v5Ev");}
void  S10131C1 ::v6(){vfunc_called(this, "_ZN8S10131C12v6Ev");}
S10131C1 ::S10131C1(){ note_ctor("S10131C1", this);} // tgen

static void Test_S10131C1()
{
  extern Class_Descriptor cd_S10131C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[26];
    init_test(&cd_S10131C1, buf);
    S10131C1 *dp, &lv = *(dp=new (buf) S10131C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,100), "sizeof(S10131C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10131C1)");
    check_base_class_offset(lv, (S10131C2*), 0, "S10131C1");
    check_base_class_offset(lv, (S10131C3*), ABISELECT(24,12), "S10131C1");
    check_field_offset(lv, s10131c1f0, ABISELECT(32,16), "S10131C1.s10131c1f0");
    test_class_info(&lv, &cd_S10131C1);
    dp->~S10131C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10131C1(Test_S10131C1, "S10131C1", ABISELECT(200,100));

#else // __cplusplus

extern void _ZN8S10131C1C1Ev();
extern void _ZN8S10131C1D1Ev();
Name_Map name_map_S10131C1[] = {
  NSPAIR(_ZN8S10131C1C1Ev),
  NSPAIR(_ZN8S10131C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10131C2;
extern VTBL_ENTRY _ZTI8S10131C2[];
extern  VTBL_ENTRY _ZTV8S10131C2[];
extern Class_Descriptor cd_S10131C3;
extern VTBL_ENTRY _ZTI8S10131C3[];
extern  VTBL_ENTRY _ZTV8S10131C3[];
static Base_Class bases_S10131C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10131C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10131C3,    ABISELECT(24,12), //bcp->offset
    20, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10131C1[];
extern void _ZN8S10131C1D1Ev();
extern void _ZN8S10131C1D0Ev();
extern void _ZN8S10131C22v7Ev();
extern void _ZN8S10131C22v8Ev();
extern void _ZN8S10131C22v9Ev();
extern void _ZN8S10131C23v10Ev();
extern void _ZN8S10131C23v11Ev();
extern void _ZN8S10131C23v12Ev();
extern void _ZN8S10131C23v13Ev();
extern void _ZN8S10131C23v14Ev();
extern void _ZN8S10131C23v15Ev();
extern void _ZN8S10131C23v16Ev();
extern void _ZN8S10131C12v1Ev();
extern void _ZN8S10131C12v2Ev();
extern void _ZN8S10131C12v3Ev();
extern void _ZN8S10131C12v4Ev();
extern void _ZN8S10131C12v5Ev();
extern void _ZN8S10131C12v6Ev();
extern void ABISELECT(_ZThn24_N8S10131C1D1Ev,_ZThn12_N8S10131C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S10131C1D0Ev,_ZThn12_N8S10131C1D0Ev)();
extern void _ZN8S10131C33v17Ev();
static  VTBL_ENTRY vtc_S10131C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10131C1[0]),
  (VTBL_ENTRY)&_ZN8S10131C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10131C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10131C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10131C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10131C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10131C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10131C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10131C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10131C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10131C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10131C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10131C23v16Ev,
  (VTBL_ENTRY)&_ZN8S10131C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10131C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10131C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10131C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10131C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10131C12v6Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S10131C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S10131C1D1Ev,_ZThn12_N8S10131C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S10131C1D0Ev,_ZThn12_N8S10131C1D0Ev),
  (VTBL_ENTRY)&_ZN8S10131C33v17Ev,
};
extern VTBL_ENTRY _ZTI8S10131C1[];
extern  VTBL_ENTRY _ZTV8S10131C1[];
Class_Descriptor cd_S10131C1 = {  "S10131C1", // class name
  bases_S10131C1, 2,
  &(vtc_S10131C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,100), // object size
  NSPAIRA(_ZTI8S10131C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S10131C1),25, //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  S2738C2  : S28C13_nt {
};
//SIG(-1 S2738C2) C1{ BC2{ m Fi}}



static void Test_S2738C2()
{
  extern Class_Descriptor cd_S2738C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2738C2, buf);
    S2738C2 &lv = *(new (buf) S2738C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2738C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2738C2)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S2738C2");
    test_class_info(&lv, &cd_S2738C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2738C2(Test_S2738C2, "S2738C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S2738C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2738C2[];
Class_Descriptor cd_S2738C2 = {  "S2738C2", // class name
  bases_S2738C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S2738C2),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  S2738C1  : S2738C2 {
  unsigned char s2738c1f0:1;
  unsigned char s2738c1f1:1;
  unsigned char s2738c1f2:1;
  unsigned char s2738c1f3:1;
  virtual  ~S2738C1(); // _ZN7S2738C1D1Ev
  virtual void  v1(); // _ZN7S2738C12v1Ev
  virtual void  v2(); // _ZN7S2738C12v2Ev
  virtual void  v3(); // _ZN7S2738C12v3Ev
  virtual void  v4(); // _ZN7S2738C12v4Ev
  virtual void  v5(); // _ZN7S2738C12v5Ev
  virtual void  v6(); // _ZN7S2738C12v6Ev
  virtual void  v7(); // _ZN7S2738C12v7Ev
  virtual void  v8(); // _ZN7S2738C12v8Ev
  virtual void  v9(); // _ZN7S2738C12v9Ev
  virtual void  v10(); // _ZN7S2738C13v10Ev
  virtual void  v11(); // _ZN7S2738C13v11Ev
  virtual void  v12(); // _ZN7S2738C13v12Ev
  virtual void  v13(); // _ZN7S2738C13v13Ev
  virtual void  v14(); // _ZN7S2738C13v14Ev
  virtual void  v15(); // _ZN7S2738C13v15Ev
  S2738C1(); // tgen
};
//SIG(1 S2738C1) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fc:1 Fc:1 Fc:1 Fc:1}


 S2738C1 ::~S2738C1(){ note_dtor("S2738C1", this);}
void  S2738C1 ::v1(){vfunc_called(this, "_ZN7S2738C12v1Ev");}
void  S2738C1 ::v2(){vfunc_called(this, "_ZN7S2738C12v2Ev");}
void  S2738C1 ::v3(){vfunc_called(this, "_ZN7S2738C12v3Ev");}
void  S2738C1 ::v4(){vfunc_called(this, "_ZN7S2738C12v4Ev");}
void  S2738C1 ::v5(){vfunc_called(this, "_ZN7S2738C12v5Ev");}
void  S2738C1 ::v6(){vfunc_called(this, "_ZN7S2738C12v6Ev");}
void  S2738C1 ::v7(){vfunc_called(this, "_ZN7S2738C12v7Ev");}
void  S2738C1 ::v8(){vfunc_called(this, "_ZN7S2738C12v8Ev");}
void  S2738C1 ::v9(){vfunc_called(this, "_ZN7S2738C12v9Ev");}
void  S2738C1 ::v10(){vfunc_called(this, "_ZN7S2738C13v10Ev");}
void  S2738C1 ::v11(){vfunc_called(this, "_ZN7S2738C13v11Ev");}
void  S2738C1 ::v12(){vfunc_called(this, "_ZN7S2738C13v12Ev");}
void  S2738C1 ::v13(){vfunc_called(this, "_ZN7S2738C13v13Ev");}
void  S2738C1 ::v14(){vfunc_called(this, "_ZN7S2738C13v14Ev");}
void  S2738C1 ::v15(){vfunc_called(this, "_ZN7S2738C13v15Ev");}
S2738C1 ::S2738C1(){ note_ctor("S2738C1", this);} // tgen

static void Test_S2738C1()
{
  extern Class_Descriptor cd_S2738C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S2738C1, buf);
    S2738C1 *dp, &lv = *(dp=new (buf) S2738C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2738C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2738C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S2738C2*), ABISELECT(8,4), "S2738C1");
    check_base_class_offset(lv, (S2738C2*), ABISELECT(8,4), "S2738C1");
    set_bf_and_test(lv, s2738c1f0, ABISELECT(12,8), 0, 1, 1, "S2738C1");
    set_bf_and_test(lv, s2738c1f1, ABISELECT(12,8), 1, 1, 1, "S2738C1");
    set_bf_and_test(lv, s2738c1f2, ABISELECT(12,8), 2, 1, 1, "S2738C1");
    set_bf_and_test(lv, s2738c1f3, ABISELECT(12,8), 3, 1, 1, "S2738C1");
    test_class_info(&lv, &cd_S2738C1);
    dp->~S2738C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2738C1(Test_S2738C1, "S2738C1", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S2738C1C1Ev();
extern void _ZN7S2738C1D1Ev();
Name_Map name_map_S2738C1[] = {
  NSPAIR(_ZN7S2738C1C1Ev),
  NSPAIR(_ZN7S2738C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S2738C2;
extern VTBL_ENTRY _ZTI7S2738C2[];
static Base_Class bases_S2738C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2738C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2738C1[];
extern void _ZN7S2738C1D1Ev();
extern void _ZN7S2738C1D0Ev();
extern void _ZN7S2738C12v1Ev();
extern void _ZN7S2738C12v2Ev();
extern void _ZN7S2738C12v3Ev();
extern void _ZN7S2738C12v4Ev();
extern void _ZN7S2738C12v5Ev();
extern void _ZN7S2738C12v6Ev();
extern void _ZN7S2738C12v7Ev();
extern void _ZN7S2738C12v8Ev();
extern void _ZN7S2738C12v9Ev();
extern void _ZN7S2738C13v10Ev();
extern void _ZN7S2738C13v11Ev();
extern void _ZN7S2738C13v12Ev();
extern void _ZN7S2738C13v13Ev();
extern void _ZN7S2738C13v14Ev();
extern void _ZN7S2738C13v15Ev();
static  VTBL_ENTRY vtc_S2738C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2738C1[0]),
  (VTBL_ENTRY)&_ZN7S2738C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2738C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2738C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2738C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2738C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2738C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2738C12v5Ev,
  (VTBL_ENTRY)&_ZN7S2738C12v6Ev,
  (VTBL_ENTRY)&_ZN7S2738C12v7Ev,
  (VTBL_ENTRY)&_ZN7S2738C12v8Ev,
  (VTBL_ENTRY)&_ZN7S2738C12v9Ev,
  (VTBL_ENTRY)&_ZN7S2738C13v10Ev,
  (VTBL_ENTRY)&_ZN7S2738C13v11Ev,
  (VTBL_ENTRY)&_ZN7S2738C13v12Ev,
  (VTBL_ENTRY)&_ZN7S2738C13v13Ev,
  (VTBL_ENTRY)&_ZN7S2738C13v14Ev,
  (VTBL_ENTRY)&_ZN7S2738C13v15Ev,
};
extern VTBL_ENTRY _ZTI7S2738C1[];
extern  VTBL_ENTRY _ZTV7S2738C1[];
Class_Descriptor cd_S2738C1 = {  "S2738C1", // class name
  bases_S2738C1, 2,
  &(vtc_S2738C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S2738C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S2738C1),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10051C2  {
  virtual  ~S10051C2(); // _ZN8S10051C2D1Ev
  virtual void  v6(); // _ZN8S10051C22v6Ev
  virtual void  v7(); // _ZN8S10051C22v7Ev
  virtual void  v8(); // _ZN8S10051C22v8Ev
  virtual void  v9(); // _ZN8S10051C22v9Ev
  virtual void  v10(); // _ZN8S10051C23v10Ev
  virtual void  v11(); // _ZN8S10051C23v11Ev
  virtual void  v12(); // _ZN8S10051C23v12Ev
  virtual void  v13(); // _ZN8S10051C23v13Ev
  virtual void  v14(); // _ZN8S10051C23v14Ev
  S10051C2(); // tgen
};
//SIG(-1 S10051C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S10051C2 ::~S10051C2(){ note_dtor("S10051C2", this);}
void  S10051C2 ::v6(){vfunc_called(this, "_ZN8S10051C22v6Ev");}
void  S10051C2 ::v7(){vfunc_called(this, "_ZN8S10051C22v7Ev");}
void  S10051C2 ::v8(){vfunc_called(this, "_ZN8S10051C22v8Ev");}
void  S10051C2 ::v9(){vfunc_called(this, "_ZN8S10051C22v9Ev");}
void  S10051C2 ::v10(){vfunc_called(this, "_ZN8S10051C23v10Ev");}
void  S10051C2 ::v11(){vfunc_called(this, "_ZN8S10051C23v11Ev");}
void  S10051C2 ::v12(){vfunc_called(this, "_ZN8S10051C23v12Ev");}
void  S10051C2 ::v13(){vfunc_called(this, "_ZN8S10051C23v13Ev");}
void  S10051C2 ::v14(){vfunc_called(this, "_ZN8S10051C23v14Ev");}
S10051C2 ::S10051C2(){ note_ctor("S10051C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S10051C2C1Ev();
extern void _ZN8S10051C2D1Ev();
Name_Map name_map_S10051C2[] = {
  NSPAIR(_ZN8S10051C2C1Ev),
  NSPAIR(_ZN8S10051C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10051C2[];
extern void _ZN8S10051C2D1Ev();
extern void _ZN8S10051C2D0Ev();
extern void _ZN8S10051C22v6Ev();
extern void _ZN8S10051C22v7Ev();
extern void _ZN8S10051C22v8Ev();
extern void _ZN8S10051C22v9Ev();
extern void _ZN8S10051C23v10Ev();
extern void _ZN8S10051C23v11Ev();
extern void _ZN8S10051C23v12Ev();
extern void _ZN8S10051C23v13Ev();
extern void _ZN8S10051C23v14Ev();
static  VTBL_ENTRY vtc_S10051C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10051C2[0]),
  (VTBL_ENTRY)&_ZN8S10051C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10051C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10051C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10051C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10051C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10051C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10051C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10051C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10051C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10051C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10051C23v14Ev,
};
extern VTBL_ENTRY _ZTI8S10051C2[];
extern  VTBL_ENTRY _ZTV8S10051C2[];
Class_Descriptor cd_S10051C2 = {  "S10051C2", // class name
  0,0,//no base classes
  &(vtc_S10051C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S10051C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10051C2),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  S10051C1  : S10051C2 {
  ::S731C16_nt s10051c1f0;
  int s10051c1f1[2];
  void *s10051c1f2[2];
  virtual  ~S10051C1(); // _ZN8S10051C1D1Ev
  virtual void  v1(); // _ZN8S10051C12v1Ev
  virtual void  v2(); // _ZN8S10051C12v2Ev
  virtual void  v3(); // _ZN8S10051C12v3Ev
  virtual void  v4(); // _ZN8S10051C12v4Ev
  virtual void  v5(); // _ZN8S10051C12v5Ev
  S10051C1(); // tgen
};
//SIG(1 S10051C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14} vd v1 v2 v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fp[2]}


 S10051C1 ::~S10051C1(){ note_dtor("S10051C1", this);}
void  S10051C1 ::v1(){vfunc_called(this, "_ZN8S10051C12v1Ev");}
void  S10051C1 ::v2(){vfunc_called(this, "_ZN8S10051C12v2Ev");}
void  S10051C1 ::v3(){vfunc_called(this, "_ZN8S10051C12v3Ev");}
void  S10051C1 ::v4(){vfunc_called(this, "_ZN8S10051C12v4Ev");}
void  S10051C1 ::v5(){vfunc_called(this, "_ZN8S10051C12v5Ev");}
S10051C1 ::S10051C1(){ note_ctor("S10051C1", this);} // tgen

static void Test_S10051C1()
{
  extern Class_Descriptor cd_S10051C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S10051C1, buf);
    S10051C1 *dp, &lv = *(dp=new (buf) S10051C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S10051C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10051C1)");
    check_base_class_offset(lv, (S10051C2*), 0, "S10051C1");
    check_field_offset(lv, s10051c1f0, ABISELECT(8,4), "S10051C1.s10051c1f0");
    check_field_offset(lv, s10051c1f1, ABISELECT(24,16), "S10051C1.s10051c1f1");
    check_field_offset(lv, s10051c1f2, ABISELECT(32,24), "S10051C1.s10051c1f2");
    test_class_info(&lv, &cd_S10051C1);
    dp->~S10051C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10051C1(Test_S10051C1, "S10051C1", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S10051C1C1Ev();
extern void _ZN8S10051C1D1Ev();
Name_Map name_map_S10051C1[] = {
  NSPAIR(_ZN8S10051C1C1Ev),
  NSPAIR(_ZN8S10051C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10051C2;
extern VTBL_ENTRY _ZTI8S10051C2[];
extern  VTBL_ENTRY _ZTV8S10051C2[];
static Base_Class bases_S10051C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10051C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10051C1[];
extern void _ZN8S10051C1D1Ev();
extern void _ZN8S10051C1D0Ev();
extern void _ZN8S10051C22v6Ev();
extern void _ZN8S10051C22v7Ev();
extern void _ZN8S10051C22v8Ev();
extern void _ZN8S10051C22v9Ev();
extern void _ZN8S10051C23v10Ev();
extern void _ZN8S10051C23v11Ev();
extern void _ZN8S10051C23v12Ev();
extern void _ZN8S10051C23v13Ev();
extern void _ZN8S10051C23v14Ev();
extern void _ZN8S10051C12v1Ev();
extern void _ZN8S10051C12v2Ev();
extern void _ZN8S10051C12v3Ev();
extern void _ZN8S10051C12v4Ev();
extern void _ZN8S10051C12v5Ev();
static  VTBL_ENTRY vtc_S10051C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10051C1[0]),
  (VTBL_ENTRY)&_ZN8S10051C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10051C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10051C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10051C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10051C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10051C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10051C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10051C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10051C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10051C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10051C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10051C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10051C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10051C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10051C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10051C12v5Ev,
};
extern VTBL_ENTRY _ZTI8S10051C1[];
extern  VTBL_ENTRY _ZTV8S10051C1[];
Class_Descriptor cd_S10051C1 = {  "S10051C1", // class name
  bases_S10051C1, 1,
  &(vtc_S10051C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S10051C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10051C1),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10050C2  {
  virtual  ~S10050C2(); // _ZN8S10050C2D1Ev
  virtual void  v6(); // _ZN8S10050C22v6Ev
  virtual void  v7(); // _ZN8S10050C22v7Ev
  virtual void  v8(); // _ZN8S10050C22v8Ev
  virtual void  v9(); // _ZN8S10050C22v9Ev
  virtual void  v10(); // _ZN8S10050C23v10Ev
  virtual void  v11(); // _ZN8S10050C23v11Ev
  virtual void  v12(); // _ZN8S10050C23v12Ev
  virtual void  v13(); // _ZN8S10050C23v13Ev
  virtual void  v14(); // _ZN8S10050C23v14Ev
  S10050C2(); // tgen
};
//SIG(-1 S10050C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S10050C2 ::~S10050C2(){ note_dtor("S10050C2", this);}
void  S10050C2 ::v6(){vfunc_called(this, "_ZN8S10050C22v6Ev");}
void  S10050C2 ::v7(){vfunc_called(this, "_ZN8S10050C22v7Ev");}
void  S10050C2 ::v8(){vfunc_called(this, "_ZN8S10050C22v8Ev");}
void  S10050C2 ::v9(){vfunc_called(this, "_ZN8S10050C22v9Ev");}
void  S10050C2 ::v10(){vfunc_called(this, "_ZN8S10050C23v10Ev");}
void  S10050C2 ::v11(){vfunc_called(this, "_ZN8S10050C23v11Ev");}
void  S10050C2 ::v12(){vfunc_called(this, "_ZN8S10050C23v12Ev");}
void  S10050C2 ::v13(){vfunc_called(this, "_ZN8S10050C23v13Ev");}
void  S10050C2 ::v14(){vfunc_called(this, "_ZN8S10050C23v14Ev");}
S10050C2 ::S10050C2(){ note_ctor("S10050C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S10050C2C1Ev();
extern void _ZN8S10050C2D1Ev();
Name_Map name_map_S10050C2[] = {
  NSPAIR(_ZN8S10050C2C1Ev),
  NSPAIR(_ZN8S10050C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10050C2[];
extern void _ZN8S10050C2D1Ev();
extern void _ZN8S10050C2D0Ev();
extern void _ZN8S10050C22v6Ev();
extern void _ZN8S10050C22v7Ev();
extern void _ZN8S10050C22v8Ev();
extern void _ZN8S10050C22v9Ev();
extern void _ZN8S10050C23v10Ev();
extern void _ZN8S10050C23v11Ev();
extern void _ZN8S10050C23v12Ev();
extern void _ZN8S10050C23v13Ev();
extern void _ZN8S10050C23v14Ev();
static  VTBL_ENTRY vtc_S10050C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10050C2[0]),
  (VTBL_ENTRY)&_ZN8S10050C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10050C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10050C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10050C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10050C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10050C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10050C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10050C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10050C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10050C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10050C23v14Ev,
};
extern VTBL_ENTRY _ZTI8S10050C2[];
extern  VTBL_ENTRY _ZTV8S10050C2[];
Class_Descriptor cd_S10050C2 = {  "S10050C2", // class name
  0,0,//no base classes
  &(vtc_S10050C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S10050C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10050C2),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  S10050C1  : S10050C2 {
  ::S731C16_nt s10050c1f0;
  ::S731C16_nt s10050c1f1;
  void *s10050c1f2[2];
  virtual  ~S10050C1(); // _ZN8S10050C1D1Ev
  virtual void  v1(); // _ZN8S10050C12v1Ev
  virtual void  v2(); // _ZN8S10050C12v2Ev
  virtual void  v3(); // _ZN8S10050C12v3Ev
  virtual void  v4(); // _ZN8S10050C12v4Ev
  virtual void  v5(); // _ZN8S10050C12v5Ev
  S10050C1(); // tgen
};
//SIG(1 S10050C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14} vd v1 v2 v3 v4 v5 FC3{ m Fp Fi FC4{ m}} FC3 Fp[2]}


 S10050C1 ::~S10050C1(){ note_dtor("S10050C1", this);}
void  S10050C1 ::v1(){vfunc_called(this, "_ZN8S10050C12v1Ev");}
void  S10050C1 ::v2(){vfunc_called(this, "_ZN8S10050C12v2Ev");}
void  S10050C1 ::v3(){vfunc_called(this, "_ZN8S10050C12v3Ev");}
void  S10050C1 ::v4(){vfunc_called(this, "_ZN8S10050C12v4Ev");}
void  S10050C1 ::v5(){vfunc_called(this, "_ZN8S10050C12v5Ev");}
S10050C1 ::S10050C1(){ note_ctor("S10050C1", this);} // tgen

static void Test_S10050C1()
{
  extern Class_Descriptor cd_S10050C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S10050C1, buf);
    S10050C1 *dp, &lv = *(dp=new (buf) S10050C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S10050C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10050C1)");
    check_base_class_offset(lv, (S10050C2*), 0, "S10050C1");
    check_field_offset(lv, s10050c1f0, ABISELECT(8,4), "S10050C1.s10050c1f0");
    check_field_offset(lv, s10050c1f1, ABISELECT(24,16), "S10050C1.s10050c1f1");
    check_field_offset(lv, s10050c1f2, ABISELECT(40,28), "S10050C1.s10050c1f2");
    test_class_info(&lv, &cd_S10050C1);
    dp->~S10050C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10050C1(Test_S10050C1, "S10050C1", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN8S10050C1C1Ev();
extern void _ZN8S10050C1D1Ev();
Name_Map name_map_S10050C1[] = {
  NSPAIR(_ZN8S10050C1C1Ev),
  NSPAIR(_ZN8S10050C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10050C2;
extern VTBL_ENTRY _ZTI8S10050C2[];
extern  VTBL_ENTRY _ZTV8S10050C2[];
static Base_Class bases_S10050C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10050C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10050C1[];
extern void _ZN8S10050C1D1Ev();
extern void _ZN8S10050C1D0Ev();
extern void _ZN8S10050C22v6Ev();
extern void _ZN8S10050C22v7Ev();
extern void _ZN8S10050C22v8Ev();
extern void _ZN8S10050C22v9Ev();
extern void _ZN8S10050C23v10Ev();
extern void _ZN8S10050C23v11Ev();
extern void _ZN8S10050C23v12Ev();
extern void _ZN8S10050C23v13Ev();
extern void _ZN8S10050C23v14Ev();
extern void _ZN8S10050C12v1Ev();
extern void _ZN8S10050C12v2Ev();
extern void _ZN8S10050C12v3Ev();
extern void _ZN8S10050C12v4Ev();
extern void _ZN8S10050C12v5Ev();
static  VTBL_ENTRY vtc_S10050C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10050C1[0]),
  (VTBL_ENTRY)&_ZN8S10050C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10050C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10050C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10050C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10050C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10050C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10050C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10050C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10050C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10050C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10050C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10050C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10050C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10050C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10050C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10050C12v5Ev,
};
extern VTBL_ENTRY _ZTI8S10050C1[];
extern  VTBL_ENTRY _ZTV8S10050C1[];
Class_Descriptor cd_S10050C1 = {  "S10050C1", // class name
  bases_S10050C1, 1,
  &(vtc_S10050C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI8S10050C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10050C1),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8558C2  {
  virtual  ~S8558C2(); // _ZN7S8558C2D1Ev
  virtual void  v11(); // _ZN7S8558C23v11Ev
  virtual void  v12(); // _ZN7S8558C23v12Ev
  virtual void  v13(); // _ZN7S8558C23v13Ev
  virtual void  v14(); // _ZN7S8558C23v14Ev
  virtual void  v15(); // _ZN7S8558C23v15Ev
  virtual void  v16(); // _ZN7S8558C23v16Ev
  virtual void  v17(); // _ZN7S8558C23v17Ev
  virtual void  v18(); // _ZN7S8558C23v18Ev
  virtual void  v19(); // _ZN7S8558C23v19Ev
  S8558C2(); // tgen
};
//SIG(-1 S8558C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S8558C2 ::~S8558C2(){ note_dtor("S8558C2", this);}
void  S8558C2 ::v11(){vfunc_called(this, "_ZN7S8558C23v11Ev");}
void  S8558C2 ::v12(){vfunc_called(this, "_ZN7S8558C23v12Ev");}
void  S8558C2 ::v13(){vfunc_called(this, "_ZN7S8558C23v13Ev");}
void  S8558C2 ::v14(){vfunc_called(this, "_ZN7S8558C23v14Ev");}
void  S8558C2 ::v15(){vfunc_called(this, "_ZN7S8558C23v15Ev");}
void  S8558C2 ::v16(){vfunc_called(this, "_ZN7S8558C23v16Ev");}
void  S8558C2 ::v17(){vfunc_called(this, "_ZN7S8558C23v17Ev");}
void  S8558C2 ::v18(){vfunc_called(this, "_ZN7S8558C23v18Ev");}
void  S8558C2 ::v19(){vfunc_called(this, "_ZN7S8558C23v19Ev");}
S8558C2 ::S8558C2(){ note_ctor("S8558C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S8558C2C1Ev();
extern void _ZN7S8558C2D1Ev();
Name_Map name_map_S8558C2[] = {
  NSPAIR(_ZN7S8558C2C1Ev),
  NSPAIR(_ZN7S8558C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8558C2[];
extern void _ZN7S8558C2D1Ev();
extern void _ZN7S8558C2D0Ev();
extern void _ZN7S8558C23v11Ev();
extern void _ZN7S8558C23v12Ev();
extern void _ZN7S8558C23v13Ev();
extern void _ZN7S8558C23v14Ev();
extern void _ZN7S8558C23v15Ev();
extern void _ZN7S8558C23v16Ev();
extern void _ZN7S8558C23v17Ev();
extern void _ZN7S8558C23v18Ev();
extern void _ZN7S8558C23v19Ev();
static  VTBL_ENTRY vtc_S8558C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8558C2[0]),
  (VTBL_ENTRY)&_ZN7S8558C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8558C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8558C23v11Ev,
  (VTBL_ENTRY)&_ZN7S8558C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8558C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8558C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8558C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8558C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8558C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8558C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8558C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S8558C2[];
extern  VTBL_ENTRY _ZTV7S8558C2[];
Class_Descriptor cd_S8558C2 = {  "S8558C2", // class name
  0,0,//no base classes
  &(vtc_S8558C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8558C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8558C2),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  S8558C1  : S8558C2 {
  ::S17885C12 s8558c1f0;
  virtual void  v1(); // _ZN7S8558C12v1Ev
  virtual void  v2(); // _ZN7S8558C12v2Ev
  virtual void  v3(); // _ZN7S8558C12v3Ev
  virtual void  v4(); // _ZN7S8558C12v4Ev
  virtual void  v5(); // _ZN7S8558C12v5Ev
  virtual void  v6(); // _ZN7S8558C12v6Ev
  virtual void  v7(); // _ZN7S8558C12v7Ev
  virtual void  v8(); // _ZN7S8558C12v8Ev
  virtual void  v9(); // _ZN7S8558C12v9Ev
  virtual void  v10(); // _ZN7S8558C13v10Ev
  ~S8558C1(); // tgen
  S8558C1(); // tgen
};
//SIG(1 S8558C1) C1{ BC2{ vd v11 v12 v13 v14 v15 v16 v17 v18 v19} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 FC3{ m Fp}}


void  S8558C1 ::v1(){vfunc_called(this, "_ZN7S8558C12v1Ev");}
void  S8558C1 ::v2(){vfunc_called(this, "_ZN7S8558C12v2Ev");}
void  S8558C1 ::v3(){vfunc_called(this, "_ZN7S8558C12v3Ev");}
void  S8558C1 ::v4(){vfunc_called(this, "_ZN7S8558C12v4Ev");}
void  S8558C1 ::v5(){vfunc_called(this, "_ZN7S8558C12v5Ev");}
void  S8558C1 ::v6(){vfunc_called(this, "_ZN7S8558C12v6Ev");}
void  S8558C1 ::v7(){vfunc_called(this, "_ZN7S8558C12v7Ev");}
void  S8558C1 ::v8(){vfunc_called(this, "_ZN7S8558C12v8Ev");}
void  S8558C1 ::v9(){vfunc_called(this, "_ZN7S8558C12v9Ev");}
void  S8558C1 ::v10(){vfunc_called(this, "_ZN7S8558C13v10Ev");}
S8558C1 ::~S8558C1(){ note_dtor("S8558C1", this);} // tgen
S8558C1 ::S8558C1(){ note_ctor("S8558C1", this);} // tgen

static void Test_S8558C1()
{
  extern Class_Descriptor cd_S8558C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S8558C1, buf);
    S8558C1 *dp, &lv = *(dp=new (buf) S8558C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S8558C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8558C1)");
    check_base_class_offset(lv, (S8558C2*), 0, "S8558C1");
    check_field_offset(lv, s8558c1f0, ABISELECT(8,4), "S8558C1.s8558c1f0");
    test_class_info(&lv, &cd_S8558C1);
    dp->~S8558C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8558C1(Test_S8558C1, "S8558C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S8558C1C1Ev();
extern void _ZN7S8558C1D1Ev();
Name_Map name_map_S8558C1[] = {
  NSPAIR(_ZN7S8558C1C1Ev),
  NSPAIR(_ZN7S8558C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8558C2;
extern VTBL_ENTRY _ZTI7S8558C2[];
extern  VTBL_ENTRY _ZTV7S8558C2[];
static Base_Class bases_S8558C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8558C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8558C1[];
extern void _ZN7S8558C1D1Ev();
extern void _ZN7S8558C1D0Ev();
extern void _ZN7S8558C23v11Ev();
extern void _ZN7S8558C23v12Ev();
extern void _ZN7S8558C23v13Ev();
extern void _ZN7S8558C23v14Ev();
extern void _ZN7S8558C23v15Ev();
extern void _ZN7S8558C23v16Ev();
extern void _ZN7S8558C23v17Ev();
extern void _ZN7S8558C23v18Ev();
extern void _ZN7S8558C23v19Ev();
extern void _ZN7S8558C12v1Ev();
extern void _ZN7S8558C12v2Ev();
extern void _ZN7S8558C12v3Ev();
extern void _ZN7S8558C12v4Ev();
extern void _ZN7S8558C12v5Ev();
extern void _ZN7S8558C12v6Ev();
extern void _ZN7S8558C12v7Ev();
extern void _ZN7S8558C12v8Ev();
extern void _ZN7S8558C12v9Ev();
extern void _ZN7S8558C13v10Ev();
static  VTBL_ENTRY vtc_S8558C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8558C1[0]),
  (VTBL_ENTRY)&_ZN7S8558C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8558C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8558C23v11Ev,
  (VTBL_ENTRY)&_ZN7S8558C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8558C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8558C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8558C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8558C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8558C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8558C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8558C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8558C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8558C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8558C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8558C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8558C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8558C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8558C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8558C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8558C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8558C13v10Ev,
};
extern VTBL_ENTRY _ZTI7S8558C1[];
extern  VTBL_ENTRY _ZTV7S8558C1[];
Class_Descriptor cd_S8558C1 = {  "S8558C1", // class name
  bases_S8558C1, 1,
  &(vtc_S8558C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S8558C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8558C1),23, //virtual function table var
  2, // 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  S10027C2  {
  void *s10027c2f0;
  int s10027c2f1;
  virtual  ~S10027C2(); // _ZN8S10027C2D1Ev
  virtual void  v6(); // _ZN8S10027C22v6Ev
  virtual void  v7(); // _ZN8S10027C22v7Ev
  virtual void  v8(); // _ZN8S10027C22v8Ev
  virtual void  v9(); // _ZN8S10027C22v9Ev
  virtual void  v10(); // _ZN8S10027C23v10Ev
  virtual void  v11(); // _ZN8S10027C23v11Ev
  virtual void  v12(); // _ZN8S10027C23v12Ev
  virtual void  v13(); // _ZN8S10027C23v13Ev
  virtual void  v14(); // _ZN8S10027C23v14Ev
  virtual void  v15(); // _ZN8S10027C23v15Ev
  S10027C2(); // tgen
};
//SIG(-1 S10027C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fp Fi}


 S10027C2 ::~S10027C2(){ note_dtor("S10027C2", this);}
void  S10027C2 ::v6(){vfunc_called(this, "_ZN8S10027C22v6Ev");}
void  S10027C2 ::v7(){vfunc_called(this, "_ZN8S10027C22v7Ev");}
void  S10027C2 ::v8(){vfunc_called(this, "_ZN8S10027C22v8Ev");}
void  S10027C2 ::v9(){vfunc_called(this, "_ZN8S10027C22v9Ev");}
void  S10027C2 ::v10(){vfunc_called(this, "_ZN8S10027C23v10Ev");}
void  S10027C2 ::v11(){vfunc_called(this, "_ZN8S10027C23v11Ev");}
void  S10027C2 ::v12(){vfunc_called(this, "_ZN8S10027C23v12Ev");}
void  S10027C2 ::v13(){vfunc_called(this, "_ZN8S10027C23v13Ev");}
void  S10027C2 ::v14(){vfunc_called(this, "_ZN8S10027C23v14Ev");}
void  S10027C2 ::v15(){vfunc_called(this, "_ZN8S10027C23v15Ev");}
S10027C2 ::S10027C2(){ note_ctor("S10027C2", this);} // tgen

static void Test_S10027C2()
{
  extern Class_Descriptor cd_S10027C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S10027C2, buf);
    S10027C2 *dp, &lv = *(dp=new (buf) S10027C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S10027C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10027C2)");
    check_field_offset(lv, s10027c2f0, ABISELECT(8,4), "S10027C2.s10027c2f0");
    check_field_offset(lv, s10027c2f1, ABISELECT(16,8), "S10027C2.s10027c2f1");
    test_class_info(&lv, &cd_S10027C2);
    dp->~S10027C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10027C2(Test_S10027C2, "S10027C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S10027C2C1Ev();
extern void _ZN8S10027C2D1Ev();
Name_Map name_map_S10027C2[] = {
  NSPAIR(_ZN8S10027C2C1Ev),
  NSPAIR(_ZN8S10027C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10027C2[];
extern void _ZN8S10027C2D1Ev();
extern void _ZN8S10027C2D0Ev();
extern void _ZN8S10027C22v6Ev();
extern void _ZN8S10027C22v7Ev();
extern void _ZN8S10027C22v8Ev();
extern void _ZN8S10027C22v9Ev();
extern void _ZN8S10027C23v10Ev();
extern void _ZN8S10027C23v11Ev();
extern void _ZN8S10027C23v12Ev();
extern void _ZN8S10027C23v13Ev();
extern void _ZN8S10027C23v14Ev();
extern void _ZN8S10027C23v15Ev();
static  VTBL_ENTRY vtc_S10027C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10027C2[0]),
  (VTBL_ENTRY)&_ZN8S10027C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10027C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10027C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10027C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10027C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10027C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10027C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10027C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10027C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10027C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10027C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10027C23v15Ev,
};
extern VTBL_ENTRY _ZTI8S10027C2[];
extern  VTBL_ENTRY _ZTV8S10027C2[];
Class_Descriptor cd_S10027C2 = {  "S10027C2", // class name
  0,0,//no base classes
  &(vtc_S10027C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S10027C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10027C2),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  S10027C3  {
  virtual  ~S10027C3(); // _ZN8S10027C3D1Ev
  virtual void  v16(); // _ZN8S10027C33v16Ev
  S10027C3(); // tgen
};
//SIG(-1 S10027C3) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN8S10027C3C1Ev();
extern void _ZN8S10027C3D1Ev();
Name_Map name_map_S10027C3[] = {
  NSPAIR(_ZN8S10027C3C1Ev),
  NSPAIR(_ZN8S10027C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10027C3[];
extern void _ZN8S10027C3D1Ev();
extern void _ZN8S10027C3D0Ev();
extern void _ZN8S10027C33v16Ev();
static  VTBL_ENTRY vtc_S10027C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10027C3[0]),
  (VTBL_ENTRY)&_ZN8S10027C3D1Ev,
  (VTBL_ENTRY)&_ZN8S10027C3D0Ev,
  (VTBL_ENTRY)&_ZN8S10027C33v16Ev,
};
extern VTBL_ENTRY _ZTI8S10027C3[];
extern  VTBL_ENTRY _ZTV8S10027C3[];
Class_Descriptor cd_S10027C3 = {  "S10027C3", // class name
  0,0,//no base classes
  &(vtc_S10027C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S10027C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10027C3),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  S10027C1  : S10027C2 , S10027C3 {
  void *s10027c1f0;
  virtual  ~S10027C1(); // _ZN8S10027C1D1Ev
  virtual void  v1(); // _ZN8S10027C12v1Ev
  virtual void  v2(); // _ZN8S10027C12v2Ev
  virtual void  v3(); // _ZN8S10027C12v3Ev
  virtual void  v4(); // _ZN8S10027C12v4Ev
  virtual void  v5(); // _ZN8S10027C12v5Ev
  S10027C1(); // tgen
};
//SIG(1 S10027C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp Fi} BC3{ vd v16} vd v1 v2 v3 v4 v5 Fp}


 S10027C1 ::~S10027C1(){ note_dtor("S10027C1", this);}
void  S10027C1 ::v1(){vfunc_called(this, "_ZN8S10027C12v1Ev");}
void  S10027C1 ::v2(){vfunc_called(this, "_ZN8S10027C12v2Ev");}
void  S10027C1 ::v3(){vfunc_called(this, "_ZN8S10027C12v3Ev");}
void  S10027C1 ::v4(){vfunc_called(this, "_ZN8S10027C12v4Ev");}
void  S10027C1 ::v5(){vfunc_called(this, "_ZN8S10027C12v5Ev");}
S10027C1 ::S10027C1(){ note_ctor("S10027C1", this);} // tgen

static void Test_S10027C1()
{
  extern Class_Descriptor cd_S10027C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S10027C1, buf);
    S10027C1 *dp, &lv = *(dp=new (buf) S10027C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S10027C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10027C1)");
    check_base_class_offset(lv, (S10027C2*), 0, "S10027C1");
    check_base_class_offset(lv, (S10027C3*), ABISELECT(24,12), "S10027C1");
    check_field_offset(lv, s10027c1f0, ABISELECT(32,16), "S10027C1.s10027c1f0");
    test_class_info(&lv, &cd_S10027C1);
    dp->~S10027C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10027C1(Test_S10027C1, "S10027C1", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S10027C1C1Ev();
extern void _ZN8S10027C1D1Ev();
Name_Map name_map_S10027C1[] = {
  NSPAIR(_ZN8S10027C1C1Ev),
  NSPAIR(_ZN8S10027C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10027C2;
extern VTBL_ENTRY _ZTI8S10027C2[];
extern  VTBL_ENTRY _ZTV8S10027C2[];
extern Class_Descriptor cd_S10027C3;
extern VTBL_ENTRY _ZTI8S10027C3[];
extern  VTBL_ENTRY _ZTV8S10027C3[];
static Base_Class bases_S10027C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10027C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10027C3,    ABISELECT(24,12), //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
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10027C1[];
extern void _ZN8S10027C1D1Ev();
extern void _ZN8S10027C1D0Ev();
extern void _ZN8S10027C22v6Ev();
extern void _ZN8S10027C22v7Ev();
extern void _ZN8S10027C22v8Ev();
extern void _ZN8S10027C22v9Ev();
extern void _ZN8S10027C23v10Ev();
extern void _ZN8S10027C23v11Ev();
extern void _ZN8S10027C23v12Ev();
extern void _ZN8S10027C23v13Ev();
extern void _ZN8S10027C23v14Ev();
extern void _ZN8S10027C23v15Ev();
extern void _ZN8S10027C12v1Ev();
extern void _ZN8S10027C12v2Ev();
extern void _ZN8S10027C12v3Ev();
extern void _ZN8S10027C12v4Ev();
extern void _ZN8S10027C12v5Ev();
extern void ABISELECT(_ZThn24_N8S10027C1D1Ev,_ZThn12_N8S10027C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S10027C1D0Ev,_ZThn12_N8S10027C1D0Ev)();
extern void _ZN8S10027C33v16Ev();
static  VTBL_ENTRY vtc_S10027C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10027C1[0]),
  (VTBL_ENTRY)&_ZN8S10027C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10027C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10027C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10027C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10027C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10027C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10027C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10027C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10027C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10027C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10027C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10027C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10027C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10027C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10027C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10027C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10027C12v5Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S10027C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S10027C1D1Ev,_ZThn12_N8S10027C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S10027C1D0Ev,_ZThn12_N8S10027C1D0Ev),
  (VTBL_ENTRY)&_ZN8S10027C33v16Ev,
};
extern VTBL_ENTRY _ZTI8S10027C1[];
extern  VTBL_ENTRY _ZTV8S10027C1[];
Class_Descriptor cd_S10027C1 = {  "S10027C1", // class name
  bases_S10027C1, 2,
  &(vtc_S10027C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S10027C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S10027C1),24, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10028C2  {
  void *s10028c2f0;
  int s10028c2f1;
  virtual  ~S10028C2(); // _ZN8S10028C2D1Ev
  virtual void  v6(); // _ZN8S10028C22v6Ev
  virtual void  v7(); // _ZN8S10028C22v7Ev
  virtual void  v8(); // _ZN8S10028C22v8Ev
  virtual void  v9(); // _ZN8S10028C22v9Ev
  virtual void  v10(); // _ZN8S10028C23v10Ev
  virtual void  v11(); // _ZN8S10028C23v11Ev
  virtual void  v12(); // _ZN8S10028C23v12Ev
  virtual void  v13(); // _ZN8S10028C23v13Ev
  virtual void  v14(); // _ZN8S10028C23v14Ev
  virtual void  v15(); // _ZN8S10028C23v15Ev
  S10028C2(); // tgen
};
//SIG(-1 S10028C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fp Fi}


 S10028C2 ::~S10028C2(){ note_dtor("S10028C2", this);}
void  S10028C2 ::v6(){vfunc_called(this, "_ZN8S10028C22v6Ev");}
void  S10028C2 ::v7(){vfunc_called(this, "_ZN8S10028C22v7Ev");}
void  S10028C2 ::v8(){vfunc_called(this, "_ZN8S10028C22v8Ev");}
void  S10028C2 ::v9(){vfunc_called(this, "_ZN8S10028C22v9Ev");}
void  S10028C2 ::v10(){vfunc_called(this, "_ZN8S10028C23v10Ev");}
void  S10028C2 ::v11(){vfunc_called(this, "_ZN8S10028C23v11Ev");}
void  S10028C2 ::v12(){vfunc_called(this, "_ZN8S10028C23v12Ev");}
void  S10028C2 ::v13(){vfunc_called(this, "_ZN8S10028C23v13Ev");}
void  S10028C2 ::v14(){vfunc_called(this, "_ZN8S10028C23v14Ev");}
void  S10028C2 ::v15(){vfunc_called(this, "_ZN8S10028C23v15Ev");}
S10028C2 ::S10028C2(){ note_ctor("S10028C2", this);} // tgen

static void Test_S10028C2()
{
  extern Class_Descriptor cd_S10028C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S10028C2, buf);
    S10028C2 *dp, &lv = *(dp=new (buf) S10028C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S10028C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10028C2)");
    check_field_offset(lv, s10028c2f0, ABISELECT(8,4), "S10028C2.s10028c2f0");
    check_field_offset(lv, s10028c2f1, ABISELECT(16,8), "S10028C2.s10028c2f1");
    test_class_info(&lv, &cd_S10028C2);
    dp->~S10028C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10028C2(Test_S10028C2, "S10028C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S10028C2C1Ev();
extern void _ZN8S10028C2D1Ev();
Name_Map name_map_S10028C2[] = {
  NSPAIR(_ZN8S10028C2C1Ev),
  NSPAIR(_ZN8S10028C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10028C2[];
extern void _ZN8S10028C2D1Ev();
extern void _ZN8S10028C2D0Ev();
extern void _ZN8S10028C22v6Ev();
extern void _ZN8S10028C22v7Ev();
extern void _ZN8S10028C22v8Ev();
extern void _ZN8S10028C22v9Ev();
extern void _ZN8S10028C23v10Ev();
extern void _ZN8S10028C23v11Ev();
extern void _ZN8S10028C23v12Ev();
extern void _ZN8S10028C23v13Ev();
extern void _ZN8S10028C23v14Ev();
extern void _ZN8S10028C23v15Ev();
static  VTBL_ENTRY vtc_S10028C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10028C2[0]),
  (VTBL_ENTRY)&_ZN8S10028C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10028C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10028C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10028C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10028C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10028C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10028C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10028C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10028C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10028C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10028C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10028C23v15Ev,
};
extern VTBL_ENTRY _ZTI8S10028C2[];
extern  VTBL_ENTRY _ZTV8S10028C2[];
Class_Descriptor cd_S10028C2 = {  "S10028C2", // class name
  0,0,//no base classes
  &(vtc_S10028C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S10028C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10028C2),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  S10028C3  {
  virtual  ~S10028C3(); // _ZN8S10028C3D1Ev
  virtual void  v16(); // _ZN8S10028C33v16Ev
  S10028C3(); // tgen
};
//SIG(-1 S10028C3) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN8S10028C3C1Ev();
extern void _ZN8S10028C3D1Ev();
Name_Map name_map_S10028C3[] = {
  NSPAIR(_ZN8S10028C3C1Ev),
  NSPAIR(_ZN8S10028C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10028C3[];
extern void _ZN8S10028C3D1Ev();
extern void _ZN8S10028C3D0Ev();
extern void _ZN8S10028C33v16Ev();
static  VTBL_ENTRY vtc_S10028C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10028C3[0]),
  (VTBL_ENTRY)&_ZN8S10028C3D1Ev,
  (VTBL_ENTRY)&_ZN8S10028C3D0Ev,
  (VTBL_ENTRY)&_ZN8S10028C33v16Ev,
};
extern VTBL_ENTRY _ZTI8S10028C3[];
extern  VTBL_ENTRY _ZTV8S10028C3[];
Class_Descriptor cd_S10028C3 = {  "S10028C3", // class name
  0,0,//no base classes
  &(vtc_S10028C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S10028C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10028C3),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  S10028C1  : S10028C2 , S10028C3 {
  virtual  ~S10028C1(); // _ZN8S10028C1D1Ev
  virtual void  v1(); // _ZN8S10028C12v1Ev
  virtual void  v2(); // _ZN8S10028C12v2Ev
  virtual void  v3(); // _ZN8S10028C12v3Ev
  virtual void  v4(); // _ZN8S10028C12v4Ev
  virtual void  v5(); // _ZN8S10028C12v5Ev
  S10028C1(); // tgen
};
//SIG(1 S10028C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp Fi} BC3{ vd v16} vd v1 v2 v3 v4 v5}


 S10028C1 ::~S10028C1(){ note_dtor("S10028C1", this);}
void  S10028C1 ::v1(){vfunc_called(this, "_ZN8S10028C12v1Ev");}
void  S10028C1 ::v2(){vfunc_called(this, "_ZN8S10028C12v2Ev");}
void  S10028C1 ::v3(){vfunc_called(this, "_ZN8S10028C12v3Ev");}
void  S10028C1 ::v4(){vfunc_called(this, "_ZN8S10028C12v4Ev");}
void  S10028C1 ::v5(){vfunc_called(this, "_ZN8S10028C12v5Ev");}
S10028C1 ::S10028C1(){ note_ctor("S10028C1", this);} // tgen

static void Test_S10028C1()
{
  extern Class_Descriptor cd_S10028C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S10028C1, buf);
    S10028C1 *dp, &lv = *(dp=new (buf) S10028C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S10028C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10028C1)");
    check_base_class_offset(lv, (S10028C2*), 0, "S10028C1");
    check_base_class_offset(lv, (S10028C3*), ABISELECT(24,12), "S10028C1");
    test_class_info(&lv, &cd_S10028C1);
    dp->~S10028C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10028C1(Test_S10028C1, "S10028C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S10028C1C1Ev();
extern void _ZN8S10028C1D1Ev();
Name_Map name_map_S10028C1[] = {
  NSPAIR(_ZN8S10028C1C1Ev),
  NSPAIR(_ZN8S10028C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10028C2;
extern VTBL_ENTRY _ZTI8S10028C2[];
extern  VTBL_ENTRY _ZTV8S10028C2[];
extern Class_Descriptor cd_S10028C3;
extern VTBL_ENTRY _ZTI8S10028C3[];
extern  VTBL_ENTRY _ZTV8S10028C3[];
static Base_Class bases_S10028C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10028C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10028C3,    ABISELECT(24,12), //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
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10028C1[];
extern void _ZN8S10028C1D1Ev();
extern void _ZN8S10028C1D0Ev();
extern void _ZN8S10028C22v6Ev();
extern void _ZN8S10028C22v7Ev();
extern void _ZN8S10028C22v8Ev();
extern void _ZN8S10028C22v9Ev();
extern void _ZN8S10028C23v10Ev();
extern void _ZN8S10028C23v11Ev();
extern void _ZN8S10028C23v12Ev();
extern void _ZN8S10028C23v13Ev();
extern void _ZN8S10028C23v14Ev();
extern void _ZN8S10028C23v15Ev();
extern void _ZN8S10028C12v1Ev();
extern void _ZN8S10028C12v2Ev();
extern void _ZN8S10028C12v3Ev();
extern void _ZN8S10028C12v4Ev();
extern void _ZN8S10028C12v5Ev();
extern void ABISELECT(_ZThn24_N8S10028C1D1Ev,_ZThn12_N8S10028C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S10028C1D0Ev,_ZThn12_N8S10028C1D0Ev)();
extern void _ZN8S10028C33v16Ev();
static  VTBL_ENTRY vtc_S10028C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10028C1[0]),
  (VTBL_ENTRY)&_ZN8S10028C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10028C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10028C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10028C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10028C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10028C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10028C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10028C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10028C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10028C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10028C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10028C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10028C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10028C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10028C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10028C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10028C12v5Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S10028C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S10028C1D1Ev,_ZThn12_N8S10028C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S10028C1D0Ev,_ZThn12_N8S10028C1D0Ev),
  (VTBL_ENTRY)&_ZN8S10028C33v16Ev,
};
extern VTBL_ENTRY _ZTI8S10028C1[];
extern  VTBL_ENTRY _ZTV8S10028C1[];
Class_Descriptor cd_S10028C1 = {  "S10028C1", // class name
  bases_S10028C1, 2,
  &(vtc_S10028C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S10028C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S10028C1),24, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8559C2  {
  virtual  ~S8559C2(); // _ZN7S8559C2D1Ev
  virtual void  v11(); // _ZN7S8559C23v11Ev
  virtual void  v12(); // _ZN7S8559C23v12Ev
  virtual void  v13(); // _ZN7S8559C23v13Ev
  virtual void  v14(); // _ZN7S8559C23v14Ev
  virtual void  v15(); // _ZN7S8559C23v15Ev
  virtual void  v16(); // _ZN7S8559C23v16Ev
  virtual void  v17(); // _ZN7S8559C23v17Ev
  virtual void  v18(); // _ZN7S8559C23v18Ev
  virtual void  v19(); // _ZN7S8559C23v19Ev
  S8559C2(); // tgen
};
//SIG(-1 S8559C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S8559C2 ::~S8559C2(){ note_dtor("S8559C2", this);}
void  S8559C2 ::v11(){vfunc_called(this, "_ZN7S8559C23v11Ev");}
void  S8559C2 ::v12(){vfunc_called(this, "_ZN7S8559C23v12Ev");}
void  S8559C2 ::v13(){vfunc_called(this, "_ZN7S8559C23v13Ev");}
void  S8559C2 ::v14(){vfunc_called(this, "_ZN7S8559C23v14Ev");}
void  S8559C2 ::v15(){vfunc_called(this, "_ZN7S8559C23v15Ev");}
void  S8559C2 ::v16(){vfunc_called(this, "_ZN7S8559C23v16Ev");}
void  S8559C2 ::v17(){vfunc_called(this, "_ZN7S8559C23v17Ev");}
void  S8559C2 ::v18(){vfunc_called(this, "_ZN7S8559C23v18Ev");}
void  S8559C2 ::v19(){vfunc_called(this, "_ZN7S8559C23v19Ev");}
S8559C2 ::S8559C2(){ note_ctor("S8559C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S8559C2C1Ev();
extern void _ZN7S8559C2D1Ev();
Name_Map name_map_S8559C2[] = {
  NSPAIR(_ZN7S8559C2C1Ev),
  NSPAIR(_ZN7S8559C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8559C2[];
extern void _ZN7S8559C2D1Ev();
extern void _ZN7S8559C2D0Ev();
extern void _ZN7S8559C23v11Ev();
extern void _ZN7S8559C23v12Ev();
extern void _ZN7S8559C23v13Ev();
extern void _ZN7S8559C23v14Ev();
extern void _ZN7S8559C23v15Ev();
extern void _ZN7S8559C23v16Ev();
extern void _ZN7S8559C23v17Ev();
extern void _ZN7S8559C23v18Ev();
extern void _ZN7S8559C23v19Ev();
static  VTBL_ENTRY vtc_S8559C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8559C2[0]),
  (VTBL_ENTRY)&_ZN7S8559C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8559C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8559C23v11Ev,
  (VTBL_ENTRY)&_ZN7S8559C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8559C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8559C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8559C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8559C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8559C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8559C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8559C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S8559C2[];
extern  VTBL_ENTRY _ZTV7S8559C2[];
Class_Descriptor cd_S8559C2 = {  "S8559C2", // class name
  0,0,//no base classes
  &(vtc_S8559C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8559C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8559C2),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  S8559C1  : S8559C2 {
  virtual  ~S8559C1(); // _ZN7S8559C1D1Ev
  virtual void  v1(); // _ZN7S8559C12v1Ev
  virtual void  v2(); // _ZN7S8559C12v2Ev
  virtual void  v3(); // _ZN7S8559C12v3Ev
  virtual void  v4(); // _ZN7S8559C12v4Ev
  virtual void  v5(); // _ZN7S8559C12v5Ev
  virtual void  v6(); // _ZN7S8559C12v6Ev
  virtual void  v7(); // _ZN7S8559C12v7Ev
  virtual void  v8(); // _ZN7S8559C12v8Ev
  virtual void  v9(); // _ZN7S8559C12v9Ev
  virtual void  v10(); // _ZN7S8559C13v10Ev
  S8559C1(); // tgen
};
//SIG(1 S8559C1) C1{ BC2{ vd v11 v12 v13 v14 v15 v16 v17 v18 v19} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10}


 S8559C1 ::~S8559C1(){ note_dtor("S8559C1", this);}
void  S8559C1 ::v1(){vfunc_called(this, "_ZN7S8559C12v1Ev");}
void  S8559C1 ::v2(){vfunc_called(this, "_ZN7S8559C12v2Ev");}
void  S8559C1 ::v3(){vfunc_called(this, "_ZN7S8559C12v3Ev");}
void  S8559C1 ::v4(){vfunc_called(this, "_ZN7S8559C12v4Ev");}
void  S8559C1 ::v5(){vfunc_called(this, "_ZN7S8559C12v5Ev");}
void  S8559C1 ::v6(){vfunc_called(this, "_ZN7S8559C12v6Ev");}
void  S8559C1 ::v7(){vfunc_called(this, "_ZN7S8559C12v7Ev");}
void  S8559C1 ::v8(){vfunc_called(this, "_ZN7S8559C12v8Ev");}
void  S8559C1 ::v9(){vfunc_called(this, "_ZN7S8559C12v9Ev");}
void  S8559C1 ::v10(){vfunc_called(this, "_ZN7S8559C13v10Ev");}
S8559C1 ::S8559C1(){ note_ctor("S8559C1", this);} // tgen

static void Test_S8559C1()
{
  extern Class_Descriptor cd_S8559C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8559C1, buf);
    S8559C1 *dp, &lv = *(dp=new (buf) S8559C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8559C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8559C1)");
    check_base_class_offset(lv, (S8559C2*), 0, "S8559C1");
    test_class_info(&lv, &cd_S8559C1);
    dp->~S8559C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8559C1(Test_S8559C1, "S8559C1", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8559C1C1Ev();
extern void _ZN7S8559C1D1Ev();
Name_Map name_map_S8559C1[] = {
  NSPAIR(_ZN7S8559C1C1Ev),
  NSPAIR(_ZN7S8559C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8559C2;
extern VTBL_ENTRY _ZTI7S8559C2[];
extern  VTBL_ENTRY _ZTV7S8559C2[];
static Base_Class bases_S8559C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8559C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8559C1[];
extern void _ZN7S8559C1D1Ev();
extern void _ZN7S8559C1D0Ev();
extern void _ZN7S8559C23v11Ev();
extern void _ZN7S8559C23v12Ev();
extern void _ZN7S8559C23v13Ev();
extern void _ZN7S8559C23v14Ev();
extern void _ZN7S8559C23v15Ev();
extern void _ZN7S8559C23v16Ev();
extern void _ZN7S8559C23v17Ev();
extern void _ZN7S8559C23v18Ev();
extern void _ZN7S8559C23v19Ev();
extern void _ZN7S8559C12v1Ev();
extern void _ZN7S8559C12v2Ev();
extern void _ZN7S8559C12v3Ev();
extern void _ZN7S8559C12v4Ev();
extern void _ZN7S8559C12v5Ev();
extern void _ZN7S8559C12v6Ev();
extern void _ZN7S8559C12v7Ev();
extern void _ZN7S8559C12v8Ev();
extern void _ZN7S8559C12v9Ev();
extern void _ZN7S8559C13v10Ev();
static  VTBL_ENTRY vtc_S8559C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8559C1[0]),
  (VTBL_ENTRY)&_ZN7S8559C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8559C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8559C23v11Ev,
  (VTBL_ENTRY)&_ZN7S8559C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8559C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8559C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8559C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8559C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8559C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8559C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8559C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8559C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8559C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8559C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8559C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8559C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8559C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8559C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8559C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8559C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8559C13v10Ev,
};
extern VTBL_ENTRY _ZTI7S8559C1[];
extern  VTBL_ENTRY _ZTV7S8559C1[];
Class_Descriptor cd_S8559C1 = {  "S8559C1", // class name
  bases_S8559C1, 1,
  &(vtc_S8559C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8559C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8559C1),23, //virtual function table var
  2, // 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  S995C3  : S28C13_nt {
};
//SIG(-1 S995C3) C1{ BC2{ m Fi}}



static void Test_S995C3()
{
  extern Class_Descriptor cd_S995C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S995C3, buf);
    S995C3 &lv = *(new (buf) S995C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S995C3)");
    check2(__alignof__(lv), 4, "__alignof__(S995C3)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S995C3");
    test_class_info(&lv, &cd_S995C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS995C3(Test_S995C3, "S995C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S995C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S995C3 = {  "S995C3", // class name
  bases_S995C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S995C2_nt  : S995C3 {
  unsigned int s995c2f0:1;
  unsigned int s995c2f1:1;
  int s995c2f2:7;
  unsigned int s995c2f3:1;
  unsigned int s995c2f4:1;
  int s995c2f5:2;
  int s995c2f6:5;
};
//SIG(-1 S995C2_nt) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5}



//skip512 S995C2_nt

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S995C3;
static Base_Class bases_S995C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S995C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S995C2_nt = {  "S995C2_nt", // class name
  bases_S995C2_nt, 2,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S995C1  : S995C2_nt {
  int s995c1f0;
  ::S17885C12 s995c1f1;
  ::S17885C6_nt s995c1f2;
};
//SIG(1 S995C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5} Fi FC5{ m Fp} FC6{ m Fp}}



static void Test_S995C1()
{
  extern Class_Descriptor cd_S995C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S995C1, buf);
    S995C1 &lv = *(new (buf) S995C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S995C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S995C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S995C3*)(S995C2_nt*), 0, "S995C1");
    check_base_class_offset(lv, (S995C3*)(S995C2_nt*), 0, "S995C1");
    check_base_class_offset(lv, (S995C2_nt*), 0, "S995C1");
    check_field_offset(lv, s995c1f0, 8, "S995C1.s995c1f0");
    check_field_offset(lv, s995c1f1, ABISELECT(16,12), "S995C1.s995c1f1");
    check_field_offset(lv, s995c1f2, ABISELECT(24,16), "S995C1.s995c1f2");
    test_class_info(&lv, &cd_S995C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS995C1(Test_S995C1, "S995C1", ABISELECT(32,20));

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S995C3;
extern Class_Descriptor cd_S995C2_nt;
static Base_Class bases_S995C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S995C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S995C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S995C1 = {  "S995C1", // class name
  bases_S995C1, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(32,20), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3875C2_nt  : S6441C8_nt {
  virtual  ~S3875C2_nt(); // _ZN10S3875C2_ntD1Ev
  virtual void  v6(); // _ZN10S3875C2_nt2v6Ev
  virtual void  v7(); // _ZN10S3875C2_nt2v7Ev
  virtual void  v8(); // _ZN10S3875C2_nt2v8Ev
  virtual void  v9(); // _ZN10S3875C2_nt2v9Ev
  virtual void  v10(); // _ZN10S3875C2_nt3v10Ev
  virtual void  v11(); // _ZN10S3875C2_nt3v11Ev
  virtual void  v12(); // _ZN10S3875C2_nt3v12Ev
  S3875C2_nt(); // tgen
};
//SIG(-1 S3875C2_nt) C1{ BC2{ vd m Fi} vd v1 v2 v3 v4 v5 v6 v7}


 S3875C2_nt ::~S3875C2_nt(){ note_dtor("S3875C2_nt", this);}
void  S3875C2_nt ::v6(){vfunc_called(this, "_ZN10S3875C2_nt2v6Ev");}
void  S3875C2_nt ::v7(){vfunc_called(this, "_ZN10S3875C2_nt2v7Ev");}
void  S3875C2_nt ::v8(){vfunc_called(this, "_ZN10S3875C2_nt2v8Ev");}
void  S3875C2_nt ::v9(){vfunc_called(this, "_ZN10S3875C2_nt2v9Ev");}
void  S3875C2_nt ::v10(){vfunc_called(this, "_ZN10S3875C2_nt3v10Ev");}
void  S3875C2_nt ::v11(){vfunc_called(this, "_ZN10S3875C2_nt3v11Ev");}
void  S3875C2_nt ::v12(){vfunc_called(this, "_ZN10S3875C2_nt3v12Ev");}
S3875C2_nt ::S3875C2_nt(){ note_ctor("S3875C2_nt", this);} // tgen

//skip512 S3875C2_nt

#else // __cplusplus

extern void _ZN10S3875C2_ntC1Ev();
extern void _ZN10S3875C2_ntD1Ev();
Name_Map name_map_S3875C2_nt[] = {
  NSPAIR(_ZN10S3875C2_ntC1Ev),
  NSPAIR(_ZN10S3875C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6441C8_nt;
extern VTBL_ENTRY _ZTI10S6441C8_nt[];
extern  VTBL_ENTRY _ZTV10S6441C8_nt[];
static Base_Class bases_S3875C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6441C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S3875C2_nt[];
extern void _ZN10S3875C2_ntD1Ev();
extern void _ZN10S3875C2_ntD0Ev();
extern void _ZN10S3875C2_nt2v6Ev();
extern void _ZN10S3875C2_nt2v7Ev();
extern void _ZN10S3875C2_nt2v8Ev();
extern void _ZN10S3875C2_nt2v9Ev();
extern void _ZN10S3875C2_nt3v10Ev();
extern void _ZN10S3875C2_nt3v11Ev();
extern void _ZN10S3875C2_nt3v12Ev();
static  VTBL_ENTRY vtc_S3875C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3875C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S3875C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3875C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3875C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S3875C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S3875C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3875C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3875C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3875C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3875C2_nt3v12Ev,
};
extern VTBL_ENTRY _ZTI10S3875C2_nt[];
VTBL_ENTRY *P__ZTI10S3875C2_nt = _ZTI10S3875C2_nt; 
extern  VTBL_ENTRY _ZTV10S3875C2_nt[];
Class_Descriptor cd_S3875C2_nt = {  "S3875C2_nt", // class name
  bases_S3875C2_nt, 1,
  &(vtc_S3875C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S3875C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S3875C2_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  S3875C1  : S3875C2_nt {
  ::S17885C12 s3875c1f0;
  ::S17885C12 s3875c1f1;
  int s3875c1f2;
  virtual void  v1(); // _ZN7S3875C12v1Ev
  virtual void  v2(); // _ZN7S3875C12v2Ev
  virtual void  v3(); // _ZN7S3875C12v3Ev
  virtual void  v4(); // _ZN7S3875C12v4Ev
  virtual void  v5(); // _ZN7S3875C12v5Ev
  ~S3875C1(); // tgen
  S3875C1(); // tgen
};
//SIG(1 S3875C1) C1{ BC2{ BC3{ vd m Fi} vd v6 v7 v8 v9 v10 v11 v12} v1 v2 v3 v4 v5 FC4{ m Fp} FC4 Fi}


void  S3875C1 ::v1(){vfunc_called(this, "_ZN7S3875C12v1Ev");}
void  S3875C1 ::v2(){vfunc_called(this, "_ZN7S3875C12v2Ev");}
void  S3875C1 ::v3(){vfunc_called(this, "_ZN7S3875C12v3Ev");}
void  S3875C1 ::v4(){vfunc_called(this, "_ZN7S3875C12v4Ev");}
void  S3875C1 ::v5(){vfunc_called(this, "_ZN7S3875C12v5Ev");}
S3875C1 ::~S3875C1(){ note_dtor("S3875C1", this);} // tgen
S3875C1 ::S3875C1(){ note_ctor("S3875C1", this);} // tgen

static void Test_S3875C1()
{
  extern Class_Descriptor cd_S3875C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S3875C1, buf);
    S3875C1 *dp, &lv = *(dp=new (buf) S3875C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S3875C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3875C1)");
    check_base_class_offset(lv, (S6441C8_nt*)(S3875C2_nt*), 0, "S3875C1");
    check_base_class_offset(lv, (S3875C2_nt*), 0, "S3875C1");
    check_field_offset(lv, s3875c1f0, ABISELECT(16,8), "S3875C1.s3875c1f0");
    check_field_offset(lv, s3875c1f1, ABISELECT(24,12), "S3875C1.s3875c1f1");
    check_field_offset(lv, s3875c1f2, ABISELECT(32,16), "S3875C1.s3875c1f2");
    test_class_info(&lv, &cd_S3875C1);
    dp->~S3875C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3875C1(Test_S3875C1, "S3875C1", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S3875C1C1Ev();
extern void _ZN7S3875C1D1Ev();
Name_Map name_map_S3875C1[] = {
  NSPAIR(_ZN7S3875C1C1Ev),
  NSPAIR(_ZN7S3875C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6441C8_nt;
extern VTBL_ENTRY _ZTI10S6441C8_nt[];
extern  VTBL_ENTRY _ZTV10S6441C8_nt[];
extern Class_Descriptor cd_S3875C2_nt;
extern VTBL_ENTRY _ZTI10S3875C2_nt[];
extern  VTBL_ENTRY _ZTV10S3875C2_nt[];
static Base_Class bases_S3875C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6441C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3875C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3875C1[];
extern void _ZN7S3875C1D1Ev();
extern void _ZN7S3875C1D0Ev();
extern void _ZN10S3875C2_nt2v6Ev();
extern void _ZN10S3875C2_nt2v7Ev();
extern void _ZN10S3875C2_nt2v8Ev();
extern void _ZN10S3875C2_nt2v9Ev();
extern void _ZN10S3875C2_nt3v10Ev();
extern void _ZN10S3875C2_nt3v11Ev();
extern void _ZN10S3875C2_nt3v12Ev();
extern void _ZN7S3875C12v1Ev();
extern void _ZN7S3875C12v2Ev();
extern void _ZN7S3875C12v3Ev();
extern void _ZN7S3875C12v4Ev();
extern void _ZN7S3875C12v5Ev();
static  VTBL_ENTRY vtc_S3875C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3875C1[0]),
  (VTBL_ENTRY)&_ZN7S3875C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3875C1D0Ev,
  (VTBL_ENTRY)&_ZN10S3875C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S3875C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S3875C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3875C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3875C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3875C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3875C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3875C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3875C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3875C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3875C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3875C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S3875C1[];
extern  VTBL_ENTRY _ZTV7S3875C1[];
Class_Descriptor cd_S3875C1 = {  "S3875C1", // class name
  bases_S3875C1, 2,
  &(vtc_S3875C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S3875C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3875C1),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  S13733C1  {
  __tsi64 s13733c1f0;
  ::S9252C5 s13733c1f1;
};
//SIG(1 S13733C1) C1{ FL FC2{ m FC3{ m Fp Fi[2] FC4{ m}} FC3 Fc[3] FC5{ m Fi[2]} FC6{ m Fp Fi FC4}}}



static void Test_S13733C1()
{
  {
    init_simple_test("S13733C1");
    S13733C1 lv;
    check2(sizeof(lv), ABISELECT(88,64), "sizeof(S13733C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13733C1)");
    check_field_offset(lv, s13733c1f0, 0, "S13733C1.s13733c1f0");
    check_field_offset(lv, s13733c1f1, 8, "S13733C1.s13733c1f1");
  }
}
static Arrange_To_Call_Me vS13733C1(Test_S13733C1, "S13733C1", ABISELECT(88,64));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10151C2  {
  virtual  ~S10151C2(); // _ZN8S10151C2D1Ev
  virtual void  v7(); // _ZN8S10151C22v7Ev
  virtual void  v8(); // _ZN8S10151C22v8Ev
  virtual void  v9(); // _ZN8S10151C22v9Ev
  virtual void  v10(); // _ZN8S10151C23v10Ev
  virtual void  v11(); // _ZN8S10151C23v11Ev
  virtual void  v12(); // _ZN8S10151C23v12Ev
  virtual void  v13(); // _ZN8S10151C23v13Ev
  virtual void  v14(); // _ZN8S10151C23v14Ev
  virtual void  v15(); // _ZN8S10151C23v15Ev
  S10151C2(); // tgen
};
//SIG(-1 S10151C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S10151C2 ::~S10151C2(){ note_dtor("S10151C2", this);}
void  S10151C2 ::v7(){vfunc_called(this, "_ZN8S10151C22v7Ev");}
void  S10151C2 ::v8(){vfunc_called(this, "_ZN8S10151C22v8Ev");}
void  S10151C2 ::v9(){vfunc_called(this, "_ZN8S10151C22v9Ev");}
void  S10151C2 ::v10(){vfunc_called(this, "_ZN8S10151C23v10Ev");}
void  S10151C2 ::v11(){vfunc_called(this, "_ZN8S10151C23v11Ev");}
void  S10151C2 ::v12(){vfunc_called(this, "_ZN8S10151C23v12Ev");}
void  S10151C2 ::v13(){vfunc_called(this, "_ZN8S10151C23v13Ev");}
void  S10151C2 ::v14(){vfunc_called(this, "_ZN8S10151C23v14Ev");}
void  S10151C2 ::v15(){vfunc_called(this, "_ZN8S10151C23v15Ev");}
S10151C2 ::S10151C2(){ note_ctor("S10151C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S10151C2C1Ev();
extern void _ZN8S10151C2D1Ev();
Name_Map name_map_S10151C2[] = {
  NSPAIR(_ZN8S10151C2C1Ev),
  NSPAIR(_ZN8S10151C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10151C2[];
extern void _ZN8S10151C2D1Ev();
extern void _ZN8S10151C2D0Ev();
extern void _ZN8S10151C22v7Ev();
extern void _ZN8S10151C22v8Ev();
extern void _ZN8S10151C22v9Ev();
extern void _ZN8S10151C23v10Ev();
extern void _ZN8S10151C23v11Ev();
extern void _ZN8S10151C23v12Ev();
extern void _ZN8S10151C23v13Ev();
extern void _ZN8S10151C23v14Ev();
extern void _ZN8S10151C23v15Ev();
static  VTBL_ENTRY vtc_S10151C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10151C2[0]),
  (VTBL_ENTRY)&_ZN8S10151C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10151C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10151C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10151C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10151C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10151C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10151C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10151C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10151C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10151C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10151C23v15Ev,
};
extern VTBL_ENTRY _ZTI8S10151C2[];
extern  VTBL_ENTRY _ZTV8S10151C2[];
Class_Descriptor cd_S10151C2 = {  "S10151C2", // class name
  0,0,//no base classes
  &(vtc_S10151C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S10151C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10151C2),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  S10151C1  : S10151C2 {
  void *s10151c1f0;
  int s10151c1f1;
  void *s10151c1f2[3];
  virtual  ~S10151C1(); // _ZN8S10151C1D1Ev
  virtual void  v1(); // _ZN8S10151C12v1Ev
  virtual void  v2(); // _ZN8S10151C12v2Ev
  virtual void  v3(); // _ZN8S10151C12v3Ev
  virtual void  v4(); // _ZN8S10151C12v4Ev
  virtual void  v5(); // _ZN8S10151C12v5Ev
  virtual void  v6(); // _ZN8S10151C12v6Ev
  S10151C1(); // tgen
};
//SIG(1 S10151C1) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 v13 v14 v15} vd v1 v2 v3 v4 v5 v6 Fp Fi Fp[3]}


 S10151C1 ::~S10151C1(){ note_dtor("S10151C1", this);}
void  S10151C1 ::v1(){vfunc_called(this, "_ZN8S10151C12v1Ev");}
void  S10151C1 ::v2(){vfunc_called(this, "_ZN8S10151C12v2Ev");}
void  S10151C1 ::v3(){vfunc_called(this, "_ZN8S10151C12v3Ev");}
void  S10151C1 ::v4(){vfunc_called(this, "_ZN8S10151C12v4Ev");}
void  S10151C1 ::v5(){vfunc_called(this, "_ZN8S10151C12v5Ev");}
void  S10151C1 ::v6(){vfunc_called(this, "_ZN8S10151C12v6Ev");}
S10151C1 ::S10151C1(){ note_ctor("S10151C1", this);} // tgen

static void Test_S10151C1()
{
  extern Class_Descriptor cd_S10151C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S10151C1, buf);
    S10151C1 *dp, &lv = *(dp=new (buf) S10151C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S10151C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10151C1)");
    check_base_class_offset(lv, (S10151C2*), 0, "S10151C1");
    check_field_offset(lv, s10151c1f0, ABISELECT(8,4), "S10151C1.s10151c1f0");
    check_field_offset(lv, s10151c1f1, ABISELECT(16,8), "S10151C1.s10151c1f1");
    check_field_offset(lv, s10151c1f2, ABISELECT(24,12), "S10151C1.s10151c1f2");
    test_class_info(&lv, &cd_S10151C1);
    dp->~S10151C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10151C1(Test_S10151C1, "S10151C1", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S10151C1C1Ev();
extern void _ZN8S10151C1D1Ev();
Name_Map name_map_S10151C1[] = {
  NSPAIR(_ZN8S10151C1C1Ev),
  NSPAIR(_ZN8S10151C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10151C2;
extern VTBL_ENTRY _ZTI8S10151C2[];
extern  VTBL_ENTRY _ZTV8S10151C2[];
static Base_Class bases_S10151C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10151C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10151C1[];
extern void _ZN8S10151C1D1Ev();
extern void _ZN8S10151C1D0Ev();
extern void _ZN8S10151C22v7Ev();
extern void _ZN8S10151C22v8Ev();
extern void _ZN8S10151C22v9Ev();
extern void _ZN8S10151C23v10Ev();
extern void _ZN8S10151C23v11Ev();
extern void _ZN8S10151C23v12Ev();
extern void _ZN8S10151C23v13Ev();
extern void _ZN8S10151C23v14Ev();
extern void _ZN8S10151C23v15Ev();
extern void _ZN8S10151C12v1Ev();
extern void _ZN8S10151C12v2Ev();
extern void _ZN8S10151C12v3Ev();
extern void _ZN8S10151C12v4Ev();
extern void _ZN8S10151C12v5Ev();
extern void _ZN8S10151C12v6Ev();
static  VTBL_ENTRY vtc_S10151C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10151C1[0]),
  (VTBL_ENTRY)&_ZN8S10151C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10151C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10151C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10151C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10151C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10151C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10151C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10151C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10151C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10151C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10151C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10151C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10151C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10151C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10151C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10151C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10151C12v6Ev,
};
extern VTBL_ENTRY _ZTI8S10151C1[];
extern  VTBL_ENTRY _ZTV8S10151C1[];
Class_Descriptor cd_S10151C1 = {  "S10151C1", // class name
  bases_S10151C1, 1,
  &(vtc_S10151C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S10151C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10151C1),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  S8533C2  {
  virtual  ~S8533C2(); // _ZN7S8533C2D1Ev
  virtual void  v10(); // _ZN7S8533C23v10Ev
  virtual void  v11(); // _ZN7S8533C23v11Ev
  virtual void  v12(); // _ZN7S8533C23v12Ev
  virtual void  v13(); // _ZN7S8533C23v13Ev
  virtual void  v14(); // _ZN7S8533C23v14Ev
  virtual void  v15(); // _ZN7S8533C23v15Ev
  virtual void  v16(); // _ZN7S8533C23v16Ev
  virtual void  v17(); // _ZN7S8533C23v17Ev
  virtual void  v18(); // _ZN7S8533C23v18Ev
  S8533C2(); // tgen
};
//SIG(-1 S8533C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S8533C2 ::~S8533C2(){ note_dtor("S8533C2", this);}
void  S8533C2 ::v10(){vfunc_called(this, "_ZN7S8533C23v10Ev");}
void  S8533C2 ::v11(){vfunc_called(this, "_ZN7S8533C23v11Ev");}
void  S8533C2 ::v12(){vfunc_called(this, "_ZN7S8533C23v12Ev");}
void  S8533C2 ::v13(){vfunc_called(this, "_ZN7S8533C23v13Ev");}
void  S8533C2 ::v14(){vfunc_called(this, "_ZN7S8533C23v14Ev");}
void  S8533C2 ::v15(){vfunc_called(this, "_ZN7S8533C23v15Ev");}
void  S8533C2 ::v16(){vfunc_called(this, "_ZN7S8533C23v16Ev");}
void  S8533C2 ::v17(){vfunc_called(this, "_ZN7S8533C23v17Ev");}
void  S8533C2 ::v18(){vfunc_called(this, "_ZN7S8533C23v18Ev");}
S8533C2 ::S8533C2(){ note_ctor("S8533C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S8533C2C1Ev();
extern void _ZN7S8533C2D1Ev();
Name_Map name_map_S8533C2[] = {
  NSPAIR(_ZN7S8533C2C1Ev),
  NSPAIR(_ZN7S8533C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8533C2[];
extern void _ZN7S8533C2D1Ev();
extern void _ZN7S8533C2D0Ev();
extern void _ZN7S8533C23v10Ev();
extern void _ZN7S8533C23v11Ev();
extern void _ZN7S8533C23v12Ev();
extern void _ZN7S8533C23v13Ev();
extern void _ZN7S8533C23v14Ev();
extern void _ZN7S8533C23v15Ev();
extern void _ZN7S8533C23v16Ev();
extern void _ZN7S8533C23v17Ev();
extern void _ZN7S8533C23v18Ev();
static  VTBL_ENTRY vtc_S8533C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8533C2[0]),
  (VTBL_ENTRY)&_ZN7S8533C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8533C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8533C23v10Ev,
  (VTBL_ENTRY)&_ZN7S8533C23v11Ev,
  (VTBL_ENTRY)&_ZN7S8533C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8533C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8533C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8533C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8533C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8533C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8533C23v18Ev,
};
extern VTBL_ENTRY _ZTI7S8533C2[];
extern  VTBL_ENTRY _ZTV7S8533C2[];
Class_Descriptor cd_S8533C2 = {  "S8533C2", // class name
  0,0,//no base classes
  &(vtc_S8533C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8533C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8533C2),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  S8533C1  : S8533C2 {
  void *s8533c1f0;
  virtual void  v1(); // _ZN7S8533C12v1Ev
  virtual void  v2(); // _ZN7S8533C12v2Ev
  virtual void  v3(); // _ZN7S8533C12v3Ev
  virtual void  v4(); // _ZN7S8533C12v4Ev
  virtual void  v5(); // _ZN7S8533C12v5Ev
  virtual void  v6(); // _ZN7S8533C12v6Ev
  virtual void  v7(); // _ZN7S8533C12v7Ev
  virtual void  v8(); // _ZN7S8533C12v8Ev
  virtual void  v9(); // _ZN7S8533C12v9Ev
  ~S8533C1(); // tgen
  S8533C1(); // tgen
};
//SIG(1 S8533C1) C1{ BC2{ vd v10 v11 v12 v13 v14 v15 v16 v17 v18} v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp}


void  S8533C1 ::v1(){vfunc_called(this, "_ZN7S8533C12v1Ev");}
void  S8533C1 ::v2(){vfunc_called(this, "_ZN7S8533C12v2Ev");}
void  S8533C1 ::v3(){vfunc_called(this, "_ZN7S8533C12v3Ev");}
void  S8533C1 ::v4(){vfunc_called(this, "_ZN7S8533C12v4Ev");}
void  S8533C1 ::v5(){vfunc_called(this, "_ZN7S8533C12v5Ev");}
void  S8533C1 ::v6(){vfunc_called(this, "_ZN7S8533C12v6Ev");}
void  S8533C1 ::v7(){vfunc_called(this, "_ZN7S8533C12v7Ev");}
void  S8533C1 ::v8(){vfunc_called(this, "_ZN7S8533C12v8Ev");}
void  S8533C1 ::v9(){vfunc_called(this, "_ZN7S8533C12v9Ev");}
S8533C1 ::~S8533C1(){ note_dtor("S8533C1", this);} // tgen
S8533C1 ::S8533C1(){ note_ctor("S8533C1", this);} // tgen

static void Test_S8533C1()
{
  extern Class_Descriptor cd_S8533C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S8533C1, buf);
    S8533C1 *dp, &lv = *(dp=new (buf) S8533C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S8533C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8533C1)");
    check_base_class_offset(lv, (S8533C2*), 0, "S8533C1");
    check_field_offset(lv, s8533c1f0, ABISELECT(8,4), "S8533C1.s8533c1f0");
    test_class_info(&lv, &cd_S8533C1);
    dp->~S8533C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8533C1(Test_S8533C1, "S8533C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S8533C1C1Ev();
extern void _ZN7S8533C1D1Ev();
Name_Map name_map_S8533C1[] = {
  NSPAIR(_ZN7S8533C1C1Ev),
  NSPAIR(_ZN7S8533C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8533C2;
extern VTBL_ENTRY _ZTI7S8533C2[];
extern  VTBL_ENTRY _ZTV7S8533C2[];
static Base_Class bases_S8533C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8533C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8533C1[];
extern void _ZN7S8533C1D1Ev();
extern void _ZN7S8533C1D0Ev();
extern void _ZN7S8533C23v10Ev();
extern void _ZN7S8533C23v11Ev();
extern void _ZN7S8533C23v12Ev();
extern void _ZN7S8533C23v13Ev();
extern void _ZN7S8533C23v14Ev();
extern void _ZN7S8533C23v15Ev();
extern void _ZN7S8533C23v16Ev();
extern void _ZN7S8533C23v17Ev();
extern void _ZN7S8533C23v18Ev();
extern void _ZN7S8533C12v1Ev();
extern void _ZN7S8533C12v2Ev();
extern void _ZN7S8533C12v3Ev();
extern void _ZN7S8533C12v4Ev();
extern void _ZN7S8533C12v5Ev();
extern void _ZN7S8533C12v6Ev();
extern void _ZN7S8533C12v7Ev();
extern void _ZN7S8533C12v8Ev();
extern void _ZN7S8533C12v9Ev();
static  VTBL_ENTRY vtc_S8533C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8533C1[0]),
  (VTBL_ENTRY)&_ZN7S8533C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8533C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8533C23v10Ev,
  (VTBL_ENTRY)&_ZN7S8533C23v11Ev,
  (VTBL_ENTRY)&_ZN7S8533C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8533C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8533C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8533C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8533C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8533C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8533C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8533C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8533C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8533C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8533C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8533C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8533C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8533C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8533C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8533C12v9Ev,
};
extern VTBL_ENTRY _ZTI7S8533C1[];
extern  VTBL_ENTRY _ZTV7S8533C1[];
Class_Descriptor cd_S8533C1 = {  "S8533C1", // class name
  bases_S8533C1, 1,
  &(vtc_S8533C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S8533C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8533C1),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2715C2  : S28C13_nt {
};
//SIG(-1 S2715C2) C1{ BC2{ m Fi}}



static void Test_S2715C2()
{
  extern Class_Descriptor cd_S2715C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2715C2, buf);
    S2715C2 &lv = *(new (buf) S2715C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2715C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2715C2)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S2715C2");
    test_class_info(&lv, &cd_S2715C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2715C2(Test_S2715C2, "S2715C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S2715C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2715C2 = {  "S2715C2", // class name
  bases_S2715C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2715C4  : S731C17_nt {
  void *s2715c4f0;
  int s2715c4f1[2];
  void *s2715c4f2[2];
};
//SIG(1 S2715C4) C1{ BC2{ m} Fp Fi[2] Fp[2]}



static void Test_S2715C4()
{
  extern Class_Descriptor cd_S2715C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S2715C4, buf);
    S2715C4 &lv = *(new (buf) S2715C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S2715C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2715C4)");
    check_base_class_offset(lv, (S731C17_nt*), 0, "S2715C4");
    check_field_offset(lv, s2715c4f0, 0, "S2715C4.s2715c4f0");
    check_field_offset(lv, s2715c4f1, ABISELECT(8,4), "S2715C4.s2715c4f1");
    check_field_offset(lv, s2715c4f2, ABISELECT(16,12), "S2715C4.s2715c4f2");
    test_class_info(&lv, &cd_S2715C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2715C4(Test_S2715C4, "S2715C4", ABISELECT(32,20));

#else // __cplusplus

extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S2715C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2715C4 = {  "S2715C4", // class name
  bases_S2715C4, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(32,20), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2715C1  : S2715C2 {
  void *s2715c1f0[5];
  int s2715c1f1[2];
  ::S2715C4 s2715c1f2[32];
  ::S5074C8_nt s2715c1f3;
  void *s2715c1f4;
};
//SIG(1 S2715C1) C1{ BC2{ BC3{ m Fi}} Fp[5] Fi[2] FC4{ BC5{ m} Fp Fi[2] Fp[2]}[32] FC6{ m Fp[2]} Fp}



static void Test_S2715C1()
{
  extern Class_Descriptor cd_S2715C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(139,172)];
    init_test(&cd_S2715C1, buf);
    S2715C1 &lv = *(new (buf) S2715C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1104,684), "sizeof(S2715C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2715C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S2715C2*), 0, "S2715C1");
    check_base_class_offset(lv, (S2715C2*), 0, "S2715C1");
    check_field_offset(lv, s2715c1f0, ABISELECT(8,4), "S2715C1.s2715c1f0");
    check_field_offset(lv, s2715c1f1, ABISELECT(48,24), "S2715C1.s2715c1f1");
    check_field_offset(lv, s2715c1f2, ABISELECT(56,32), "S2715C1.s2715c1f2");
    check_field_offset(lv, s2715c1f3, ABISELECT(1080,672), "S2715C1.s2715c1f3");
    check_field_offset(lv, s2715c1f4, ABISELECT(1096,680), "S2715C1.s2715c1f4");
    test_class_info(&lv, &cd_S2715C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2715C1(Test_S2715C1, "S2715C1", ABISELECT(1104,684));

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S2715C2;
static Base_Class bases_S2715C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2715C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2715C1 = {  "S2715C1", // class name
  bases_S2715C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(1104,684), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9904C2  {
  void *s9904c2f0;
  int s9904c2f1;
  virtual  ~S9904C2(); // _ZN7S9904C2D1Ev
  virtual void  v5(); // _ZN7S9904C22v5Ev
  virtual void  v6(); // _ZN7S9904C22v6Ev
  virtual void  v7(); // _ZN7S9904C22v7Ev
  virtual void  v8(); // _ZN7S9904C22v8Ev
  virtual void  v9(); // _ZN7S9904C22v9Ev
  virtual void  v10(); // _ZN7S9904C23v10Ev
  virtual void  v11(); // _ZN7S9904C23v11Ev
  virtual void  v12(); // _ZN7S9904C23v12Ev
  virtual void  v13(); // _ZN7S9904C23v13Ev
  virtual void  v14(); // _ZN7S9904C23v14Ev
  S9904C2(); // tgen
};
//SIG(-1 S9904C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fp Fi}


 S9904C2 ::~S9904C2(){ note_dtor("S9904C2", this);}
void  S9904C2 ::v5(){vfunc_called(this, "_ZN7S9904C22v5Ev");}
void  S9904C2 ::v6(){vfunc_called(this, "_ZN7S9904C22v6Ev");}
void  S9904C2 ::v7(){vfunc_called(this, "_ZN7S9904C22v7Ev");}
void  S9904C2 ::v8(){vfunc_called(this, "_ZN7S9904C22v8Ev");}
void  S9904C2 ::v9(){vfunc_called(this, "_ZN7S9904C22v9Ev");}
void  S9904C2 ::v10(){vfunc_called(this, "_ZN7S9904C23v10Ev");}
void  S9904C2 ::v11(){vfunc_called(this, "_ZN7S9904C23v11Ev");}
void  S9904C2 ::v12(){vfunc_called(this, "_ZN7S9904C23v12Ev");}
void  S9904C2 ::v13(){vfunc_called(this, "_ZN7S9904C23v13Ev");}
void  S9904C2 ::v14(){vfunc_called(this, "_ZN7S9904C23v14Ev");}
S9904C2 ::S9904C2(){ note_ctor("S9904C2", this);} // tgen

static void Test_S9904C2()
{
  extern Class_Descriptor cd_S9904C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S9904C2, buf);
    S9904C2 *dp, &lv = *(dp=new (buf) S9904C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S9904C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9904C2)");
    check_field_offset(lv, s9904c2f0, ABISELECT(8,4), "S9904C2.s9904c2f0");
    check_field_offset(lv, s9904c2f1, ABISELECT(16,8), "S9904C2.s9904c2f1");
    test_class_info(&lv, &cd_S9904C2);
    dp->~S9904C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9904C2(Test_S9904C2, "S9904C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S9904C2C1Ev();
extern void _ZN7S9904C2D1Ev();
Name_Map name_map_S9904C2[] = {
  NSPAIR(_ZN7S9904C2C1Ev),
  NSPAIR(_ZN7S9904C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9904C2[];
extern void _ZN7S9904C2D1Ev();
extern void _ZN7S9904C2D0Ev();
extern void _ZN7S9904C22v5Ev();
extern void _ZN7S9904C22v6Ev();
extern void _ZN7S9904C22v7Ev();
extern void _ZN7S9904C22v8Ev();
extern void _ZN7S9904C22v9Ev();
extern void _ZN7S9904C23v10Ev();
extern void _ZN7S9904C23v11Ev();
extern void _ZN7S9904C23v12Ev();
extern void _ZN7S9904C23v13Ev();
extern void _ZN7S9904C23v14Ev();
static  VTBL_ENTRY vtc_S9904C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9904C2[0]),
  (VTBL_ENTRY)&_ZN7S9904C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9904C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9904C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9904C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9904C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9904C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9904C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9904C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9904C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9904C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9904C23v13Ev,
  (VTBL_ENTRY)&_ZN7S9904C23v14Ev,
};
extern VTBL_ENTRY _ZTI7S9904C2[];
extern  VTBL_ENTRY _ZTV7S9904C2[];
Class_Descriptor cd_S9904C2 = {  "S9904C2", // class name
  0,0,//no base classes
  &(vtc_S9904C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S9904C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9904C2),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  S9904C1  : S9904C2 {
  void *s9904c1f0[4];
  virtual  ~S9904C1(); // _ZN7S9904C1D1Ev
  virtual void  v1(); // _ZN7S9904C12v1Ev
  virtual void  v2(); // _ZN7S9904C12v2Ev
  virtual void  v3(); // _ZN7S9904C12v3Ev
  virtual void  v4(); // _ZN7S9904C12v4Ev
  S9904C1(); // tgen
};
//SIG(1 S9904C1) C1{ BC2{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp Fi} vd v1 v2 v3 v4 Fp[4]}


 S9904C1 ::~S9904C1(){ note_dtor("S9904C1", this);}
void  S9904C1 ::v1(){vfunc_called(this, "_ZN7S9904C12v1Ev");}
void  S9904C1 ::v2(){vfunc_called(this, "_ZN7S9904C12v2Ev");}
void  S9904C1 ::v3(){vfunc_called(this, "_ZN7S9904C12v3Ev");}
void  S9904C1 ::v4(){vfunc_called(this, "_ZN7S9904C12v4Ev");}
S9904C1 ::S9904C1(){ note_ctor("S9904C1", this);} // tgen

static void Test_S9904C1()
{
  extern Class_Descriptor cd_S9904C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S9904C1, buf);
    S9904C1 *dp, &lv = *(dp=new (buf) S9904C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S9904C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9904C1)");
    check_base_class_offset(lv, (S9904C2*), 0, "S9904C1");
    check_field_offset(lv, s9904c1f0, ABISELECT(24,12), "S9904C1.s9904c1f0");
    test_class_info(&lv, &cd_S9904C1);
    dp->~S9904C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9904C1(Test_S9904C1, "S9904C1", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN7S9904C1C1Ev();
extern void _ZN7S9904C1D1Ev();
Name_Map name_map_S9904C1[] = {
  NSPAIR(_ZN7S9904C1C1Ev),
  NSPAIR(_ZN7S9904C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9904C2;
extern VTBL_ENTRY _ZTI7S9904C2[];
extern  VTBL_ENTRY _ZTV7S9904C2[];
static Base_Class bases_S9904C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9904C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9904C1[];
extern void _ZN7S9904C1D1Ev();
extern void _ZN7S9904C1D0Ev();
extern void _ZN7S9904C22v5Ev();
extern void _ZN7S9904C22v6Ev();
extern void _ZN7S9904C22v7Ev();
extern void _ZN7S9904C22v8Ev();
extern void _ZN7S9904C22v9Ev();
extern void _ZN7S9904C23v10Ev();
extern void _ZN7S9904C23v11Ev();
extern void _ZN7S9904C23v12Ev();
extern void _ZN7S9904C23v13Ev();
extern void _ZN7S9904C23v14Ev();
extern void _ZN7S9904C12v1Ev();
extern void _ZN7S9904C12v2Ev();
extern void _ZN7S9904C12v3Ev();
extern void _ZN7S9904C12v4Ev();
static  VTBL_ENTRY vtc_S9904C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9904C1[0]),
  (VTBL_ENTRY)&_ZN7S9904C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9904C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9904C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9904C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9904C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9904C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9904C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9904C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9904C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9904C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9904C23v13Ev,
  (VTBL_ENTRY)&_ZN7S9904C23v14Ev,
  (VTBL_ENTRY)&_ZN7S9904C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9904C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9904C12v3Ev,
  (VTBL_ENTRY)&_ZN7S9904C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S9904C1[];
extern  VTBL_ENTRY _ZTV7S9904C1[];
Class_Descriptor cd_S9904C1 = {  "S9904C1", // class name
  bases_S9904C1, 1,
  &(vtc_S9904C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI7S9904C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9904C1),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  S9905C2  {
  void *s9905c2f0;
  int s9905c2f1;
  virtual  ~S9905C2(); // _ZN7S9905C2D1Ev
  virtual void  v5(); // _ZN7S9905C22v5Ev
  virtual void  v6(); // _ZN7S9905C22v6Ev
  virtual void  v7(); // _ZN7S9905C22v7Ev
  virtual void  v8(); // _ZN7S9905C22v8Ev
  virtual void  v9(); // _ZN7S9905C22v9Ev
  virtual void  v10(); // _ZN7S9905C23v10Ev
  virtual void  v11(); // _ZN7S9905C23v11Ev
  virtual void  v12(); // _ZN7S9905C23v12Ev
  virtual void  v13(); // _ZN7S9905C23v13Ev
  virtual void  v14(); // _ZN7S9905C23v14Ev
  S9905C2(); // tgen
};
//SIG(-1 S9905C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fp Fi}


 S9905C2 ::~S9905C2(){ note_dtor("S9905C2", this);}
void  S9905C2 ::v5(){vfunc_called(this, "_ZN7S9905C22v5Ev");}
void  S9905C2 ::v6(){vfunc_called(this, "_ZN7S9905C22v6Ev");}
void  S9905C2 ::v7(){vfunc_called(this, "_ZN7S9905C22v7Ev");}
void  S9905C2 ::v8(){vfunc_called(this, "_ZN7S9905C22v8Ev");}
void  S9905C2 ::v9(){vfunc_called(this, "_ZN7S9905C22v9Ev");}
void  S9905C2 ::v10(){vfunc_called(this, "_ZN7S9905C23v10Ev");}
void  S9905C2 ::v11(){vfunc_called(this, "_ZN7S9905C23v11Ev");}
void  S9905C2 ::v12(){vfunc_called(this, "_ZN7S9905C23v12Ev");}
void  S9905C2 ::v13(){vfunc_called(this, "_ZN7S9905C23v13Ev");}
void  S9905C2 ::v14(){vfunc_called(this, "_ZN7S9905C23v14Ev");}
S9905C2 ::S9905C2(){ note_ctor("S9905C2", this);} // tgen

static void Test_S9905C2()
{
  extern Class_Descriptor cd_S9905C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S9905C2, buf);
    S9905C2 *dp, &lv = *(dp=new (buf) S9905C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S9905C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9905C2)");
    check_field_offset(lv, s9905c2f0, ABISELECT(8,4), "S9905C2.s9905c2f0");
    check_field_offset(lv, s9905c2f1, ABISELECT(16,8), "S9905C2.s9905c2f1");
    test_class_info(&lv, &cd_S9905C2);
    dp->~S9905C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9905C2(Test_S9905C2, "S9905C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S9905C2C1Ev();
extern void _ZN7S9905C2D1Ev();
Name_Map name_map_S9905C2[] = {
  NSPAIR(_ZN7S9905C2C1Ev),
  NSPAIR(_ZN7S9905C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9905C2[];
extern void _ZN7S9905C2D1Ev();
extern void _ZN7S9905C2D0Ev();
extern void _ZN7S9905C22v5Ev();
extern void _ZN7S9905C22v6Ev();
extern void _ZN7S9905C22v7Ev();
extern void _ZN7S9905C22v8Ev();
extern void _ZN7S9905C22v9Ev();
extern void _ZN7S9905C23v10Ev();
extern void _ZN7S9905C23v11Ev();
extern void _ZN7S9905C23v12Ev();
extern void _ZN7S9905C23v13Ev();
extern void _ZN7S9905C23v14Ev();
static  VTBL_ENTRY vtc_S9905C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9905C2[0]),
  (VTBL_ENTRY)&_ZN7S9905C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9905C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9905C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9905C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9905C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9905C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9905C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9905C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9905C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9905C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9905C23v13Ev,
  (VTBL_ENTRY)&_ZN7S9905C23v14Ev,
};
extern VTBL_ENTRY _ZTI7S9905C2[];
extern  VTBL_ENTRY _ZTV7S9905C2[];
Class_Descriptor cd_S9905C2 = {  "S9905C2", // class name
  0,0,//no base classes
  &(vtc_S9905C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S9905C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9905C2),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  S9905C1  : S9905C2 {
  void *s9905c1f0;
  virtual  ~S9905C1(); // _ZN7S9905C1D1Ev
  virtual void  v1(); // _ZN7S9905C12v1Ev
  virtual void  v2(); // _ZN7S9905C12v2Ev
  virtual void  v3(); // _ZN7S9905C12v3Ev
  virtual void  v4(); // _ZN7S9905C12v4Ev
  S9905C1(); // tgen
};
//SIG(1 S9905C1) C1{ BC2{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fp Fi} vd v1 v2 v3 v4 Fp}


 S9905C1 ::~S9905C1(){ note_dtor("S9905C1", this);}
void  S9905C1 ::v1(){vfunc_called(this, "_ZN7S9905C12v1Ev");}
void  S9905C1 ::v2(){vfunc_called(this, "_ZN7S9905C12v2Ev");}
void  S9905C1 ::v3(){vfunc_called(this, "_ZN7S9905C12v3Ev");}
void  S9905C1 ::v4(){vfunc_called(this, "_ZN7S9905C12v4Ev");}
S9905C1 ::S9905C1(){ note_ctor("S9905C1", this);} // tgen

static void Test_S9905C1()
{
  extern Class_Descriptor cd_S9905C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S9905C1, buf);
    S9905C1 *dp, &lv = *(dp=new (buf) S9905C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S9905C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9905C1)");
    check_base_class_offset(lv, (S9905C2*), 0, "S9905C1");
    check_field_offset(lv, s9905c1f0, ABISELECT(24,12), "S9905C1.s9905c1f0");
    test_class_info(&lv, &cd_S9905C1);
    dp->~S9905C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9905C1(Test_S9905C1, "S9905C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S9905C1C1Ev();
extern void _ZN7S9905C1D1Ev();
Name_Map name_map_S9905C1[] = {
  NSPAIR(_ZN7S9905C1C1Ev),
  NSPAIR(_ZN7S9905C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9905C2;
extern VTBL_ENTRY _ZTI7S9905C2[];
extern  VTBL_ENTRY _ZTV7S9905C2[];
static Base_Class bases_S9905C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9905C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9905C1[];
extern void _ZN7S9905C1D1Ev();
extern void _ZN7S9905C1D0Ev();
extern void _ZN7S9905C22v5Ev();
extern void _ZN7S9905C22v6Ev();
extern void _ZN7S9905C22v7Ev();
extern void _ZN7S9905C22v8Ev();
extern void _ZN7S9905C22v9Ev();
extern void _ZN7S9905C23v10Ev();
extern void _ZN7S9905C23v11Ev();
extern void _ZN7S9905C23v12Ev();
extern void _ZN7S9905C23v13Ev();
extern void _ZN7S9905C23v14Ev();
extern void _ZN7S9905C12v1Ev();
extern void _ZN7S9905C12v2Ev();
extern void _ZN7S9905C12v3Ev();
extern void _ZN7S9905C12v4Ev();
static  VTBL_ENTRY vtc_S9905C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9905C1[0]),
  (VTBL_ENTRY)&_ZN7S9905C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9905C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9905C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9905C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9905C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9905C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9905C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9905C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9905C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9905C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9905C23v13Ev,
  (VTBL_ENTRY)&_ZN7S9905C23v14Ev,
  (VTBL_ENTRY)&_ZN7S9905C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9905C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9905C12v3Ev,
  (VTBL_ENTRY)&_ZN7S9905C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S9905C1[];
extern  VTBL_ENTRY _ZTV7S9905C1[];
Class_Descriptor cd_S9905C1 = {  "S9905C1", // class name
  bases_S9905C1, 1,
  &(vtc_S9905C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S9905C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9905C1),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  S9925C2  {
  virtual  ~S9925C2(); // _ZN7S9925C2D1Ev
  virtual void  v5(); // _ZN7S9925C22v5Ev
  virtual void  v6(); // _ZN7S9925C22v6Ev
  virtual void  v7(); // _ZN7S9925C22v7Ev
  virtual void  v8(); // _ZN7S9925C22v8Ev
  virtual void  v9(); // _ZN7S9925C22v9Ev
  virtual void  v10(); // _ZN7S9925C23v10Ev
  virtual void  v11(); // _ZN7S9925C23v11Ev
  virtual void  v12(); // _ZN7S9925C23v12Ev
  virtual void  v13(); // _ZN7S9925C23v13Ev
  S9925C2(); // tgen
};
//SIG(-1 S9925C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S9925C2 ::~S9925C2(){ note_dtor("S9925C2", this);}
void  S9925C2 ::v5(){vfunc_called(this, "_ZN7S9925C22v5Ev");}
void  S9925C2 ::v6(){vfunc_called(this, "_ZN7S9925C22v6Ev");}
void  S9925C2 ::v7(){vfunc_called(this, "_ZN7S9925C22v7Ev");}
void  S9925C2 ::v8(){vfunc_called(this, "_ZN7S9925C22v8Ev");}
void  S9925C2 ::v9(){vfunc_called(this, "_ZN7S9925C22v9Ev");}
void  S9925C2 ::v10(){vfunc_called(this, "_ZN7S9925C23v10Ev");}
void  S9925C2 ::v11(){vfunc_called(this, "_ZN7S9925C23v11Ev");}
void  S9925C2 ::v12(){vfunc_called(this, "_ZN7S9925C23v12Ev");}
void  S9925C2 ::v13(){vfunc_called(this, "_ZN7S9925C23v13Ev");}
S9925C2 ::S9925C2(){ note_ctor("S9925C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S9925C2C1Ev();
extern void _ZN7S9925C2D1Ev();
Name_Map name_map_S9925C2[] = {
  NSPAIR(_ZN7S9925C2C1Ev),
  NSPAIR(_ZN7S9925C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9925C2[];
extern void _ZN7S9925C2D1Ev();
extern void _ZN7S9925C2D0Ev();
extern void _ZN7S9925C22v5Ev();
extern void _ZN7S9925C22v6Ev();
extern void _ZN7S9925C22v7Ev();
extern void _ZN7S9925C22v8Ev();
extern void _ZN7S9925C22v9Ev();
extern void _ZN7S9925C23v10Ev();
extern void _ZN7S9925C23v11Ev();
extern void _ZN7S9925C23v12Ev();
extern void _ZN7S9925C23v13Ev();
static  VTBL_ENTRY vtc_S9925C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9925C2[0]),
  (VTBL_ENTRY)&_ZN7S9925C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9925C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9925C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9925C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9925C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9925C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9925C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9925C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9925C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9925C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9925C23v13Ev,
};
extern VTBL_ENTRY _ZTI7S9925C2[];
extern  VTBL_ENTRY _ZTV7S9925C2[];
Class_Descriptor cd_S9925C2 = {  "S9925C2", // class name
  0,0,//no base classes
  &(vtc_S9925C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9925C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9925C2),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  S9925C1  : S9925C2 {
  void *s9925c1f0;
  int s9925c1f1[2];
  char s9925c1f2;
  virtual  ~S9925C1(); // _ZN7S9925C1D1Ev
  virtual void  v1(); // _ZN7S9925C12v1Ev
  virtual void  v2(); // _ZN7S9925C12v2Ev
  virtual void  v3(); // _ZN7S9925C12v3Ev
  virtual void  v4(); // _ZN7S9925C12v4Ev
  S9925C1(); // tgen
};
//SIG(1 S9925C1) C1{ BC2{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13} vd v1 v2 v3 v4 Fp Fi[2] Fc}


 S9925C1 ::~S9925C1(){ note_dtor("S9925C1", this);}
void  S9925C1 ::v1(){vfunc_called(this, "_ZN7S9925C12v1Ev");}
void  S9925C1 ::v2(){vfunc_called(this, "_ZN7S9925C12v2Ev");}
void  S9925C1 ::v3(){vfunc_called(this, "_ZN7S9925C12v3Ev");}
void  S9925C1 ::v4(){vfunc_called(this, "_ZN7S9925C12v4Ev");}
S9925C1 ::S9925C1(){ note_ctor("S9925C1", this);} // tgen

static void Test_S9925C1()
{
  extern Class_Descriptor cd_S9925C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S9925C1, buf);
    S9925C1 *dp, &lv = *(dp=new (buf) S9925C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S9925C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9925C1)");
    check_base_class_offset(lv, (S9925C2*), 0, "S9925C1");
    check_field_offset(lv, s9925c1f0, ABISELECT(8,4), "S9925C1.s9925c1f0");
    check_field_offset(lv, s9925c1f1, ABISELECT(16,8), "S9925C1.s9925c1f1");
    check_field_offset(lv, s9925c1f2, ABISELECT(24,16), "S9925C1.s9925c1f2");
    test_class_info(&lv, &cd_S9925C1);
    dp->~S9925C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9925C1(Test_S9925C1, "S9925C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S9925C1C1Ev();
extern void _ZN7S9925C1D1Ev();
Name_Map name_map_S9925C1[] = {
  NSPAIR(_ZN7S9925C1C1Ev),
  NSPAIR(_ZN7S9925C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9925C2;
extern VTBL_ENTRY _ZTI7S9925C2[];
extern  VTBL_ENTRY _ZTV7S9925C2[];
static Base_Class bases_S9925C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9925C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9925C1[];
extern void _ZN7S9925C1D1Ev();
extern void _ZN7S9925C1D0Ev();
extern void _ZN7S9925C22v5Ev();
extern void _ZN7S9925C22v6Ev();
extern void _ZN7S9925C22v7Ev();
extern void _ZN7S9925C22v8Ev();
extern void _ZN7S9925C22v9Ev();
extern void _ZN7S9925C23v10Ev();
extern void _ZN7S9925C23v11Ev();
extern void _ZN7S9925C23v12Ev();
extern void _ZN7S9925C23v13Ev();
extern void _ZN7S9925C12v1Ev();
extern void _ZN7S9925C12v2Ev();
extern void _ZN7S9925C12v3Ev();
extern void _ZN7S9925C12v4Ev();
static  VTBL_ENTRY vtc_S9925C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9925C1[0]),
  (VTBL_ENTRY)&_ZN7S9925C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9925C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9925C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9925C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9925C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9925C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9925C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9925C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9925C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9925C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9925C23v13Ev,
  (VTBL_ENTRY)&_ZN7S9925C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9925C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9925C12v3Ev,
  (VTBL_ENTRY)&_ZN7S9925C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S9925C1[];
extern  VTBL_ENTRY _ZTV7S9925C1[];
Class_Descriptor cd_S9925C1 = {  "S9925C1", // class name
  bases_S9925C1, 1,
  &(vtc_S9925C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S9925C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9925C1),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  S991C3  : S28C13_nt {
};
//SIG(-1 S991C3) C1{ BC2{ m Fi}}



static void Test_S991C3()
{
  extern Class_Descriptor cd_S991C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S991C3, buf);
    S991C3 &lv = *(new (buf) S991C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S991C3)");
    check2(__alignof__(lv), 4, "__alignof__(S991C3)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S991C3");
    test_class_info(&lv, &cd_S991C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS991C3(Test_S991C3, "S991C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S991C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S991C3 = {  "S991C3", // class name
  bases_S991C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S991C2  : S991C3 {
  unsigned int s991c2f0:1;
  unsigned int s991c2f1:1;
  int s991c2f2:7;
  unsigned int s991c2f3:1;
  unsigned int s991c2f4:1;
  int s991c2f5:2;
  int s991c2f6:5;
};
//SIG(-1 S991C2) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5}



static void Test_S991C2()
{
  extern Class_Descriptor cd_S991C2;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S991C2, buf);
    S991C2 &lv = *(new (buf) S991C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S991C2)");
    check2(__alignof__(lv), 4, "__alignof__(S991C2)");
    check_base_class_offset(lv, (S28C13_nt*)(S991C3*), 0, "S991C2");
    check_base_class_offset(lv, (S991C3*), 0, "S991C2");
    set_bf_and_test(lv, s991c2f0, 4, 0, 1, 1, "S991C2");
    set_bf_and_test(lv, s991c2f1, 4, 1, 1, 1, "S991C2");
    set_bf_and_test(lv, s991c2f2, 4, 2, 7, 1, "S991C2");
    set_bf_and_test(lv, s991c2f2, 4, 2, 7, hide_sll(1LL<<6), "S991C2");
    set_bf_and_test(lv, s991c2f3, 5, 1, 1, 1, "S991C2");
    set_bf_and_test(lv, s991c2f4, 5, 2, 1, 1, "S991C2");
    set_bf_and_test(lv, s991c2f5, 5, 3, 2, 1, "S991C2");
    set_bf_and_test(lv, s991c2f5, 5, 3, 2, hide_sll(1LL<<1), "S991C2");
    set_bf_and_test(lv, s991c2f6, 5, 5, 5, 1, "S991C2");
    set_bf_and_test(lv, s991c2f6, 5, 5, 5, hide_sll(1LL<<4), "S991C2");
    test_class_info(&lv, &cd_S991C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS991C2(Test_S991C2, "S991C2", 8);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S991C3;
static Base_Class bases_S991C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S991C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S991C2 = {  "S991C2", // class name
  bases_S991C2, 2,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S991C1  : S991C2 {
  ::S17885C12 s991c1f0;
  char s991c1f1;
};
//SIG(1 S991C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:7 Fi:1 Fi:1 Fi:2 Fi:5} FC5{ m Fp} Fc}



static void Test_S991C1()
{
  extern Class_Descriptor cd_S991C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S991C1, buf);
    S991C1 &lv = *(new (buf) S991C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S991C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S991C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S991C3*)(S991C2*), 0, "S991C1");
    check_base_class_offset(lv, (S991C3*)(S991C2*), 0, "S991C1");
    check_base_class_offset(lv, (S991C2*), 0, "S991C1");
    check_field_offset(lv, s991c1f0, 8, "S991C1.s991c1f0");
    check_field_offset(lv, s991c1f1, ABISELECT(16,12), "S991C1.s991c1f1");
    test_class_info(&lv, &cd_S991C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS991C1(Test_S991C1, "S991C1", ABISELECT(24,16));

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S991C3;
extern Class_Descriptor cd_S991C2;
static Base_Class bases_S991C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S991C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S991C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S991C1 = {  "S991C1", // class name
  bases_S991C1, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(24,16), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1089C3  : S28C13_nt {
};
//SIG(-1 S1089C3) C1{ BC2{ m Fi}}



static void Test_S1089C3()
{
  extern Class_Descriptor cd_S1089C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1089C3, buf);
    S1089C3 &lv = *(new (buf) S1089C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1089C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1089C3)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S1089C3");
    test_class_info(&lv, &cd_S1089C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1089C3(Test_S1089C3, "S1089C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S1089C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1089C3[];
Class_Descriptor cd_S1089C3 = {  "S1089C3", // class name
  bases_S1089C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1089C3),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  S1089C2  : S1089C3 {
  int s1089c2f0;
  virtual  ~S1089C2(); // _ZN7S1089C2D1Ev
  virtual void  v4(); // _ZN7S1089C22v4Ev
  virtual void  v5(); // _ZN7S1089C22v5Ev
  virtual void  v6(); // _ZN7S1089C22v6Ev
  S1089C2(); // tgen
};
//SIG(-1 S1089C2) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 Fi}


 S1089C2 ::~S1089C2(){ note_dtor("S1089C2", this);}
void  S1089C2 ::v4(){vfunc_called(this, "_ZN7S1089C22v4Ev");}
void  S1089C2 ::v5(){vfunc_called(this, "_ZN7S1089C22v5Ev");}
void  S1089C2 ::v6(){vfunc_called(this, "_ZN7S1089C22v6Ev");}
S1089C2 ::S1089C2(){ note_ctor("S1089C2", this);} // tgen

static void Test_S1089C2()
{
  extern Class_Descriptor cd_S1089C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1089C2, buf);
    S1089C2 *dp, &lv = *(dp=new (buf) S1089C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1089C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1089C2)");
    check_base_class_offset(lv, (S28C13_nt*)(S1089C3*), ABISELECT(8,4), "S1089C2");
    check_base_class_offset(lv, (S1089C3*), ABISELECT(8,4), "S1089C2");
    check_field_offset(lv, s1089c2f0, ABISELECT(12,8), "S1089C2.s1089c2f0");
    test_class_info(&lv, &cd_S1089C2);
    dp->~S1089C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1089C2(Test_S1089C2, "S1089C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S1089C2C1Ev();
extern void _ZN7S1089C2D1Ev();
Name_Map name_map_S1089C2[] = {
  NSPAIR(_ZN7S1089C2C1Ev),
  NSPAIR(_ZN7S1089C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S1089C3;
extern VTBL_ENTRY _ZTI7S1089C3[];
static Base_Class bases_S1089C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1089C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1089C2[];
extern void _ZN7S1089C2D1Ev();
extern void _ZN7S1089C2D0Ev();
extern void _ZN7S1089C22v4Ev();
extern void _ZN7S1089C22v5Ev();
extern void _ZN7S1089C22v6Ev();
static  VTBL_ENTRY vtc_S1089C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1089C2[0]),
  (VTBL_ENTRY)&_ZN7S1089C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1089C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1089C22v4Ev,
  (VTBL_ENTRY)&_ZN7S1089C22v5Ev,
  (VTBL_ENTRY)&_ZN7S1089C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S1089C2[];
extern  VTBL_ENTRY _ZTV7S1089C2[];
Class_Descriptor cd_S1089C2 = {  "S1089C2", // class name
  bases_S1089C2, 2,
  &(vtc_S1089C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S1089C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1089C2),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  S1089C1  : S1089C2 {
  ::S48C18 s1089c1f0;
  ::S48C18 s1089c1f1;
  int s1089c1f2[2];
  virtual void  v1(); // _ZN7S1089C12v1Ev
  virtual void  v2(); // _ZN7S1089C12v2Ev
  virtual void  v3(); // _ZN7S1089C12v3Ev
  ~S1089C1(); // tgen
  S1089C1(); // tgen
};
//SIG(1 S1089C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v4 v5 v6 Fi} v1 v2 v3 FC5{ m Fi[3]} FC5 Fi[2]}


void  S1089C1 ::v1(){vfunc_called(this, "_ZN7S1089C12v1Ev");}
void  S1089C1 ::v2(){vfunc_called(this, "_ZN7S1089C12v2Ev");}
void  S1089C1 ::v3(){vfunc_called(this, "_ZN7S1089C12v3Ev");}
S1089C1 ::~S1089C1(){ note_dtor("S1089C1", this);} // tgen
S1089C1 ::S1089C1(){ note_ctor("S1089C1", this);} // tgen

static void Test_S1089C1()
{
  extern Class_Descriptor cd_S1089C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S1089C1, buf);
    S1089C1 *dp, &lv = *(dp=new (buf) S1089C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S1089C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1089C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S1089C3*)(S1089C2*), ABISELECT(8,4), "S1089C1");
    check_base_class_offset(lv, (S1089C3*)(S1089C2*), ABISELECT(8,4), "S1089C1");
    check_base_class_offset(lv, (S1089C2*), 0, "S1089C1");
    check_field_offset(lv, s1089c1f0, ABISELECT(16,12), "S1089C1.s1089c1f0");
    check_field_offset(lv, s1089c1f1, ABISELECT(28,24), "S1089C1.s1089c1f1");
    check_field_offset(lv, s1089c1f2, ABISELECT(40,36), "S1089C1.s1089c1f2");
    test_class_info(&lv, &cd_S1089C1);
    dp->~S1089C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1089C1(Test_S1089C1, "S1089C1", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN7S1089C1C1Ev();
extern void _ZN7S1089C1D1Ev();
Name_Map name_map_S1089C1[] = {
  NSPAIR(_ZN7S1089C1C1Ev),
  NSPAIR(_ZN7S1089C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S1089C3;
extern VTBL_ENTRY _ZTI7S1089C3[];
extern Class_Descriptor cd_S1089C2;
extern VTBL_ENTRY _ZTI7S1089C2[];
extern  VTBL_ENTRY _ZTV7S1089C2[];
static Base_Class bases_S1089C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1089C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1089C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1089C1[];
extern void _ZN7S1089C1D1Ev();
extern void _ZN7S1089C1D0Ev();
extern void _ZN7S1089C22v4Ev();
extern void _ZN7S1089C22v5Ev();
extern void _ZN7S1089C22v6Ev();
extern void _ZN7S1089C12v1Ev();
extern void _ZN7S1089C12v2Ev();
extern void _ZN7S1089C12v3Ev();
static  VTBL_ENTRY vtc_S1089C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1089C1[0]),
  (VTBL_ENTRY)&_ZN7S1089C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1089C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1089C22v4Ev,
  (VTBL_ENTRY)&_ZN7S1089C22v5Ev,
  (VTBL_ENTRY)&_ZN7S1089C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1089C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1089C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1089C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S1089C1[];
extern  VTBL_ENTRY _ZTV7S1089C1[];
Class_Descriptor cd_S1089C1 = {  "S1089C1", // class name
  bases_S1089C1, 3,
  &(vtc_S1089C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI7S1089C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1089C1),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  S1010C3  : S28C13_nt {
};
//SIG(-1 S1010C3) C1{ BC2{ m Fi}}



static void Test_S1010C3()
{
  extern Class_Descriptor cd_S1010C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1010C3, buf);
    S1010C3 &lv = *(new (buf) S1010C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1010C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1010C3)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S1010C3");
    test_class_info(&lv, &cd_S1010C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1010C3(Test_S1010C3, "S1010C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S1010C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1010C3[];
Class_Descriptor cd_S1010C3 = {  "S1010C3", // class name
  bases_S1010C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1010C3),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  S1010C2_nt  : S1010C3 {
  virtual  ~S1010C2_nt(); // _ZN10S1010C2_ntD1Ev
  virtual void  v3(); // _ZN10S1010C2_nt2v3Ev
  virtual void  v4(); // _ZN10S1010C2_nt2v4Ev
  S1010C2_nt(); // tgen
};
//SIG(-1 S1010C2_nt) C1{ BC2{ BC3{ m Fi}} vd v1 v2}


 S1010C2_nt ::~S1010C2_nt(){ note_dtor("S1010C2_nt", this);}
void  S1010C2_nt ::v3(){vfunc_called(this, "_ZN10S1010C2_nt2v3Ev");}
void  S1010C2_nt ::v4(){vfunc_called(this, "_ZN10S1010C2_nt2v4Ev");}
S1010C2_nt ::S1010C2_nt(){ note_ctor("S1010C2_nt", this);} // tgen

//skip512 S1010C2_nt

#else // __cplusplus

extern void _ZN10S1010C2_ntC1Ev();
extern void _ZN10S1010C2_ntD1Ev();
Name_Map name_map_S1010C2_nt[] = {
  NSPAIR(_ZN10S1010C2_ntC1Ev),
  NSPAIR(_ZN10S1010C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S1010C3;
extern VTBL_ENTRY _ZTI7S1010C3[];
static Base_Class bases_S1010C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1010C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1010C2_nt[];
extern void _ZN10S1010C2_ntD1Ev();
extern void _ZN10S1010C2_ntD0Ev();
extern void _ZN10S1010C2_nt2v3Ev();
extern void _ZN10S1010C2_nt2v4Ev();
static  VTBL_ENTRY vtc_S1010C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1010C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S1010C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1010C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1010C2_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S1010C2_nt2v4Ev,
};
extern VTBL_ENTRY _ZTI10S1010C2_nt[];
VTBL_ENTRY *P__ZTI10S1010C2_nt = _ZTI10S1010C2_nt; 
extern  VTBL_ENTRY _ZTV10S1010C2_nt[];
Class_Descriptor cd_S1010C2_nt = {  "S1010C2_nt", // class name
  bases_S1010C2_nt, 2,
  &(vtc_S1010C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S1010C2_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV10S1010C2_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  S1010C1  : S1010C2_nt {
  ::S17885C12 s1010c1f0;
  ::S17885C12 s1010c1f1;
  ::S17885C12 s1010c1f2;
  ::S17885C12 s1010c1f3;
  ::S17885C12 s1010c1f4;
  ::S17885C12 s1010c1f5;
  virtual void  v1(); // _ZN7S1010C12v1Ev
  virtual void  v2(); // _ZN7S1010C12v2Ev
  ~S1010C1(); // tgen
  S1010C1(); // tgen
};
//SIG(1 S1010C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v3 v4} v1 v2 FC5{ m Fp} FC5 FC5 FC5 FC5 FC5}


void  S1010C1 ::v1(){vfunc_called(this, "_ZN7S1010C12v1Ev");}
void  S1010C1 ::v2(){vfunc_called(this, "_ZN7S1010C12v2Ev");}
S1010C1 ::~S1010C1(){ note_dtor("S1010C1", this);} // tgen
S1010C1 ::S1010C1(){ note_ctor("S1010C1", this);} // tgen

static void Test_S1010C1()
{
  extern Class_Descriptor cd_S1010C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S1010C1, buf);
    S1010C1 *dp, &lv = *(dp=new (buf) S1010C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S1010C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1010C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S1010C3*)(S1010C2_nt*), ABISELECT(8,4), "S1010C1");
    check_base_class_offset(lv, (S1010C3*)(S1010C2_nt*), ABISELECT(8,4), "S1010C1");
    check_base_class_offset(lv, (S1010C2_nt*), 0, "S1010C1");
    check_field_offset(lv, s1010c1f0, ABISELECT(16,8), "S1010C1.s1010c1f0");
    check_field_offset(lv, s1010c1f1, ABISELECT(24,12), "S1010C1.s1010c1f1");
    check_field_offset(lv, s1010c1f2, ABISELECT(32,16), "S1010C1.s1010c1f2");
    check_field_offset(lv, s1010c1f3, ABISELECT(40,20), "S1010C1.s1010c1f3");
    check_field_offset(lv, s1010c1f4, ABISELECT(48,24), "S1010C1.s1010c1f4");
    check_field_offset(lv, s1010c1f5, ABISELECT(56,28), "S1010C1.s1010c1f5");
    test_class_info(&lv, &cd_S1010C1);
    dp->~S1010C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1010C1(Test_S1010C1, "S1010C1", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S1010C1C1Ev();
extern void _ZN7S1010C1D1Ev();
Name_Map name_map_S1010C1[] = {
  NSPAIR(_ZN7S1010C1C1Ev),
  NSPAIR(_ZN7S1010C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S1010C3;
extern VTBL_ENTRY _ZTI7S1010C3[];
extern Class_Descriptor cd_S1010C2_nt;
extern VTBL_ENTRY _ZTI10S1010C2_nt[];
extern  VTBL_ENTRY _ZTV10S1010C2_nt[];
static Base_Class bases_S1010C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1010C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1010C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1010C1[];
extern void _ZN7S1010C1D1Ev();
extern void _ZN7S1010C1D0Ev();
extern void _ZN10S1010C2_nt2v3Ev();
extern void _ZN10S1010C2_nt2v4Ev();
extern void _ZN7S1010C12v1Ev();
extern void _ZN7S1010C12v2Ev();
static  VTBL_ENTRY vtc_S1010C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1010C1[0]),
  (VTBL_ENTRY)&_ZN7S1010C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1010C1D0Ev,
  (VTBL_ENTRY)&_ZN10S1010C2_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S1010C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S1010C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1010C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S1010C1[];
extern  VTBL_ENTRY _ZTV7S1010C1[];
Class_Descriptor cd_S1010C1 = {  "S1010C1", // class name
  bases_S1010C1, 3,
  &(vtc_S1010C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S1010C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1010C1),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  S983C3  : S28C13_nt {
};
//SIG(-1 S983C3) C1{ BC2{ m Fi}}



static void Test_S983C3()
{
  extern Class_Descriptor cd_S983C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S983C3, buf);
    S983C3 &lv = *(new (buf) S983C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S983C3)");
    check2(__alignof__(lv), 4, "__alignof__(S983C3)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S983C3");
    test_class_info(&lv, &cd_S983C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS983C3(Test_S983C3, "S983C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S983C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S983C3 = {  "S983C3", // class name
  bases_S983C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S983C2_nt  : S983C3 {
  unsigned int s983c2f0:1;
  unsigned int s983c2f1:1;
  int s983c2f2:4;
};
//SIG(-1 S983C2_nt) C1{ BC2{ BC3{ m Fi}} Fi:1 Fi:1 Fi:4}



//skip512 S983C2_nt

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S983C3;
static Base_Class bases_S983C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S983C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S983C2_nt = {  "S983C2_nt", // class name
  bases_S983C2_nt, 2,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S983C1  : S983C2_nt {
  ::S17885C12 s983c1f0;
  ::S17885C6_nt s983c1f1;
  ::S8211C10 s983c1f2;
};
//SIG(1 S983C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fi:1 Fi:1 Fi:4} FC5{ m Fp} FC6{ m Fp} FC7{ m Fp}}



static void Test_S983C1()
{
  extern Class_Descriptor cd_S983C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S983C1, buf);
    S983C1 &lv = *(new (buf) S983C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S983C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S983C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S983C3*)(S983C2_nt*), 0, "S983C1");
    check_base_class_offset(lv, (S983C3*)(S983C2_nt*), 0, "S983C1");
    check_base_class_offset(lv, (S983C2_nt*), 0, "S983C1");
    check_field_offset(lv, s983c1f0, 8, "S983C1.s983c1f0");
    check_field_offset(lv, s983c1f1, ABISELECT(16,12), "S983C1.s983c1f1");
    check_field_offset(lv, s983c1f2, ABISELECT(24,16), "S983C1.s983c1f2");
    test_class_info(&lv, &cd_S983C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS983C1(Test_S983C1, "S983C1", ABISELECT(32,20));

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S983C3;
extern Class_Descriptor cd_S983C2_nt;
static Base_Class bases_S983C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S983C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S983C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S983C1 = {  "S983C1", // class name
  bases_S983C1, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(32,20), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2984C3  {
  virtual  ~S2984C3(); // _ZN7S2984C3D1Ev
  virtual void  v1(); // _ZN7S2984C32v1Ev
  virtual void  v2(); // _ZN7S2984C32v2Ev
  virtual void  v3(); // _ZN7S2984C32v3Ev
  virtual void  v4(); // _ZN7S2984C32v4Ev
  virtual void  v5(); // _ZN7S2984C32v5Ev
  virtual void  v6(); // _ZN7S2984C32v6Ev
  virtual void  v7(); // _ZN7S2984C32v7Ev
  virtual void  v8(); // _ZN7S2984C32v8Ev
  virtual void  v9(); // _ZN7S2984C32v9Ev
  S2984C3(); // tgen
};
//SIG(-1 S2984C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S2984C3 ::~S2984C3(){ note_dtor("S2984C3", this);}
void  S2984C3 ::v1(){vfunc_called(this, "_ZN7S2984C32v1Ev");}
void  S2984C3 ::v2(){vfunc_called(this, "_ZN7S2984C32v2Ev");}
void  S2984C3 ::v3(){vfunc_called(this, "_ZN7S2984C32v3Ev");}
void  S2984C3 ::v4(){vfunc_called(this, "_ZN7S2984C32v4Ev");}
void  S2984C3 ::v5(){vfunc_called(this, "_ZN7S2984C32v5Ev");}
void  S2984C3 ::v6(){vfunc_called(this, "_ZN7S2984C32v6Ev");}
void  S2984C3 ::v7(){vfunc_called(this, "_ZN7S2984C32v7Ev");}
void  S2984C3 ::v8(){vfunc_called(this, "_ZN7S2984C32v8Ev");}
void  S2984C3 ::v9(){vfunc_called(this, "_ZN7S2984C32v9Ev");}
S2984C3 ::S2984C3(){ note_ctor("S2984C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S2984C3C1Ev();
extern void _ZN7S2984C3D1Ev();
Name_Map name_map_S2984C3[] = {
  NSPAIR(_ZN7S2984C3C1Ev),
  NSPAIR(_ZN7S2984C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2984C3[];
extern void _ZN7S2984C3D1Ev();
extern void _ZN7S2984C3D0Ev();
extern void _ZN7S2984C32v1Ev();
extern void _ZN7S2984C32v2Ev();
extern void _ZN7S2984C32v3Ev();
extern void _ZN7S2984C32v4Ev();
extern void _ZN7S2984C32v5Ev();
extern void _ZN7S2984C32v6Ev();
extern void _ZN7S2984C32v7Ev();
extern void _ZN7S2984C32v8Ev();
extern void _ZN7S2984C32v9Ev();
static  VTBL_ENTRY vtc_S2984C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2984C3[0]),
  (VTBL_ENTRY)&_ZN7S2984C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2984C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v1Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v2Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v3Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v4Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v5Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v9Ev,
};
extern VTBL_ENTRY _ZTI7S2984C3[];
extern  VTBL_ENTRY _ZTV7S2984C3[];
Class_Descriptor cd_S2984C3 = {  "S2984C3", // class name
  0,0,//no base classes
  &(vtc_S2984C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2984C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2984C3),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  S2984C2  : S2984C3 {
  void *s2984c2f0;
  virtual  ~S2984C2(); // _ZN7S2984C2D1Ev
  virtual void  v10(); // _ZN7S2984C23v10Ev
  virtual void  v11(); // _ZN7S2984C23v11Ev
  S2984C2(); // tgen
};
//SIG(-1 S2984C2) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11} vd v1 v2 Fp}


 S2984C2 ::~S2984C2(){ note_dtor("S2984C2", this);}
void  S2984C2 ::v10(){vfunc_called(this, "_ZN7S2984C23v10Ev");}
void  S2984C2 ::v11(){vfunc_called(this, "_ZN7S2984C23v11Ev");}
S2984C2 ::S2984C2(){ note_ctor("S2984C2", this);} // tgen

static void Test_S2984C2()
{
  extern Class_Descriptor cd_S2984C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S2984C2, buf);
    S2984C2 *dp, &lv = *(dp=new (buf) S2984C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S2984C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2984C2)");
    check_base_class_offset(lv, (S2984C3*), 0, "S2984C2");
    check_field_offset(lv, s2984c2f0, ABISELECT(8,4), "S2984C2.s2984c2f0");
    test_class_info(&lv, &cd_S2984C2);
    dp->~S2984C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2984C2(Test_S2984C2, "S2984C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S2984C2C1Ev();
extern void _ZN7S2984C2D1Ev();
Name_Map name_map_S2984C2[] = {
  NSPAIR(_ZN7S2984C2C1Ev),
  NSPAIR(_ZN7S2984C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2984C3;
extern VTBL_ENTRY _ZTI7S2984C3[];
extern  VTBL_ENTRY _ZTV7S2984C3[];
static Base_Class bases_S2984C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2984C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2984C2[];
extern void _ZN7S2984C2D1Ev();
extern void _ZN7S2984C2D0Ev();
extern void _ZN7S2984C32v1Ev();
extern void _ZN7S2984C32v2Ev();
extern void _ZN7S2984C32v3Ev();
extern void _ZN7S2984C32v4Ev();
extern void _ZN7S2984C32v5Ev();
extern void _ZN7S2984C32v6Ev();
extern void _ZN7S2984C32v7Ev();
extern void _ZN7S2984C32v8Ev();
extern void _ZN7S2984C32v9Ev();
extern void _ZN7S2984C23v10Ev();
extern void _ZN7S2984C23v11Ev();
static  VTBL_ENTRY vtc_S2984C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2984C2[0]),
  (VTBL_ENTRY)&_ZN7S2984C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2984C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v1Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v2Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v3Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v4Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v5Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2984C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2984C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S2984C2[];
extern  VTBL_ENTRY _ZTV7S2984C2[];
Class_Descriptor cd_S2984C2 = {  "S2984C2", // class name
  bases_S2984C2, 1,
  &(vtc_S2984C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S2984C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2984C2),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2984C1  : S2984C2 {
  long double s2984c1f0;
  int s2984c1f1;
  virtual  ~S2984C1(); // _ZN7S2984C1D1Ev
  S2984C1(); // tgen
};
//SIG(1 S2984C1) C1{ BC2{ BC3{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9} vd v10 v11 Fp} vd FD Fi}


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

static void Test_S2984C1()
{
  extern Class_Descriptor cd_S2984C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,7)];
    init_test(&cd_S2984C1, buf);
    S2984C1 *dp, &lv = *(dp=new (buf) S2984C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S2984C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2984C1)");
    check_base_class_offset(lv, (S2984C3*)(S2984C2*), 0, "S2984C1");
    check_base_class_offset(lv, (S2984C2*), 0, "S2984C1");
    check_field_offset(lv, s2984c1f0, ABISELECT(16,8), "S2984C1.s2984c1f0");
    check_field_offset(lv, s2984c1f1, ABISELECT(32,20), "S2984C1.s2984c1f1");
    test_class_info(&lv, &cd_S2984C1);
    dp->~S2984C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2984C1(Test_S2984C1, "S2984C1", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S2984C1C1Ev();
extern void _ZN7S2984C1D1Ev();
Name_Map name_map_S2984C1[] = {
  NSPAIR(_ZN7S2984C1C1Ev),
  NSPAIR(_ZN7S2984C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2984C3;
extern VTBL_ENTRY _ZTI7S2984C3[];
extern  VTBL_ENTRY _ZTV7S2984C3[];
extern Class_Descriptor cd_S2984C2;
extern VTBL_ENTRY _ZTI7S2984C2[];
extern  VTBL_ENTRY _ZTV7S2984C2[];
static Base_Class bases_S2984C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2984C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2984C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2984C1[];
extern void _ZN7S2984C1D1Ev();
extern void _ZN7S2984C1D0Ev();
extern void _ZN7S2984C32v1Ev();
extern void _ZN7S2984C32v2Ev();
extern void _ZN7S2984C32v3Ev();
extern void _ZN7S2984C32v4Ev();
extern void _ZN7S2984C32v5Ev();
extern void _ZN7S2984C32v6Ev();
extern void _ZN7S2984C32v7Ev();
extern void _ZN7S2984C32v8Ev();
extern void _ZN7S2984C32v9Ev();
extern void _ZN7S2984C23v10Ev();
extern void _ZN7S2984C23v11Ev();
static  VTBL_ENTRY vtc_S2984C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2984C1[0]),
  (VTBL_ENTRY)&_ZN7S2984C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2984C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v1Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v2Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v3Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v4Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v5Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2984C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2984C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2984C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S2984C1[];
extern  VTBL_ENTRY _ZTV7S2984C1[];
Class_Descriptor cd_S2984C1 = {  "S2984C1", // class name
  bases_S2984C1, 2,
  &(vtc_S2984C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S2984C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2984C1),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9807C2  {
  virtual  ~S9807C2(); // _ZN7S9807C2D1Ev
  virtual void  v4(); // _ZN7S9807C22v4Ev
  virtual void  v5(); // _ZN7S9807C22v5Ev
  virtual void  v6(); // _ZN7S9807C22v6Ev
  virtual void  v7(); // _ZN7S9807C22v7Ev
  virtual void  v8(); // _ZN7S9807C22v8Ev
  virtual void  v9(); // _ZN7S9807C22v9Ev
  virtual void  v10(); // _ZN7S9807C23v10Ev
  virtual void  v11(); // _ZN7S9807C23v11Ev
  virtual void  v12(); // _ZN7S9807C23v12Ev
  S9807C2(); // tgen
};
//SIG(-1 S9807C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S9807C2 ::~S9807C2(){ note_dtor("S9807C2", this);}
void  S9807C2 ::v4(){vfunc_called(this, "_ZN7S9807C22v4Ev");}
void  S9807C2 ::v5(){vfunc_called(this, "_ZN7S9807C22v5Ev");}
void  S9807C2 ::v6(){vfunc_called(this, "_ZN7S9807C22v6Ev");}
void  S9807C2 ::v7(){vfunc_called(this, "_ZN7S9807C22v7Ev");}
void  S9807C2 ::v8(){vfunc_called(this, "_ZN7S9807C22v8Ev");}
void  S9807C2 ::v9(){vfunc_called(this, "_ZN7S9807C22v9Ev");}
void  S9807C2 ::v10(){vfunc_called(this, "_ZN7S9807C23v10Ev");}
void  S9807C2 ::v11(){vfunc_called(this, "_ZN7S9807C23v11Ev");}
void  S9807C2 ::v12(){vfunc_called(this, "_ZN7S9807C23v12Ev");}
S9807C2 ::S9807C2(){ note_ctor("S9807C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S9807C2C1Ev();
extern void _ZN7S9807C2D1Ev();
Name_Map name_map_S9807C2[] = {
  NSPAIR(_ZN7S9807C2C1Ev),
  NSPAIR(_ZN7S9807C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9807C2[];
extern void _ZN7S9807C2D1Ev();
extern void _ZN7S9807C2D0Ev();
extern void _ZN7S9807C22v4Ev();
extern void _ZN7S9807C22v5Ev();
extern void _ZN7S9807C22v6Ev();
extern void _ZN7S9807C22v7Ev();
extern void _ZN7S9807C22v8Ev();
extern void _ZN7S9807C22v9Ev();
extern void _ZN7S9807C23v10Ev();
extern void _ZN7S9807C23v11Ev();
extern void _ZN7S9807C23v12Ev();
static  VTBL_ENTRY vtc_S9807C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9807C2[0]),
  (VTBL_ENTRY)&_ZN7S9807C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9807C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9807C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9807C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9807C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9807C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9807C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9807C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9807C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9807C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9807C23v12Ev,
};
extern VTBL_ENTRY _ZTI7S9807C2[];
extern  VTBL_ENTRY _ZTV7S9807C2[];
Class_Descriptor cd_S9807C2 = {  "S9807C2", // class name
  0,0,//no base classes
  &(vtc_S9807C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9807C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9807C2),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  S9807C1  : S9807C2 {
  void *s9807c1f0;
  int s9807c1f1;
  void *s9807c1f2[3];
  virtual  ~S9807C1(); // _ZN7S9807C1D1Ev
  virtual void  v1(); // _ZN7S9807C12v1Ev
  virtual void  v2(); // _ZN7S9807C12v2Ev
  virtual void  v3(); // _ZN7S9807C12v3Ev
  S9807C1(); // tgen
};
//SIG(1 S9807C1) C1{ BC2{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12} vd v1 v2 v3 Fp Fi Fp[3]}


 S9807C1 ::~S9807C1(){ note_dtor("S9807C1", this);}
void  S9807C1 ::v1(){vfunc_called(this, "_ZN7S9807C12v1Ev");}
void  S9807C1 ::v2(){vfunc_called(this, "_ZN7S9807C12v2Ev");}
void  S9807C1 ::v3(){vfunc_called(this, "_ZN7S9807C12v3Ev");}
S9807C1 ::S9807C1(){ note_ctor("S9807C1", this);} // tgen

static void Test_S9807C1()
{
  extern Class_Descriptor cd_S9807C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S9807C1, buf);
    S9807C1 *dp, &lv = *(dp=new (buf) S9807C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S9807C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9807C1)");
    check_base_class_offset(lv, (S9807C2*), 0, "S9807C1");
    check_field_offset(lv, s9807c1f0, ABISELECT(8,4), "S9807C1.s9807c1f0");
    check_field_offset(lv, s9807c1f1, ABISELECT(16,8), "S9807C1.s9807c1f1");
    check_field_offset(lv, s9807c1f2, ABISELECT(24,12), "S9807C1.s9807c1f2");
    test_class_info(&lv, &cd_S9807C1);
    dp->~S9807C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9807C1(Test_S9807C1, "S9807C1", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S9807C1C1Ev();
extern void _ZN7S9807C1D1Ev();
Name_Map name_map_S9807C1[] = {
  NSPAIR(_ZN7S9807C1C1Ev),
  NSPAIR(_ZN7S9807C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9807C2;
extern VTBL_ENTRY _ZTI7S9807C2[];
extern  VTBL_ENTRY _ZTV7S9807C2[];
static Base_Class bases_S9807C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9807C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9807C1[];
extern void _ZN7S9807C1D1Ev();
extern void _ZN7S9807C1D0Ev();
extern void _ZN7S9807C22v4Ev();
extern void _ZN7S9807C22v5Ev();
extern void _ZN7S9807C22v6Ev();
extern void _ZN7S9807C22v7Ev();
extern void _ZN7S9807C22v8Ev();
extern void _ZN7S9807C22v9Ev();
extern void _ZN7S9807C23v10Ev();
extern void _ZN7S9807C23v11Ev();
extern void _ZN7S9807C23v12Ev();
extern void _ZN7S9807C12v1Ev();
extern void _ZN7S9807C12v2Ev();
extern void _ZN7S9807C12v3Ev();
static  VTBL_ENTRY vtc_S9807C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9807C1[0]),
  (VTBL_ENTRY)&_ZN7S9807C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9807C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9807C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9807C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9807C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9807C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9807C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9807C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9807C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9807C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9807C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9807C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9807C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9807C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S9807C1[];
extern  VTBL_ENTRY _ZTV7S9807C1[];
Class_Descriptor cd_S9807C1 = {  "S9807C1", // class name
  bases_S9807C1, 1,
  &(vtc_S9807C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S9807C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9807C1),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10053C2  {
  virtual  ~S10053C2(); // _ZN8S10053C2D1Ev
  virtual void  v6(); // _ZN8S10053C22v6Ev
  virtual void  v7(); // _ZN8S10053C22v7Ev
  virtual void  v8(); // _ZN8S10053C22v8Ev
  virtual void  v9(); // _ZN8S10053C22v9Ev
  virtual void  v10(); // _ZN8S10053C23v10Ev
  virtual void  v11(); // _ZN8S10053C23v11Ev
  virtual void  v12(); // _ZN8S10053C23v12Ev
  virtual void  v13(); // _ZN8S10053C23v13Ev
  virtual void  v14(); // _ZN8S10053C23v14Ev
  S10053C2(); // tgen
};
//SIG(-1 S10053C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S10053C2 ::~S10053C2(){ note_dtor("S10053C2", this);}
void  S10053C2 ::v6(){vfunc_called(this, "_ZN8S10053C22v6Ev");}
void  S10053C2 ::v7(){vfunc_called(this, "_ZN8S10053C22v7Ev");}
void  S10053C2 ::v8(){vfunc_called(this, "_ZN8S10053C22v8Ev");}
void  S10053C2 ::v9(){vfunc_called(this, "_ZN8S10053C22v9Ev");}
void  S10053C2 ::v10(){vfunc_called(this, "_ZN8S10053C23v10Ev");}
void  S10053C2 ::v11(){vfunc_called(this, "_ZN8S10053C23v11Ev");}
void  S10053C2 ::v12(){vfunc_called(this, "_ZN8S10053C23v12Ev");}
void  S10053C2 ::v13(){vfunc_called(this, "_ZN8S10053C23v13Ev");}
void  S10053C2 ::v14(){vfunc_called(this, "_ZN8S10053C23v14Ev");}
S10053C2 ::S10053C2(){ note_ctor("S10053C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S10053C2C1Ev();
extern void _ZN8S10053C2D1Ev();
Name_Map name_map_S10053C2[] = {
  NSPAIR(_ZN8S10053C2C1Ev),
  NSPAIR(_ZN8S10053C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10053C2[];
extern void _ZN8S10053C2D1Ev();
extern void _ZN8S10053C2D0Ev();
extern void _ZN8S10053C22v6Ev();
extern void _ZN8S10053C22v7Ev();
extern void _ZN8S10053C22v8Ev();
extern void _ZN8S10053C22v9Ev();
extern void _ZN8S10053C23v10Ev();
extern void _ZN8S10053C23v11Ev();
extern void _ZN8S10053C23v12Ev();
extern void _ZN8S10053C23v13Ev();
extern void _ZN8S10053C23v14Ev();
static  VTBL_ENTRY vtc_S10053C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10053C2[0]),
  (VTBL_ENTRY)&_ZN8S10053C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10053C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10053C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10053C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10053C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10053C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10053C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10053C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10053C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10053C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10053C23v14Ev,
};
extern VTBL_ENTRY _ZTI8S10053C2[];
extern  VTBL_ENTRY _ZTV8S10053C2[];
Class_Descriptor cd_S10053C2 = {  "S10053C2", // class name
  0,0,//no base classes
  &(vtc_S10053C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S10053C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10053C2),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  S10053C1  : S10053C2 {
  void *s10053c1f0;
  virtual  ~S10053C1(); // _ZN8S10053C1D1Ev
  virtual void  v1(); // _ZN8S10053C12v1Ev
  virtual void  v2(); // _ZN8S10053C12v2Ev
  virtual void  v3(); // _ZN8S10053C12v3Ev
  virtual void  v4(); // _ZN8S10053C12v4Ev
  virtual void  v5(); // _ZN8S10053C12v5Ev
  S10053C1(); // tgen
};
//SIG(1 S10053C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14} vd v1 v2 v3 v4 v5 Fp}


 S10053C1 ::~S10053C1(){ note_dtor("S10053C1", this);}
void  S10053C1 ::v1(){vfunc_called(this, "_ZN8S10053C12v1Ev");}
void  S10053C1 ::v2(){vfunc_called(this, "_ZN8S10053C12v2Ev");}
void  S10053C1 ::v3(){vfunc_called(this, "_ZN8S10053C12v3Ev");}
void  S10053C1 ::v4(){vfunc_called(this, "_ZN8S10053C12v4Ev");}
void  S10053C1 ::v5(){vfunc_called(this, "_ZN8S10053C12v5Ev");}
S10053C1 ::S10053C1(){ note_ctor("S10053C1", this);} // tgen

static void Test_S10053C1()
{
  extern Class_Descriptor cd_S10053C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S10053C1, buf);
    S10053C1 *dp, &lv = *(dp=new (buf) S10053C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S10053C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10053C1)");
    check_base_class_offset(lv, (S10053C2*), 0, "S10053C1");
    check_field_offset(lv, s10053c1f0, ABISELECT(8,4), "S10053C1.s10053c1f0");
    test_class_info(&lv, &cd_S10053C1);
    dp->~S10053C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10053C1(Test_S10053C1, "S10053C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S10053C1C1Ev();
extern void _ZN8S10053C1D1Ev();
Name_Map name_map_S10053C1[] = {
  NSPAIR(_ZN8S10053C1C1Ev),
  NSPAIR(_ZN8S10053C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10053C2;
extern VTBL_ENTRY _ZTI8S10053C2[];
extern  VTBL_ENTRY _ZTV8S10053C2[];
static Base_Class bases_S10053C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10053C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10053C1[];
extern void _ZN8S10053C1D1Ev();
extern void _ZN8S10053C1D0Ev();
extern void _ZN8S10053C22v6Ev();
extern void _ZN8S10053C22v7Ev();
extern void _ZN8S10053C22v8Ev();
extern void _ZN8S10053C22v9Ev();
extern void _ZN8S10053C23v10Ev();
extern void _ZN8S10053C23v11Ev();
extern void _ZN8S10053C23v12Ev();
extern void _ZN8S10053C23v13Ev();
extern void _ZN8S10053C23v14Ev();
extern void _ZN8S10053C12v1Ev();
extern void _ZN8S10053C12v2Ev();
extern void _ZN8S10053C12v3Ev();
extern void _ZN8S10053C12v4Ev();
extern void _ZN8S10053C12v5Ev();
static  VTBL_ENTRY vtc_S10053C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10053C1[0]),
  (VTBL_ENTRY)&_ZN8S10053C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10053C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10053C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10053C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10053C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10053C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10053C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10053C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10053C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10053C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10053C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10053C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10053C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10053C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10053C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10053C12v5Ev,
};
extern VTBL_ENTRY _ZTI8S10053C1[];
extern  VTBL_ENTRY _ZTV8S10053C1[];
Class_Descriptor cd_S10053C1 = {  "S10053C1", // class name
  bases_S10053C1, 1,
  &(vtc_S10053C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S10053C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10053C1),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  S10052C2  {
  virtual  ~S10052C2(); // _ZN8S10052C2D1Ev
  virtual void  v6(); // _ZN8S10052C22v6Ev
  virtual void  v7(); // _ZN8S10052C22v7Ev
  virtual void  v8(); // _ZN8S10052C22v8Ev
  virtual void  v9(); // _ZN8S10052C22v9Ev
  virtual void  v10(); // _ZN8S10052C23v10Ev
  virtual void  v11(); // _ZN8S10052C23v11Ev
  virtual void  v12(); // _ZN8S10052C23v12Ev
  virtual void  v13(); // _ZN8S10052C23v13Ev
  virtual void  v14(); // _ZN8S10052C23v14Ev
  S10052C2(); // tgen
};
//SIG(-1 S10052C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S10052C2 ::~S10052C2(){ note_dtor("S10052C2", this);}
void  S10052C2 ::v6(){vfunc_called(this, "_ZN8S10052C22v6Ev");}
void  S10052C2 ::v7(){vfunc_called(this, "_ZN8S10052C22v7Ev");}
void  S10052C2 ::v8(){vfunc_called(this, "_ZN8S10052C22v8Ev");}
void  S10052C2 ::v9(){vfunc_called(this, "_ZN8S10052C22v9Ev");}
void  S10052C2 ::v10(){vfunc_called(this, "_ZN8S10052C23v10Ev");}
void  S10052C2 ::v11(){vfunc_called(this, "_ZN8S10052C23v11Ev");}
void  S10052C2 ::v12(){vfunc_called(this, "_ZN8S10052C23v12Ev");}
void  S10052C2 ::v13(){vfunc_called(this, "_ZN8S10052C23v13Ev");}
void  S10052C2 ::v14(){vfunc_called(this, "_ZN8S10052C23v14Ev");}
S10052C2 ::S10052C2(){ note_ctor("S10052C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S10052C2C1Ev();
extern void _ZN8S10052C2D1Ev();
Name_Map name_map_S10052C2[] = {
  NSPAIR(_ZN8S10052C2C1Ev),
  NSPAIR(_ZN8S10052C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10052C2[];
extern void _ZN8S10052C2D1Ev();
extern void _ZN8S10052C2D0Ev();
extern void _ZN8S10052C22v6Ev();
extern void _ZN8S10052C22v7Ev();
extern void _ZN8S10052C22v8Ev();
extern void _ZN8S10052C22v9Ev();
extern void _ZN8S10052C23v10Ev();
extern void _ZN8S10052C23v11Ev();
extern void _ZN8S10052C23v12Ev();
extern void _ZN8S10052C23v13Ev();
extern void _ZN8S10052C23v14Ev();
static  VTBL_ENTRY vtc_S10052C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10052C2[0]),
  (VTBL_ENTRY)&_ZN8S10052C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10052C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10052C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10052C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10052C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10052C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10052C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10052C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10052C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10052C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10052C23v14Ev,
};
extern VTBL_ENTRY _ZTI8S10052C2[];
extern  VTBL_ENTRY _ZTV8S10052C2[];
Class_Descriptor cd_S10052C2 = {  "S10052C2", // class name
  0,0,//no base classes
  &(vtc_S10052C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S10052C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10052C2),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  S10052C1  : S10052C2 {
  int s10052c1f0;
  virtual  ~S10052C1(); // _ZN8S10052C1D1Ev
  virtual void  v1(); // _ZN8S10052C12v1Ev
  virtual void  v2(); // _ZN8S10052C12v2Ev
  virtual void  v3(); // _ZN8S10052C12v3Ev
  virtual void  v4(); // _ZN8S10052C12v4Ev
  virtual void  v5(); // _ZN8S10052C12v5Ev
  S10052C1(); // tgen
};
//SIG(1 S10052C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14} vd v1 v2 v3 v4 v5 Fi}


 S10052C1 ::~S10052C1(){ note_dtor("S10052C1", this);}
void  S10052C1 ::v1(){vfunc_called(this, "_ZN8S10052C12v1Ev");}
void  S10052C1 ::v2(){vfunc_called(this, "_ZN8S10052C12v2Ev");}
void  S10052C1 ::v3(){vfunc_called(this, "_ZN8S10052C12v3Ev");}
void  S10052C1 ::v4(){vfunc_called(this, "_ZN8S10052C12v4Ev");}
void  S10052C1 ::v5(){vfunc_called(this, "_ZN8S10052C12v5Ev");}
S10052C1 ::S10052C1(){ note_ctor("S10052C1", this);} // tgen

static void Test_S10052C1()
{
  extern Class_Descriptor cd_S10052C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S10052C1, buf);
    S10052C1 *dp, &lv = *(dp=new (buf) S10052C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S10052C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10052C1)");
    check_base_class_offset(lv, (S10052C2*), 0, "S10052C1");
    check_field_offset(lv, s10052c1f0, ABISELECT(8,4), "S10052C1.s10052c1f0");
    test_class_info(&lv, &cd_S10052C1);
    dp->~S10052C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10052C1(Test_S10052C1, "S10052C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S10052C1C1Ev();
extern void _ZN8S10052C1D1Ev();
Name_Map name_map_S10052C1[] = {
  NSPAIR(_ZN8S10052C1C1Ev),
  NSPAIR(_ZN8S10052C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10052C2;
extern VTBL_ENTRY _ZTI8S10052C2[];
extern  VTBL_ENTRY _ZTV8S10052C2[];
static Base_Class bases_S10052C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10052C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10052C1[];
extern void _ZN8S10052C1D1Ev();
extern void _ZN8S10052C1D0Ev();
extern void _ZN8S10052C22v6Ev();
extern void _ZN8S10052C22v7Ev();
extern void _ZN8S10052C22v8Ev();
extern void _ZN8S10052C22v9Ev();
extern void _ZN8S10052C23v10Ev();
extern void _ZN8S10052C23v11Ev();
extern void _ZN8S10052C23v12Ev();
extern void _ZN8S10052C23v13Ev();
extern void _ZN8S10052C23v14Ev();
extern void _ZN8S10052C12v1Ev();
extern void _ZN8S10052C12v2Ev();
extern void _ZN8S10052C12v3Ev();
extern void _ZN8S10052C12v4Ev();
extern void _ZN8S10052C12v5Ev();
static  VTBL_ENTRY vtc_S10052C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10052C1[0]),
  (VTBL_ENTRY)&_ZN8S10052C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10052C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10052C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10052C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10052C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10052C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10052C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10052C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10052C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10052C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10052C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10052C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10052C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10052C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10052C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10052C12v5Ev,
};
extern VTBL_ENTRY _ZTI8S10052C1[];
extern  VTBL_ENTRY _ZTV8S10052C1[];
Class_Descriptor cd_S10052C1 = {  "S10052C1", // class name
  bases_S10052C1, 1,
  &(vtc_S10052C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S10052C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10052C1),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  S19913C3  : virtual S17885C12 {
  virtual void  v2(); // _ZN8S19913C32v2Ev
  ~S19913C3(); // tgen
  S19913C3(); // tgen
};
//SIG(-1 S19913C3) C1{ VBC2{ m Fp} v1}


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

static void Test_S19913C3()
{
  extern Class_Descriptor cd_S19913C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19913C3, buf);
    S19913C3 *dp, &lv = *(dp=new (buf) S19913C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19913C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19913C3)");
    check_base_class_offset(lv, (S17885C12*), ABISELECT(8,4), "S19913C3");
    test_class_info(&lv, &cd_S19913C3);
    dp->~S19913C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19913C3(Test_S19913C3, "S19913C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19913C3C1Ev();
extern void _ZN8S19913C3D1Ev();
Name_Map name_map_S19913C3[] = {
  NSPAIR(_ZN8S19913C3C1Ev),
  NSPAIR(_ZN8S19913C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S17885C12;
extern VTBL_ENTRY _ZTI9S17885C12[];
static Base_Class bases_S19913C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S17885C12,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19913C3[];
extern void _ZN8S19913C32v2Ev();
static  VTBL_ENTRY vtc_S19913C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19913C3[0]),
  (VTBL_ENTRY)&_ZN8S19913C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S19913C3[];
static  VTT_ENTRY vtt_S19913C3[] = {
  {&(_ZTV8S19913C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19913C3[];
extern  VTBL_ENTRY _ZTV8S19913C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19913C3[];
Class_Descriptor cd_S19913C3 = {  "S19913C3", // class name
  bases_S19913C3, 1,
  &(vtc_S19913C3[0]), // expected_vtbl_contents
  &(vtt_S19913C3[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19913C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19913C3),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19913C3),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  S19913C2  {
  ::S19913C3 s19913c2f0[9];
  ::S7166C16_nt s19913c2f1;
  ::S19913C3 s19913c2f2[10];
  char s19913c2f3[3];
  virtual void  v1(); // _ZN8S19913C22v1Ev
  ~S19913C2(); // tgen
  S19913C2(); // tgen
};
//SIG(-1 S19913C2) C1{ v1 FC2{ VBC3{ m Fp} v2}[9] FC4{} FC2[10] Fc[3]}


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

static void Test_S19913C2()
{
  extern Class_Descriptor cd_S19913C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[42];
    init_test(&cd_S19913C2, buf);
    S19913C2 *dp, &lv = *(dp=new (buf) S19913C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(328,164), "sizeof(S19913C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19913C2)");
    check_field_offset(lv, s19913c2f0, ABISELECT(8,4), "S19913C2.s19913c2f0");
    check_field_offset(lv, s19913c2f1, ABISELECT(152,76), "S19913C2.s19913c2f1");
    check_field_offset(lv, s19913c2f2, ABISELECT(160,80), "S19913C2.s19913c2f2");
    check_field_offset(lv, s19913c2f3, ABISELECT(320,160), "S19913C2.s19913c2f3");
    test_class_info(&lv, &cd_S19913C2);
    dp->~S19913C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19913C2(Test_S19913C2, "S19913C2", ABISELECT(328,164));

#else // __cplusplus

extern void _ZN8S19913C2C1Ev();
extern void _ZN8S19913C2D1Ev();
Name_Map name_map_S19913C2[] = {
  NSPAIR(_ZN8S19913C2C1Ev),
  NSPAIR(_ZN8S19913C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19913C2[];
extern void _ZN8S19913C22v1Ev();
static  VTBL_ENTRY vtc_S19913C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19913C2[0]),
  (VTBL_ENTRY)&_ZN8S19913C22v1Ev,
};
extern VTBL_ENTRY _ZTI8S19913C2[];
extern  VTBL_ENTRY _ZTV8S19913C2[];
Class_Descriptor cd_S19913C2 = {  "S19913C2", // class name
  0,0,//no base classes
  &(vtc_S19913C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(328,164), // object size
  NSPAIRA(_ZTI8S19913C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19913C2),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19913C1  : virtual S19913C2 {
  int s19913c1f0;
  ::S19913C3 s19913c1f1;
  __tsi64 s19913c1f2;
  ~S19913C1(); // tgen
  S19913C1(); // tgen
};
//SIG(1 S19913C1) C1{ VBC2{ v1 FC3{ VBC4{ m Fp} v2}[9] FC5{} FC3[10] Fc[3]} Fi FC3 FL}


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

static void Test_S19913C1()
{
  extern Class_Descriptor cd_S19913C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(47,48)];
    init_test(&cd_S19913C1, buf);
    S19913C1 *dp, &lv = *(dp=new (buf) S19913C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,188), "sizeof(S19913C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19913C1)");
    check_base_class_offset(lv, (S19913C2*), ABISELECT(40,24), "S19913C1");
    check_field_offset(lv, s19913c1f0, ABISELECT(8,4), "S19913C1.s19913c1f0");
    check_field_offset(lv, s19913c1f1, ABISELECT(16,8), "S19913C1.s19913c1f1");
    check_field_offset(lv, s19913c1f2, ABISELECT(32,16), "S19913C1.s19913c1f2");
    test_class_info(&lv, &cd_S19913C1);
    dp->~S19913C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19913C1(Test_S19913C1, "S19913C1", ABISELECT(368,188));

#else // __cplusplus

extern void _ZN8S19913C1C1Ev();
extern void _ZN8S19913C1D1Ev();
Name_Map name_map_S19913C1[] = {
  NSPAIR(_ZN8S19913C1C1Ev),
  NSPAIR(_ZN8S19913C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19913C2;
extern VTBL_ENTRY _ZTI8S19913C2[];
extern  VTBL_ENTRY _ZTV8S19913C2[];
static Base_Class bases_S19913C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19913C2,    ABISELECT(40,24), //bcp->offset
    3, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19913C1[];
extern void _ZN8S19913C22v1Ev();
static  VTBL_ENTRY vtc_S19913C1[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19913C1[0]),
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19913C1[0]),
  (VTBL_ENTRY)&_ZN8S19913C22v1Ev,
};
extern VTBL_ENTRY _ZTV8S19913C1[];
static  VTT_ENTRY vtt_S19913C1[] = {
  {&(_ZTV8S19913C1[3]),  3,7},
  {&(_ZTV8S19913C1[6]),  6,7},
};
extern VTBL_ENTRY _ZTI8S19913C1[];
extern  VTBL_ENTRY _ZTV8S19913C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19913C1[];
Class_Descriptor cd_S19913C1 = {  "S19913C1", // class name
  bases_S19913C1, 1,
  &(vtc_S19913C1[0]), // expected_vtbl_contents
  &(vtt_S19913C1[0]), // expected_vtt_contents
  ABISELECT(368,188), // object size
  NSPAIRA(_ZTI8S19913C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19913C1),7, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19913C1),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  S11216C1  {
  ::S11218C2 s11216c1f0;
  ::S11218C3_nt s11216c1f1;
  int s11216c1f2[2];
};
//SIG(1 S11216C1) C1{ FC2{ FC3{ Fc[16]} FC4{ Fc[6]} FC5{ Fc[256]}} FC3 Fi[2]}



static void Test_S11216C1()
{
  {
    init_simple_test("S11216C1");
    S11216C1 lv;
    check2(sizeof(lv), 304, "sizeof(S11216C1)");
    check2(__alignof__(lv), 4, "__alignof__(S11216C1)");
    check_field_offset(lv, s11216c1f0, 0, "S11216C1.s11216c1f0");
    check_field_offset(lv, s11216c1f1, 278, "S11216C1.s11216c1f1");
    check_field_offset(lv, s11216c1f2, 296, "S11216C1.s11216c1f2");
  }
}
static Arrange_To_Call_Me vS11216C1(Test_S11216C1, "S11216C1", 304);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S399C4  : S28C13_nt {
};
//SIG(-1 S399C4) C1{ BC2{ m Fi}}



static void Test_S399C4()
{
  extern Class_Descriptor cd_S399C4;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S399C4, buf);
    S399C4 &lv = *(new (buf) S399C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S399C4)");
    check2(__alignof__(lv), 4, "__alignof__(S399C4)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S399C4");
    test_class_info(&lv, &cd_S399C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS399C4(Test_S399C4, "S399C4", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S399C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S399C4[];
Class_Descriptor cd_S399C4 = {  "S399C4", // class name
  bases_S399C4, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI6S399C4),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  S399C3  : S399C4 {
  virtual  ~S399C3(); // _ZN6S399C3D1Ev
  S399C3(); // tgen
};
//SIG(-1 S399C3) C1{ BC2{ BC3{ m Fi}} vd}


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

static void Test_S399C3()
{
  extern Class_Descriptor cd_S399C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S399C3, buf);
    S399C3 *dp, &lv = *(dp=new (buf) S399C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S399C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S399C3)");
    check_base_class_offset(lv, (S28C13_nt*)(S399C4*), ABISELECT(8,4), "S399C3");
    check_base_class_offset(lv, (S399C4*), ABISELECT(8,4), "S399C3");
    test_class_info(&lv, &cd_S399C3);
    dp->~S399C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS399C3(Test_S399C3, "S399C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN6S399C3C1Ev();
extern void _ZN6S399C3D1Ev();
Name_Map name_map_S399C3[] = {
  NSPAIR(_ZN6S399C3C1Ev),
  NSPAIR(_ZN6S399C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S399C4;
extern VTBL_ENTRY _ZTI6S399C4[];
static Base_Class bases_S399C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S399C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S399C3[];
extern void _ZN6S399C3D1Ev();
extern void _ZN6S399C3D0Ev();
static  VTBL_ENTRY vtc_S399C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S399C3[0]),
  (VTBL_ENTRY)&_ZN6S399C3D1Ev,
  (VTBL_ENTRY)&_ZN6S399C3D0Ev,
};
extern VTBL_ENTRY _ZTI6S399C3[];
extern  VTBL_ENTRY _ZTV6S399C3[];
Class_Descriptor cd_S399C3 = {  "S399C3", // class name
  bases_S399C3, 2,
  &(vtc_S399C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI6S399C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV6S399C3),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  S399C2  : S399C3 {
  virtual void  v2(); // _ZN6S399C22v2Ev
  ~S399C2(); // tgen
  S399C2(); // tgen
};
//SIG(-1 S399C2) C1{ BC2{ BC3{ BC4{ m Fi}} vd} v1}


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

static void Test_S399C2()
{
  extern Class_Descriptor cd_S399C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S399C2, buf);
    S399C2 *dp, &lv = *(dp=new (buf) S399C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S399C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S399C2)");
    check_base_class_offset(lv, (S28C13_nt*)(S399C4*)(S399C3*), ABISELECT(8,4), "S399C2");
    check_base_class_offset(lv, (S399C4*)(S399C3*), ABISELECT(8,4), "S399C2");
    check_base_class_offset(lv, (S399C3*), 0, "S399C2");
    test_class_info(&lv, &cd_S399C2);
    dp->~S399C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS399C2(Test_S399C2, "S399C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN6S399C2C1Ev();
extern void _ZN6S399C2D1Ev();
Name_Map name_map_S399C2[] = {
  NSPAIR(_ZN6S399C2C1Ev),
  NSPAIR(_ZN6S399C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S399C4;
extern VTBL_ENTRY _ZTI6S399C4[];
extern Class_Descriptor cd_S399C3;
extern VTBL_ENTRY _ZTI6S399C3[];
extern  VTBL_ENTRY _ZTV6S399C3[];
static Base_Class bases_S399C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S399C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S399C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S399C2[];
extern void _ZN6S399C2D1Ev();
extern void _ZN6S399C2D0Ev();
extern void _ZN6S399C22v2Ev();
static  VTBL_ENTRY vtc_S399C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S399C2[0]),
  (VTBL_ENTRY)&_ZN6S399C2D1Ev,
  (VTBL_ENTRY)&_ZN6S399C2D0Ev,
  (VTBL_ENTRY)&_ZN6S399C22v2Ev,
};
extern VTBL_ENTRY _ZTI6S399C2[];
extern  VTBL_ENTRY _ZTV6S399C2[];
Class_Descriptor cd_S399C2 = {  "S399C2", // class name
  bases_S399C2, 3,
  &(vtc_S399C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI6S399C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S399C2),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S399C6_nt  {
  ::S7166C16_nt s399c6f0;
  void  mf399c6(); // _ZN9S399C6_nt7mf399c6Ev
};
//SIG(-1 S399C6_nt) C1{ m FC2{}}


void  S399C6_nt ::mf399c6(){}

//skip512 S399C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S399C1  : S399C2 {
  ::S399C6_nt s399c1f0;
  void *s399c1f1;
  int s399c1f2[2];
  virtual  ~S399C1(); // _ZN6S399C1D1Ev
  virtual void  v1(); // _ZN6S399C12v1Ev
  S399C1(); // tgen
};
//SIG(1 S399C1) C1{ BC2{ BC3{ BC4{ BC5{ m Fi}} vd} v2} vd v1 FC6{ m FC7{}} Fp Fi[2]}


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

static void Test_S399C1()
{
  extern Class_Descriptor cd_S399C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S399C1, buf);
    S399C1 *dp, &lv = *(dp=new (buf) S399C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S399C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S399C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S399C4*)(S399C3*)(S399C2*), ABISELECT(8,4), "S399C1");
    check_base_class_offset(lv, (S399C4*)(S399C3*)(S399C2*), ABISELECT(8,4), "S399C1");
    check_base_class_offset(lv, (S399C3*)(S399C2*), 0, "S399C1");
    check_base_class_offset(lv, (S399C2*), 0, "S399C1");
    check_field_offset(lv, s399c1f0, ABISELECT(12,8), "S399C1.s399c1f0");
    check_field_offset(lv, s399c1f1, ABISELECT(16,12), "S399C1.s399c1f1");
    check_field_offset(lv, s399c1f2, ABISELECT(24,16), "S399C1.s399c1f2");
    test_class_info(&lv, &cd_S399C1);
    dp->~S399C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS399C1(Test_S399C1, "S399C1", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN6S399C1C1Ev();
extern void _ZN6S399C1D1Ev();
Name_Map name_map_S399C1[] = {
  NSPAIR(_ZN6S399C1C1Ev),
  NSPAIR(_ZN6S399C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S399C4;
extern VTBL_ENTRY _ZTI6S399C4[];
extern Class_Descriptor cd_S399C3;
extern VTBL_ENTRY _ZTI6S399C3[];
extern  VTBL_ENTRY _ZTV6S399C3[];
extern Class_Descriptor cd_S399C2;
extern VTBL_ENTRY _ZTI6S399C2[];
extern  VTBL_ENTRY _ZTV6S399C2[];
static Base_Class bases_S399C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S399C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S399C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S399C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S399C1[];
extern void _ZN6S399C1D1Ev();
extern void _ZN6S399C1D0Ev();
extern void _ZN6S399C22v2Ev();
extern void _ZN6S399C12v1Ev();
static  VTBL_ENTRY vtc_S399C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S399C1[0]),
  (VTBL_ENTRY)&_ZN6S399C1D1Ev,
  (VTBL_ENTRY)&_ZN6S399C1D0Ev,
  (VTBL_ENTRY)&_ZN6S399C22v2Ev,
  (VTBL_ENTRY)&_ZN6S399C12v1Ev,
};
extern VTBL_ENTRY _ZTI6S399C1[];
extern  VTBL_ENTRY _ZTV6S399C1[];
Class_Descriptor cd_S399C1 = {  "S399C1", // class name
  bases_S399C1, 4,
  &(vtc_S399C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI6S399C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S399C1),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1105C3  : S28C13_nt {
};
//SIG(-1 S1105C3) C1{ BC2{ m Fi}}



static void Test_S1105C3()
{
  extern Class_Descriptor cd_S1105C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1105C3, buf);
    S1105C3 &lv = *(new (buf) S1105C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1105C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1105C3)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S1105C3");
    test_class_info(&lv, &cd_S1105C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1105C3(Test_S1105C3, "S1105C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S1105C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1105C3[];
Class_Descriptor cd_S1105C3 = {  "S1105C3", // class name
  bases_S1105C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1105C3),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  S1105C2  : S1105C3 {
  virtual  ~S1105C2(); // _ZN7S1105C2D1Ev
  virtual void  v5(); // _ZN7S1105C22v5Ev
  virtual void  v6(); // _ZN7S1105C22v6Ev
  virtual void  v7(); // _ZN7S1105C22v7Ev
  virtual void  v8(); // _ZN7S1105C22v8Ev
  S1105C2(); // tgen
};
//SIG(-1 S1105C2) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4}


 S1105C2 ::~S1105C2(){ note_dtor("S1105C2", this);}
void  S1105C2 ::v5(){vfunc_called(this, "_ZN7S1105C22v5Ev");}
void  S1105C2 ::v6(){vfunc_called(this, "_ZN7S1105C22v6Ev");}
void  S1105C2 ::v7(){vfunc_called(this, "_ZN7S1105C22v7Ev");}
void  S1105C2 ::v8(){vfunc_called(this, "_ZN7S1105C22v8Ev");}
S1105C2 ::S1105C2(){ note_ctor("S1105C2", this);} // tgen

static void Test_S1105C2()
{
  extern Class_Descriptor cd_S1105C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1105C2, buf);
    S1105C2 *dp, &lv = *(dp=new (buf) S1105C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1105C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1105C2)");
    check_base_class_offset(lv, (S28C13_nt*)(S1105C3*), ABISELECT(8,4), "S1105C2");
    check_base_class_offset(lv, (S1105C3*), ABISELECT(8,4), "S1105C2");
    test_class_info(&lv, &cd_S1105C2);
    dp->~S1105C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1105C2(Test_S1105C2, "S1105C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1105C2C1Ev();
extern void _ZN7S1105C2D1Ev();
Name_Map name_map_S1105C2[] = {
  NSPAIR(_ZN7S1105C2C1Ev),
  NSPAIR(_ZN7S1105C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S1105C3;
extern VTBL_ENTRY _ZTI7S1105C3[];
static Base_Class bases_S1105C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1105C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1105C2[];
extern void _ZN7S1105C2D1Ev();
extern void _ZN7S1105C2D0Ev();
extern void _ZN7S1105C22v5Ev();
extern void _ZN7S1105C22v6Ev();
extern void _ZN7S1105C22v7Ev();
extern void _ZN7S1105C22v8Ev();
static  VTBL_ENTRY vtc_S1105C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1105C2[0]),
  (VTBL_ENTRY)&_ZN7S1105C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1105C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1105C22v5Ev,
  (VTBL_ENTRY)&_ZN7S1105C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1105C22v7Ev,
  (VTBL_ENTRY)&_ZN7S1105C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S1105C2[];
extern  VTBL_ENTRY _ZTV7S1105C2[];
Class_Descriptor cd_S1105C2 = {  "S1105C2", // class name
  bases_S1105C2, 2,
  &(vtc_S1105C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1105C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1105C2),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  S1105C1  : S1105C2 {
  ::S17885C12 s1105c1f0;
  virtual void  v1(); // _ZN7S1105C12v1Ev
  virtual void  v2(); // _ZN7S1105C12v2Ev
  virtual void  v3(); // _ZN7S1105C12v3Ev
  virtual void  v4(); // _ZN7S1105C12v4Ev
  ~S1105C1(); // tgen
  S1105C1(); // tgen
};
//SIG(1 S1105C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v5 v6 v7 v8} v1 v2 v3 v4 FC5{ m Fp}}


void  S1105C1 ::v1(){vfunc_called(this, "_ZN7S1105C12v1Ev");}
void  S1105C1 ::v2(){vfunc_called(this, "_ZN7S1105C12v2Ev");}
void  S1105C1 ::v3(){vfunc_called(this, "_ZN7S1105C12v3Ev");}
void  S1105C1 ::v4(){vfunc_called(this, "_ZN7S1105C12v4Ev");}
S1105C1 ::~S1105C1(){ note_dtor("S1105C1", this);} // tgen
S1105C1 ::S1105C1(){ note_ctor("S1105C1", this);} // tgen

static void Test_S1105C1()
{
  extern Class_Descriptor cd_S1105C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S1105C1, buf);
    S1105C1 *dp, &lv = *(dp=new (buf) S1105C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S1105C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1105C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S1105C3*)(S1105C2*), ABISELECT(8,4), "S1105C1");
    check_base_class_offset(lv, (S1105C3*)(S1105C2*), ABISELECT(8,4), "S1105C1");
    check_base_class_offset(lv, (S1105C2*), 0, "S1105C1");
    check_field_offset(lv, s1105c1f0, ABISELECT(16,8), "S1105C1.s1105c1f0");
    test_class_info(&lv, &cd_S1105C1);
    dp->~S1105C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1105C1(Test_S1105C1, "S1105C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S1105C1C1Ev();
extern void _ZN7S1105C1D1Ev();
Name_Map name_map_S1105C1[] = {
  NSPAIR(_ZN7S1105C1C1Ev),
  NSPAIR(_ZN7S1105C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S1105C3;
extern VTBL_ENTRY _ZTI7S1105C3[];
extern Class_Descriptor cd_S1105C2;
extern VTBL_ENTRY _ZTI7S1105C2[];
extern  VTBL_ENTRY _ZTV7S1105C2[];
static Base_Class bases_S1105C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1105C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1105C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1105C1[];
extern void _ZN7S1105C1D1Ev();
extern void _ZN7S1105C1D0Ev();
extern void _ZN7S1105C22v5Ev();
extern void _ZN7S1105C22v6Ev();
extern void _ZN7S1105C22v7Ev();
extern void _ZN7S1105C22v8Ev();
extern void _ZN7S1105C12v1Ev();
extern void _ZN7S1105C12v2Ev();
extern void _ZN7S1105C12v3Ev();
extern void _ZN7S1105C12v4Ev();
static  VTBL_ENTRY vtc_S1105C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1105C1[0]),
  (VTBL_ENTRY)&_ZN7S1105C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1105C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1105C22v5Ev,
  (VTBL_ENTRY)&_ZN7S1105C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1105C22v7Ev,
  (VTBL_ENTRY)&_ZN7S1105C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1105C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1105C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1105C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1105C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S1105C1[];
extern  VTBL_ENTRY _ZTV7S1105C1[];
Class_Descriptor cd_S1105C1 = {  "S1105C1", // class name
  bases_S1105C1, 3,
  &(vtc_S1105C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S1105C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1105C1),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  S1090C3  : S28C13_nt {
};
//SIG(-1 S1090C3) C1{ BC2{ m Fi}}



static void Test_S1090C3()
{
  extern Class_Descriptor cd_S1090C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1090C3, buf);
    S1090C3 &lv = *(new (buf) S1090C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1090C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1090C3)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S1090C3");
    test_class_info(&lv, &cd_S1090C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1090C3(Test_S1090C3, "S1090C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S1090C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1090C3[];
Class_Descriptor cd_S1090C3 = {  "S1090C3", // class name
  bases_S1090C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1090C3),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  S1090C2  : S1090C3 {
  int s1090c2f0;
  virtual  ~S1090C2(); // _ZN7S1090C2D1Ev
  virtual void  v4(); // _ZN7S1090C22v4Ev
  virtual void  v5(); // _ZN7S1090C22v5Ev
  virtual void  v6(); // _ZN7S1090C22v6Ev
  S1090C2(); // tgen
};
//SIG(-1 S1090C2) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 Fi}


 S1090C2 ::~S1090C2(){ note_dtor("S1090C2", this);}
void  S1090C2 ::v4(){vfunc_called(this, "_ZN7S1090C22v4Ev");}
void  S1090C2 ::v5(){vfunc_called(this, "_ZN7S1090C22v5Ev");}
void  S1090C2 ::v6(){vfunc_called(this, "_ZN7S1090C22v6Ev");}
S1090C2 ::S1090C2(){ note_ctor("S1090C2", this);} // tgen

static void Test_S1090C2()
{
  extern Class_Descriptor cd_S1090C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1090C2, buf);
    S1090C2 *dp, &lv = *(dp=new (buf) S1090C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1090C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1090C2)");
    check_base_class_offset(lv, (S28C13_nt*)(S1090C3*), ABISELECT(8,4), "S1090C2");
    check_base_class_offset(lv, (S1090C3*), ABISELECT(8,4), "S1090C2");
    check_field_offset(lv, s1090c2f0, ABISELECT(12,8), "S1090C2.s1090c2f0");
    test_class_info(&lv, &cd_S1090C2);
    dp->~S1090C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1090C2(Test_S1090C2, "S1090C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S1090C2C1Ev();
extern void _ZN7S1090C2D1Ev();
Name_Map name_map_S1090C2[] = {
  NSPAIR(_ZN7S1090C2C1Ev),
  NSPAIR(_ZN7S1090C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S1090C3;
extern VTBL_ENTRY _ZTI7S1090C3[];
static Base_Class bases_S1090C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1090C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1090C2[];
extern void _ZN7S1090C2D1Ev();
extern void _ZN7S1090C2D0Ev();
extern void _ZN7S1090C22v4Ev();
extern void _ZN7S1090C22v5Ev();
extern void _ZN7S1090C22v6Ev();
static  VTBL_ENTRY vtc_S1090C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1090C2[0]),
  (VTBL_ENTRY)&_ZN7S1090C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1090C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1090C22v4Ev,
  (VTBL_ENTRY)&_ZN7S1090C22v5Ev,
  (VTBL_ENTRY)&_ZN7S1090C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S1090C2[];
extern  VTBL_ENTRY _ZTV7S1090C2[];
Class_Descriptor cd_S1090C2 = {  "S1090C2", // class name
  bases_S1090C2, 2,
  &(vtc_S1090C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S1090C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1090C2),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  S1090C1  : S1090C2 {
  ::S48C18 s1090c1f0;
  virtual void  v1(); // _ZN7S1090C12v1Ev
  virtual void  v2(); // _ZN7S1090C12v2Ev
  virtual void  v3(); // _ZN7S1090C12v3Ev
  ~S1090C1(); // tgen
  S1090C1(); // tgen
};
//SIG(1 S1090C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v4 v5 v6 Fi} v1 v2 v3 FC5{ m Fi[3]}}


void  S1090C1 ::v1(){vfunc_called(this, "_ZN7S1090C12v1Ev");}
void  S1090C1 ::v2(){vfunc_called(this, "_ZN7S1090C12v2Ev");}
void  S1090C1 ::v3(){vfunc_called(this, "_ZN7S1090C12v3Ev");}
S1090C1 ::~S1090C1(){ note_dtor("S1090C1", this);} // tgen
S1090C1 ::S1090C1(){ note_ctor("S1090C1", this);} // tgen

static void Test_S1090C1()
{
  extern Class_Descriptor cd_S1090C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S1090C1, buf);
    S1090C1 *dp, &lv = *(dp=new (buf) S1090C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S1090C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1090C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S1090C3*)(S1090C2*), ABISELECT(8,4), "S1090C1");
    check_base_class_offset(lv, (S1090C3*)(S1090C2*), ABISELECT(8,4), "S1090C1");
    check_base_class_offset(lv, (S1090C2*), 0, "S1090C1");
    check_field_offset(lv, s1090c1f0, ABISELECT(16,12), "S1090C1.s1090c1f0");
    test_class_info(&lv, &cd_S1090C1);
    dp->~S1090C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1090C1(Test_S1090C1, "S1090C1", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S1090C1C1Ev();
extern void _ZN7S1090C1D1Ev();
Name_Map name_map_S1090C1[] = {
  NSPAIR(_ZN7S1090C1C1Ev),
  NSPAIR(_ZN7S1090C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S1090C3;
extern VTBL_ENTRY _ZTI7S1090C3[];
extern Class_Descriptor cd_S1090C2;
extern VTBL_ENTRY _ZTI7S1090C2[];
extern  VTBL_ENTRY _ZTV7S1090C2[];
static Base_Class bases_S1090C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1090C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1090C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1090C1[];
extern void _ZN7S1090C1D1Ev();
extern void _ZN7S1090C1D0Ev();
extern void _ZN7S1090C22v4Ev();
extern void _ZN7S1090C22v5Ev();
extern void _ZN7S1090C22v6Ev();
extern void _ZN7S1090C12v1Ev();
extern void _ZN7S1090C12v2Ev();
extern void _ZN7S1090C12v3Ev();
static  VTBL_ENTRY vtc_S1090C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1090C1[0]),
  (VTBL_ENTRY)&_ZN7S1090C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1090C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1090C22v4Ev,
  (VTBL_ENTRY)&_ZN7S1090C22v5Ev,
  (VTBL_ENTRY)&_ZN7S1090C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1090C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1090C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1090C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S1090C1[];
extern  VTBL_ENTRY _ZTV7S1090C1[];
Class_Descriptor cd_S1090C1 = {  "S1090C1", // class name
  bases_S1090C1, 3,
  &(vtc_S1090C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S1090C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1090C1),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  S1106C3  : S28C13_nt {
};
//SIG(-1 S1106C3) C1{ BC2{ m Fi}}



static void Test_S1106C3()
{
  extern Class_Descriptor cd_S1106C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1106C3, buf);
    S1106C3 &lv = *(new (buf) S1106C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1106C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1106C3)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S1106C3");
    test_class_info(&lv, &cd_S1106C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1106C3(Test_S1106C3, "S1106C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S1106C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1106C3[];
Class_Descriptor cd_S1106C3 = {  "S1106C3", // class name
  bases_S1106C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1106C3),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  S1106C2  : S1106C3 {
  virtual  ~S1106C2(); // _ZN7S1106C2D1Ev
  virtual void  v5(); // _ZN7S1106C22v5Ev
  virtual void  v6(); // _ZN7S1106C22v6Ev
  virtual void  v7(); // _ZN7S1106C22v7Ev
  virtual void  v8(); // _ZN7S1106C22v8Ev
  S1106C2(); // tgen
};
//SIG(-1 S1106C2) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4}


 S1106C2 ::~S1106C2(){ note_dtor("S1106C2", this);}
void  S1106C2 ::v5(){vfunc_called(this, "_ZN7S1106C22v5Ev");}
void  S1106C2 ::v6(){vfunc_called(this, "_ZN7S1106C22v6Ev");}
void  S1106C2 ::v7(){vfunc_called(this, "_ZN7S1106C22v7Ev");}
void  S1106C2 ::v8(){vfunc_called(this, "_ZN7S1106C22v8Ev");}
S1106C2 ::S1106C2(){ note_ctor("S1106C2", this);} // tgen

static void Test_S1106C2()
{
  extern Class_Descriptor cd_S1106C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1106C2, buf);
    S1106C2 *dp, &lv = *(dp=new (buf) S1106C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1106C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1106C2)");
    check_base_class_offset(lv, (S28C13_nt*)(S1106C3*), ABISELECT(8,4), "S1106C2");
    check_base_class_offset(lv, (S1106C3*), ABISELECT(8,4), "S1106C2");
    test_class_info(&lv, &cd_S1106C2);
    dp->~S1106C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1106C2(Test_S1106C2, "S1106C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1106C2C1Ev();
extern void _ZN7S1106C2D1Ev();
Name_Map name_map_S1106C2[] = {
  NSPAIR(_ZN7S1106C2C1Ev),
  NSPAIR(_ZN7S1106C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S1106C3;
extern VTBL_ENTRY _ZTI7S1106C3[];
static Base_Class bases_S1106C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1106C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1106C2[];
extern void _ZN7S1106C2D1Ev();
extern void _ZN7S1106C2D0Ev();
extern void _ZN7S1106C22v5Ev();
extern void _ZN7S1106C22v6Ev();
extern void _ZN7S1106C22v7Ev();
extern void _ZN7S1106C22v8Ev();
static  VTBL_ENTRY vtc_S1106C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1106C2[0]),
  (VTBL_ENTRY)&_ZN7S1106C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1106C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1106C22v5Ev,
  (VTBL_ENTRY)&_ZN7S1106C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1106C22v7Ev,
  (VTBL_ENTRY)&_ZN7S1106C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S1106C2[];
extern  VTBL_ENTRY _ZTV7S1106C2[];
Class_Descriptor cd_S1106C2 = {  "S1106C2", // class name
  bases_S1106C2, 2,
  &(vtc_S1106C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1106C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1106C2),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  S1106C1  : S1106C2 {
  void *s1106c1f0[2];
  virtual  ~S1106C1(); // _ZN7S1106C1D1Ev
  virtual void  v1(); // _ZN7S1106C12v1Ev
  virtual void  v2(); // _ZN7S1106C12v2Ev
  virtual void  v3(); // _ZN7S1106C12v3Ev
  virtual void  v4(); // _ZN7S1106C12v4Ev
  S1106C1(); // tgen
};
//SIG(1 S1106C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v5 v6 v7 v8} vd v1 v2 v3 v4 Fp[2]}


 S1106C1 ::~S1106C1(){ note_dtor("S1106C1", this);}
void  S1106C1 ::v1(){vfunc_called(this, "_ZN7S1106C12v1Ev");}
void  S1106C1 ::v2(){vfunc_called(this, "_ZN7S1106C12v2Ev");}
void  S1106C1 ::v3(){vfunc_called(this, "_ZN7S1106C12v3Ev");}
void  S1106C1 ::v4(){vfunc_called(this, "_ZN7S1106C12v4Ev");}
S1106C1 ::S1106C1(){ note_ctor("S1106C1", this);} // tgen

static void Test_S1106C1()
{
  extern Class_Descriptor cd_S1106C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S1106C1, buf);
    S1106C1 *dp, &lv = *(dp=new (buf) S1106C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S1106C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1106C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S1106C3*)(S1106C2*), ABISELECT(8,4), "S1106C1");
    check_base_class_offset(lv, (S1106C3*)(S1106C2*), ABISELECT(8,4), "S1106C1");
    check_base_class_offset(lv, (S1106C2*), 0, "S1106C1");
    check_field_offset(lv, s1106c1f0, ABISELECT(16,8), "S1106C1.s1106c1f0");
    test_class_info(&lv, &cd_S1106C1);
    dp->~S1106C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1106C1(Test_S1106C1, "S1106C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S1106C1C1Ev();
extern void _ZN7S1106C1D1Ev();
Name_Map name_map_S1106C1[] = {
  NSPAIR(_ZN7S1106C1C1Ev),
  NSPAIR(_ZN7S1106C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S1106C3;
extern VTBL_ENTRY _ZTI7S1106C3[];
extern Class_Descriptor cd_S1106C2;
extern VTBL_ENTRY _ZTI7S1106C2[];
extern  VTBL_ENTRY _ZTV7S1106C2[];
static Base_Class bases_S1106C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1106C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1106C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1106C1[];
extern void _ZN7S1106C1D1Ev();
extern void _ZN7S1106C1D0Ev();
extern void _ZN7S1106C22v5Ev();
extern void _ZN7S1106C22v6Ev();
extern void _ZN7S1106C22v7Ev();
extern void _ZN7S1106C22v8Ev();
extern void _ZN7S1106C12v1Ev();
extern void _ZN7S1106C12v2Ev();
extern void _ZN7S1106C12v3Ev();
extern void _ZN7S1106C12v4Ev();
static  VTBL_ENTRY vtc_S1106C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1106C1[0]),
  (VTBL_ENTRY)&_ZN7S1106C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1106C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1106C22v5Ev,
  (VTBL_ENTRY)&_ZN7S1106C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1106C22v7Ev,
  (VTBL_ENTRY)&_ZN7S1106C22v8Ev,
  (VTBL_ENTRY)&_ZN7S1106C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1106C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1106C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1106C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S1106C1[];
extern  VTBL_ENTRY _ZTV7S1106C1[];
Class_Descriptor cd_S1106C1 = {  "S1106C1", // class name
  bases_S1106C1, 3,
  &(vtc_S1106C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S1106C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1106C1),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  S3580C3  : virtual S731C14_nt {
  virtual  ~S3580C3(); // _ZN7S3580C3D2Ev
  S3580C3(); // tgen
};
//SIG(-1 S3580C3) C1{ VBC2{ vd m Fp} vd}


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

static void Test_S3580C3()
{
  extern Class_Descriptor cd_S3580C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3580C3, buf);
    S3580C3 *dp, &lv = *(dp=new (buf) S3580C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3580C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3580C3)");
    check_base_class_offset(lv, (S731C14_nt*), ABISELECT(8,4), "S3580C3");
    test_class_info(&lv, &cd_S3580C3);
    dp->~S3580C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3580C3(Test_S3580C3, "S3580C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3580C3C1Ev();
extern void _ZN7S3580C3D2Ev();
Name_Map name_map_S3580C3[] = {
  NSPAIR(_ZN7S3580C3C1Ev),
  NSPAIR(_ZN7S3580C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
static Base_Class bases_S3580C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C14_nt,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3580C3[];
extern void _ZN7S3580C3D1Ev();
extern void _ZN7S3580C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S3580C3D1Ev,_ZTv0_n12_N7S3580C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S3580C3D1Ev,_ZThn4_N7S3580C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3580C3D0Ev,_ZTv0_n12_N7S3580C3D0Ev)();
extern void ABISELECT(_ZThn8_N7S3580C3D0Ev,_ZThn4_N7S3580C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3580C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3580C3[0]),
  (VTBL_ENTRY)&_ZN7S3580C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3580C3D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3580C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3580C3D1Ev,_ZTv0_n12_N7S3580C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3580C3D0Ev,_ZTv0_n12_N7S3580C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S3580C3[];
static  VTT_ENTRY vtt_S3580C3[] = {
  {&(_ZTV7S3580C3[3]),  3,10},
  {&(_ZTV7S3580C3[8]),  8,10},
};
extern VTBL_ENTRY _ZTI7S3580C3[];
extern  VTBL_ENTRY _ZTV7S3580C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3580C3[];
static VTBL_ENTRY alt_thunk_names114[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3580C3D0Ev,_ZTv0_n12_N7S3580C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3580C3D0Ev,_ZThn4_N7S3580C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3580C3D1Ev,_ZTv0_n12_N7S3580C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3580C3D1Ev,_ZThn4_N7S3580C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3580C3 = {  "S3580C3", // class name
  bases_S3580C3, 1,
  &(vtc_S3580C3[0]), // expected_vtbl_contents
  &(vtt_S3580C3[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3580C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3580C3),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3580C3),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names114,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3580C5  : virtual S731C14_nt {
  virtual  ~S3580C5(); // _ZN7S3580C5D2Ev
  S3580C5(); // tgen
};
//SIG(-1 S3580C5) C1{ VBC2{ vd m Fp} vd}


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

static void Test_S3580C5()
{
  extern Class_Descriptor cd_S3580C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S3580C5, buf);
    S3580C5 *dp, &lv = *(dp=new (buf) S3580C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S3580C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3580C5)");
    check_base_class_offset(lv, (S731C14_nt*), ABISELECT(8,4), "S3580C5");
    test_class_info(&lv, &cd_S3580C5);
    dp->~S3580C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3580C5(Test_S3580C5, "S3580C5", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S3580C5C1Ev();
extern void _ZN7S3580C5D2Ev();
Name_Map name_map_S3580C5[] = {
  NSPAIR(_ZN7S3580C5C1Ev),
  NSPAIR(_ZN7S3580C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
static Base_Class bases_S3580C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C14_nt,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3580C5[];
extern void _ZN7S3580C5D1Ev();
extern void _ZN7S3580C5D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S3580C5D1Ev,_ZTv0_n12_N7S3580C5D1Ev)();
extern void ABISELECT(_ZThn8_N7S3580C5D1Ev,_ZThn4_N7S3580C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3580C5D0Ev,_ZTv0_n12_N7S3580C5D0Ev)();
extern void ABISELECT(_ZThn8_N7S3580C5D0Ev,_ZThn4_N7S3580C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3580C5[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3580C5[0]),
  (VTBL_ENTRY)&_ZN7S3580C5D1Ev,
  (VTBL_ENTRY)&_ZN7S3580C5D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3580C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3580C5D1Ev,_ZTv0_n12_N7S3580C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3580C5D0Ev,_ZTv0_n12_N7S3580C5D0Ev),
};
extern VTBL_ENTRY _ZTV7S3580C5[];
static  VTT_ENTRY vtt_S3580C5[] = {
  {&(_ZTV7S3580C5[3]),  3,10},
  {&(_ZTV7S3580C5[8]),  8,10},
};
extern VTBL_ENTRY _ZTI7S3580C5[];
extern  VTBL_ENTRY _ZTV7S3580C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3580C5[];
static VTBL_ENTRY alt_thunk_names115[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3580C5D0Ev,_ZTv0_n12_N7S3580C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3580C5D0Ev,_ZThn4_N7S3580C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3580C5D1Ev,_ZTv0_n12_N7S3580C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3580C5D1Ev,_ZThn4_N7S3580C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3580C5 = {  "S3580C5", // class name
  bases_S3580C5, 1,
  &(vtc_S3580C5[0]), // expected_vtbl_contents
  &(vtt_S3580C5[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S3580C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3580C5),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3580C5),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names115,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3580C2  : S3580C3 , virtual S3580C5 {
  int s3580c2f0[6];
  virtual  ~S3580C2(); // _ZN7S3580C2D2Ev
  S3580C2(); // tgen
};
//SIG(-1 S3580C2) C1{ BC2{ VBC3{ vd m Fp} vd} VBC4{ VBC3 vd} vd Fi[6]}


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

static void Test_S3580C2()
{
  extern Class_Descriptor cd_S3580C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,11)];
    init_test(&cd_S3580C2, buf);
    S3580C2 *dp, &lv = *(dp=new (buf) S3580C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S3580C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3580C2)");
    check_base_class_offset(lv, (S731C14_nt*)(S3580C3*), ABISELECT(32,28), "S3580C2");
    check_base_class_offset(lv, (S731C14_nt*)(S3580C5*), ABISELECT(32,28), "S3580C2");
    check_base_class_offset(lv, (S3580C3*), 0, "S3580C2");
    check_base_class_offset(lv, (S3580C5*), ABISELECT(48,36), "S3580C2");
    check_field_offset(lv, s3580c2f0, ABISELECT(8,4), "S3580C2.s3580c2f0");
    test_class_info(&lv, &cd_S3580C2);
    dp->~S3580C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3580C2(Test_S3580C2, "S3580C2", ABISELECT(56,40));

#else // __cplusplus

extern void _ZN7S3580C2C1Ev();
extern void _ZN7S3580C2D2Ev();
Name_Map name_map_S3580C2[] = {
  NSPAIR(_ZN7S3580C2C1Ev),
  NSPAIR(_ZN7S3580C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S3580C3;
extern VTBL_ENTRY _ZTI7S3580C3[];
extern  VTBL_ENTRY _ZTV7S3580C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3580C3[];
extern Class_Descriptor cd_S3580C5;
extern VTBL_ENTRY _ZTI7S3580C5[];
extern  VTBL_ENTRY _ZTV7S3580C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3580C5[];
static Base_Class bases_S3580C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C14_nt,    ABISELECT(32,28), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S3580C3,    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_S3580C5,    ABISELECT(48,36), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3580C2[];
extern void _ZN7S3580C2D1Ev();
extern void _ZN7S3580C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S3580C2D1Ev,_ZTv0_n12_N7S3580C2D1Ev)();
extern void ABISELECT(_ZThn32_N7S3580C2D1Ev,_ZThn28_N7S3580C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3580C2D0Ev,_ZTv0_n12_N7S3580C2D0Ev)();
extern void ABISELECT(_ZThn32_N7S3580C2D0Ev,_ZThn28_N7S3580C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3580C2D1Ev,_ZTv0_n16_N7S3580C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S3580C2D1Ev,_ZThn36_N7S3580C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3580C2D0Ev,_ZTv0_n16_N7S3580C2D0Ev)();
extern void ABISELECT(_ZThn48_N7S3580C2D0Ev,_ZThn36_N7S3580C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3580C2[] = {
  ABISELECT(48,36),
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S3580C2[0]),
  (VTBL_ENTRY)&_ZN7S3580C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3580C2D0Ev,
  ABISELECT(-32,-28),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S3580C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3580C2D1Ev,_ZTv0_n12_N7S3580C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3580C2D0Ev,_ZTv0_n12_N7S3580C2D0Ev),
  ABISELECT(-48,-36),
  ABISELECT(-16,-8),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI7S3580C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3580C2D1Ev,_ZTv0_n16_N7S3580C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3580C2D0Ev,_ZTv0_n16_N7S3580C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S3580C2[];
extern void _ZN7S3580C3D1Ev();
extern void _ZN7S3580C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3580C3__7S3580C2[] = {
  ABISELECT(32,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S3580C3[0]),
  (VTBL_ENTRY)&_ZN7S3580C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3580C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3580C3D1Ev,_ZTv0_n12_N7S3580C3D1Ev)();
extern void ABISELECT(_ZThn32_N7S3580C3D1Ev,_ZThn28_N7S3580C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3580C3D0Ev,_ZTv0_n12_N7S3580C3D0Ev)();
extern void ABISELECT(_ZThn32_N7S3580C3D0Ev,_ZThn28_N7S3580C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__7S3580C3__7S3580C2[] = {
  ABISELECT(-32,-28),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI7S3580C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3580C3D1Ev,_ZTv0_n12_N7S3580C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3580C3D0Ev,_ZTv0_n12_N7S3580C3D0Ev),
};
extern void _ZN7S3580C5D1Ev();
extern void _ZN7S3580C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3580C5__7S3580C2[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3580C5[0]),
  (VTBL_ENTRY)&_ZN7S3580C5D1Ev,
  (VTBL_ENTRY)&_ZN7S3580C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3580C5D1Ev,_ZTv0_n12_N7S3580C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3580C5D0Ev,_ZTv0_n12_N7S3580C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__7S3580C5__7S3580C2[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S3580C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3580C5D1Ev,_ZTv0_n12_N7S3580C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3580C5D0Ev,_ZTv0_n12_N7S3580C5D0Ev),
};
static  VTT_ENTRY vtt_S3580C2[] = {
  {&(_ZTV7S3580C2[4]),  4,17},
  {&(_tg__ZTV7S3580C3__7S3580C2[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__7S3580C3__7S3580C2[3]),  3,5},
  {&(_ZTV7S3580C2[9]),  9,17},
  {&(_ZTV7S3580C2[15]),  15,17},
  {&(_tg__ZTV7S3580C5__7S3580C2[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__7S3580C5__7S3580C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S3580C2[];
extern  VTBL_ENTRY _ZTV7S3580C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3580C2[];
static VTBL_ENTRY alt_thunk_names116[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3580C3D0Ev,_ZTv0_n12_N7S3580C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3580C3D0Ev,_ZThn28_N7S3580C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3580C3D1Ev,_ZTv0_n12_N7S3580C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3580C3D1Ev,_ZThn28_N7S3580C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3580C2D0Ev,_ZTv0_n16_N7S3580C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3580C2D0Ev,_ZThn36_N7S3580C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3580C2D1Ev,_ZTv0_n16_N7S3580C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3580C2D1Ev,_ZThn36_N7S3580C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3580C2D0Ev,_ZTv0_n12_N7S3580C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3580C2D0Ev,_ZThn28_N7S3580C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3580C2D1Ev,_ZTv0_n12_N7S3580C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3580C2D1Ev,_ZThn28_N7S3580C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3580C2 = {  "S3580C2", // class name
  bases_S3580C2, 3,
  &(vtc_S3580C2[0]), // expected_vtbl_contents
  &(vtt_S3580C2[0]), // expected_vtt_contents
  ABISELECT(56,40), // object size
  NSPAIRA(_ZTI7S3580C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3580C2),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3580C2),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names116,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3580C1  : S3580C2 {
  short s3580c1f0;
  virtual  ~S3580C1(); // _ZN7S3580C1D2Ev
  S3580C1(); // tgen
};
//SIG(1 S3580C1) C1{ BC2{ BC3{ VBC4{ vd m Fp} vd} VBC5{ VBC4 vd} vd Fi[6]} vd Fs}


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

static void Test_S3580C1()
{
  extern Class_Descriptor cd_S3580C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S3580C1, buf);
    S3580C1 *dp, &lv = *(dp=new (buf) S3580C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S3580C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3580C1)");
    check_base_class_offset(lv, (S731C14_nt*)(S3580C3*)(S3580C2*), ABISELECT(40,32), "S3580C1");
    check_base_class_offset(lv, (S731C14_nt*)(S3580C5*), ABISELECT(40,32), "S3580C1");
    check_base_class_offset(lv, (S3580C3*)(S3580C2*), 0, "S3580C1");
    check_base_class_offset(lv, (S3580C5*)(S3580C2*), ABISELECT(56,40), "S3580C1");
    check_base_class_offset(lv, (S3580C2*), 0, "S3580C1");
    check_field_offset(lv, s3580c1f0, ABISELECT(32,28), "S3580C1.s3580c1f0");
    test_class_info(&lv, &cd_S3580C1);
    dp->~S3580C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3580C1(Test_S3580C1, "S3580C1", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S3580C1C1Ev();
extern void _ZN7S3580C1D2Ev();
Name_Map name_map_S3580C1[] = {
  NSPAIR(_ZN7S3580C1C1Ev),
  NSPAIR(_ZN7S3580C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S731C14_nt;
extern VTBL_ENTRY _ZTI10S731C14_nt[];
extern  VTBL_ENTRY _ZTV10S731C14_nt[];
extern Class_Descriptor cd_S3580C3;
extern VTBL_ENTRY _ZTI7S3580C3[];
extern  VTBL_ENTRY _ZTV7S3580C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3580C3[];
extern Class_Descriptor cd_S3580C5;
extern VTBL_ENTRY _ZTI7S3580C5[];
extern  VTBL_ENTRY _ZTV7S3580C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3580C5[];
extern Class_Descriptor cd_S3580C2;
extern VTBL_ENTRY _ZTI7S3580C2[];
extern  VTBL_ENTRY _ZTV7S3580C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3580C2[];
static Base_Class bases_S3580C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C14_nt,    ABISELECT(40,32), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S3580C3,    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
    3, //immediately_derived
  0, 0},
  {&cd_S3580C5,    ABISELECT(56,40), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3580C2,    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 _ZTI7S3580C1[];
extern void _ZN7S3580C1D1Ev();
extern void _ZN7S3580C1D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S3580C1D1Ev,_ZTv0_n12_N7S3580C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S3580C1D1Ev,_ZThn32_N7S3580C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3580C1D0Ev,_ZTv0_n12_N7S3580C1D0Ev)();
extern void ABISELECT(_ZThn40_N7S3580C1D0Ev,_ZThn32_N7S3580C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3580C1D1Ev,_ZTv0_n16_N7S3580C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S3580C1D1Ev,_ZThn40_N7S3580C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3580C1D0Ev,_ZTv0_n16_N7S3580C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S3580C1D0Ev,_ZThn40_N7S3580C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3580C1[] = {
  ABISELECT(56,40),
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S3580C1[0]),
  (VTBL_ENTRY)&_ZN7S3580C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3580C1D0Ev,
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S3580C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3580C1D1Ev,_ZTv0_n12_N7S3580C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3580C1D0Ev,_ZTv0_n12_N7S3580C1D0Ev),
  ABISELECT(-56,-40),
  ABISELECT(-16,-8),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI7S3580C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3580C1D1Ev,_ZTv0_n16_N7S3580C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3580C1D0Ev,_ZTv0_n16_N7S3580C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S3580C1[];
extern void _ZN7S3580C2D1Ev();
extern void _ZN7S3580C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3580C2__7S3580C1[] = {
  ABISELECT(56,40),
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S3580C2[0]),
  (VTBL_ENTRY)&_ZN7S3580C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3580C2D0Ev,
};
extern void _ZN7S3580C3D1Ev();
extern void _ZN7S3580C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3580C37S3580C2__7S3580C1[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S3580C3[0]),
  (VTBL_ENTRY)&_ZN7S3580C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3580C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3580C3D1Ev,_ZTv0_n12_N7S3580C3D1Ev)();
extern void ABISELECT(_ZThn40_N7S3580C3D1Ev,_ZThn32_N7S3580C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3580C3D0Ev,_ZTv0_n12_N7S3580C3D0Ev)();
extern void ABISELECT(_ZThn40_N7S3580C3D0Ev,_ZThn32_N7S3580C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__7S3580C37S3580C2__7S3580C1[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S3580C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3580C3D1Ev,_ZTv0_n12_N7S3580C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3580C3D0Ev,_ZTv0_n12_N7S3580C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3580C2D1Ev,_ZTv0_n12_N7S3580C2D1Ev)();
extern void ABISELECT(_ZThn40_N7S3580C2D1Ev,_ZThn32_N7S3580C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3580C2D0Ev,_ZTv0_n12_N7S3580C2D0Ev)();
extern void ABISELECT(_ZThn40_N7S3580C2D0Ev,_ZThn32_N7S3580C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__7S3580C2__7S3580C1[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S3580C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3580C2D1Ev,_ZTv0_n12_N7S3580C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3580C2D0Ev,_ZTv0_n12_N7S3580C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S3580C2D1Ev,_ZTv0_n16_N7S3580C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S3580C2D1Ev,_ZThn40_N7S3580C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3580C2D0Ev,_ZTv0_n16_N7S3580C2D0Ev)();
extern void ABISELECT(_ZThn56_N7S3580C2D0Ev,_ZThn40_N7S3580C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3580C5__7S3580C2__7S3580C1[] = {
  ABISELECT(-56,-40),
  ABISELECT(-16,-8),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI7S3580C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3580C2D1Ev,_ZTv0_n16_N7S3580C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3580C2D0Ev,_ZTv0_n16_N7S3580C2D0Ev),
};
extern void _ZN7S3580C5D1Ev();
extern void _ZN7S3580C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3580C5__7S3580C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3580C5[0]),
  (VTBL_ENTRY)&_ZN7S3580C5D1Ev,
  (VTBL_ENTRY)&_ZN7S3580C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3580C5D1Ev,_ZTv0_n12_N7S3580C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3580C5D0Ev,_ZTv0_n12_N7S3580C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV10S731C14_nt__7S3580C5__7S3580C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S3580C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3580C5D1Ev,_ZTv0_n12_N7S3580C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3580C5D0Ev,_ZTv0_n12_N7S3580C5D0Ev),
};
static  VTT_ENTRY vtt_S3580C1[] = {
  {&(_ZTV7S3580C1[4]),  4,17},
  {&(_tg__ZTV7S3580C2__7S3580C1[4]),  4,6},
  {&(_tg__ZTV7S3580C37S3580C2__7S3580C1[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__7S3580C37S3580C2__7S3580C1[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__7S3580C2__7S3580C1[3]),  3,5},
  {&(_tg__ZTV7S3580C5__7S3580C2__7S3580C1[4]),  4,6},
  {&(_ZTV7S3580C1[9]),  9,17},
  {&(_ZTV7S3580C1[15]),  15,17},
  {&(_tg__ZTV7S3580C5__7S3580C1[3]),  3,5},
  {&(_tg__ZTV10S731C14_nt__7S3580C5__7S3580C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S3580C1[];
extern  VTBL_ENTRY _ZTV7S3580C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3580C1[];
static VTBL_ENTRY alt_thunk_names117[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3580C2D0Ev,_ZTv0_n16_N7S3580C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S3580C2D0Ev,_ZThn40_N7S3580C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3580C2D1Ev,_ZTv0_n16_N7S3580C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S3580C2D1Ev,_ZThn40_N7S3580C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3580C2D0Ev,_ZTv0_n12_N7S3580C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3580C2D0Ev,_ZThn32_N7S3580C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3580C2D1Ev,_ZTv0_n12_N7S3580C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3580C2D1Ev,_ZThn32_N7S3580C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3580C3D0Ev,_ZTv0_n12_N7S3580C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3580C3D0Ev,_ZThn32_N7S3580C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3580C3D1Ev,_ZTv0_n12_N7S3580C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3580C3D1Ev,_ZThn32_N7S3580C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3580C1D0Ev,_ZTv0_n16_N7S3580C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S3580C1D0Ev,_ZThn40_N7S3580C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3580C1D1Ev,_ZTv0_n16_N7S3580C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S3580C1D1Ev,_ZThn40_N7S3580C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3580C1D0Ev,_ZTv0_n12_N7S3580C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3580C1D0Ev,_ZThn32_N7S3580C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3580C1D1Ev,_ZTv0_n12_N7S3580C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3580C1D1Ev,_ZThn32_N7S3580C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3580C1 = {  "S3580C1", // class name
  bases_S3580C1, 4,
  &(vtc_S3580C1[0]), // expected_vtbl_contents
  &(vtt_S3580C1[0]), // expected_vtt_contents
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S3580C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3580C1),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3580C1),10, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names117,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S401C4  : S28C13_nt {
};
//SIG(-1 S401C4) C1{ BC2{ m Fi}}



static void Test_S401C4()
{
  extern Class_Descriptor cd_S401C4;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S401C4, buf);
    S401C4 &lv = *(new (buf) S401C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S401C4)");
    check2(__alignof__(lv), 4, "__alignof__(S401C4)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S401C4");
    test_class_info(&lv, &cd_S401C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS401C4(Test_S401C4, "S401C4", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S401C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S401C4[];
Class_Descriptor cd_S401C4 = {  "S401C4", // class name
  bases_S401C4, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI6S401C4),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  S401C3  : S401C4 {
  virtual  ~S401C3(); // _ZN6S401C3D1Ev
  S401C3(); // tgen
};
//SIG(-1 S401C3) C1{ BC2{ BC3{ m Fi}} vd}


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

static void Test_S401C3()
{
  extern Class_Descriptor cd_S401C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S401C3, buf);
    S401C3 *dp, &lv = *(dp=new (buf) S401C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S401C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S401C3)");
    check_base_class_offset(lv, (S28C13_nt*)(S401C4*), ABISELECT(8,4), "S401C3");
    check_base_class_offset(lv, (S401C4*), ABISELECT(8,4), "S401C3");
    test_class_info(&lv, &cd_S401C3);
    dp->~S401C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS401C3(Test_S401C3, "S401C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN6S401C3C1Ev();
extern void _ZN6S401C3D1Ev();
Name_Map name_map_S401C3[] = {
  NSPAIR(_ZN6S401C3C1Ev),
  NSPAIR(_ZN6S401C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S401C4;
extern VTBL_ENTRY _ZTI6S401C4[];
static Base_Class bases_S401C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S401C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S401C3[];
extern void _ZN6S401C3D1Ev();
extern void _ZN6S401C3D0Ev();
static  VTBL_ENTRY vtc_S401C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S401C3[0]),
  (VTBL_ENTRY)&_ZN6S401C3D1Ev,
  (VTBL_ENTRY)&_ZN6S401C3D0Ev,
};
extern VTBL_ENTRY _ZTI6S401C3[];
extern  VTBL_ENTRY _ZTV6S401C3[];
Class_Descriptor cd_S401C3 = {  "S401C3", // class name
  bases_S401C3, 2,
  &(vtc_S401C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI6S401C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV6S401C3),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  S401C2  : S401C3 {
  virtual void  v2(); // _ZN6S401C22v2Ev
  ~S401C2(); // tgen
  S401C2(); // tgen
};
//SIG(-1 S401C2) C1{ BC2{ BC3{ BC4{ m Fi}} vd} v1}


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

static void Test_S401C2()
{
  extern Class_Descriptor cd_S401C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S401C2, buf);
    S401C2 *dp, &lv = *(dp=new (buf) S401C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S401C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S401C2)");
    check_base_class_offset(lv, (S28C13_nt*)(S401C4*)(S401C3*), ABISELECT(8,4), "S401C2");
    check_base_class_offset(lv, (S401C4*)(S401C3*), ABISELECT(8,4), "S401C2");
    check_base_class_offset(lv, (S401C3*), 0, "S401C2");
    test_class_info(&lv, &cd_S401C2);
    dp->~S401C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS401C2(Test_S401C2, "S401C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN6S401C2C1Ev();
extern void _ZN6S401C2D1Ev();
Name_Map name_map_S401C2[] = {
  NSPAIR(_ZN6S401C2C1Ev),
  NSPAIR(_ZN6S401C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S401C4;
extern VTBL_ENTRY _ZTI6S401C4[];
extern Class_Descriptor cd_S401C3;
extern VTBL_ENTRY _ZTI6S401C3[];
extern  VTBL_ENTRY _ZTV6S401C3[];
static Base_Class bases_S401C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S401C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S401C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S401C2[];
extern void _ZN6S401C2D1Ev();
extern void _ZN6S401C2D0Ev();
extern void _ZN6S401C22v2Ev();
static  VTBL_ENTRY vtc_S401C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S401C2[0]),
  (VTBL_ENTRY)&_ZN6S401C2D1Ev,
  (VTBL_ENTRY)&_ZN6S401C2D0Ev,
  (VTBL_ENTRY)&_ZN6S401C22v2Ev,
};
extern VTBL_ENTRY _ZTI6S401C2[];
extern  VTBL_ENTRY _ZTV6S401C2[];
Class_Descriptor cd_S401C2 = {  "S401C2", // class name
  bases_S401C2, 3,
  &(vtc_S401C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI6S401C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S401C2),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S401C1  : S401C2 {
  ::S399C6_nt s401c1f0;
  void *s401c1f1[2];
  virtual  ~S401C1(); // _ZN6S401C1D1Ev
  virtual void  v1(); // _ZN6S401C12v1Ev
  S401C1(); // tgen
};
//SIG(1 S401C1) C1{ BC2{ BC3{ BC4{ BC5{ m Fi}} vd} v2} vd v1 FC6{ m FC7{}} Fp[2]}


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

static void Test_S401C1()
{
  extern Class_Descriptor cd_S401C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S401C1, buf);
    S401C1 *dp, &lv = *(dp=new (buf) S401C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S401C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S401C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S401C4*)(S401C3*)(S401C2*), ABISELECT(8,4), "S401C1");
    check_base_class_offset(lv, (S401C4*)(S401C3*)(S401C2*), ABISELECT(8,4), "S401C1");
    check_base_class_offset(lv, (S401C3*)(S401C2*), 0, "S401C1");
    check_base_class_offset(lv, (S401C2*), 0, "S401C1");
    check_field_offset(lv, s401c1f0, ABISELECT(12,8), "S401C1.s401c1f0");
    check_field_offset(lv, s401c1f1, ABISELECT(16,12), "S401C1.s401c1f1");
    test_class_info(&lv, &cd_S401C1);
    dp->~S401C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS401C1(Test_S401C1, "S401C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN6S401C1C1Ev();
extern void _ZN6S401C1D1Ev();
Name_Map name_map_S401C1[] = {
  NSPAIR(_ZN6S401C1C1Ev),
  NSPAIR(_ZN6S401C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S401C4;
extern VTBL_ENTRY _ZTI6S401C4[];
extern Class_Descriptor cd_S401C3;
extern VTBL_ENTRY _ZTI6S401C3[];
extern  VTBL_ENTRY _ZTV6S401C3[];
extern Class_Descriptor cd_S401C2;
extern VTBL_ENTRY _ZTI6S401C2[];
extern  VTBL_ENTRY _ZTV6S401C2[];
static Base_Class bases_S401C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S401C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S401C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S401C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S401C1[];
extern void _ZN6S401C1D1Ev();
extern void _ZN6S401C1D0Ev();
extern void _ZN6S401C22v2Ev();
extern void _ZN6S401C12v1Ev();
static  VTBL_ENTRY vtc_S401C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S401C1[0]),
  (VTBL_ENTRY)&_ZN6S401C1D1Ev,
  (VTBL_ENTRY)&_ZN6S401C1D0Ev,
  (VTBL_ENTRY)&_ZN6S401C22v2Ev,
  (VTBL_ENTRY)&_ZN6S401C12v1Ev,
};
extern VTBL_ENTRY _ZTI6S401C1[];
extern  VTBL_ENTRY _ZTV6S401C1[];
Class_Descriptor cd_S401C1 = {  "S401C1", // class name
  bases_S401C1, 4,
  &(vtc_S401C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI6S401C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S401C1),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S400C4  : S28C13_nt {
};
//SIG(-1 S400C4) C1{ BC2{ m Fi}}



static void Test_S400C4()
{
  extern Class_Descriptor cd_S400C4;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S400C4, buf);
    S400C4 &lv = *(new (buf) S400C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S400C4)");
    check2(__alignof__(lv), 4, "__alignof__(S400C4)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S400C4");
    test_class_info(&lv, &cd_S400C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS400C4(Test_S400C4, "S400C4", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S400C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S400C4[];
Class_Descriptor cd_S400C4 = {  "S400C4", // class name
  bases_S400C4, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI6S400C4),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  S400C3  : S400C4 {
  virtual  ~S400C3(); // _ZN6S400C3D1Ev
  S400C3(); // tgen
};
//SIG(-1 S400C3) C1{ BC2{ BC3{ m Fi}} vd}


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

static void Test_S400C3()
{
  extern Class_Descriptor cd_S400C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S400C3, buf);
    S400C3 *dp, &lv = *(dp=new (buf) S400C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S400C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S400C3)");
    check_base_class_offset(lv, (S28C13_nt*)(S400C4*), ABISELECT(8,4), "S400C3");
    check_base_class_offset(lv, (S400C4*), ABISELECT(8,4), "S400C3");
    test_class_info(&lv, &cd_S400C3);
    dp->~S400C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS400C3(Test_S400C3, "S400C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN6S400C3C1Ev();
extern void _ZN6S400C3D1Ev();
Name_Map name_map_S400C3[] = {
  NSPAIR(_ZN6S400C3C1Ev),
  NSPAIR(_ZN6S400C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S400C4;
extern VTBL_ENTRY _ZTI6S400C4[];
static Base_Class bases_S400C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S400C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S400C3[];
extern void _ZN6S400C3D1Ev();
extern void _ZN6S400C3D0Ev();
static  VTBL_ENTRY vtc_S400C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S400C3[0]),
  (VTBL_ENTRY)&_ZN6S400C3D1Ev,
  (VTBL_ENTRY)&_ZN6S400C3D0Ev,
};
extern VTBL_ENTRY _ZTI6S400C3[];
extern  VTBL_ENTRY _ZTV6S400C3[];
Class_Descriptor cd_S400C3 = {  "S400C3", // class name
  bases_S400C3, 2,
  &(vtc_S400C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI6S400C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV6S400C3),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  S400C2  : S400C3 {
  virtual void  v2(); // _ZN6S400C22v2Ev
  ~S400C2(); // tgen
  S400C2(); // tgen
};
//SIG(-1 S400C2) C1{ BC2{ BC3{ BC4{ m Fi}} vd} v1}


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

static void Test_S400C2()
{
  extern Class_Descriptor cd_S400C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S400C2, buf);
    S400C2 *dp, &lv = *(dp=new (buf) S400C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S400C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S400C2)");
    check_base_class_offset(lv, (S28C13_nt*)(S400C4*)(S400C3*), ABISELECT(8,4), "S400C2");
    check_base_class_offset(lv, (S400C4*)(S400C3*), ABISELECT(8,4), "S400C2");
    check_base_class_offset(lv, (S400C3*), 0, "S400C2");
    test_class_info(&lv, &cd_S400C2);
    dp->~S400C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS400C2(Test_S400C2, "S400C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN6S400C2C1Ev();
extern void _ZN6S400C2D1Ev();
Name_Map name_map_S400C2[] = {
  NSPAIR(_ZN6S400C2C1Ev),
  NSPAIR(_ZN6S400C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S400C4;
extern VTBL_ENTRY _ZTI6S400C4[];
extern Class_Descriptor cd_S400C3;
extern VTBL_ENTRY _ZTI6S400C3[];
extern  VTBL_ENTRY _ZTV6S400C3[];
static Base_Class bases_S400C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S400C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S400C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S400C2[];
extern void _ZN6S400C2D1Ev();
extern void _ZN6S400C2D0Ev();
extern void _ZN6S400C22v2Ev();
static  VTBL_ENTRY vtc_S400C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S400C2[0]),
  (VTBL_ENTRY)&_ZN6S400C2D1Ev,
  (VTBL_ENTRY)&_ZN6S400C2D0Ev,
  (VTBL_ENTRY)&_ZN6S400C22v2Ev,
};
extern VTBL_ENTRY _ZTI6S400C2[];
extern  VTBL_ENTRY _ZTV6S400C2[];
Class_Descriptor cd_S400C2 = {  "S400C2", // class name
  bases_S400C2, 3,
  &(vtc_S400C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI6S400C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S400C2),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S400C1  : S400C2 {
  ::S399C6_nt s400c1f0;
  void *s400c1f1;
  int s400c1f2;
  virtual  ~S400C1(); // _ZN6S400C1D1Ev
  virtual void  v1(); // _ZN6S400C12v1Ev
  S400C1(); // tgen
};
//SIG(1 S400C1) C1{ BC2{ BC3{ BC4{ BC5{ m Fi}} vd} v2} vd v1 FC6{ m FC7{}} Fp Fi}


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

static void Test_S400C1()
{
  extern Class_Descriptor cd_S400C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S400C1, buf);
    S400C1 *dp, &lv = *(dp=new (buf) S400C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S400C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S400C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S400C4*)(S400C3*)(S400C2*), ABISELECT(8,4), "S400C1");
    check_base_class_offset(lv, (S400C4*)(S400C3*)(S400C2*), ABISELECT(8,4), "S400C1");
    check_base_class_offset(lv, (S400C3*)(S400C2*), 0, "S400C1");
    check_base_class_offset(lv, (S400C2*), 0, "S400C1");
    check_field_offset(lv, s400c1f0, ABISELECT(12,8), "S400C1.s400c1f0");
    check_field_offset(lv, s400c1f1, ABISELECT(16,12), "S400C1.s400c1f1");
    check_field_offset(lv, s400c1f2, ABISELECT(24,16), "S400C1.s400c1f2");
    test_class_info(&lv, &cd_S400C1);
    dp->~S400C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS400C1(Test_S400C1, "S400C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN6S400C1C1Ev();
extern void _ZN6S400C1D1Ev();
Name_Map name_map_S400C1[] = {
  NSPAIR(_ZN6S400C1C1Ev),
  NSPAIR(_ZN6S400C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S400C4;
extern VTBL_ENTRY _ZTI6S400C4[];
extern Class_Descriptor cd_S400C3;
extern VTBL_ENTRY _ZTI6S400C3[];
extern  VTBL_ENTRY _ZTV6S400C3[];
extern Class_Descriptor cd_S400C2;
extern VTBL_ENTRY _ZTI6S400C2[];
extern  VTBL_ENTRY _ZTV6S400C2[];
static Base_Class bases_S400C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S400C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S400C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S400C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S400C1[];
extern void _ZN6S400C1D1Ev();
extern void _ZN6S400C1D0Ev();
extern void _ZN6S400C22v2Ev();
extern void _ZN6S400C12v1Ev();
static  VTBL_ENTRY vtc_S400C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S400C1[0]),
  (VTBL_ENTRY)&_ZN6S400C1D1Ev,
  (VTBL_ENTRY)&_ZN6S400C1D0Ev,
  (VTBL_ENTRY)&_ZN6S400C22v2Ev,
  (VTBL_ENTRY)&_ZN6S400C12v1Ev,
};
extern VTBL_ENTRY _ZTI6S400C1[];
extern  VTBL_ENTRY _ZTV6S400C1[];
Class_Descriptor cd_S400C1 = {  "S400C1", // class name
  bases_S400C1, 4,
  &(vtc_S400C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI6S400C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S400C1),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17526C1  {
  void *s17526c1f0;
  ::S17781C2 s17526c1f1;
  int s17526c1f2;
  void *s17526c1f3[2];
  char s17526c1f4[4];
  int s17526c1f5[3];
  void *s17526c1f6[2];
  int s17526c1f7;
  void  mf17526c1(); // _ZN8S17526C19mf17526c1Ev
};
//SIG(1 S17526C1) C1{ m Fp FC2{ Fi Fc[98]} Fi Fp[2] Fc[4] Fi[3] Fp[2] Fi}


void  S17526C1 ::mf17526c1(){}

static void Test_S17526C1()
{
  {
    init_simple_test("S17526C1");
    S17526C1 lv;
    check2(sizeof(lv), ABISELECT(176,148), "sizeof(S17526C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17526C1)");
    check_field_offset(lv, s17526c1f0, 0, "S17526C1.s17526c1f0");
    check_field_offset(lv, s17526c1f1, ABISELECT(8,4), "S17526C1.s17526c1f1");
    check_field_offset(lv, s17526c1f2, ABISELECT(112,108), "S17526C1.s17526c1f2");
    check_field_offset(lv, s17526c1f3, ABISELECT(120,112), "S17526C1.s17526c1f3");
    check_field_offset(lv, s17526c1f4, ABISELECT(136,120), "S17526C1.s17526c1f4");
    check_field_offset(lv, s17526c1f5, ABISELECT(140,124), "S17526C1.s17526c1f5");
    check_field_offset(lv, s17526c1f6, ABISELECT(152,136), "S17526C1.s17526c1f6");
    check_field_offset(lv, s17526c1f7, ABISELECT(168,144), "S17526C1.s17526c1f7");
  }
}
static Arrange_To_Call_Me vS17526C1(Test_S17526C1, "S17526C1", ABISELECT(176,148));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S402C4  : S28C13_nt {
};
//SIG(-1 S402C4) C1{ BC2{ m Fi}}



static void Test_S402C4()
{
  extern Class_Descriptor cd_S402C4;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S402C4, buf);
    S402C4 &lv = *(new (buf) S402C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S402C4)");
    check2(__alignof__(lv), 4, "__alignof__(S402C4)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S402C4");
    test_class_info(&lv, &cd_S402C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS402C4(Test_S402C4, "S402C4", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S402C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S402C4[];
Class_Descriptor cd_S402C4 = {  "S402C4", // class name
  bases_S402C4, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI6S402C4),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  S402C3  : S402C4 {
  virtual  ~S402C3(); // _ZN6S402C3D1Ev
  S402C3(); // tgen
};
//SIG(-1 S402C3) C1{ BC2{ BC3{ m Fi}} vd}


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

static void Test_S402C3()
{
  extern Class_Descriptor cd_S402C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S402C3, buf);
    S402C3 *dp, &lv = *(dp=new (buf) S402C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S402C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S402C3)");
    check_base_class_offset(lv, (S28C13_nt*)(S402C4*), ABISELECT(8,4), "S402C3");
    check_base_class_offset(lv, (S402C4*), ABISELECT(8,4), "S402C3");
    test_class_info(&lv, &cd_S402C3);
    dp->~S402C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS402C3(Test_S402C3, "S402C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN6S402C3C1Ev();
extern void _ZN6S402C3D1Ev();
Name_Map name_map_S402C3[] = {
  NSPAIR(_ZN6S402C3C1Ev),
  NSPAIR(_ZN6S402C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S402C4;
extern VTBL_ENTRY _ZTI6S402C4[];
static Base_Class bases_S402C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S402C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S402C3[];
extern void _ZN6S402C3D1Ev();
extern void _ZN6S402C3D0Ev();
static  VTBL_ENTRY vtc_S402C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S402C3[0]),
  (VTBL_ENTRY)&_ZN6S402C3D1Ev,
  (VTBL_ENTRY)&_ZN6S402C3D0Ev,
};
extern VTBL_ENTRY _ZTI6S402C3[];
extern  VTBL_ENTRY _ZTV6S402C3[];
Class_Descriptor cd_S402C3 = {  "S402C3", // class name
  bases_S402C3, 2,
  &(vtc_S402C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI6S402C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV6S402C3),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  S402C2  : S402C3 {
  virtual void  v2(); // _ZN6S402C22v2Ev
  ~S402C2(); // tgen
  S402C2(); // tgen
};
//SIG(-1 S402C2) C1{ BC2{ BC3{ BC4{ m Fi}} vd} v1}


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

static void Test_S402C2()
{
  extern Class_Descriptor cd_S402C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S402C2, buf);
    S402C2 *dp, &lv = *(dp=new (buf) S402C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S402C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S402C2)");
    check_base_class_offset(lv, (S28C13_nt*)(S402C4*)(S402C3*), ABISELECT(8,4), "S402C2");
    check_base_class_offset(lv, (S402C4*)(S402C3*), ABISELECT(8,4), "S402C2");
    check_base_class_offset(lv, (S402C3*), 0, "S402C2");
    test_class_info(&lv, &cd_S402C2);
    dp->~S402C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS402C2(Test_S402C2, "S402C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN6S402C2C1Ev();
extern void _ZN6S402C2D1Ev();
Name_Map name_map_S402C2[] = {
  NSPAIR(_ZN6S402C2C1Ev),
  NSPAIR(_ZN6S402C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S402C4;
extern VTBL_ENTRY _ZTI6S402C4[];
extern Class_Descriptor cd_S402C3;
extern VTBL_ENTRY _ZTI6S402C3[];
extern  VTBL_ENTRY _ZTV6S402C3[];
static Base_Class bases_S402C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S402C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S402C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S402C2[];
extern void _ZN6S402C2D1Ev();
extern void _ZN6S402C2D0Ev();
extern void _ZN6S402C22v2Ev();
static  VTBL_ENTRY vtc_S402C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S402C2[0]),
  (VTBL_ENTRY)&_ZN6S402C2D1Ev,
  (VTBL_ENTRY)&_ZN6S402C2D0Ev,
  (VTBL_ENTRY)&_ZN6S402C22v2Ev,
};
extern VTBL_ENTRY _ZTI6S402C2[];
extern  VTBL_ENTRY _ZTV6S402C2[];
Class_Descriptor cd_S402C2 = {  "S402C2", // class name
  bases_S402C2, 3,
  &(vtc_S402C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI6S402C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S402C2),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S402C1  : S402C2 {
  ::S399C6_nt s402c1f0;
  void *s402c1f1;
  virtual  ~S402C1(); // _ZN6S402C1D1Ev
  virtual void  v1(); // _ZN6S402C12v1Ev
  S402C1(); // tgen
};
//SIG(1 S402C1) C1{ BC2{ BC3{ BC4{ BC5{ m Fi}} vd} v2} vd v1 FC6{ m FC7{}} Fp}


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

static void Test_S402C1()
{
  extern Class_Descriptor cd_S402C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S402C1, buf);
    S402C1 *dp, &lv = *(dp=new (buf) S402C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S402C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S402C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S402C4*)(S402C3*)(S402C2*), ABISELECT(8,4), "S402C1");
    check_base_class_offset(lv, (S402C4*)(S402C3*)(S402C2*), ABISELECT(8,4), "S402C1");
    check_base_class_offset(lv, (S402C3*)(S402C2*), 0, "S402C1");
    check_base_class_offset(lv, (S402C2*), 0, "S402C1");
    check_field_offset(lv, s402c1f0, ABISELECT(12,8), "S402C1.s402c1f0");
    check_field_offset(lv, s402c1f1, ABISELECT(16,12), "S402C1.s402c1f1");
    test_class_info(&lv, &cd_S402C1);
    dp->~S402C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS402C1(Test_S402C1, "S402C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN6S402C1C1Ev();
extern void _ZN6S402C1D1Ev();
Name_Map name_map_S402C1[] = {
  NSPAIR(_ZN6S402C1C1Ev),
  NSPAIR(_ZN6S402C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S402C4;
extern VTBL_ENTRY _ZTI6S402C4[];
extern Class_Descriptor cd_S402C3;
extern VTBL_ENTRY _ZTI6S402C3[];
extern  VTBL_ENTRY _ZTV6S402C3[];
extern Class_Descriptor cd_S402C2;
extern VTBL_ENTRY _ZTI6S402C2[];
extern  VTBL_ENTRY _ZTV6S402C2[];
static Base_Class bases_S402C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S402C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S402C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S402C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S402C1[];
extern void _ZN6S402C1D1Ev();
extern void _ZN6S402C1D0Ev();
extern void _ZN6S402C22v2Ev();
extern void _ZN6S402C12v1Ev();
static  VTBL_ENTRY vtc_S402C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S402C1[0]),
  (VTBL_ENTRY)&_ZN6S402C1D1Ev,
  (VTBL_ENTRY)&_ZN6S402C1D0Ev,
  (VTBL_ENTRY)&_ZN6S402C22v2Ev,
  (VTBL_ENTRY)&_ZN6S402C12v1Ev,
};
extern VTBL_ENTRY _ZTI6S402C1[];
extern  VTBL_ENTRY _ZTV6S402C1[];
Class_Descriptor cd_S402C1 = {  "S402C1", // class name
  bases_S402C1, 4,
  &(vtc_S402C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI6S402C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S402C1),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2681C2  : S28C13_nt {
};
//SIG(-1 S2681C2) C1{ BC2{ m Fi}}



static void Test_S2681C2()
{
  extern Class_Descriptor cd_S2681C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2681C2, buf);
    S2681C2 &lv = *(new (buf) S2681C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2681C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2681C2)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S2681C2");
    test_class_info(&lv, &cd_S2681C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2681C2(Test_S2681C2, "S2681C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S2681C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2681C2 = {  "S2681C2", // class name
  bases_S2681C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2681C6_nt  {
  int s2681c6f0[5];
  void  mf2681c6(); // _ZN10S2681C6_nt8mf2681c6Ev
};
//SIG(-1 S2681C6_nt) C1{ m Fi[5]}


void  S2681C6_nt ::mf2681c6(){}

//skip512 S2681C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2681C1  : S2681C2 {
  int s2681c1f0;
  ::S17885C12 s2681c1f1;
  ::S17885C6_nt s2681c1f2;
  ::S2681C6_nt s2681c1f3;
};
//SIG(1 S2681C1) C1{ BC2{ BC3{ m Fi}} Fi FC4{ m Fp} FC5{ m Fp} FC6{ m Fi[5]}}



static void Test_S2681C1()
{
  extern Class_Descriptor cd_S2681C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,10)];
    init_test(&cd_S2681C1, buf);
    S2681C1 &lv = *(new (buf) S2681C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S2681C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2681C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S2681C2*), 0, "S2681C1");
    check_base_class_offset(lv, (S2681C2*), 0, "S2681C1");
    check_field_offset(lv, s2681c1f0, 4, "S2681C1.s2681c1f0");
    check_field_offset(lv, s2681c1f1, 8, "S2681C1.s2681c1f1");
    check_field_offset(lv, s2681c1f2, ABISELECT(16,12), "S2681C1.s2681c1f2");
    check_field_offset(lv, s2681c1f3, ABISELECT(24,16), "S2681C1.s2681c1f3");
    test_class_info(&lv, &cd_S2681C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2681C1(Test_S2681C1, "S2681C1", ABISELECT(48,36));

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S2681C2;
static Base_Class bases_S2681C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2681C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2681C1 = {  "S2681C1", // class name
  bases_S2681C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(48,36), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1091C3  : S28C13_nt {
};
//SIG(-1 S1091C3) C1{ BC2{ m Fi}}



static void Test_S1091C3()
{
  extern Class_Descriptor cd_S1091C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1091C3, buf);
    S1091C3 &lv = *(new (buf) S1091C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1091C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1091C3)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S1091C3");
    test_class_info(&lv, &cd_S1091C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1091C3(Test_S1091C3, "S1091C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S1091C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1091C3[];
Class_Descriptor cd_S1091C3 = {  "S1091C3", // class name
  bases_S1091C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1091C3),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  S1091C2  : S1091C3 {
  int s1091c2f0;
  virtual  ~S1091C2(); // _ZN7S1091C2D1Ev
  virtual void  v4(); // _ZN7S1091C22v4Ev
  virtual void  v5(); // _ZN7S1091C22v5Ev
  virtual void  v6(); // _ZN7S1091C22v6Ev
  S1091C2(); // tgen
};
//SIG(-1 S1091C2) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 Fi}


 S1091C2 ::~S1091C2(){ note_dtor("S1091C2", this);}
void  S1091C2 ::v4(){vfunc_called(this, "_ZN7S1091C22v4Ev");}
void  S1091C2 ::v5(){vfunc_called(this, "_ZN7S1091C22v5Ev");}
void  S1091C2 ::v6(){vfunc_called(this, "_ZN7S1091C22v6Ev");}
S1091C2 ::S1091C2(){ note_ctor("S1091C2", this);} // tgen

static void Test_S1091C2()
{
  extern Class_Descriptor cd_S1091C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1091C2, buf);
    S1091C2 *dp, &lv = *(dp=new (buf) S1091C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1091C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1091C2)");
    check_base_class_offset(lv, (S28C13_nt*)(S1091C3*), ABISELECT(8,4), "S1091C2");
    check_base_class_offset(lv, (S1091C3*), ABISELECT(8,4), "S1091C2");
    check_field_offset(lv, s1091c2f0, ABISELECT(12,8), "S1091C2.s1091c2f0");
    test_class_info(&lv, &cd_S1091C2);
    dp->~S1091C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1091C2(Test_S1091C2, "S1091C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S1091C2C1Ev();
extern void _ZN7S1091C2D1Ev();
Name_Map name_map_S1091C2[] = {
  NSPAIR(_ZN7S1091C2C1Ev),
  NSPAIR(_ZN7S1091C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S1091C3;
extern VTBL_ENTRY _ZTI7S1091C3[];
static Base_Class bases_S1091C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1091C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1091C2[];
extern void _ZN7S1091C2D1Ev();
extern void _ZN7S1091C2D0Ev();
extern void _ZN7S1091C22v4Ev();
extern void _ZN7S1091C22v5Ev();
extern void _ZN7S1091C22v6Ev();
static  VTBL_ENTRY vtc_S1091C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1091C2[0]),
  (VTBL_ENTRY)&_ZN7S1091C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1091C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1091C22v4Ev,
  (VTBL_ENTRY)&_ZN7S1091C22v5Ev,
  (VTBL_ENTRY)&_ZN7S1091C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S1091C2[];
extern  VTBL_ENTRY _ZTV7S1091C2[];
Class_Descriptor cd_S1091C2 = {  "S1091C2", // class name
  bases_S1091C2, 2,
  &(vtc_S1091C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S1091C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1091C2),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  S1091C1  : S1091C2 {
  int s1091c1f0[2];
  virtual void  v1(); // _ZN7S1091C12v1Ev
  virtual void  v2(); // _ZN7S1091C12v2Ev
  virtual void  v3(); // _ZN7S1091C12v3Ev
  ~S1091C1(); // tgen
  S1091C1(); // tgen
};
//SIG(1 S1091C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v4 v5 v6 Fi} v1 v2 v3 Fi[2]}


void  S1091C1 ::v1(){vfunc_called(this, "_ZN7S1091C12v1Ev");}
void  S1091C1 ::v2(){vfunc_called(this, "_ZN7S1091C12v2Ev");}
void  S1091C1 ::v3(){vfunc_called(this, "_ZN7S1091C12v3Ev");}
S1091C1 ::~S1091C1(){ note_dtor("S1091C1", this);} // tgen
S1091C1 ::S1091C1(){ note_ctor("S1091C1", this);} // tgen

static void Test_S1091C1()
{
  extern Class_Descriptor cd_S1091C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S1091C1, buf);
    S1091C1 *dp, &lv = *(dp=new (buf) S1091C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S1091C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1091C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S1091C3*)(S1091C2*), ABISELECT(8,4), "S1091C1");
    check_base_class_offset(lv, (S1091C3*)(S1091C2*), ABISELECT(8,4), "S1091C1");
    check_base_class_offset(lv, (S1091C2*), 0, "S1091C1");
    check_field_offset(lv, s1091c1f0, ABISELECT(16,12), "S1091C1.s1091c1f0");
    test_class_info(&lv, &cd_S1091C1);
    dp->~S1091C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1091C1(Test_S1091C1, "S1091C1", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN7S1091C1C1Ev();
extern void _ZN7S1091C1D1Ev();
Name_Map name_map_S1091C1[] = {
  NSPAIR(_ZN7S1091C1C1Ev),
  NSPAIR(_ZN7S1091C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S1091C3;
extern VTBL_ENTRY _ZTI7S1091C3[];
extern Class_Descriptor cd_S1091C2;
extern VTBL_ENTRY _ZTI7S1091C2[];
extern  VTBL_ENTRY _ZTV7S1091C2[];
static Base_Class bases_S1091C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1091C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1091C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1091C1[];
extern void _ZN7S1091C1D1Ev();
extern void _ZN7S1091C1D0Ev();
extern void _ZN7S1091C22v4Ev();
extern void _ZN7S1091C22v5Ev();
extern void _ZN7S1091C22v6Ev();
extern void _ZN7S1091C12v1Ev();
extern void _ZN7S1091C12v2Ev();
extern void _ZN7S1091C12v3Ev();
static  VTBL_ENTRY vtc_S1091C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1091C1[0]),
  (VTBL_ENTRY)&_ZN7S1091C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1091C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1091C22v4Ev,
  (VTBL_ENTRY)&_ZN7S1091C22v5Ev,
  (VTBL_ENTRY)&_ZN7S1091C22v6Ev,
  (VTBL_ENTRY)&_ZN7S1091C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1091C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1091C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S1091C1[];
extern  VTBL_ENTRY _ZTV7S1091C1[];
Class_Descriptor cd_S1091C1 = {  "S1091C1", // class name
  bases_S1091C1, 3,
  &(vtc_S1091C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI7S1091C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1091C1),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  S2639C2  : S28C13_nt {
};
//SIG(-1 S2639C2) C1{ BC2{ m Fi}}



static void Test_S2639C2()
{
  extern Class_Descriptor cd_S2639C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2639C2, buf);
    S2639C2 &lv = *(new (buf) S2639C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2639C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2639C2)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S2639C2");
    test_class_info(&lv, &cd_S2639C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2639C2(Test_S2639C2, "S2639C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S2639C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2639C2 = {  "S2639C2", // class name
  bases_S2639C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2639C4_nt  {
  int s2639c4f0;
  char s2639c4f1;
  void  mf2639c4(); // _ZN10S2639C4_nt8mf2639c4Ev
};
//SIG(-1 S2639C4_nt) C1{ m Fi Fc}


void  S2639C4_nt ::mf2639c4(){}

//skip512 S2639C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2639C1  : S2639C2 {
  ::S2639C4_nt s2639c1f0;
  int s2639c1f1;
  ::S2639C4_nt s2639c1f2;
  ::S9697C10_nt s2639c1f3;
};
//SIG(1 S2639C1) C1{ BC2{ BC3{ m Fi}} FC4{ m Fi Fc} Fi FC4 FC5{ m Fi[2]}}



static void Test_S2639C1()
{
  extern Class_Descriptor cd_S2639C1;
  void *lvp;
  {
    int buf[9];
    init_test(&cd_S2639C1, buf);
    S2639C1 &lv = *(new (buf) S2639C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 32, "sizeof(S2639C1)");
    check2(__alignof__(lv), 4, "__alignof__(S2639C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S2639C2*), 0, "S2639C1");
    check_base_class_offset(lv, (S2639C2*), 0, "S2639C1");
    check_field_offset(lv, s2639c1f0, 4, "S2639C1.s2639c1f0");
    check_field_offset(lv, s2639c1f1, 12, "S2639C1.s2639c1f1");
    check_field_offset(lv, s2639c1f2, 16, "S2639C1.s2639c1f2");
    check_field_offset(lv, s2639c1f3, 24, "S2639C1.s2639c1f3");
    test_class_info(&lv, &cd_S2639C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2639C1(Test_S2639C1, "S2639C1", 32);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S2639C2;
static Base_Class bases_S2639C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2639C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2639C1 = {  "S2639C1", // class name
  bases_S2639C1, 2,
  0, // no vftv
  0, //no vtt
  32, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2596C2  : S28C13_nt {
};
//SIG(-1 S2596C2) C1{ BC2{ m Fi}}



static void Test_S2596C2()
{
  extern Class_Descriptor cd_S2596C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2596C2, buf);
    S2596C2 &lv = *(new (buf) S2596C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2596C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2596C2)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S2596C2");
    test_class_info(&lv, &cd_S2596C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2596C2(Test_S2596C2, "S2596C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S2596C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2596C2 = {  "S2596C2", // class name
  bases_S2596C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2596C4  : S731C17_nt {
};
//SIG(-1 S2596C4) C1{ BC2{ m}}



static void Test_S2596C4()
{
  extern Class_Descriptor cd_S2596C4;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S2596C4, buf);
    S2596C4 &lv = *(new (buf) S2596C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S2596C4)");
    check2(__alignof__(lv), 1, "__alignof__(S2596C4)");
    check_base_class_offset(lv, (S731C17_nt*), 0, "S2596C4");
    test_class_info(&lv, &cd_S2596C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2596C4(Test_S2596C4, "S2596C4", 1);

#else // __cplusplus

extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
static Base_Class bases_S2596C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2596C4 = {  "S2596C4", // class name
  bases_S2596C4, 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  S2596C7_nt  {
  void  mf2596c7(); // _ZN10S2596C7_nt8mf2596c7Ev
};
//SIG(-1 S2596C7_nt) C1{ m}


void  S2596C7_nt ::mf2596c7(){}

//skip512 S2596C7_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S2596C7_nt[];
VTBL_ENTRY *P__ZTI10S2596C7_nt = _ZTI10S2596C7_nt; 
Class_Descriptor cd_S2596C7_nt = {  "S2596C7_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI10S2596C7_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  S2596C1  : S2596C2 , S2596C4 {
  ::S28C52_nt s2596c1f0;
  ::S2596C7_nt s2596c1f1;
  ::S2596C7_nt s2596c1f2;
};
//SIG(1 S2596C1) C1{ BC2{ BC3{ m Fi}} BC4{ BC5{ m}} FC6{ m} FC7{ m} FC7}



static void Test_S2596C1()
{
  extern Class_Descriptor cd_S2596C1;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S2596C1, buf);
    S2596C1 &lv = *(new (buf) S2596C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S2596C1)");
    check2(__alignof__(lv), 4, "__alignof__(S2596C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S2596C2*), 0, "S2596C1");
    check_base_class_offset(lv, (S2596C2*), 0, "S2596C1");
    check_base_class_offset(lv, (S731C17_nt*)(S2596C4*), 0, "S2596C1");
    check_base_class_offset(lv, (S2596C4*), 0, "S2596C1");
    check_field_offset(lv, s2596c1f0, 4, "S2596C1.s2596c1f0");
    check_field_offset(lv, s2596c1f1, 5, "S2596C1.s2596c1f1");
    check_field_offset(lv, s2596c1f2, 6, "S2596C1.s2596c1f2");
    test_class_info(&lv, &cd_S2596C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2596C1(Test_S2596C1, "S2596C1", 8);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S2596C2;
extern Class_Descriptor cd_S731C17_nt;
extern VTBL_ENTRY _ZTI10S731C17_nt[];
extern Class_Descriptor cd_S2596C4;
static Base_Class bases_S2596C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2596C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S731C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S2596C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2596C1 = {  "S2596C1", // class name
  bases_S2596C1, 4,
  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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7343C4  : virtual S3461C5_nt , S2596C7_nt {
  virtual void  v1(); // _ZN7S7343C42v1Ev
  ~S7343C4(); // tgen
  S7343C4(); // tgen
};
//SIG(-1 S7343C4) C1{ VBC2{ m FL} BC3{ m} v1}


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

static void Test_S7343C4()
{
  extern Class_Descriptor cd_S7343C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7343C4, buf);
    S7343C4 *dp, &lv = *(dp=new (buf) S7343C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7343C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7343C4)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S7343C4");
    check_base_class_offset(lv, (S2596C7_nt*), 0, "S7343C4");
    test_class_info(&lv, &cd_S7343C4);
    dp->~S7343C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7343C4(Test_S7343C4, "S7343C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7343C4C1Ev();
extern void _ZN7S7343C4D1Ev();
Name_Map name_map_S7343C4[] = {
  NSPAIR(_ZN7S7343C4C1Ev),
  NSPAIR(_ZN7S7343C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S2596C7_nt;
extern VTBL_ENTRY _ZTI10S2596C7_nt[];
static Base_Class bases_S7343C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2596C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7343C4[];
extern void _ZN7S7343C42v1Ev();
static  VTBL_ENTRY vtc_S7343C4[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7343C4[0]),
  (VTBL_ENTRY)&_ZN7S7343C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S7343C4[];
static  VTT_ENTRY vtt_S7343C4[] = {
  {&(_ZTV7S7343C4[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7343C4[];
extern  VTBL_ENTRY _ZTV7S7343C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7343C4[];
Class_Descriptor cd_S7343C4 = {  "S7343C4", // class name
  bases_S7343C4, 2,
  &(vtc_S7343C4[0]), // expected_vtbl_contents
  &(vtt_S7343C4[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7343C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7343C4),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7343C4),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  S7343C3  : S7343C4 {
  ~S7343C3(); // tgen
  S7343C3(); // tgen
};
//SIG(-1 S7343C3) C1{ BC2{ VBC3{ m FL} BC4{ m} v1}}


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

static void Test_S7343C3()
{
  extern Class_Descriptor cd_S7343C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7343C3, buf);
    S7343C3 *dp, &lv = *(dp=new (buf) S7343C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7343C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7343C3)");
    check_base_class_offset(lv, (S3461C5_nt*)(S7343C4*), ABISELECT(8,4), "S7343C3");
    check_base_class_offset(lv, (S2596C7_nt*)(S7343C4*), 0, "S7343C3");
    check_base_class_offset(lv, (S7343C4*), 0, "S7343C3");
    test_class_info(&lv, &cd_S7343C3);
    dp->~S7343C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7343C3(Test_S7343C3, "S7343C3", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7343C3C1Ev();
extern void _ZN7S7343C3D1Ev();
Name_Map name_map_S7343C3[] = {
  NSPAIR(_ZN7S7343C3C1Ev),
  NSPAIR(_ZN7S7343C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S2596C7_nt;
extern VTBL_ENTRY _ZTI10S2596C7_nt[];
extern Class_Descriptor cd_S7343C4;
extern VTBL_ENTRY _ZTI7S7343C4[];
extern  VTBL_ENTRY _ZTV7S7343C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7343C4[];
static Base_Class bases_S7343C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2596C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7343C4,    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 _ZTI7S7343C3[];
extern void _ZN7S7343C42v1Ev();
static  VTBL_ENTRY vtc_S7343C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7343C3[0]),
  (VTBL_ENTRY)&_ZN7S7343C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S7343C3[];
extern void _ZN7S7343C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7343C4__7S7343C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7343C4[0]),
  (VTBL_ENTRY)&_ZN7S7343C42v1Ev,
};
static  VTT_ENTRY vtt_S7343C3[] = {
  {&(_ZTV7S7343C3[3]),  3,4},
  {&(_tg__ZTV7S7343C4__7S7343C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7343C3[];
extern  VTBL_ENTRY _ZTV7S7343C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7343C3[];
Class_Descriptor cd_S7343C3 = {  "S7343C3", // class name
  bases_S7343C3, 3,
  &(vtc_S7343C3[0]), // expected_vtbl_contents
  &(vtt_S7343C3[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7343C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7343C3),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7343C3),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  S7343C2  : virtual S7343C3 {
  int s7343c2f0;
  ~S7343C2(); // tgen
  S7343C2(); // tgen
};
//SIG(-1 S7343C2) C1{ VBC2{ BC3{ VBC4{ m FL} BC5{ m} v1}} Fi}


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

static void Test_S7343C2()
{
  extern Class_Descriptor cd_S7343C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7343C2, buf);
    S7343C2 *dp, &lv = *(dp=new (buf) S7343C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7343C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7343C2)");
    check_base_class_offset(lv, (S3461C5_nt*)(S7343C4*)(S7343C3*), ABISELECT(16,8), "S7343C2");
    check_base_class_offset(lv, (S2596C7_nt*)(S7343C4*)(S7343C3*), 0, "S7343C2");
    check_base_class_offset(lv, (S7343C4*)(S7343C3*), 0, "S7343C2");
    check_base_class_offset(lv, (S7343C3*), 0, "S7343C2");
    check_field_offset(lv, s7343c2f0, ABISELECT(8,4), "S7343C2.s7343c2f0");
    test_class_info(&lv, &cd_S7343C2);
    dp->~S7343C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7343C2(Test_S7343C2, "S7343C2", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S7343C2C1Ev();
extern void _ZN7S7343C2D1Ev();
Name_Map name_map_S7343C2[] = {
  NSPAIR(_ZN7S7343C2C1Ev),
  NSPAIR(_ZN7S7343C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S2596C7_nt;
extern VTBL_ENTRY _ZTI10S2596C7_nt[];
extern Class_Descriptor cd_S7343C4;
extern VTBL_ENTRY _ZTI7S7343C4[];
extern  VTBL_ENTRY _ZTV7S7343C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7343C4[];
extern Class_Descriptor cd_S7343C3;
extern VTBL_ENTRY _ZTI7S7343C3[];
extern  VTBL_ENTRY _ZTV7S7343C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7343C3[];
static Base_Class bases_S7343C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S2596C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7343C4,    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
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7343C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7343C2[];
extern void _ZN7S7343C42v1Ev();
static  VTBL_ENTRY vtc_S7343C2[] = {
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7343C2[0]),
  (VTBL_ENTRY)&_ZN7S7343C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S7343C2[];
extern void _ZN7S7343C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7343C3__7S7343C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7343C3[0]),
  (VTBL_ENTRY)&_ZN7S7343C42v1Ev,
};
extern void _ZN7S7343C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7343C47S7343C3__7S7343C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7343C4[0]),
  (VTBL_ENTRY)&_ZN7S7343C42v1Ev,
};
static  VTT_ENTRY vtt_S7343C2[] = {
  {&(_ZTV7S7343C2[5]),  5,6},
  {&(_ZTV7S7343C2[5]),  5,6},
  {&(_tg__ZTV7S7343C3__7S7343C2[3]),  3,4},
  {&(_tg__ZTV7S7343C47S7343C3__7S7343C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7343C2[];
extern  VTBL_ENTRY _ZTV7S7343C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7343C2[];
Class_Descriptor cd_S7343C2 = {  "S7343C2", // class name
  bases_S7343C2, 4,
  &(vtc_S7343C2[0]), // expected_vtbl_contents
  &(vtt_S7343C2[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S7343C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7343C2),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7343C2),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  S7343C1  : S7343C2 {
  __tsi64 s7343c1f0[9];
  ~S7343C1(); // tgen
  S7343C1(); // tgen
};
//SIG(1 S7343C1) C1{ BC2{ VBC3{ BC4{ VBC5{ m FL} BC6{ m} v1}} Fi} FL[9]}


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

static void Test_S7343C1()
{
  extern Class_Descriptor cd_S7343C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,23)];
    init_test(&cd_S7343C1, buf);
    S7343C1 *dp, &lv = *(dp=new (buf) S7343C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,88), "sizeof(S7343C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7343C1)");
    check_base_class_offset(lv, (S3461C5_nt*)(S7343C4*)(S7343C3*), ABISELECT(88,80), "S7343C1");
    check_base_class_offset(lv, (S2596C7_nt*)(S7343C4*)(S7343C3*), 0, "S7343C1");
    check_base_class_offset(lv, (S7343C4*)(S7343C3*), 0, "S7343C1");
    check_base_class_offset(lv, (S7343C3*)(S7343C2*), 0, "S7343C1");
    check_base_class_offset(lv, (S7343C2*), 0, "S7343C1");
    check_field_offset(lv, s7343c1f0, ABISELECT(16,8), "S7343C1.s7343c1f0");
    test_class_info(&lv, &cd_S7343C1);
    dp->~S7343C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7343C1(Test_S7343C1, "S7343C1", ABISELECT(96,88));

#else // __cplusplus

extern void _ZN7S7343C1C1Ev();
extern void _ZN7S7343C1D1Ev();
Name_Map name_map_S7343C1[] = {
  NSPAIR(_ZN7S7343C1C1Ev),
  NSPAIR(_ZN7S7343C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S2596C7_nt;
extern VTBL_ENTRY _ZTI10S2596C7_nt[];
extern Class_Descriptor cd_S7343C4;
extern VTBL_ENTRY _ZTI7S7343C4[];
extern  VTBL_ENTRY _ZTV7S7343C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7343C4[];
extern Class_Descriptor cd_S7343C3;
extern VTBL_ENTRY _ZTI7S7343C3[];
extern  VTBL_ENTRY _ZTV7S7343C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7343C3[];
extern Class_Descriptor cd_S7343C2;
extern VTBL_ENTRY _ZTI7S7343C2[];
extern  VTBL_ENTRY _ZTV7S7343C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7343C2[];
static Base_Class bases_S7343C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(88,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S2596C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7343C4,    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
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7343C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7343C2,    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 _ZTI7S7343C1[];
extern void _ZN7S7343C42v1Ev();
static  VTBL_ENTRY vtc_S7343C1[] = {
  0,
  0,
  ABISELECT(88,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7343C1[0]),
  (VTBL_ENTRY)&_ZN7S7343C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S7343C1[];
extern void _ZN7S7343C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7343C2__7S7343C1[] = {
  0,
  0,
  ABISELECT(88,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7343C2[0]),
  (VTBL_ENTRY)&_ZN7S7343C42v1Ev,
};
extern void _ZN7S7343C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7343C3__7S7343C1[] = {
  ABISELECT(88,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7343C3[0]),
  (VTBL_ENTRY)&_ZN7S7343C42v1Ev,
};
extern void _ZN7S7343C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7343C47S7343C3__7S7343C1[] = {
  ABISELECT(88,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7343C4[0]),
  (VTBL_ENTRY)&_ZN7S7343C42v1Ev,
};
static  VTT_ENTRY vtt_S7343C1[] = {
  {&(_ZTV7S7343C1[5]),  5,6},
  {&(_tg__ZTV7S7343C2__7S7343C1[5]),  5,6},
  {&(_tg__ZTV7S7343C2__7S7343C1[5]),  5,6},
  {&(_ZTV7S7343C1[5]),  5,6},
  {&(_tg__ZTV7S7343C3__7S7343C1[3]),  3,4},
  {&(_tg__ZTV7S7343C47S7343C3__7S7343C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7343C1[];
extern  VTBL_ENTRY _ZTV7S7343C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7343C1[];
Class_Descriptor cd_S7343C1 = {  "S7343C1", // class name
  bases_S7343C1, 5,
  &(vtc_S7343C1[0]), // expected_vtbl_contents
  &(vtt_S7343C1[0]), // expected_vtt_contents
  ABISELECT(96,88), // object size
  NSPAIRA(_ZTI7S7343C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7343C1),6, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7343C1),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  S2661C2  : S28C13_nt {
};
//SIG(-1 S2661C2) C1{ BC2{ m Fi}}



static void Test_S2661C2()
{
  extern Class_Descriptor cd_S2661C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2661C2, buf);
    S2661C2 &lv = *(new (buf) S2661C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2661C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2661C2)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S2661C2");
    test_class_info(&lv, &cd_S2661C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2661C2(Test_S2661C2, "S2661C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S2661C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2661C2 = {  "S2661C2", // class name
  bases_S2661C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2661C1  : S2661C2 {
  ::S17885C12 s2661c1f0;
  ::S17885C12 s2661c1f1;
  ::S17885C6_nt s2661c1f2;
  char s2661c1f3;
  __tsi64 s2661c1f4;
};
//SIG(1 S2661C1) C1{ BC2{ BC3{ m Fi}} FC4{ m Fp} FC4 FC5{ m Fp} Fc FL}



static void Test_S2661C1()
{
  extern Class_Descriptor cd_S2661C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S2661C1, buf);
    S2661C1 &lv = *(new (buf) S2661C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S2661C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2661C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S2661C2*), 0, "S2661C1");
    check_base_class_offset(lv, (S2661C2*), 0, "S2661C1");
    check_field_offset(lv, s2661c1f0, ABISELECT(8,4), "S2661C1.s2661c1f0");
    check_field_offset(lv, s2661c1f1, ABISELECT(16,8), "S2661C1.s2661c1f1");
    check_field_offset(lv, s2661c1f2, ABISELECT(24,12), "S2661C1.s2661c1f2");
    check_field_offset(lv, s2661c1f3, ABISELECT(32,16), "S2661C1.s2661c1f3");
    check_field_offset(lv, s2661c1f4, ABISELECT(40,20), "S2661C1.s2661c1f4");
    test_class_info(&lv, &cd_S2661C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2661C1(Test_S2661C1, "S2661C1", ABISELECT(48,28));

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S2661C2;
static Base_Class bases_S2661C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2661C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2661C1 = {  "S2661C1", // class name
  bases_S2661C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(48,28), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5684C2  {
  ::S17885C12 s5684c2f0;
  ::S17885C12 s5684c2f1;
  ::S17885C12 s5684c2f2;
  ::S17885C12 s5684c2f3;
  void  mf5684c2(); // _ZN7S5684C28mf5684c2Ev
};
//SIG(-1 S5684C2) C1{ m FC2{ m Fp} FC2 FC2 FC2}


void  S5684C2 ::mf5684c2(){}

static void Test_S5684C2()
{
  {
    init_simple_test("S5684C2");
    S5684C2 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S5684C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5684C2)");
    check_field_offset(lv, s5684c2f0, 0, "S5684C2.s5684c2f0");
    check_field_offset(lv, s5684c2f1, ABISELECT(8,4), "S5684C2.s5684c2f1");
    check_field_offset(lv, s5684c2f2, ABISELECT(16,8), "S5684C2.s5684c2f2");
    check_field_offset(lv, s5684c2f3, ABISELECT(24,12), "S5684C2.s5684c2f3");
  }
}
static Arrange_To_Call_Me vS5684C2(Test_S5684C2, "S5684C2", ABISELECT(32,16));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S5684C4  : S28C13_nt {
};
//SIG(-1 S5684C4) C1{ BC2{ m Fi}}



static void Test_S5684C4()
{
  extern Class_Descriptor cd_S5684C4;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S5684C4, buf);
    S5684C4 &lv = *(new (buf) S5684C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S5684C4)");
    check2(__alignof__(lv), 4, "__alignof__(S5684C4)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S5684C4");
    test_class_info(&lv, &cd_S5684C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5684C4(Test_S5684C4, "S5684C4", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S5684C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5684C4 = {  "S5684C4", // class name
  bases_S5684C4, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5684C1  : S5684C2 , S5684C4 {
};
//SIG(1 S5684C1) C1{ BC2{ m FC3{ m Fp} FC3 FC3 FC3} BC4{ BC5{ m Fi}}}



static void Test_S5684C1()
{
  extern Class_Descriptor cd_S5684C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S5684C1, buf);
    S5684C1 &lv = *(new (buf) S5684C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S5684C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5684C1)");
    check_base_class_offset(lv, (S5684C2*), 0, "S5684C1");
    check_base_class_offset(lv, (S28C13_nt*)(S5684C4*), ABISELECT(32,16), "S5684C1");
    check_base_class_offset(lv, (S5684C4*), ABISELECT(32,16), "S5684C1");
    test_class_info(&lv, &cd_S5684C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5684C1(Test_S5684C1, "S5684C1", ABISELECT(40,20));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S2693C2  : S28C13_nt {
};
//SIG(-1 S2693C2) C1{ BC2{ m Fi}}



static void Test_S2693C2()
{
  extern Class_Descriptor cd_S2693C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2693C2, buf);
    S2693C2 &lv = *(new (buf) S2693C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2693C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2693C2)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S2693C2");
    test_class_info(&lv, &cd_S2693C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2693C2(Test_S2693C2, "S2693C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S2693C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2693C2 = {  "S2693C2", // class name
  bases_S2693C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2693C1  : S2693C2 {
  int s2693c1f0[2];
  ::S17885C12 s2693c1f1;
  ::S17885C6_nt s2693c1f2;
  void *s2693c1f3;
};
//SIG(1 S2693C1) C1{ BC2{ BC3{ m Fi}} Fi[2] FC4{ m Fp} FC5{ m Fp} Fp}



static void Test_S2693C1()
{
  extern Class_Descriptor cd_S2693C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S2693C1, buf);
    S2693C1 &lv = *(new (buf) S2693C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S2693C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2693C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S2693C2*), 0, "S2693C1");
    check_base_class_offset(lv, (S2693C2*), 0, "S2693C1");
    check_field_offset(lv, s2693c1f0, 4, "S2693C1.s2693c1f0");
    check_field_offset(lv, s2693c1f1, ABISELECT(16,12), "S2693C1.s2693c1f1");
    check_field_offset(lv, s2693c1f2, ABISELECT(24,16), "S2693C1.s2693c1f2");
    check_field_offset(lv, s2693c1f3, ABISELECT(32,20), "S2693C1.s2693c1f3");
    test_class_info(&lv, &cd_S2693C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2693C1(Test_S2693C1, "S2693C1", ABISELECT(40,24));

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S2693C2;
static Base_Class bases_S2693C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2693C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2693C1 = {  "S2693C1", // class name
  bases_S2693C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(40,24), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2655C2  : S28C13_nt {
};
//SIG(-1 S2655C2) C1{ BC2{ m Fi}}



static void Test_S2655C2()
{
  extern Class_Descriptor cd_S2655C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2655C2, buf);
    S2655C2 &lv = *(new (buf) S2655C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2655C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2655C2)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S2655C2");
    test_class_info(&lv, &cd_S2655C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2655C2(Test_S2655C2, "S2655C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S2655C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2655C2 = {  "S2655C2", // class name
  bases_S2655C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2655C1  : S2655C2 {
  ::S9697C10_nt s2655c1f0;
  int s2655c1f1;
  ::S17885C12 s2655c1f2;
  void *s2655c1f3;
};
//SIG(1 S2655C1) C1{ BC2{ BC3{ m Fi}} FC4{ m Fi[2]} Fi FC5{ m Fp} Fp}



static void Test_S2655C1()
{
  extern Class_Descriptor cd_S2655C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S2655C1, buf);
    S2655C1 &lv = *(new (buf) S2655C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S2655C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2655C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S2655C2*), 0, "S2655C1");
    check_base_class_offset(lv, (S2655C2*), 0, "S2655C1");
    check_field_offset(lv, s2655c1f0, 4, "S2655C1.s2655c1f0");
    check_field_offset(lv, s2655c1f1, 12, "S2655C1.s2655c1f1");
    check_field_offset(lv, s2655c1f2, 16, "S2655C1.s2655c1f2");
    check_field_offset(lv, s2655c1f3, ABISELECT(24,20), "S2655C1.s2655c1f3");
    test_class_info(&lv, &cd_S2655C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2655C1(Test_S2655C1, "S2655C1", ABISELECT(32,24));

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S2655C2;
static Base_Class bases_S2655C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2655C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2655C1 = {  "S2655C1", // class name
  bases_S2655C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(32,24), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S398C4  : S28C13_nt {
};
//SIG(-1 S398C4) C1{ BC2{ m Fi}}



static void Test_S398C4()
{
  extern Class_Descriptor cd_S398C4;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S398C4, buf);
    S398C4 &lv = *(new (buf) S398C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S398C4)");
    check2(__alignof__(lv), 4, "__alignof__(S398C4)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S398C4");
    test_class_info(&lv, &cd_S398C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS398C4(Test_S398C4, "S398C4", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S398C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S398C4[];
Class_Descriptor cd_S398C4 = {  "S398C4", // class name
  bases_S398C4, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI6S398C4),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  S398C3  : S398C4 {
  virtual  ~S398C3(); // _ZN6S398C3D1Ev
  S398C3(); // tgen
};
//SIG(-1 S398C3) C1{ BC2{ BC3{ m Fi}} vd}


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

static void Test_S398C3()
{
  extern Class_Descriptor cd_S398C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S398C3, buf);
    S398C3 *dp, &lv = *(dp=new (buf) S398C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S398C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S398C3)");
    check_base_class_offset(lv, (S28C13_nt*)(S398C4*), ABISELECT(8,4), "S398C3");
    check_base_class_offset(lv, (S398C4*), ABISELECT(8,4), "S398C3");
    test_class_info(&lv, &cd_S398C3);
    dp->~S398C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS398C3(Test_S398C3, "S398C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN6S398C3C1Ev();
extern void _ZN6S398C3D1Ev();
Name_Map name_map_S398C3[] = {
  NSPAIR(_ZN6S398C3C1Ev),
  NSPAIR(_ZN6S398C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S398C4;
extern VTBL_ENTRY _ZTI6S398C4[];
static Base_Class bases_S398C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S398C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S398C3[];
extern void _ZN6S398C3D1Ev();
extern void _ZN6S398C3D0Ev();
static  VTBL_ENTRY vtc_S398C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S398C3[0]),
  (VTBL_ENTRY)&_ZN6S398C3D1Ev,
  (VTBL_ENTRY)&_ZN6S398C3D0Ev,
};
extern VTBL_ENTRY _ZTI6S398C3[];
extern  VTBL_ENTRY _ZTV6S398C3[];
Class_Descriptor cd_S398C3 = {  "S398C3", // class name
  bases_S398C3, 2,
  &(vtc_S398C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI6S398C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV6S398C3),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  S398C2  : S398C3 {
  virtual void  v2(); // _ZN6S398C22v2Ev
  ~S398C2(); // tgen
  S398C2(); // tgen
};
//SIG(-1 S398C2) C1{ BC2{ BC3{ BC4{ m Fi}} vd} v1}


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

static void Test_S398C2()
{
  extern Class_Descriptor cd_S398C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S398C2, buf);
    S398C2 *dp, &lv = *(dp=new (buf) S398C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S398C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S398C2)");
    check_base_class_offset(lv, (S28C13_nt*)(S398C4*)(S398C3*), ABISELECT(8,4), "S398C2");
    check_base_class_offset(lv, (S398C4*)(S398C3*), ABISELECT(8,4), "S398C2");
    check_base_class_offset(lv, (S398C3*), 0, "S398C2");
    test_class_info(&lv, &cd_S398C2);
    dp->~S398C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS398C2(Test_S398C2, "S398C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN6S398C2C1Ev();
extern void _ZN6S398C2D1Ev();
Name_Map name_map_S398C2[] = {
  NSPAIR(_ZN6S398C2C1Ev),
  NSPAIR(_ZN6S398C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S398C4;
extern VTBL_ENTRY _ZTI6S398C4[];
extern Class_Descriptor cd_S398C3;
extern VTBL_ENTRY _ZTI6S398C3[];
extern  VTBL_ENTRY _ZTV6S398C3[];
static Base_Class bases_S398C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S398C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S398C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S398C2[];
extern void _ZN6S398C2D1Ev();
extern void _ZN6S398C2D0Ev();
extern void _ZN6S398C22v2Ev();
static  VTBL_ENTRY vtc_S398C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S398C2[0]),
  (VTBL_ENTRY)&_ZN6S398C2D1Ev,
  (VTBL_ENTRY)&_ZN6S398C2D0Ev,
  (VTBL_ENTRY)&_ZN6S398C22v2Ev,
};
extern VTBL_ENTRY _ZTI6S398C2[];
extern  VTBL_ENTRY _ZTV6S398C2[];
Class_Descriptor cd_S398C2 = {  "S398C2", // class name
  bases_S398C2, 3,
  &(vtc_S398C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI6S398C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S398C2),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S398C1  : S398C2 {
  ::S17885C12 s398c1f0;
  virtual void  v1(); // _ZN6S398C12v1Ev
  ~S398C1(); // tgen
  S398C1(); // tgen
};
//SIG(1 S398C1) C1{ BC2{ BC3{ BC4{ BC5{ m Fi}} vd} v2} v1 FC6{ m Fp}}


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

static void Test_S398C1()
{
  extern Class_Descriptor cd_S398C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S398C1, buf);
    S398C1 *dp, &lv = *(dp=new (buf) S398C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S398C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S398C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S398C4*)(S398C3*)(S398C2*), ABISELECT(8,4), "S398C1");
    check_base_class_offset(lv, (S398C4*)(S398C3*)(S398C2*), ABISELECT(8,4), "S398C1");
    check_base_class_offset(lv, (S398C3*)(S398C2*), 0, "S398C1");
    check_base_class_offset(lv, (S398C2*), 0, "S398C1");
    check_field_offset(lv, s398c1f0, ABISELECT(16,8), "S398C1.s398c1f0");
    test_class_info(&lv, &cd_S398C1);
    dp->~S398C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS398C1(Test_S398C1, "S398C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN6S398C1C1Ev();
extern void _ZN6S398C1D1Ev();
Name_Map name_map_S398C1[] = {
  NSPAIR(_ZN6S398C1C1Ev),
  NSPAIR(_ZN6S398C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S398C4;
extern VTBL_ENTRY _ZTI6S398C4[];
extern Class_Descriptor cd_S398C3;
extern VTBL_ENTRY _ZTI6S398C3[];
extern  VTBL_ENTRY _ZTV6S398C3[];
extern Class_Descriptor cd_S398C2;
extern VTBL_ENTRY _ZTI6S398C2[];
extern  VTBL_ENTRY _ZTV6S398C2[];
static Base_Class bases_S398C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S398C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S398C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S398C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S398C1[];
extern void _ZN6S398C1D1Ev();
extern void _ZN6S398C1D0Ev();
extern void _ZN6S398C22v2Ev();
extern void _ZN6S398C12v1Ev();
static  VTBL_ENTRY vtc_S398C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S398C1[0]),
  (VTBL_ENTRY)&_ZN6S398C1D1Ev,
  (VTBL_ENTRY)&_ZN6S398C1D0Ev,
  (VTBL_ENTRY)&_ZN6S398C22v2Ev,
  (VTBL_ENTRY)&_ZN6S398C12v1Ev,
};
extern VTBL_ENTRY _ZTI6S398C1[];
extern  VTBL_ENTRY _ZTV6S398C1[];
Class_Descriptor cd_S398C1 = {  "S398C1", // class name
  bases_S398C1, 4,
  &(vtc_S398C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI6S398C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S398C1),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7440C4  : virtual S3461C5_nt , S2596C7_nt {
  virtual void  v1(); // _ZN7S7440C42v1Ev
  ~S7440C4(); // tgen
  S7440C4(); // tgen
};
//SIG(-1 S7440C4) C1{ VBC2{ m FL} BC3{ m} v1}


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

static void Test_S7440C4()
{
  extern Class_Descriptor cd_S7440C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7440C4, buf);
    S7440C4 *dp, &lv = *(dp=new (buf) S7440C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7440C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7440C4)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S7440C4");
    check_base_class_offset(lv, (S2596C7_nt*), 0, "S7440C4");
    test_class_info(&lv, &cd_S7440C4);
    dp->~S7440C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7440C4(Test_S7440C4, "S7440C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7440C4C1Ev();
extern void _ZN7S7440C4D1Ev();
Name_Map name_map_S7440C4[] = {
  NSPAIR(_ZN7S7440C4C1Ev),
  NSPAIR(_ZN7S7440C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S2596C7_nt;
extern VTBL_ENTRY _ZTI10S2596C7_nt[];
static Base_Class bases_S7440C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2596C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7440C4[];
extern void _ZN7S7440C42v1Ev();
static  VTBL_ENTRY vtc_S7440C4[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7440C4[0]),
  (VTBL_ENTRY)&_ZN7S7440C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S7440C4[];
static  VTT_ENTRY vtt_S7440C4[] = {
  {&(_ZTV7S7440C4[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7440C4[];
extern  VTBL_ENTRY _ZTV7S7440C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7440C4[];
Class_Descriptor cd_S7440C4 = {  "S7440C4", // class name
  bases_S7440C4, 2,
  &(vtc_S7440C4[0]), // expected_vtbl_contents
  &(vtt_S7440C4[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7440C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7440C4),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7440C4),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  S7440C2  : virtual S3461C5_nt , S7440C4 , S2596C7_nt {
  ~S7440C2(); // tgen
  S7440C2(); // tgen
};
//SIG(-1 S7440C2) C1{ VBC2{ m FL} BC3{ VBC2 BC4{ m} v1} BC4}


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

static void Test_S7440C2()
{
  extern Class_Descriptor cd_S7440C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7440C2, buf);
    S7440C2 *dp, &lv = *(dp=new (buf) S7440C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7440C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7440C2)");
    check_base_class_offset(lv, (S3461C5_nt*), ABISELECT(8,4), "S7440C2");
    check_base_class_offset(lv, (S3461C5_nt*)(S7440C4*), ABISELECT(8,4), "S7440C2");
    check_base_class_offset(lv, (S2596C7_nt*)(S7440C4*), 0, "S7440C2");
    check_base_class_offset(lv, (S7440C4*), 0, "S7440C2");
    /*is_ambiguous_... S7440C2::S2596C7_nt */ AMB_check_base_class_offset(lv, (S2596C7_nt*), ABISELECT(8,4), "S7440C2");
    test_class_info(&lv, &cd_S7440C2);
    dp->~S7440C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7440C2(Test_S7440C2, "S7440C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7440C2C1Ev();
extern void _ZN7S7440C2D1Ev();
Name_Map name_map_S7440C2[] = {
  NSPAIR(_ZN7S7440C2C1Ev),
  NSPAIR(_ZN7S7440C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S2596C7_nt;
extern VTBL_ENTRY _ZTI10S2596C7_nt[];
extern Class_Descriptor cd_S7440C4;
extern VTBL_ENTRY _ZTI7S7440C4[];
extern  VTBL_ENTRY _ZTV7S7440C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7440C4[];
extern Class_Descriptor cd_S2596C7_nt;
extern VTBL_ENTRY _ZTI10S2596C7_nt[];
static Base_Class bases_S7440C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2596C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7440C4,    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_S2596C7_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7440C2[];
extern void _ZN7S7440C42v1Ev();
static  VTBL_ENTRY vtc_S7440C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7440C2[0]),
  (VTBL_ENTRY)&_ZN7S7440C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S7440C2[];
extern void _ZN7S7440C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7440C4__7S7440C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7440C4[0]),
  (VTBL_ENTRY)&_ZN7S7440C42v1Ev,
};
static  VTT_ENTRY vtt_S7440C2[] = {
  {&(_ZTV7S7440C2[3]),  3,4},
  {&(_tg__ZTV7S7440C4__7S7440C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7440C2[];
extern  VTBL_ENTRY _ZTV7S7440C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7440C2[];
Class_Descriptor cd_S7440C2 = {  "S7440C2", // class name
  bases_S7440C2, 4,
  &(vtc_S7440C2[0]), // expected_vtbl_contents
  &(vtt_S7440C2[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7440C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7440C2),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7440C2),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  S7440C1  : S7440C2 , virtual S2596C7_nt {
  ~S7440C1(); // tgen
  S7440C1(); // tgen
};
//SIG(1 S7440C1) C1{ BC2{ VBC3{ m FL} BC4{ VBC3 BC5{ m} v1} BC5} VBC5}


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

static void Test_S7440C1()
{
  extern Class_Descriptor cd_S7440C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7440C1, buf);
    S7440C1 *dp, &lv = *(dp=new (buf) S7440C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7440C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7440C1)");
    check_base_class_offset(lv, (S3461C5_nt*)(S7440C2*), ABISELECT(16,8), "S7440C1");
    check_base_class_offset(lv, (S3461C5_nt*)(S7440C4*)(S7440C2*), ABISELECT(16,8), "S7440C1");
    check_base_class_offset(lv, (S2596C7_nt*)(S7440C4*)(S7440C2*), 0, "S7440C1");
    check_base_class_offset(lv, (S7440C4*)(S7440C2*), 0, "S7440C1");
    /*is_ambiguous_... S7440C2::S2596C7_nt */ AMB_check_base_class_offset(lv, (S2596C7_nt*)(S7440C2*), ABISELECT(8,4), "S7440C1");
    check_base_class_offset(lv, (S7440C2*), 0, "S7440C1");
    /*is_ambiguous_... S7440C1::S2596C7_nt */ AMB_check_base_class_offset(lv, (S2596C7_nt*), ABISELECT(24,16), "S7440C1");
    test_class_info(&lv, &cd_S7440C1);
    dp->~S7440C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7440C1(Test_S7440C1, "S7440C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S7440C1C1Ev();
extern void _ZN7S7440C1D1Ev();
Name_Map name_map_S7440C1[] = {
  NSPAIR(_ZN7S7440C1C1Ev),
  NSPAIR(_ZN7S7440C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3461C5_nt;
extern VTBL_ENTRY _ZTI10S3461C5_nt[];
extern Class_Descriptor cd_S2596C7_nt;
extern VTBL_ENTRY _ZTI10S2596C7_nt[];
extern Class_Descriptor cd_S7440C4;
extern VTBL_ENTRY _ZTI7S7440C4[];
extern  VTBL_ENTRY _ZTV7S7440C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7440C4[];
extern Class_Descriptor cd_S2596C7_nt;
extern VTBL_ENTRY _ZTI10S2596C7_nt[];
extern Class_Descriptor cd_S7440C2;
extern VTBL_ENTRY _ZTI7S7440C2[];
extern  VTBL_ENTRY _ZTV7S7440C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7440C2[];
extern Class_Descriptor cd_S2596C7_nt;
extern VTBL_ENTRY _ZTI10S2596C7_nt[];
static Base_Class bases_S7440C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3461C5_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
    2, //immediately_derived
  0, 1},
  {&cd_S2596C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7440C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2596C7_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7440C2,    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_S2596C7_nt,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7440C1[];
extern void _ZN7S7440C42v1Ev();
static  VTBL_ENTRY vtc_S7440C1[] = {
  ABISELECT(24,16),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7440C1[0]),
  (VTBL_ENTRY)&_ZN7S7440C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S7440C1[];
extern void _ZN7S7440C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7440C2__7S7440C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7440C2[0]),
  (VTBL_ENTRY)&_ZN7S7440C42v1Ev,
};
extern void _ZN7S7440C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7440C47S7440C2__7S7440C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7440C4[0]),
  (VTBL_ENTRY)&_ZN7S7440C42v1Ev,
};
static  VTT_ENTRY vtt_S7440C1[] = {
  {&(_ZTV7S7440C1[4]),  4,5},
  {&(_tg__ZTV7S7440C2__7S7440C1[3]),  3,4},
  {&(_tg__ZTV7S7440C47S7440C2__7S7440C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7440C1[];
extern  VTBL_ENTRY _ZTV7S7440C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7440C1[];
Class_Descriptor cd_S7440C1 = {  "S7440C1", // class name
  bases_S7440C1, 6,
  &(vtc_S7440C1[0]), // expected_vtbl_contents
  &(vtt_S7440C1[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S7440C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7440C1),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7440C1),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  S2694C2  : S28C13_nt {
};
//SIG(-1 S2694C2) C1{ BC2{ m Fi}}



static void Test_S2694C2()
{
  extern Class_Descriptor cd_S2694C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2694C2, buf);
    S2694C2 &lv = *(new (buf) S2694C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2694C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2694C2)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S2694C2");
    test_class_info(&lv, &cd_S2694C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2694C2(Test_S2694C2, "S2694C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S2694C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2694C2 = {  "S2694C2", // class name
  bases_S2694C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2694C1  : S2694C2 {
  int s2694c1f0[3];
  int s2694c1f1:3;
  int s2694c1f2:2;
  unsigned int s2694c1f3:1;
  unsigned int s2694c1f4:1;
};
//SIG(1 S2694C1) C1{ BC2{ BC3{ m Fi}} Fi[3] Fi:3 Fi:2 Fi:1 Fi:1}



static void Test_S2694C1()
{
  extern Class_Descriptor cd_S2694C1;
  void *lvp;
  {
    int buf[6];
    init_test(&cd_S2694C1, buf);
    S2694C1 &lv = *(new (buf) S2694C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 20, "sizeof(S2694C1)");
    check2(__alignof__(lv), 4, "__alignof__(S2694C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S2694C2*), 0, "S2694C1");
    check_base_class_offset(lv, (S2694C2*), 0, "S2694C1");
    check_field_offset(lv, s2694c1f0, 4, "S2694C1.s2694c1f0");
    set_bf_and_test(lv, s2694c1f1, 16, 0, 3, 1, "S2694C1");
    set_bf_and_test(lv, s2694c1f1, 16, 0, 3, hide_sll(1LL<<2), "S2694C1");
    set_bf_and_test(lv, s2694c1f2, 16, 3, 2, 1, "S2694C1");
    set_bf_and_test(lv, s2694c1f2, 16, 3, 2, hide_sll(1LL<<1), "S2694C1");
    set_bf_and_test(lv, s2694c1f3, 16, 5, 1, 1, "S2694C1");
    set_bf_and_test(lv, s2694c1f4, 16, 6, 1, 1, "S2694C1");
    test_class_info(&lv, &cd_S2694C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2694C1(Test_S2694C1, "S2694C1", 20);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S2694C2;
static Base_Class bases_S2694C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2694C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2694C1 = {  "S2694C1", // class name
  bases_S2694C1, 2,
  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  S1026C3  : S28C13_nt {
};
//SIG(-1 S1026C3) C1{ BC2{ m Fi}}



static void Test_S1026C3()
{
  extern Class_Descriptor cd_S1026C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1026C3, buf);
    S1026C3 &lv = *(new (buf) S1026C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1026C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1026C3)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S1026C3");
    test_class_info(&lv, &cd_S1026C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1026C3(Test_S1026C3, "S1026C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S1026C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1026C3[];
Class_Descriptor cd_S1026C3 = {  "S1026C3", // class name
  bases_S1026C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1026C3),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  S1026C2  : S1026C3 {
  int s1026c2f0;
  virtual  ~S1026C2(); // _ZN7S1026C2D1Ev
  virtual void  v2(); // _ZN7S1026C22v2Ev
  S1026C2(); // tgen
};
//SIG(-1 S1026C2) C1{ BC2{ BC3{ m Fi}} vd v1 Fi}


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

static void Test_S1026C2()
{
  extern Class_Descriptor cd_S1026C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1026C2, buf);
    S1026C2 *dp, &lv = *(dp=new (buf) S1026C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1026C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1026C2)");
    check_base_class_offset(lv, (S28C13_nt*)(S1026C3*), ABISELECT(8,4), "S1026C2");
    check_base_class_offset(lv, (S1026C3*), ABISELECT(8,4), "S1026C2");
    check_field_offset(lv, s1026c2f0, ABISELECT(12,8), "S1026C2.s1026c2f0");
    test_class_info(&lv, &cd_S1026C2);
    dp->~S1026C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1026C2(Test_S1026C2, "S1026C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S1026C2C1Ev();
extern void _ZN7S1026C2D1Ev();
Name_Map name_map_S1026C2[] = {
  NSPAIR(_ZN7S1026C2C1Ev),
  NSPAIR(_ZN7S1026C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S1026C3;
extern VTBL_ENTRY _ZTI7S1026C3[];
static Base_Class bases_S1026C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1026C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1026C2[];
extern void _ZN7S1026C2D1Ev();
extern void _ZN7S1026C2D0Ev();
extern void _ZN7S1026C22v2Ev();
static  VTBL_ENTRY vtc_S1026C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1026C2[0]),
  (VTBL_ENTRY)&_ZN7S1026C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1026C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1026C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S1026C2[];
extern  VTBL_ENTRY _ZTV7S1026C2[];
Class_Descriptor cd_S1026C2 = {  "S1026C2", // class name
  bases_S1026C2, 2,
  &(vtc_S1026C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S1026C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1026C2),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  S1026C1  : S1026C2 {
  __tsi64 s1026c1f0[4];
  virtual  ~S1026C1(); // _ZN7S1026C1D1Ev
  virtual void  v1(); // _ZN7S1026C12v1Ev
  S1026C1(); // tgen
};
//SIG(1 S1026C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v2 Fi} vd v1 FL[4]}


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

static void Test_S1026C1()
{
  extern Class_Descriptor cd_S1026C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S1026C1, buf);
    S1026C1 *dp, &lv = *(dp=new (buf) S1026C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S1026C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1026C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S1026C3*)(S1026C2*), ABISELECT(8,4), "S1026C1");
    check_base_class_offset(lv, (S1026C3*)(S1026C2*), ABISELECT(8,4), "S1026C1");
    check_base_class_offset(lv, (S1026C2*), 0, "S1026C1");
    check_field_offset(lv, s1026c1f0, ABISELECT(16,12), "S1026C1.s1026c1f0");
    test_class_info(&lv, &cd_S1026C1);
    dp->~S1026C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1026C1(Test_S1026C1, "S1026C1", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN7S1026C1C1Ev();
extern void _ZN7S1026C1D1Ev();
Name_Map name_map_S1026C1[] = {
  NSPAIR(_ZN7S1026C1C1Ev),
  NSPAIR(_ZN7S1026C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S1026C3;
extern VTBL_ENTRY _ZTI7S1026C3[];
extern Class_Descriptor cd_S1026C2;
extern VTBL_ENTRY _ZTI7S1026C2[];
extern  VTBL_ENTRY _ZTV7S1026C2[];
static Base_Class bases_S1026C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1026C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1026C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1026C1[];
extern void _ZN7S1026C1D1Ev();
extern void _ZN7S1026C1D0Ev();
extern void _ZN7S1026C22v2Ev();
extern void _ZN7S1026C12v1Ev();
static  VTBL_ENTRY vtc_S1026C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1026C1[0]),
  (VTBL_ENTRY)&_ZN7S1026C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1026C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1026C22v2Ev,
  (VTBL_ENTRY)&_ZN7S1026C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S1026C1[];
extern  VTBL_ENTRY _ZTV7S1026C1[];
Class_Descriptor cd_S1026C1 = {  "S1026C1", // class name
  bases_S1026C1, 3,
  &(vtc_S1026C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI7S1026C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1026C1),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  S1025C3  : S28C13_nt {
};
//SIG(-1 S1025C3) C1{ BC2{ m Fi}}



static void Test_S1025C3()
{
  extern Class_Descriptor cd_S1025C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1025C3, buf);
    S1025C3 &lv = *(new (buf) S1025C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1025C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1025C3)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S1025C3");
    test_class_info(&lv, &cd_S1025C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1025C3(Test_S1025C3, "S1025C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S1025C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1025C3[];
Class_Descriptor cd_S1025C3 = {  "S1025C3", // class name
  bases_S1025C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1025C3),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  S1025C2  : S1025C3 {
  int s1025c2f0;
  virtual  ~S1025C2(); // _ZN7S1025C2D1Ev
  virtual void  v2(); // _ZN7S1025C22v2Ev
  S1025C2(); // tgen
};
//SIG(-1 S1025C2) C1{ BC2{ BC3{ m Fi}} vd v1 Fi}


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

static void Test_S1025C2()
{
  extern Class_Descriptor cd_S1025C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1025C2, buf);
    S1025C2 *dp, &lv = *(dp=new (buf) S1025C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1025C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1025C2)");
    check_base_class_offset(lv, (S28C13_nt*)(S1025C3*), ABISELECT(8,4), "S1025C2");
    check_base_class_offset(lv, (S1025C3*), ABISELECT(8,4), "S1025C2");
    check_field_offset(lv, s1025c2f0, ABISELECT(12,8), "S1025C2.s1025c2f0");
    test_class_info(&lv, &cd_S1025C2);
    dp->~S1025C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1025C2(Test_S1025C2, "S1025C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S1025C2C1Ev();
extern void _ZN7S1025C2D1Ev();
Name_Map name_map_S1025C2[] = {
  NSPAIR(_ZN7S1025C2C1Ev),
  NSPAIR(_ZN7S1025C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S1025C3;
extern VTBL_ENTRY _ZTI7S1025C3[];
static Base_Class bases_S1025C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1025C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1025C2[];
extern void _ZN7S1025C2D1Ev();
extern void _ZN7S1025C2D0Ev();
extern void _ZN7S1025C22v2Ev();
static  VTBL_ENTRY vtc_S1025C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1025C2[0]),
  (VTBL_ENTRY)&_ZN7S1025C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1025C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1025C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S1025C2[];
extern  VTBL_ENTRY _ZTV7S1025C2[];
Class_Descriptor cd_S1025C2 = {  "S1025C2", // class name
  bases_S1025C2, 2,
  &(vtc_S1025C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S1025C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1025C2),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  S1025C1  : S1025C2 {
  int s1025c1f0;
  char s1025c1f1;
  virtual  ~S1025C1(); // _ZN7S1025C1D1Ev
  virtual void  v1(); // _ZN7S1025C12v1Ev
  S1025C1(); // tgen
};
//SIG(1 S1025C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v2 Fi} vd v1 Fi Fc}


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

static void Test_S1025C1()
{
  extern Class_Descriptor cd_S1025C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S1025C1, buf);
    S1025C1 *dp, &lv = *(dp=new (buf) S1025C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S1025C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1025C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S1025C3*)(S1025C2*), ABISELECT(8,4), "S1025C1");
    check_base_class_offset(lv, (S1025C3*)(S1025C2*), ABISELECT(8,4), "S1025C1");
    check_base_class_offset(lv, (S1025C2*), 0, "S1025C1");
    check_field_offset(lv, s1025c1f0, ABISELECT(16,12), "S1025C1.s1025c1f0");
    check_field_offset(lv, s1025c1f1, ABISELECT(20,16), "S1025C1.s1025c1f1");
    test_class_info(&lv, &cd_S1025C1);
    dp->~S1025C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1025C1(Test_S1025C1, "S1025C1", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN7S1025C1C1Ev();
extern void _ZN7S1025C1D1Ev();
Name_Map name_map_S1025C1[] = {
  NSPAIR(_ZN7S1025C1C1Ev),
  NSPAIR(_ZN7S1025C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S1025C3;
extern VTBL_ENTRY _ZTI7S1025C3[];
extern Class_Descriptor cd_S1025C2;
extern VTBL_ENTRY _ZTI7S1025C2[];
extern  VTBL_ENTRY _ZTV7S1025C2[];
static Base_Class bases_S1025C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1025C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1025C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1025C1[];
extern void _ZN7S1025C1D1Ev();
extern void _ZN7S1025C1D0Ev();
extern void _ZN7S1025C22v2Ev();
extern void _ZN7S1025C12v1Ev();
static  VTBL_ENTRY vtc_S1025C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1025C1[0]),
  (VTBL_ENTRY)&_ZN7S1025C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1025C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1025C22v2Ev,
  (VTBL_ENTRY)&_ZN7S1025C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S1025C1[];
extern  VTBL_ENTRY _ZTV7S1025C1[];
Class_Descriptor cd_S1025C1 = {  "S1025C1", // class name
  bases_S1025C1, 3,
  &(vtc_S1025C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI7S1025C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1025C1),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  S2656C2  : S28C13_nt {
};
//SIG(-1 S2656C2) C1{ BC2{ m Fi}}



static void Test_S2656C2()
{
  extern Class_Descriptor cd_S2656C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2656C2, buf);
    S2656C2 &lv = *(new (buf) S2656C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2656C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2656C2)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S2656C2");
    test_class_info(&lv, &cd_S2656C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2656C2(Test_S2656C2, "S2656C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S2656C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2656C2 = {  "S2656C2", // class name
  bases_S2656C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2656C1  : S2656C2 {
  ::S9697C10_nt s2656c1f0;
  int s2656c1f1;
  ::S17885C12 s2656c1f2;
};
//SIG(1 S2656C1) C1{ BC2{ BC3{ m Fi}} FC4{ m Fi[2]} Fi FC5{ m Fp}}



static void Test_S2656C1()
{
  extern Class_Descriptor cd_S2656C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S2656C1, buf);
    S2656C1 &lv = *(new (buf) S2656C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S2656C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2656C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S2656C2*), 0, "S2656C1");
    check_base_class_offset(lv, (S2656C2*), 0, "S2656C1");
    check_field_offset(lv, s2656c1f0, 4, "S2656C1.s2656c1f0");
    check_field_offset(lv, s2656c1f1, 12, "S2656C1.s2656c1f1");
    check_field_offset(lv, s2656c1f2, 16, "S2656C1.s2656c1f2");
    test_class_info(&lv, &cd_S2656C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2656C1(Test_S2656C1, "S2656C1", ABISELECT(24,20));

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S2656C2;
static Base_Class bases_S2656C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2656C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2656C1 = {  "S2656C1", // class name
  bases_S2656C1, 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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2597C2  : S28C13_nt {
};
//SIG(-1 S2597C2) C1{ BC2{ m Fi}}



static void Test_S2597C2()
{
  extern Class_Descriptor cd_S2597C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2597C2, buf);
    S2597C2 &lv = *(new (buf) S2597C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2597C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2597C2)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S2597C2");
    test_class_info(&lv, &cd_S2597C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2597C2(Test_S2597C2, "S2597C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S2597C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2597C2 = {  "S2597C2", // class name
  bases_S2597C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2597C4  : S2596C7_nt {
};
//SIG(-1 S2597C4) C1{ BC2{ m}}



static void Test_S2597C4()
{
  extern Class_Descriptor cd_S2597C4;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S2597C4, buf);
    S2597C4 &lv = *(new (buf) S2597C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S2597C4)");
    check2(__alignof__(lv), 1, "__alignof__(S2597C4)");
    check_base_class_offset(lv, (S2596C7_nt*), 0, "S2597C4");
    test_class_info(&lv, &cd_S2597C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2597C4(Test_S2597C4, "S2597C4", 1);

#else // __cplusplus

extern Class_Descriptor cd_S2596C7_nt;
extern VTBL_ENTRY _ZTI10S2596C7_nt[];
static Base_Class bases_S2597C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2596C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2597C4 = {  "S2597C4", // class name
  bases_S2597C4, 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  S2597C1  : S2597C2 , S2597C4 {
  ::S731C17_nt s2597c1f0;
  ::S28C52_nt s2597c1f1;
};
//SIG(1 S2597C1) C1{ BC2{ BC3{ m Fi}} BC4{ BC5{ m}} FC6{ m} FC7{ m}}



static void Test_S2597C1()
{
  extern Class_Descriptor cd_S2597C1;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S2597C1, buf);
    S2597C1 &lv = *(new (buf) S2597C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S2597C1)");
    check2(__alignof__(lv), 4, "__alignof__(S2597C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S2597C2*), 0, "S2597C1");
    check_base_class_offset(lv, (S2597C2*), 0, "S2597C1");
    check_base_class_offset(lv, (S2596C7_nt*)(S2597C4*), 0, "S2597C1");
    check_base_class_offset(lv, (S2597C4*), 0, "S2597C1");
    check_field_offset(lv, s2597c1f0, 4, "S2597C1.s2597c1f0");
    check_field_offset(lv, s2597c1f1, 5, "S2597C1.s2597c1f1");
    test_class_info(&lv, &cd_S2597C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2597C1(Test_S2597C1, "S2597C1", 8);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S2597C2;
extern Class_Descriptor cd_S2596C7_nt;
extern VTBL_ENTRY _ZTI10S2596C7_nt[];
extern Class_Descriptor cd_S2597C4;
static Base_Class bases_S2597C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2597C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2596C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S2597C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2597C1 = {  "S2597C1", // class name
  bases_S2597C1, 4,
  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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2654C2  : S28C13_nt {
};
//SIG(-1 S2654C2) C1{ BC2{ m Fi}}



static void Test_S2654C2()
{
  extern Class_Descriptor cd_S2654C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2654C2, buf);
    S2654C2 &lv = *(new (buf) S2654C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2654C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2654C2)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S2654C2");
    test_class_info(&lv, &cd_S2654C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2654C2(Test_S2654C2, "S2654C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S2654C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2654C2 = {  "S2654C2", // class name
  bases_S2654C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2654C1  : S2654C2 {
  ::S9697C10_nt s2654c1f0;
  ::S17885C12 s2654c1f1;
};
//SIG(1 S2654C1) C1{ BC2{ BC3{ m Fi}} FC4{ m Fi[2]} FC5{ m Fp}}



static void Test_S2654C1()
{
  extern Class_Descriptor cd_S2654C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S2654C1, buf);
    S2654C1 &lv = *(new (buf) S2654C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S2654C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2654C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S2654C2*), 0, "S2654C1");
    check_base_class_offset(lv, (S2654C2*), 0, "S2654C1");
    check_field_offset(lv, s2654c1f0, 4, "S2654C1.s2654c1f0");
    check_field_offset(lv, s2654c1f1, ABISELECT(16,12), "S2654C1.s2654c1f1");
    test_class_info(&lv, &cd_S2654C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2654C1(Test_S2654C1, "S2654C1", ABISELECT(24,16));

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S2654C2;
static Base_Class bases_S2654C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2654C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2654C1 = {  "S2654C1", // class name
  bases_S2654C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(24,16), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2733C2  : S28C13_nt {
};
//SIG(-1 S2733C2) C1{ BC2{ m Fi}}



static void Test_S2733C2()
{
  extern Class_Descriptor cd_S2733C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2733C2, buf);
    S2733C2 &lv = *(new (buf) S2733C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2733C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2733C2)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S2733C2");
    test_class_info(&lv, &cd_S2733C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2733C2(Test_S2733C2, "S2733C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S2733C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2733C2[];
Class_Descriptor cd_S2733C2 = {  "S2733C2", // class name
  bases_S2733C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S2733C2),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  S2733C1  : S2733C2 {
  int s2733c1f0;
  virtual  ~S2733C1(); // _ZN7S2733C1D1Ev
  virtual void  v1(); // _ZN7S2733C12v1Ev
  virtual void  v2(); // _ZN7S2733C12v2Ev
  virtual void  v3(); // _ZN7S2733C12v3Ev
  virtual void  v4(); // _ZN7S2733C12v4Ev
  virtual void  v5(); // _ZN7S2733C12v5Ev
  S2733C1(); // tgen
};
//SIG(1 S2733C1) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4 v5 Fi}


 S2733C1 ::~S2733C1(){ note_dtor("S2733C1", this);}
void  S2733C1 ::v1(){vfunc_called(this, "_ZN7S2733C12v1Ev");}
void  S2733C1 ::v2(){vfunc_called(this, "_ZN7S2733C12v2Ev");}
void  S2733C1 ::v3(){vfunc_called(this, "_ZN7S2733C12v3Ev");}
void  S2733C1 ::v4(){vfunc_called(this, "_ZN7S2733C12v4Ev");}
void  S2733C1 ::v5(){vfunc_called(this, "_ZN7S2733C12v5Ev");}
S2733C1 ::S2733C1(){ note_ctor("S2733C1", this);} // tgen

static void Test_S2733C1()
{
  extern Class_Descriptor cd_S2733C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S2733C1, buf);
    S2733C1 *dp, &lv = *(dp=new (buf) S2733C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2733C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2733C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S2733C2*), ABISELECT(8,4), "S2733C1");
    check_base_class_offset(lv, (S2733C2*), ABISELECT(8,4), "S2733C1");
    check_field_offset(lv, s2733c1f0, ABISELECT(12,8), "S2733C1.s2733c1f0");
    test_class_info(&lv, &cd_S2733C1);
    dp->~S2733C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2733C1(Test_S2733C1, "S2733C1", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S2733C1C1Ev();
extern void _ZN7S2733C1D1Ev();
Name_Map name_map_S2733C1[] = {
  NSPAIR(_ZN7S2733C1C1Ev),
  NSPAIR(_ZN7S2733C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S2733C2;
extern VTBL_ENTRY _ZTI7S2733C2[];
static Base_Class bases_S2733C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2733C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2733C1[];
extern void _ZN7S2733C1D1Ev();
extern void _ZN7S2733C1D0Ev();
extern void _ZN7S2733C12v1Ev();
extern void _ZN7S2733C12v2Ev();
extern void _ZN7S2733C12v3Ev();
extern void _ZN7S2733C12v4Ev();
extern void _ZN7S2733C12v5Ev();
static  VTBL_ENTRY vtc_S2733C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2733C1[0]),
  (VTBL_ENTRY)&_ZN7S2733C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2733C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2733C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2733C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2733C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2733C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2733C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S2733C1[];
extern  VTBL_ENTRY _ZTV7S2733C1[];
Class_Descriptor cd_S2733C1 = {  "S2733C1", // class name
  bases_S2733C1, 2,
  &(vtc_S2733C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S2733C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S2733C1),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2731C2  : S28C13_nt {
};
//SIG(-1 S2731C2) C1{ BC2{ m Fi}}



static void Test_S2731C2()
{
  extern Class_Descriptor cd_S2731C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2731C2, buf);
    S2731C2 &lv = *(new (buf) S2731C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2731C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2731C2)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S2731C2");
    test_class_info(&lv, &cd_S2731C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2731C2(Test_S2731C2, "S2731C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S2731C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2731C2[];
Class_Descriptor cd_S2731C2 = {  "S2731C2", // class name
  bases_S2731C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S2731C2),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  S2731C1  : S2731C2 {
  int s2731c1f0;
  char s2731c1f1;
  virtual  ~S2731C1(); // _ZN7S2731C1D1Ev
  virtual void  v1(); // _ZN7S2731C12v1Ev
  virtual void  v2(); // _ZN7S2731C12v2Ev
  virtual void  v3(); // _ZN7S2731C12v3Ev
  virtual void  v4(); // _ZN7S2731C12v4Ev
  S2731C1(); // tgen
};
//SIG(1 S2731C1) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4 Fi Fc}


 S2731C1 ::~S2731C1(){ note_dtor("S2731C1", this);}
void  S2731C1 ::v1(){vfunc_called(this, "_ZN7S2731C12v1Ev");}
void  S2731C1 ::v2(){vfunc_called(this, "_ZN7S2731C12v2Ev");}
void  S2731C1 ::v3(){vfunc_called(this, "_ZN7S2731C12v3Ev");}
void  S2731C1 ::v4(){vfunc_called(this, "_ZN7S2731C12v4Ev");}
S2731C1 ::S2731C1(){ note_ctor("S2731C1", this);} // tgen

static void Test_S2731C1()
{
  extern Class_Descriptor cd_S2731C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S2731C1, buf);
    S2731C1 *dp, &lv = *(dp=new (buf) S2731C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S2731C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2731C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S2731C2*), ABISELECT(8,4), "S2731C1");
    check_base_class_offset(lv, (S2731C2*), ABISELECT(8,4), "S2731C1");
    check_field_offset(lv, s2731c1f0, ABISELECT(12,8), "S2731C1.s2731c1f0");
    check_field_offset(lv, s2731c1f1, ABISELECT(16,12), "S2731C1.s2731c1f1");
    test_class_info(&lv, &cd_S2731C1);
    dp->~S2731C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2731C1(Test_S2731C1, "S2731C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S2731C1C1Ev();
extern void _ZN7S2731C1D1Ev();
Name_Map name_map_S2731C1[] = {
  NSPAIR(_ZN7S2731C1C1Ev),
  NSPAIR(_ZN7S2731C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S2731C2;
extern VTBL_ENTRY _ZTI7S2731C2[];
static Base_Class bases_S2731C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2731C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2731C1[];
extern void _ZN7S2731C1D1Ev();
extern void _ZN7S2731C1D0Ev();
extern void _ZN7S2731C12v1Ev();
extern void _ZN7S2731C12v2Ev();
extern void _ZN7S2731C12v3Ev();
extern void _ZN7S2731C12v4Ev();
static  VTBL_ENTRY vtc_S2731C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2731C1[0]),
  (VTBL_ENTRY)&_ZN7S2731C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2731C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2731C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2731C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2731C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2731C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S2731C1[];
extern  VTBL_ENTRY _ZTV7S2731C1[];
Class_Descriptor cd_S2731C1 = {  "S2731C1", // class name
  bases_S2731C1, 2,
  &(vtc_S2731C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S2731C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S2731C1),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  S6422C2  {
  void *s6422c2f0;
  char s6422c2f1;
  __tsi64 s6422c2f2[2];
  void *s6422c2f3[3];
  int s6422c2f4;
  virtual  ~S6422C2(); // _ZN7S6422C2D1Ev
  virtual void  v1(); // _ZN7S6422C22v1Ev
  S6422C2(); // tgen
};
//SIG(-1 S6422C2) C1{ vd v1 Fp Fc FL[2] Fp[3] Fi}


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

static void Test_S6422C2()
{
  extern Class_Descriptor cd_S6422C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S6422C2, buf);
    S6422C2 *dp, &lv = *(dp=new (buf) S6422C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S6422C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6422C2)");
    check_field_offset(lv, s6422c2f0, ABISELECT(8,4), "S6422C2.s6422c2f0");
    check_field_offset(lv, s6422c2f1, ABISELECT(16,8), "S6422C2.s6422c2f1");
    check_field_offset(lv, s6422c2f2, ABISELECT(24,12), "S6422C2.s6422c2f2");
    check_field_offset(lv, s6422c2f3, ABISELECT(40,28), "S6422C2.s6422c2f3");
    check_field_offset(lv, s6422c2f4, ABISELECT(64,40), "S6422C2.s6422c2f4");
    test_class_info(&lv, &cd_S6422C2);
    dp->~S6422C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6422C2(Test_S6422C2, "S6422C2", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S6422C2C1Ev();
extern void _ZN7S6422C2D1Ev();
Name_Map name_map_S6422C2[] = {
  NSPAIR(_ZN7S6422C2C1Ev),
  NSPAIR(_ZN7S6422C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6422C2[];
extern void _ZN7S6422C2D1Ev();
extern void _ZN7S6422C2D0Ev();
extern void _ZN7S6422C22v1Ev();
static  VTBL_ENTRY vtc_S6422C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6422C2[0]),
  (VTBL_ENTRY)&_ZN7S6422C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6422C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6422C22v1Ev,
};
extern VTBL_ENTRY _ZTI7S6422C2[];
extern  VTBL_ENTRY _ZTV7S6422C2[];
Class_Descriptor cd_S6422C2 = {  "S6422C2", // class name
  0,0,//no base classes
  &(vtc_S6422C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S6422C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6422C2),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  S6422C1  : S6422C2 {
  short s6422c1f0;
  ~S6422C1(); // tgen
  S6422C1(); // tgen
};
//SIG(1 S6422C1) C1{ BC2{ vd v1 Fp Fc FL[2] Fp[3] Fi} Fs}


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

static void Test_S6422C1()
{
  extern Class_Descriptor cd_S6422C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S6422C1, buf);
    S6422C1 *dp, &lv = *(dp=new (buf) S6422C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S6422C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6422C1)");
    check_base_class_offset(lv, (S6422C2*), 0, "S6422C1");
    check_field_offset(lv, s6422c1f0, ABISELECT(68,44), "S6422C1.s6422c1f0");
    test_class_info(&lv, &cd_S6422C1);
    dp->~S6422C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6422C1(Test_S6422C1, "S6422C1", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN7S6422C1C1Ev();
extern void _ZN7S6422C1D1Ev();
Name_Map name_map_S6422C1[] = {
  NSPAIR(_ZN7S6422C1C1Ev),
  NSPAIR(_ZN7S6422C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6422C2;
extern VTBL_ENTRY _ZTI7S6422C2[];
extern  VTBL_ENTRY _ZTV7S6422C2[];
static Base_Class bases_S6422C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6422C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6422C1[];
extern void _ZN7S6422C1D1Ev();
extern void _ZN7S6422C1D0Ev();
extern void _ZN7S6422C22v1Ev();
static  VTBL_ENTRY vtc_S6422C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6422C1[0]),
  (VTBL_ENTRY)&_ZN7S6422C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6422C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6422C22v1Ev,
};
extern VTBL_ENTRY _ZTI7S6422C1[];
extern  VTBL_ENTRY _ZTV7S6422C1[];
Class_Descriptor cd_S6422C1 = {  "S6422C1", // class name
  bases_S6422C1, 1,
  &(vtc_S6422C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI7S6422C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6422C1),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10486C1  {
  char s10486c1f0;
  int s10486c1f1[8];
  ::S16429C4 s10486c1f2;
};
//SIG(1 S10486C1) C1{ Fc Fi[8] FC2{ m Fc[2] Fs Fc[1024]}}



static void Test_S10486C1()
{
  {
    init_simple_test("S10486C1");
    S10486C1 lv;
    check2(sizeof(lv), 1064, "sizeof(S10486C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10486C1)");
    check_field_offset(lv, s10486c1f0, 0, "S10486C1.s10486c1f0");
    check_field_offset(lv, s10486c1f1, 4, "S10486C1.s10486c1f1");
    check_field_offset(lv, s10486c1f2, 36, "S10486C1.s10486c1f2");
  }
}
static Arrange_To_Call_Me vS10486C1(Test_S10486C1, "S10486C1", 1064);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1027C3  : S28C13_nt {
};
//SIG(-1 S1027C3) C1{ BC2{ m Fi}}



static void Test_S1027C3()
{
  extern Class_Descriptor cd_S1027C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1027C3, buf);
    S1027C3 &lv = *(new (buf) S1027C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1027C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1027C3)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S1027C3");
    test_class_info(&lv, &cd_S1027C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1027C3(Test_S1027C3, "S1027C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S1027C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1027C3[];
Class_Descriptor cd_S1027C3 = {  "S1027C3", // class name
  bases_S1027C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1027C3),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  S1027C2  : S1027C3 {
  int s1027c2f0;
  virtual  ~S1027C2(); // _ZN7S1027C2D1Ev
  virtual void  v2(); // _ZN7S1027C22v2Ev
  S1027C2(); // tgen
};
//SIG(-1 S1027C2) C1{ BC2{ BC3{ m Fi}} vd v1 Fi}


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

static void Test_S1027C2()
{
  extern Class_Descriptor cd_S1027C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1027C2, buf);
    S1027C2 *dp, &lv = *(dp=new (buf) S1027C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1027C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1027C2)");
    check_base_class_offset(lv, (S28C13_nt*)(S1027C3*), ABISELECT(8,4), "S1027C2");
    check_base_class_offset(lv, (S1027C3*), ABISELECT(8,4), "S1027C2");
    check_field_offset(lv, s1027c2f0, ABISELECT(12,8), "S1027C2.s1027c2f0");
    test_class_info(&lv, &cd_S1027C2);
    dp->~S1027C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1027C2(Test_S1027C2, "S1027C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S1027C2C1Ev();
extern void _ZN7S1027C2D1Ev();
Name_Map name_map_S1027C2[] = {
  NSPAIR(_ZN7S1027C2C1Ev),
  NSPAIR(_ZN7S1027C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S1027C3;
extern VTBL_ENTRY _ZTI7S1027C3[];
static Base_Class bases_S1027C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1027C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1027C2[];
extern void _ZN7S1027C2D1Ev();
extern void _ZN7S1027C2D0Ev();
extern void _ZN7S1027C22v2Ev();
static  VTBL_ENTRY vtc_S1027C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1027C2[0]),
  (VTBL_ENTRY)&_ZN7S1027C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1027C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1027C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S1027C2[];
extern  VTBL_ENTRY _ZTV7S1027C2[];
Class_Descriptor cd_S1027C2 = {  "S1027C2", // class name
  bases_S1027C2, 2,
  &(vtc_S1027C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S1027C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1027C2),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  S1027C1  : S1027C2 {
  virtual  ~S1027C1(); // _ZN7S1027C1D1Ev
  virtual void  v1(); // _ZN7S1027C12v1Ev
  S1027C1(); // tgen
};
//SIG(1 S1027C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v2 Fi} vd v1}


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

static void Test_S1027C1()
{
  extern Class_Descriptor cd_S1027C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1027C1, buf);
    S1027C1 *dp, &lv = *(dp=new (buf) S1027C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1027C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1027C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S1027C3*)(S1027C2*), ABISELECT(8,4), "S1027C1");
    check_base_class_offset(lv, (S1027C3*)(S1027C2*), ABISELECT(8,4), "S1027C1");
    check_base_class_offset(lv, (S1027C2*), 0, "S1027C1");
    test_class_info(&lv, &cd_S1027C1);
    dp->~S1027C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1027C1(Test_S1027C1, "S1027C1", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S1027C1C1Ev();
extern void _ZN7S1027C1D1Ev();
Name_Map name_map_S1027C1[] = {
  NSPAIR(_ZN7S1027C1C1Ev),
  NSPAIR(_ZN7S1027C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S1027C3;
extern VTBL_ENTRY _ZTI7S1027C3[];
extern Class_Descriptor cd_S1027C2;
extern VTBL_ENTRY _ZTI7S1027C2[];
extern  VTBL_ENTRY _ZTV7S1027C2[];
static Base_Class bases_S1027C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1027C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1027C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1027C1[];
extern void _ZN7S1027C1D1Ev();
extern void _ZN7S1027C1D0Ev();
extern void _ZN7S1027C22v2Ev();
extern void _ZN7S1027C12v1Ev();
static  VTBL_ENTRY vtc_S1027C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1027C1[0]),
  (VTBL_ENTRY)&_ZN7S1027C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1027C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1027C22v2Ev,
  (VTBL_ENTRY)&_ZN7S1027C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S1027C1[];
extern  VTBL_ENTRY _ZTV7S1027C1[];
Class_Descriptor cd_S1027C1 = {  "S1027C1", // class name
  bases_S1027C1, 3,
  &(vtc_S1027C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S1027C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1027C1),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  S1016C3  : S28C13_nt {
};
//SIG(-1 S1016C3) C1{ BC2{ m Fi}}



static void Test_S1016C3()
{
  extern Class_Descriptor cd_S1016C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1016C3, buf);
    S1016C3 &lv = *(new (buf) S1016C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1016C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1016C3)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S1016C3");
    test_class_info(&lv, &cd_S1016C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1016C3(Test_S1016C3, "S1016C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S1016C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1016C3[];
Class_Descriptor cd_S1016C3 = {  "S1016C3", // class name
  bases_S1016C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1016C3),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  S1016C2  : S1016C3 {
  void *s1016c2f0;
  __tsi64 s1016c2f1;
  virtual  ~S1016C2(); // _ZN7S1016C2D1Ev
  S1016C2(); // tgen
};
//SIG(-1 S1016C2) C1{ BC2{ BC3{ m Fi}} vd Fp FL}


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

static void Test_S1016C2()
{
  extern Class_Descriptor cd_S1016C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S1016C2, buf);
    S1016C2 *dp, &lv = *(dp=new (buf) S1016C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S1016C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1016C2)");
    check_base_class_offset(lv, (S28C13_nt*)(S1016C3*), ABISELECT(8,4), "S1016C2");
    check_base_class_offset(lv, (S1016C3*), ABISELECT(8,4), "S1016C2");
    check_field_offset(lv, s1016c2f0, ABISELECT(16,8), "S1016C2.s1016c2f0");
    check_field_offset(lv, s1016c2f1, ABISELECT(24,12), "S1016C2.s1016c2f1");
    test_class_info(&lv, &cd_S1016C2);
    dp->~S1016C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1016C2(Test_S1016C2, "S1016C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S1016C2C1Ev();
extern void _ZN7S1016C2D1Ev();
Name_Map name_map_S1016C2[] = {
  NSPAIR(_ZN7S1016C2C1Ev),
  NSPAIR(_ZN7S1016C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S1016C3;
extern VTBL_ENTRY _ZTI7S1016C3[];
static Base_Class bases_S1016C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1016C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1016C2[];
extern void _ZN7S1016C2D1Ev();
extern void _ZN7S1016C2D0Ev();
static  VTBL_ENTRY vtc_S1016C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1016C2[0]),
  (VTBL_ENTRY)&_ZN7S1016C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1016C2D0Ev,
};
extern VTBL_ENTRY _ZTI7S1016C2[];
extern  VTBL_ENTRY _ZTV7S1016C2[];
Class_Descriptor cd_S1016C2 = {  "S1016C2", // class name
  bases_S1016C2, 2,
  &(vtc_S1016C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S1016C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1016C2),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  S1016C1  : S1016C2 {
  void *s1016c1f0;
  virtual  ~S1016C1(); // _ZN7S1016C1D1Ev
  S1016C1(); // tgen
};
//SIG(1 S1016C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd Fp FL} vd Fp}


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

static void Test_S1016C1()
{
  extern Class_Descriptor cd_S1016C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S1016C1, buf);
    S1016C1 *dp, &lv = *(dp=new (buf) S1016C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S1016C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1016C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S1016C3*)(S1016C2*), ABISELECT(8,4), "S1016C1");
    check_base_class_offset(lv, (S1016C3*)(S1016C2*), ABISELECT(8,4), "S1016C1");
    check_base_class_offset(lv, (S1016C2*), 0, "S1016C1");
    check_field_offset(lv, s1016c1f0, ABISELECT(32,20), "S1016C1.s1016c1f0");
    test_class_info(&lv, &cd_S1016C1);
    dp->~S1016C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1016C1(Test_S1016C1, "S1016C1", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S1016C1C1Ev();
extern void _ZN7S1016C1D1Ev();
Name_Map name_map_S1016C1[] = {
  NSPAIR(_ZN7S1016C1C1Ev),
  NSPAIR(_ZN7S1016C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S1016C3;
extern VTBL_ENTRY _ZTI7S1016C3[];
extern Class_Descriptor cd_S1016C2;
extern VTBL_ENTRY _ZTI7S1016C2[];
extern  VTBL_ENTRY _ZTV7S1016C2[];
static Base_Class bases_S1016C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1016C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1016C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1016C1[];
extern void _ZN7S1016C1D1Ev();
extern void _ZN7S1016C1D0Ev();
static  VTBL_ENTRY vtc_S1016C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1016C1[0]),
  (VTBL_ENTRY)&_ZN7S1016C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1016C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S1016C1[];
extern  VTBL_ENTRY _ZTV7S1016C1[];
Class_Descriptor cd_S1016C1 = {  "S1016C1", // class name
  bases_S1016C1, 3,
  &(vtc_S1016C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S1016C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1016C1),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  S2682C2  : S28C13_nt {
};
//SIG(-1 S2682C2) C1{ BC2{ m Fi}}



static void Test_S2682C2()
{
  extern Class_Descriptor cd_S2682C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2682C2, buf);
    S2682C2 &lv = *(new (buf) S2682C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2682C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2682C2)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S2682C2");
    test_class_info(&lv, &cd_S2682C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2682C2(Test_S2682C2, "S2682C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S2682C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2682C2 = {  "S2682C2", // class name
  bases_S2682C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2682C1  : S2682C2 {
  int s2682c1f0;
  void *s2682c1f1;
  int s2682c1f2;
  ::S17885C12 s2682c1f3;
};
//SIG(1 S2682C1) C1{ BC2{ BC3{ m Fi}} Fi Fp Fi FC4{ m Fp}}



static void Test_S2682C1()
{
  extern Class_Descriptor cd_S2682C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S2682C1, buf);
    S2682C1 &lv = *(new (buf) S2682C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S2682C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2682C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S2682C2*), 0, "S2682C1");
    check_base_class_offset(lv, (S2682C2*), 0, "S2682C1");
    check_field_offset(lv, s2682c1f0, 4, "S2682C1.s2682c1f0");
    check_field_offset(lv, s2682c1f1, 8, "S2682C1.s2682c1f1");
    check_field_offset(lv, s2682c1f2, ABISELECT(16,12), "S2682C1.s2682c1f2");
    check_field_offset(lv, s2682c1f3, ABISELECT(24,16), "S2682C1.s2682c1f3");
    test_class_info(&lv, &cd_S2682C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2682C1(Test_S2682C1, "S2682C1", ABISELECT(32,20));

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S2682C2;
static Base_Class bases_S2682C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2682C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2682C1 = {  "S2682C1", // class name
  bases_S2682C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(32,20), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2666C2  : S28C13_nt {
};
//SIG(-1 S2666C2) C1{ BC2{ m Fi}}



static void Test_S2666C2()
{
  extern Class_Descriptor cd_S2666C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2666C2, buf);
    S2666C2 &lv = *(new (buf) S2666C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2666C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2666C2)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S2666C2");
    test_class_info(&lv, &cd_S2666C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2666C2(Test_S2666C2, "S2666C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S2666C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2666C2 = {  "S2666C2", // class name
  bases_S2666C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2666C1  : S2666C2 {
  ::S17885C12 s2666c1f0;
  __tsi64 s2666c1f1;
  char s2666c1f2;
  int s2666c1f3;
};
//SIG(1 S2666C1) C1{ BC2{ BC3{ m Fi}} FC4{ m Fp} FL Fc Fi}



static void Test_S2666C1()
{
  extern Class_Descriptor cd_S2666C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S2666C1, buf);
    S2666C1 &lv = *(new (buf) S2666C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S2666C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2666C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S2666C2*), 0, "S2666C1");
    check_base_class_offset(lv, (S2666C2*), 0, "S2666C1");
    check_field_offset(lv, s2666c1f0, ABISELECT(8,4), "S2666C1.s2666c1f0");
    check_field_offset(lv, s2666c1f1, ABISELECT(16,8), "S2666C1.s2666c1f1");
    check_field_offset(lv, s2666c1f2, ABISELECT(24,16), "S2666C1.s2666c1f2");
    check_field_offset(lv, s2666c1f3, ABISELECT(28,20), "S2666C1.s2666c1f3");
    test_class_info(&lv, &cd_S2666C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2666C1(Test_S2666C1, "S2666C1", ABISELECT(32,24));

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S2666C2;
static Base_Class bases_S2666C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2666C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2666C1 = {  "S2666C1", // class name
  bases_S2666C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(32,24), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2659C2  : S28C13_nt {
};
//SIG(-1 S2659C2) C1{ BC2{ m Fi}}



static void Test_S2659C2()
{
  extern Class_Descriptor cd_S2659C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2659C2, buf);
    S2659C2 &lv = *(new (buf) S2659C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2659C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2659C2)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S2659C2");
    test_class_info(&lv, &cd_S2659C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2659C2(Test_S2659C2, "S2659C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S2659C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2659C2 = {  "S2659C2", // class name
  bases_S2659C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2659C4  {
  void *s2659c4f0;
  int s2659c4f1;
  char s2659c4f2;
  void  mf2659c4(); // _ZN7S2659C48mf2659c4Ev
};
//SIG(-1 S2659C4) C1{ m Fp Fi Fc}


void  S2659C4 ::mf2659c4(){}

static void Test_S2659C4()
{
  {
    init_simple_test("S2659C4");
    S2659C4 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2659C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2659C4)");
    check_field_offset(lv, s2659c4f0, 0, "S2659C4.s2659c4f0");
    check_field_offset(lv, s2659c4f1, ABISELECT(8,4), "S2659C4.s2659c4f1");
    check_field_offset(lv, s2659c4f2, ABISELECT(12,8), "S2659C4.s2659c4f2");
  }
}
static Arrange_To_Call_Me vS2659C4(Test_S2659C4, "S2659C4", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2659C1  : S2659C2 {
  ::S2659C4 s2659c1f0;
  void *s2659c1f1;
};
//SIG(1 S2659C1) C1{ BC2{ BC3{ m Fi}} FC4{ m Fp Fi Fc} Fp}



static void Test_S2659C1()
{
  extern Class_Descriptor cd_S2659C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S2659C1, buf);
    S2659C1 &lv = *(new (buf) S2659C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S2659C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2659C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S2659C2*), 0, "S2659C1");
    check_base_class_offset(lv, (S2659C2*), 0, "S2659C1");
    check_field_offset(lv, s2659c1f0, ABISELECT(8,4), "S2659C1.s2659c1f0");
    check_field_offset(lv, s2659c1f1, ABISELECT(24,16), "S2659C1.s2659c1f1");
    test_class_info(&lv, &cd_S2659C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2659C1(Test_S2659C1, "S2659C1", ABISELECT(32,20));

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S2659C2;
static Base_Class bases_S2659C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2659C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2659C1 = {  "S2659C1", // class name
  bases_S2659C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(32,20), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2595C2  : S28C13_nt {
};
//SIG(-1 S2595C2) C1{ BC2{ m Fi}}



static void Test_S2595C2()
{
  extern Class_Descriptor cd_S2595C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2595C2, buf);
    S2595C2 &lv = *(new (buf) S2595C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2595C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2595C2)");
    check_base_class_offset(lv, (S28C13_nt*), 0, "S2595C2");
    test_class_info(&lv, &cd_S2595C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2595C2(Test_S2595C2, "S2595C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
static Base_Class bases_S2595C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2595C2 = {  "S2595C2", // class name
  bases_S2595C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2595C5_nt  {
  int s2595c5f0;
  void  mf2595c5(); // _ZN10S2595C5_nt8mf2595c5Ev
};
//SIG(-1 S2595C5_nt) C1{ m Fi}


void  S2595C5_nt ::mf2595c5(){}

//skip512 S2595C5_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S2595C5_nt[];
VTBL_ENTRY *P__ZTI10S2595C5_nt = _ZTI10S2595C5_nt; 
Class_Descriptor cd_S2595C5_nt = {  "S2595C5_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI10S2595C5_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  S2595C4  : S2595C5_nt {
};
//SIG(-1 S2595C4) C1{ BC2{ m Fi}}



static void Test_S2595C4()
{
  extern Class_Descriptor cd_S2595C4;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2595C4, buf);
    S2595C4 &lv = *(new (buf) S2595C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2595C4)");
    check2(__alignof__(lv), 4, "__alignof__(S2595C4)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S2595C4");
    test_class_info(&lv, &cd_S2595C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2595C4(Test_S2595C4, "S2595C4", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S2595C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2595C4 = {  "S2595C4", // class name
  bases_S2595C4, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2595C1  : S2595C2 , S2595C4 {
  int s2595c1f0;
};
//SIG(1 S2595C1) C1{ BC2{ BC3{ m Fi}} BC4{ BC5{ m Fi}} Fi}



static void Test_S2595C1()
{
  extern Class_Descriptor cd_S2595C1;
  void *lvp;
  {
    int buf[4];
    init_test(&cd_S2595C1, buf);
    S2595C1 &lv = *(new (buf) S2595C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 12, "sizeof(S2595C1)");
    check2(__alignof__(lv), 4, "__alignof__(S2595C1)");
    check_base_class_offset(lv, (S28C13_nt*)(S2595C2*), 0, "S2595C1");
    check_base_class_offset(lv, (S2595C2*), 0, "S2595C1");
    check_base_class_offset(lv, (S2595C5_nt*)(S2595C4*), 4, "S2595C1");
    check_base_class_offset(lv, (S2595C4*), 4, "S2595C1");
    check_field_offset(lv, s2595c1f0, 8, "S2595C1.s2595c1f0");
    test_class_info(&lv, &cd_S2595C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2595C1(Test_S2595C1, "S2595C1", 12);

#else // __cplusplus

extern Class_Descriptor cd_S28C13_nt;
extern VTBL_ENTRY _ZTI9S28C13_nt[];
extern Class_Descriptor cd_S2595C2;
extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S2595C4;
static Base_Class bases_S2595C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S28C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2595C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2595C5_nt,    4, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S2595C4,    4, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2595C1 = {  "S2595C1", // class name
  bases_S2595C1, 4,
  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  S979C3  : S2595C5_nt {
};
//SIG(-1 S979C3) C1{ BC2{ m Fi}}



static void Test_S979C3()
{
  extern Class_Descriptor cd_S979C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S979C3, buf);
    S979C3 &lv = *(new (buf) S979C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S979C3)");
    check2(__alignof__(lv), 4, "__alignof__(S979C3)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S979C3");
    test_class_info(&lv, &cd_S979C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS979C3(Test_S979C3, "S979C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S979C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S979C3 = {  "S979C3", // class name
  bases_S979C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S979C2  : S979C3 {
  char s979c2f0;
  void *s979c2f1;
};
//SIG(-1 S979C2) C1{ BC2{ BC3{ m Fi}} Fc Fp}



static void Test_S979C2()
{
  extern Class_Descriptor cd_S979C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S979C2, buf);
    S979C2 &lv = *(new (buf) S979C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S979C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S979C2)");
    check_base_class_offset(lv, (S2595C5_nt*)(S979C3*), 0, "S979C2");
    check_base_class_offset(lv, (S979C3*), 0, "S979C2");
    check_field_offset(lv, s979c2f0, 4, "S979C2.s979c2f0");
    check_field_offset(lv, s979c2f1, 8, "S979C2.s979c2f1");
    test_class_info(&lv, &cd_S979C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS979C2(Test_S979C2, "S979C2", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S979C3;
static Base_Class bases_S979C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S979C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S979C2 = {  "S979C2", // class name
  bases_S979C2, 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  S979C1  : S979C2 , S2596C7_nt {
};
//SIG(1 S979C1) C1{ BC2{ BC3{ BC4{ m Fi}} Fc Fp} BC5{ m}}



static void Test_S979C1()
{
  extern Class_Descriptor cd_S979C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S979C1, buf);
    S979C1 &lv = *(new (buf) S979C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S979C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S979C1)");
    check_base_class_offset(lv, (S2595C5_nt*)(S979C3*)(S979C2*), 0, "S979C1");
    check_base_class_offset(lv, (S979C3*)(S979C2*), 0, "S979C1");
    check_base_class_offset(lv, (S979C2*), 0, "S979C1");
    check_base_class_offset(lv, (S2596C7_nt*), 0, "S979C1");
    test_class_info(&lv, &cd_S979C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS979C1(Test_S979C1, "S979C1", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S979C3;
extern Class_Descriptor cd_S979C2;
extern Class_Descriptor cd_S2596C7_nt;
extern VTBL_ENTRY _ZTI10S2596C7_nt[];
static Base_Class bases_S979C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S979C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S979C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2596C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S979C1 = {  "S979C1", // class name
  bases_S979C1, 4,
  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  S2719C2  : S2595C5_nt {
};
//SIG(-1 S2719C2) C1{ BC2{ m Fi}}



static void Test_S2719C2()
{
  extern Class_Descriptor cd_S2719C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2719C2, buf);
    S2719C2 &lv = *(new (buf) S2719C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2719C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2719C2)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S2719C2");
    test_class_info(&lv, &cd_S2719C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2719C2(Test_S2719C2, "S2719C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S2719C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2719C2 = {  "S2719C2", // class name
  bases_S2719C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2719C1  : S2719C2 {
  short s2719c1f0[256];
  void *s2719c1f1[257];
};
//SIG(1 S2719C1) C1{ BC2{ BC3{ m Fi}} Fs[256] Fp[257]}



static void Test_S2719C1()
{
  extern Class_Descriptor cd_S2719C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(323,387)];
    init_test(&cd_S2719C1, buf);
    S2719C1 &lv = *(new (buf) S2719C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2576,1544), "sizeof(S2719C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2719C1)");
    check_base_class_offset(lv, (S2595C5_nt*)(S2719C2*), 0, "S2719C1");
    check_base_class_offset(lv, (S2719C2*), 0, "S2719C1");
    check_field_offset(lv, s2719c1f0, 4, "S2719C1.s2719c1f0");
    check_field_offset(lv, s2719c1f1, ABISELECT(520,516), "S2719C1.s2719c1f1");
    test_class_info(&lv, &cd_S2719C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2719C1(Test_S2719C1, "S2719C1", ABISELECT(2576,1544));

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S2719C2;
static Base_Class bases_S2719C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2719C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2719C1 = {  "S2719C1", // class name
  bases_S2719C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(2576,1544), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2677C2  : S2595C5_nt {
};
//SIG(-1 S2677C2) C1{ BC2{ m Fi}}



static void Test_S2677C2()
{
  extern Class_Descriptor cd_S2677C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2677C2, buf);
    S2677C2 &lv = *(new (buf) S2677C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2677C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2677C2)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S2677C2");
    test_class_info(&lv, &cd_S2677C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2677C2(Test_S2677C2, "S2677C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S2677C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2677C2 = {  "S2677C2", // class name
  bases_S2677C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2677C1  : S2677C2 {
  int s2677c1f0;
  ::S2639C4_nt s2677c1f1;
};
//SIG(1 S2677C1) C1{ BC2{ BC3{ m Fi}} Fi FC4{ m Fi Fc}}



static void Test_S2677C1()
{
  extern Class_Descriptor cd_S2677C1;
  void *lvp;
  {
    int buf[5];
    init_test(&cd_S2677C1, buf);
    S2677C1 &lv = *(new (buf) S2677C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 16, "sizeof(S2677C1)");
    check2(__alignof__(lv), 4, "__alignof__(S2677C1)");
    check_base_class_offset(lv, (S2595C5_nt*)(S2677C2*), 0, "S2677C1");
    check_base_class_offset(lv, (S2677C2*), 0, "S2677C1");
    check_field_offset(lv, s2677c1f0, 4, "S2677C1.s2677c1f0");
    check_field_offset(lv, s2677c1f1, 8, "S2677C1.s2677c1f1");
    test_class_info(&lv, &cd_S2677C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2677C1(Test_S2677C1, "S2677C1", 16);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S2677C2;
static Base_Class bases_S2677C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2677C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2677C1 = {  "S2677C1", // class name
  bases_S2677C1, 2,
  0, // no vftv
  0, //no vtt
  16, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2665C2  : S2595C5_nt {
};
//SIG(-1 S2665C2) C1{ BC2{ m Fi}}



static void Test_S2665C2()
{
  extern Class_Descriptor cd_S2665C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2665C2, buf);
    S2665C2 &lv = *(new (buf) S2665C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2665C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2665C2)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S2665C2");
    test_class_info(&lv, &cd_S2665C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2665C2(Test_S2665C2, "S2665C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S2665C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2665C2 = {  "S2665C2", // class name
  bases_S2665C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2665C1  : S2665C2 {
  ::S17885C12 s2665c1f0;
  int s2665c1f1[11];
};
//SIG(1 S2665C1) C1{ BC2{ BC3{ m Fi}} FC4{ m Fp} Fi[11]}



static void Test_S2665C1()
{
  extern Class_Descriptor cd_S2665C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,14)];
    init_test(&cd_S2665C1, buf);
    S2665C1 &lv = *(new (buf) S2665C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,52), "sizeof(S2665C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2665C1)");
    check_base_class_offset(lv, (S2595C5_nt*)(S2665C2*), 0, "S2665C1");
    check_base_class_offset(lv, (S2665C2*), 0, "S2665C1");
    check_field_offset(lv, s2665c1f0, ABISELECT(8,4), "S2665C1.s2665c1f0");
    check_field_offset(lv, s2665c1f1, ABISELECT(16,8), "S2665C1.s2665c1f1");
    test_class_info(&lv, &cd_S2665C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2665C1(Test_S2665C1, "S2665C1", ABISELECT(64,52));

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S2665C2;
static Base_Class bases_S2665C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2665C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2665C1 = {  "S2665C1", // class name
  bases_S2665C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(64,52), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12047C1  {
  ::S9697C10_nt s12047c1f0;
  ::S28C59 s12047c1f1;
  int s12047c1f2;
};
//SIG(1 S12047C1) C1{ FC2{ m Fi[2]} FC3{ FC4{ m Fi[2]} Fp Fi} Fi}



static void Test_S12047C1()
{
  {
    init_simple_test("S12047C1");
    S12047C1 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S12047C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12047C1)");
    check_field_offset(lv, s12047c1f0, 0, "S12047C1.s12047c1f0");
    check_field_offset(lv, s12047c1f1, 8, "S12047C1.s12047c1f1");
    check_field_offset(lv, s12047c1f2, ABISELECT(32,24), "S12047C1.s12047c1f2");
  }
}
static Arrange_To_Call_Me vS12047C1(Test_S12047C1, "S12047C1", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2669C2  : S2595C5_nt {
};
//SIG(-1 S2669C2) C1{ BC2{ m Fi}}



static void Test_S2669C2()
{
  extern Class_Descriptor cd_S2669C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2669C2, buf);
    S2669C2 &lv = *(new (buf) S2669C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2669C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2669C2)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S2669C2");
    test_class_info(&lv, &cd_S2669C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2669C2(Test_S2669C2, "S2669C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S2669C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2669C2 = {  "S2669C2", // class name
  bases_S2669C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2669C1  : S2669C2 {
  ::S17885C12 s2669c1f0;
  void *s2669c1f1[2];
};
//SIG(1 S2669C1) C1{ BC2{ BC3{ m Fi}} FC4{ m Fp} Fp[2]}



static void Test_S2669C1()
{
  extern Class_Descriptor cd_S2669C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S2669C1, buf);
    S2669C1 &lv = *(new (buf) S2669C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S2669C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2669C1)");
    check_base_class_offset(lv, (S2595C5_nt*)(S2669C2*), 0, "S2669C1");
    check_base_class_offset(lv, (S2669C2*), 0, "S2669C1");
    check_field_offset(lv, s2669c1f0, ABISELECT(8,4), "S2669C1.s2669c1f0");
    check_field_offset(lv, s2669c1f1, ABISELECT(16,8), "S2669C1.s2669c1f1");
    test_class_info(&lv, &cd_S2669C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2669C1(Test_S2669C1, "S2669C1", ABISELECT(32,16));

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S2669C2;
static Base_Class bases_S2669C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2669C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2669C1 = {  "S2669C1", // class name
  bases_S2669C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(32,16), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2613C2  : S2595C5_nt {
};
//SIG(-1 S2613C2) C1{ BC2{ m Fi}}



static void Test_S2613C2()
{
  extern Class_Descriptor cd_S2613C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2613C2, buf);
    S2613C2 &lv = *(new (buf) S2613C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2613C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2613C2)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S2613C2");
    test_class_info(&lv, &cd_S2613C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2613C2(Test_S2613C2, "S2613C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S2613C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2613C2 = {  "S2613C2", // class name
  bases_S2613C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2613C1  : S2613C2 {
  char s2613c1f0[4];
  __tsi64 s2613c1f1[3];
  char s2613c1f2;
};
//SIG(1 S2613C1) C1{ BC2{ BC3{ m Fi}} Fc[4] FL[3] Fc}



static void Test_S2613C1()
{
  extern Class_Descriptor cd_S2613C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,10)];
    init_test(&cd_S2613C1, buf);
    S2613C1 &lv = *(new (buf) S2613C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,36), "sizeof(S2613C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2613C1)");
    check_base_class_offset(lv, (S2595C5_nt*)(S2613C2*), 0, "S2613C1");
    check_base_class_offset(lv, (S2613C2*), 0, "S2613C1");
    check_field_offset(lv, s2613c1f0, 4, "S2613C1.s2613c1f0");
    check_field_offset(lv, s2613c1f1, 8, "S2613C1.s2613c1f1");
    check_field_offset(lv, s2613c1f2, 32, "S2613C1.s2613c1f2");
    test_class_info(&lv, &cd_S2613C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2613C1(Test_S2613C1, "S2613C1", ABISELECT(40,36));

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S2613C2;
static Base_Class bases_S2613C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2613C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2613C1 = {  "S2613C1", // class name
  bases_S2613C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(40,36), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12028C1  {
  ::S2639C4_nt s12028c1f0;
  ::S2659C4 s12028c1f1;
};
//SIG(1 S12028C1) C1{ FC2{ m Fi Fc} FC3{ m Fp Fi Fc}}



static void Test_S12028C1()
{
  {
    init_simple_test("S12028C1");
    S12028C1 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S12028C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12028C1)");
    check_field_offset(lv, s12028c1f0, 0, "S12028C1.s12028c1f0");
    check_field_offset(lv, s12028c1f1, 8, "S12028C1.s12028c1f1");
  }
}
static Arrange_To_Call_Me vS12028C1(Test_S12028C1, "S12028C1", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2712C2  : S2595C5_nt {
};
//SIG(-1 S2712C2) C1{ BC2{ m Fi}}



static void Test_S2712C2()
{
  extern Class_Descriptor cd_S2712C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2712C2, buf);
    S2712C2 &lv = *(new (buf) S2712C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2712C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2712C2)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S2712C2");
    test_class_info(&lv, &cd_S2712C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2712C2(Test_S2712C2, "S2712C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S2712C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2712C2 = {  "S2712C2", // class name
  bases_S2712C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2712C1  : S2712C2 {
  void *s2712c1f0;
  ::S17885C12 s2712c1f1;
};
//SIG(1 S2712C1) C1{ BC2{ BC3{ m Fi}} Fp FC4{ m Fp}}



static void Test_S2712C1()
{
  extern Class_Descriptor cd_S2712C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S2712C1, buf);
    S2712C1 &lv = *(new (buf) S2712C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S2712C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2712C1)");
    check_base_class_offset(lv, (S2595C5_nt*)(S2712C2*), 0, "S2712C1");
    check_base_class_offset(lv, (S2712C2*), 0, "S2712C1");
    check_field_offset(lv, s2712c1f0, ABISELECT(8,4), "S2712C1.s2712c1f0");
    check_field_offset(lv, s2712c1f1, ABISELECT(16,8), "S2712C1.s2712c1f1");
    test_class_info(&lv, &cd_S2712C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2712C1(Test_S2712C1, "S2712C1", ABISELECT(24,12));

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S2712C2;
static Base_Class bases_S2712C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2712C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2712C1 = {  "S2712C1", // class name
  bases_S2712C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(24,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2662C2  : S2595C5_nt {
};
//SIG(-1 S2662C2) C1{ BC2{ m Fi}}



static void Test_S2662C2()
{
  extern Class_Descriptor cd_S2662C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2662C2, buf);
    S2662C2 &lv = *(new (buf) S2662C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2662C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2662C2)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S2662C2");
    test_class_info(&lv, &cd_S2662C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2662C2(Test_S2662C2, "S2662C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S2662C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2662C2 = {  "S2662C2", // class name
  bases_S2662C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2662C1  : S2662C2 {
  ::S17885C12 s2662c1f0;
  ::S17885C12 s2662c1f1;
};
//SIG(1 S2662C1) C1{ BC2{ BC3{ m Fi}} FC4{ m Fp} FC4}



static void Test_S2662C1()
{
  extern Class_Descriptor cd_S2662C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S2662C1, buf);
    S2662C1 &lv = *(new (buf) S2662C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S2662C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2662C1)");
    check_base_class_offset(lv, (S2595C5_nt*)(S2662C2*), 0, "S2662C1");
    check_base_class_offset(lv, (S2662C2*), 0, "S2662C1");
    check_field_offset(lv, s2662c1f0, ABISELECT(8,4), "S2662C1.s2662c1f0");
    check_field_offset(lv, s2662c1f1, ABISELECT(16,8), "S2662C1.s2662c1f1");
    test_class_info(&lv, &cd_S2662C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2662C1(Test_S2662C1, "S2662C1", ABISELECT(24,12));

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S2662C2;
static Base_Class bases_S2662C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2662C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2662C1 = {  "S2662C1", // class name
  bases_S2662C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(24,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2657C2  : S2595C5_nt {
};
//SIG(-1 S2657C2) C1{ BC2{ m Fi}}



static void Test_S2657C2()
{
  extern Class_Descriptor cd_S2657C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2657C2, buf);
    S2657C2 &lv = *(new (buf) S2657C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2657C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2657C2)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S2657C2");
    test_class_info(&lv, &cd_S2657C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2657C2(Test_S2657C2, "S2657C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S2657C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2657C2 = {  "S2657C2", // class name
  bases_S2657C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2657C1  : S2657C2 {
  ::S9697C10_nt s2657c1f0;
};
//SIG(1 S2657C1) C1{ BC2{ BC3{ m Fi}} FC4{ m Fi[2]}}



static void Test_S2657C1()
{
  extern Class_Descriptor cd_S2657C1;
  void *lvp;
  {
    int buf[4];
    init_test(&cd_S2657C1, buf);
    S2657C1 &lv = *(new (buf) S2657C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 12, "sizeof(S2657C1)");
    check2(__alignof__(lv), 4, "__alignof__(S2657C1)");
    check_base_class_offset(lv, (S2595C5_nt*)(S2657C2*), 0, "S2657C1");
    check_base_class_offset(lv, (S2657C2*), 0, "S2657C1");
    check_field_offset(lv, s2657c1f0, 4, "S2657C1.s2657c1f0");
    test_class_info(&lv, &cd_S2657C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2657C1(Test_S2657C1, "S2657C1", 12);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S2657C2;
static Base_Class bases_S2657C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2657C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2657C1 = {  "S2657C1", // class name
  bases_S2657C1, 2,
  0, // no vftv
  0, //no vtt
  12, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2750C2  : S2595C5_nt {
};
//SIG(-1 S2750C2) C1{ BC2{ m Fi}}



static void Test_S2750C2()
{
  extern Class_Descriptor cd_S2750C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2750C2, buf);
    S2750C2 &lv = *(new (buf) S2750C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2750C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2750C2)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S2750C2");
    test_class_info(&lv, &cd_S2750C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2750C2(Test_S2750C2, "S2750C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S2750C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2750C2[];
Class_Descriptor cd_S2750C2 = {  "S2750C2", // class name
  bases_S2750C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S2750C2),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  S2750C1  : S2750C2 {
  virtual  ~S2750C1(); // _ZN7S2750C1D1Ev
  virtual void  v1(); // _ZN7S2750C12v1Ev
  virtual void  v2(); // _ZN7S2750C12v2Ev
  virtual void  v3(); // _ZN7S2750C12v3Ev
  S2750C1(); // tgen
};
//SIG(1 S2750C1) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3}


 S2750C1 ::~S2750C1(){ note_dtor("S2750C1", this);}
void  S2750C1 ::v1(){vfunc_called(this, "_ZN7S2750C12v1Ev");}
void  S2750C1 ::v2(){vfunc_called(this, "_ZN7S2750C12v2Ev");}
void  S2750C1 ::v3(){vfunc_called(this, "_ZN7S2750C12v3Ev");}
S2750C1 ::S2750C1(){ note_ctor("S2750C1", this);} // tgen

static void Test_S2750C1()
{
  extern Class_Descriptor cd_S2750C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S2750C1, buf);
    S2750C1 *dp, &lv = *(dp=new (buf) S2750C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S2750C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2750C1)");
    check_base_class_offset(lv, (S2595C5_nt*)(S2750C2*), ABISELECT(8,4), "S2750C1");
    check_base_class_offset(lv, (S2750C2*), ABISELECT(8,4), "S2750C1");
    test_class_info(&lv, &cd_S2750C1);
    dp->~S2750C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2750C1(Test_S2750C1, "S2750C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S2750C1C1Ev();
extern void _ZN7S2750C1D1Ev();
Name_Map name_map_S2750C1[] = {
  NSPAIR(_ZN7S2750C1C1Ev),
  NSPAIR(_ZN7S2750C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S2750C2;
extern VTBL_ENTRY _ZTI7S2750C2[];
static Base_Class bases_S2750C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2750C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2750C1[];
extern void _ZN7S2750C1D1Ev();
extern void _ZN7S2750C1D0Ev();
extern void _ZN7S2750C12v1Ev();
extern void _ZN7S2750C12v2Ev();
extern void _ZN7S2750C12v3Ev();
static  VTBL_ENTRY vtc_S2750C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2750C1[0]),
  (VTBL_ENTRY)&_ZN7S2750C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2750C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2750C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2750C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2750C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S2750C1[];
extern  VTBL_ENTRY _ZTV7S2750C1[];
Class_Descriptor cd_S2750C1 = {  "S2750C1", // class name
  bases_S2750C1, 2,
  &(vtc_S2750C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S2750C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S2750C1),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  S2699C2  : S2595C5_nt {
};
//SIG(-1 S2699C2) C1{ BC2{ m Fi}}



static void Test_S2699C2()
{
  extern Class_Descriptor cd_S2699C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2699C2, buf);
    S2699C2 &lv = *(new (buf) S2699C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2699C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2699C2)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S2699C2");
    test_class_info(&lv, &cd_S2699C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2699C2(Test_S2699C2, "S2699C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S2699C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2699C2 = {  "S2699C2", // class name
  bases_S2699C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2699C1  : S2699C2 {
  __tsi64 s2699c1f0[3];
  char s2699c1f1[3];
};
//SIG(1 S2699C1) C1{ BC2{ BC3{ m Fi}} FL[3] Fc[3]}



static void Test_S2699C1()
{
  extern Class_Descriptor cd_S2699C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S2699C1, buf);
    S2699C1 &lv = *(new (buf) S2699C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S2699C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2699C1)");
    check_base_class_offset(lv, (S2595C5_nt*)(S2699C2*), 0, "S2699C1");
    check_base_class_offset(lv, (S2699C2*), 0, "S2699C1");
    check_field_offset(lv, s2699c1f0, ABISELECT(8,4), "S2699C1.s2699c1f0");
    check_field_offset(lv, s2699c1f1, ABISELECT(32,28), "S2699C1.s2699c1f1");
    test_class_info(&lv, &cd_S2699C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2699C1(Test_S2699C1, "S2699C1", ABISELECT(40,32));

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S2699C2;
static Base_Class bases_S2699C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2699C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2699C1 = {  "S2699C1", // class name
  bases_S2699C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(40,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  S2670C2  : S2595C5_nt {
};
//SIG(-1 S2670C2) C1{ BC2{ m Fi}}



static void Test_S2670C2()
{
  extern Class_Descriptor cd_S2670C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2670C2, buf);
    S2670C2 &lv = *(new (buf) S2670C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2670C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2670C2)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S2670C2");
    test_class_info(&lv, &cd_S2670C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2670C2(Test_S2670C2, "S2670C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S2670C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2670C2 = {  "S2670C2", // class name
  bases_S2670C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2670C1  : S2670C2 {
  ::S17885C12 s2670c1f0;
};
//SIG(1 S2670C1) C1{ BC2{ BC3{ m Fi}} FC4{ m Fp}}



static void Test_S2670C1()
{
  extern Class_Descriptor cd_S2670C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S2670C1, buf);
    S2670C1 &lv = *(new (buf) S2670C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S2670C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2670C1)");
    check_base_class_offset(lv, (S2595C5_nt*)(S2670C2*), 0, "S2670C1");
    check_base_class_offset(lv, (S2670C2*), 0, "S2670C1");
    check_field_offset(lv, s2670c1f0, ABISELECT(8,4), "S2670C1.s2670c1f0");
    test_class_info(&lv, &cd_S2670C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2670C1(Test_S2670C1, "S2670C1", ABISELECT(16,8));

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S2670C2;
static Base_Class bases_S2670C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2670C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2670C1 = {  "S2670C1", // class name
  bases_S2670C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,8), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2698C2  : S2595C5_nt {
};
//SIG(-1 S2698C2) C1{ BC2{ m Fi}}



static void Test_S2698C2()
{
  extern Class_Descriptor cd_S2698C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2698C2, buf);
    S2698C2 &lv = *(new (buf) S2698C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2698C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2698C2)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S2698C2");
    test_class_info(&lv, &cd_S2698C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2698C2(Test_S2698C2, "S2698C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S2698C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2698C2 = {  "S2698C2", // class name
  bases_S2698C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2698C1  : S2698C2 {
  __tsi64 s2698c1f0;
  int s2698c1f1[11];
};
//SIG(1 S2698C1) C1{ BC2{ BC3{ m Fi}} FL Fi[11]}



static void Test_S2698C1()
{
  extern Class_Descriptor cd_S2698C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,15)];
    init_test(&cd_S2698C1, buf);
    S2698C1 &lv = *(new (buf) S2698C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,56), "sizeof(S2698C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2698C1)");
    check_base_class_offset(lv, (S2595C5_nt*)(S2698C2*), 0, "S2698C1");
    check_base_class_offset(lv, (S2698C2*), 0, "S2698C1");
    check_field_offset(lv, s2698c1f0, ABISELECT(8,4), "S2698C1.s2698c1f0");
    check_field_offset(lv, s2698c1f1, ABISELECT(16,12), "S2698C1.s2698c1f1");
    test_class_info(&lv, &cd_S2698C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2698C1(Test_S2698C1, "S2698C1", ABISELECT(64,56));

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S2698C2;
static Base_Class bases_S2698C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2698C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2698C1 = {  "S2698C1", // class name
  bases_S2698C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(64,56), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2594C2  : S2595C5_nt {
};
//SIG(-1 S2594C2) C1{ BC2{ m Fi}}



static void Test_S2594C2()
{
  extern Class_Descriptor cd_S2594C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2594C2, buf);
    S2594C2 &lv = *(new (buf) S2594C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2594C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2594C2)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S2594C2");
    test_class_info(&lv, &cd_S2594C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2594C2(Test_S2594C2, "S2594C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S2594C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2594C2 = {  "S2594C2", // class name
  bases_S2594C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2594C4  : S2595C5_nt {
};
//SIG(-1 S2594C4) C1{ BC2{ m Fi}}



static void Test_S2594C4()
{
  extern Class_Descriptor cd_S2594C4;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2594C4, buf);
    S2594C4 &lv = *(new (buf) S2594C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2594C4)");
    check2(__alignof__(lv), 4, "__alignof__(S2594C4)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S2594C4");
    test_class_info(&lv, &cd_S2594C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2594C4(Test_S2594C4, "S2594C4", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S2594C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2594C4 = {  "S2594C4", // class name
  bases_S2594C4, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2594C1  : S2594C2 , S2594C4 {
};
//SIG(1 S2594C1) C1{ BC2{ BC3{ m Fi}} BC4{ BC3}}



static void Test_S2594C1()
{
  extern Class_Descriptor cd_S2594C1;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S2594C1, buf);
    S2594C1 &lv = *(new (buf) S2594C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S2594C1)");
    check2(__alignof__(lv), 4, "__alignof__(S2594C1)");
    check_base_class_offset(lv, (S2595C5_nt*)(S2594C2*), 0, "S2594C1");
    check_base_class_offset(lv, (S2594C2*), 0, "S2594C1");
    check_base_class_offset(lv, (S2595C5_nt*)(S2594C4*), 4, "S2594C1");
    check_base_class_offset(lv, (S2594C4*), 4, "S2594C1");
    test_class_info(&lv, &cd_S2594C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2594C1(Test_S2594C1, "S2594C1", 8);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S2594C2;
extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S2594C4;
static Base_Class bases_S2594C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2594C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2595C5_nt,    4, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S2594C4,    4, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2594C1 = {  "S2594C1", // class name
  bases_S2594C1, 4,
  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  S2728C2  : S2595C5_nt {
};
//SIG(-1 S2728C2) C1{ BC2{ m Fi}}



static void Test_S2728C2()
{
  extern Class_Descriptor cd_S2728C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2728C2, buf);
    S2728C2 &lv = *(new (buf) S2728C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2728C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2728C2)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S2728C2");
    test_class_info(&lv, &cd_S2728C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2728C2(Test_S2728C2, "S2728C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S2728C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2728C2[];
Class_Descriptor cd_S2728C2 = {  "S2728C2", // class name
  bases_S2728C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S2728C2),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  S2728C1  : S2728C2 {
  void *s2728c1f0[2];
  virtual  ~S2728C1(); // _ZN7S2728C1D1Ev
  S2728C1(); // tgen
};
//SIG(1 S2728C1) C1{ BC2{ BC3{ m Fi}} vd Fp[2]}


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

static void Test_S2728C1()
{
  extern Class_Descriptor cd_S2728C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S2728C1, buf);
    S2728C1 *dp, &lv = *(dp=new (buf) S2728C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S2728C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2728C1)");
    check_base_class_offset(lv, (S2595C5_nt*)(S2728C2*), ABISELECT(8,4), "S2728C1");
    check_base_class_offset(lv, (S2728C2*), ABISELECT(8,4), "S2728C1");
    check_field_offset(lv, s2728c1f0, ABISELECT(16,8), "S2728C1.s2728c1f0");
    test_class_info(&lv, &cd_S2728C1);
    dp->~S2728C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2728C1(Test_S2728C1, "S2728C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S2728C1C1Ev();
extern void _ZN7S2728C1D1Ev();
Name_Map name_map_S2728C1[] = {
  NSPAIR(_ZN7S2728C1C1Ev),
  NSPAIR(_ZN7S2728C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S2728C2;
extern VTBL_ENTRY _ZTI7S2728C2[];
static Base_Class bases_S2728C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2728C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2728C1[];
extern void _ZN7S2728C1D1Ev();
extern void _ZN7S2728C1D0Ev();
static  VTBL_ENTRY vtc_S2728C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2728C1[0]),
  (VTBL_ENTRY)&_ZN7S2728C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2728C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S2728C1[];
extern  VTBL_ENTRY _ZTV7S2728C1[];
Class_Descriptor cd_S2728C1 = {  "S2728C1", // class name
  bases_S2728C1, 2,
  &(vtc_S2728C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S2728C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S2728C1),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  S2703C2  : S2595C5_nt {
};
//SIG(-1 S2703C2) C1{ BC2{ m Fi}}



static void Test_S2703C2()
{
  extern Class_Descriptor cd_S2703C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2703C2, buf);
    S2703C2 &lv = *(new (buf) S2703C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2703C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2703C2)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S2703C2");
    test_class_info(&lv, &cd_S2703C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2703C2(Test_S2703C2, "S2703C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S2703C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2703C2 = {  "S2703C2", // class name
  bases_S2703C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2703C1  : S2703C2 {
  void *s2703c1f0;
  char s2703c1f1;
  void *s2703c1f2;
};
//SIG(1 S2703C1) C1{ BC2{ BC3{ m Fi}} Fp Fc Fp}



static void Test_S2703C1()
{
  extern Class_Descriptor cd_S2703C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S2703C1, buf);
    S2703C1 &lv = *(new (buf) S2703C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S2703C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2703C1)");
    check_base_class_offset(lv, (S2595C5_nt*)(S2703C2*), 0, "S2703C1");
    check_base_class_offset(lv, (S2703C2*), 0, "S2703C1");
    check_field_offset(lv, s2703c1f0, ABISELECT(8,4), "S2703C1.s2703c1f0");
    check_field_offset(lv, s2703c1f1, ABISELECT(16,8), "S2703C1.s2703c1f1");
    check_field_offset(lv, s2703c1f2, ABISELECT(24,12), "S2703C1.s2703c1f2");
    test_class_info(&lv, &cd_S2703C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2703C1(Test_S2703C1, "S2703C1", ABISELECT(32,16));

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S2703C2;
static Base_Class bases_S2703C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2703C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2703C1 = {  "S2703C1", // class name
  bases_S2703C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(32,16), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2688C2  : S2595C5_nt {
};
//SIG(-1 S2688C2) C1{ BC2{ m Fi}}



static void Test_S2688C2()
{
  extern Class_Descriptor cd_S2688C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2688C2, buf);
    S2688C2 &lv = *(new (buf) S2688C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2688C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2688C2)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S2688C2");
    test_class_info(&lv, &cd_S2688C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2688C2(Test_S2688C2, "S2688C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S2688C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2688C2 = {  "S2688C2", // class name
  bases_S2688C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2688C1  : S2688C2 {
  int s2688c1f0:16;
  void *s2688c1f1;
};
//SIG(1 S2688C1) C1{ BC2{ BC3{ m Fi}} Fi:16 Fp}



static void Test_S2688C1()
{
  extern Class_Descriptor cd_S2688C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S2688C1, buf);
    S2688C1 &lv = *(new (buf) S2688C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2688C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2688C1)");
    check_base_class_offset(lv, (S2595C5_nt*)(S2688C2*), 0, "S2688C1");
    check_base_class_offset(lv, (S2688C2*), 0, "S2688C1");
    set_bf_and_test(lv, s2688c1f0, 4, 0, 16, 1, "S2688C1");
    set_bf_and_test(lv, s2688c1f0, 4, 0, 16, hide_sll(1LL<<15), "S2688C1");
    check_field_offset(lv, s2688c1f1, 8, "S2688C1.s2688c1f1");
    test_class_info(&lv, &cd_S2688C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2688C1(Test_S2688C1, "S2688C1", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S2688C2;
static Base_Class bases_S2688C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2688C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2688C1 = {  "S2688C1", // class name
  bases_S2688C1, 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  S2704C2  : S2595C5_nt {
};
//SIG(-1 S2704C2) C1{ BC2{ m Fi}}



static void Test_S2704C2()
{
  extern Class_Descriptor cd_S2704C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2704C2, buf);
    S2704C2 &lv = *(new (buf) S2704C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2704C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2704C2)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S2704C2");
    test_class_info(&lv, &cd_S2704C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2704C2(Test_S2704C2, "S2704C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S2704C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2704C2 = {  "S2704C2", // class name
  bases_S2704C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2704C1  : S2704C2 {
  void *s2704c1f0;
  char s2704c1f1;
};
//SIG(1 S2704C1) C1{ BC2{ BC3{ m Fi}} Fp Fc}



static void Test_S2704C1()
{
  extern Class_Descriptor cd_S2704C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S2704C1, buf);
    S2704C1 &lv = *(new (buf) S2704C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S2704C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2704C1)");
    check_base_class_offset(lv, (S2595C5_nt*)(S2704C2*), 0, "S2704C1");
    check_base_class_offset(lv, (S2704C2*), 0, "S2704C1");
    check_field_offset(lv, s2704c1f0, ABISELECT(8,4), "S2704C1.s2704c1f0");
    check_field_offset(lv, s2704c1f1, ABISELECT(16,8), "S2704C1.s2704c1f1");
    test_class_info(&lv, &cd_S2704C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2704C1(Test_S2704C1, "S2704C1", ABISELECT(24,12));

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S2704C2;
static Base_Class bases_S2704C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2704C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2704C1 = {  "S2704C1", // class name
  bases_S2704C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(24,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2683C2  : S2595C5_nt {
};
//SIG(-1 S2683C2) C1{ BC2{ m Fi}}



static void Test_S2683C2()
{
  extern Class_Descriptor cd_S2683C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2683C2, buf);
    S2683C2 &lv = *(new (buf) S2683C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2683C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2683C2)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S2683C2");
    test_class_info(&lv, &cd_S2683C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2683C2(Test_S2683C2, "S2683C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S2683C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2683C2 = {  "S2683C2", // class name
  bases_S2683C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2683C1  : S2683C2 {
  int s2683c1f0;
  void *s2683c1f1;
};
//SIG(1 S2683C1) C1{ BC2{ BC3{ m Fi}} Fi Fp}



static void Test_S2683C1()
{
  extern Class_Descriptor cd_S2683C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S2683C1, buf);
    S2683C1 &lv = *(new (buf) S2683C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2683C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2683C1)");
    check_base_class_offset(lv, (S2595C5_nt*)(S2683C2*), 0, "S2683C1");
    check_base_class_offset(lv, (S2683C2*), 0, "S2683C1");
    check_field_offset(lv, s2683c1f0, 4, "S2683C1.s2683c1f0");
    check_field_offset(lv, s2683c1f1, 8, "S2683C1.s2683c1f1");
    test_class_info(&lv, &cd_S2683C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2683C1(Test_S2683C1, "S2683C1", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S2683C2;
static Base_Class bases_S2683C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2683C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2683C1 = {  "S2683C1", // class name
  bases_S2683C1, 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  S2726C2  : S2595C5_nt {
};
//SIG(-1 S2726C2) C1{ BC2{ m Fi}}



static void Test_S2726C2()
{
  extern Class_Descriptor cd_S2726C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2726C2, buf);
    S2726C2 &lv = *(new (buf) S2726C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2726C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2726C2)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S2726C2");
    test_class_info(&lv, &cd_S2726C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2726C2(Test_S2726C2, "S2726C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S2726C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2726C2[];
Class_Descriptor cd_S2726C2 = {  "S2726C2", // class name
  bases_S2726C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S2726C2),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  S2726C1  : S2726C2 {
  int s2726c1f0;
  virtual  ~S2726C1(); // _ZN7S2726C1D1Ev
  S2726C1(); // tgen
};
//SIG(1 S2726C1) C1{ BC2{ BC3{ m Fi}} vd Fi}


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

static void Test_S2726C1()
{
  extern Class_Descriptor cd_S2726C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S2726C1, buf);
    S2726C1 *dp, &lv = *(dp=new (buf) S2726C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2726C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2726C1)");
    check_base_class_offset(lv, (S2595C5_nt*)(S2726C2*), ABISELECT(8,4), "S2726C1");
    check_base_class_offset(lv, (S2726C2*), ABISELECT(8,4), "S2726C1");
    check_field_offset(lv, s2726c1f0, ABISELECT(12,8), "S2726C1.s2726c1f0");
    test_class_info(&lv, &cd_S2726C1);
    dp->~S2726C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2726C1(Test_S2726C1, "S2726C1", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S2726C1C1Ev();
extern void _ZN7S2726C1D1Ev();
Name_Map name_map_S2726C1[] = {
  NSPAIR(_ZN7S2726C1C1Ev),
  NSPAIR(_ZN7S2726C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S2726C2;
extern VTBL_ENTRY _ZTI7S2726C2[];
static Base_Class bases_S2726C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2726C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2726C1[];
extern void _ZN7S2726C1D1Ev();
extern void _ZN7S2726C1D0Ev();
static  VTBL_ENTRY vtc_S2726C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2726C1[0]),
  (VTBL_ENTRY)&_ZN7S2726C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2726C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S2726C1[];
extern  VTBL_ENTRY _ZTV7S2726C1[];
Class_Descriptor cd_S2726C1 = {  "S2726C1", // class name
  bases_S2726C1, 2,
  &(vtc_S2726C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S2726C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S2726C1),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  S2714C2  : S2595C5_nt {
};
//SIG(-1 S2714C2) C1{ BC2{ m Fi}}



static void Test_S2714C2()
{
  extern Class_Descriptor cd_S2714C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2714C2, buf);
    S2714C2 &lv = *(new (buf) S2714C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2714C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2714C2)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S2714C2");
    test_class_info(&lv, &cd_S2714C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2714C2(Test_S2714C2, "S2714C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S2714C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2714C2 = {  "S2714C2", // class name
  bases_S2714C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2714C1  : S2714C2 {
  void *s2714c1f0;
  int s2714c1f1;
};
//SIG(1 S2714C1) C1{ BC2{ BC3{ m Fi}} Fp Fi}



static void Test_S2714C1()
{
  extern Class_Descriptor cd_S2714C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S2714C1, buf);
    S2714C1 &lv = *(new (buf) S2714C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S2714C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2714C1)");
    check_base_class_offset(lv, (S2595C5_nt*)(S2714C2*), 0, "S2714C1");
    check_base_class_offset(lv, (S2714C2*), 0, "S2714C1");
    check_field_offset(lv, s2714c1f0, ABISELECT(8,4), "S2714C1.s2714c1f0");
    check_field_offset(lv, s2714c1f1, ABISELECT(16,8), "S2714C1.s2714c1f1");
    test_class_info(&lv, &cd_S2714C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2714C1(Test_S2714C1, "S2714C1", ABISELECT(24,12));

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S2714C2;
static Base_Class bases_S2714C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2714C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2714C1 = {  "S2714C1", // class name
  bases_S2714C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(24,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12111C1  {
  ::S2595C5_nt s12111c1f0;
  ::S6441C9_nt s12111c1f1;
};
//SIG(1 S12111C1) C1{ FC2{ m Fi} FC3{ BC4{ m Fi}}}



static void Test_S12111C1()
{
  {
    init_simple_test("S12111C1");
    S12111C1 lv;
    check2(sizeof(lv), 8, "sizeof(S12111C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12111C1)");
    check_field_offset(lv, s12111c1f0, 0, "S12111C1.s12111c1f0");
    check_field_offset(lv, s12111c1f1, 4, "S12111C1.s12111c1f1");
  }
}
static Arrange_To_Call_Me vS12111C1(Test_S12111C1, "S12111C1", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2716C2  : S2595C5_nt {
};
//SIG(-1 S2716C2) C1{ BC2{ m Fi}}



static void Test_S2716C2()
{
  extern Class_Descriptor cd_S2716C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2716C2, buf);
    S2716C2 &lv = *(new (buf) S2716C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2716C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2716C2)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S2716C2");
    test_class_info(&lv, &cd_S2716C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2716C2(Test_S2716C2, "S2716C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S2716C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2716C2 = {  "S2716C2", // class name
  bases_S2716C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2716C1  : S2716C2 {
  void *s2716c1f0;
};
//SIG(1 S2716C1) C1{ BC2{ BC3{ m Fi}} Fp}



static void Test_S2716C1()
{
  extern Class_Descriptor cd_S2716C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S2716C1, buf);
    S2716C1 &lv = *(new (buf) S2716C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S2716C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2716C1)");
    check_base_class_offset(lv, (S2595C5_nt*)(S2716C2*), 0, "S2716C1");
    check_base_class_offset(lv, (S2716C2*), 0, "S2716C1");
    check_field_offset(lv, s2716c1f0, ABISELECT(8,4), "S2716C1.s2716c1f0");
    test_class_info(&lv, &cd_S2716C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2716C1(Test_S2716C1, "S2716C1", ABISELECT(16,8));

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S2716C2;
static Base_Class bases_S2716C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2716C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2716C1 = {  "S2716C1", // class name
  bases_S2716C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,8), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2696C2  : S2595C5_nt {
};
//SIG(-1 S2696C2) C1{ BC2{ m Fi}}



static void Test_S2696C2()
{
  extern Class_Descriptor cd_S2696C2;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S2696C2, buf);
    S2696C2 &lv = *(new (buf) S2696C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S2696C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2696C2)");
    check_base_class_offset(lv, (S2595C5_nt*), 0, "S2696C2");
    test_class_info(&lv, &cd_S2696C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2696C2(Test_S2696C2, "S2696C2", 4);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
static Base_Class bases_S2696C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2696C2 = {  "S2696C2", // class name
  bases_S2696C2, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2696C1  : S2696C2 {
  int s2696c1f0;
};
//SIG(1 S2696C1) C1{ BC2{ BC3{ m Fi}} Fi}



static void Test_S2696C1()
{
  extern Class_Descriptor cd_S2696C1;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S2696C1, buf);
    S2696C1 &lv = *(new (buf) S2696C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S2696C1)");
    check2(__alignof__(lv), 4, "__alignof__(S2696C1)");
    check_base_class_offset(lv, (S2595C5_nt*)(S2696C2*), 0, "S2696C1");
    check_base_class_offset(lv, (S2696C2*), 0, "S2696C1");
    check_field_offset(lv, s2696c1f0, 4, "S2696C1.s2696c1f0");
    test_class_info(&lv, &cd_S2696C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2696C1(Test_S2696C1, "S2696C1", 8);

#else // __cplusplus

extern Class_Descriptor cd_S2595C5_nt;
extern VTBL_ENTRY _ZTI10S2595C5_nt[];
extern Class_Descriptor cd_S2696C2;
static Base_Class bases_S2696C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2595C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2696C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2696C1 = {  "S2696C1", // class name
  bases_S2696C1, 2,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18359C1  {
  void *s18359c1f0[4];
  int s18359c1f1[3];
  void  mf18359c1(); // _ZN8S18359C19mf18359c1Ev
};
//SIG(1 S18359C1) C1{ m Fp[4] Fi[3]}


void  S18359C1 ::mf18359c1(){}

static void Test_S18359C1()
{
  {
    init_simple_test("S18359C1");
    S18359C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S18359C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18359C1)");
    check_field_offset(lv, s18359c1f0, 0, "S18359C1.s18359c1f0");
    check_field_offset(lv, s18359c1f1, ABISELECT(32,16), "S18359C1.s18359c1f1");
  }
}
static Arrange_To_Call_Me vS18359C1(Test_S18359C1, "S18359C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13109C1  {
  int s13109c1f0[2];
  ::S7166C17_nt s13109c1f1;
};
//SIG(1 S13109C1) C1{ Fi[2] FC2{ Fi}}



static void Test_S13109C1()
{
  {
    init_simple_test("S13109C1");
    S13109C1 lv;
    check2(sizeof(lv), 12, "sizeof(S13109C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13109C1)");
    check_field_offset(lv, s13109c1f0, 0, "S13109C1.s13109c1f0");
    check_field_offset(lv, s13109c1f1, 8, "S13109C1.s13109c1f1");
  }
}
static Arrange_To_Call_Me vS13109C1(Test_S13109C1, "S13109C1", 12);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11686C1  {
  ::S7166C17_nt s11686c1f0;
  int s11686c1f1;
  void *s11686c1f2;
};
//SIG(1 S11686C1) C1{ FC2{ Fi} Fi Fp}



static void Test_S11686C1()
{
  {
    init_simple_test("S11686C1");
    S11686C1 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S11686C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11686C1)");
    check_field_offset(lv, s11686c1f0, 0, "S11686C1.s11686c1f0");
    check_field_offset(lv, s11686c1f1, 4, "S11686C1.s11686c1f1");
    check_field_offset(lv, s11686c1f2, 8, "S11686C1.s11686c1f2");
  }
}
static Arrange_To_Call_Me vS11686C1(Test_S11686C1, "S11686C1", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10625C1  {
  char s10625c1f0[16];
  __tsi64 s10625c1f1[4];
};
//SIG(1 S10625C1) C1{ Fc[16] FL[4]}



static void Test_S10625C1()
{
  {
    init_simple_test("S10625C1");
    S10625C1 lv;
    check2(sizeof(lv), 48, "sizeof(S10625C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10625C1)");
    check_field_offset(lv, s10625c1f0, 0, "S10625C1.s10625c1f0");
    check_field_offset(lv, s10625c1f1, 16, "S10625C1.s10625c1f1");
  }
}
static Arrange_To_Call_Me vS10625C1(Test_S10625C1, "S10625C1", 48);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13531C1  {
  int s13531c1f0[5];
  char s13531c1f1[2];
};
//SIG(1 S13531C1) C1{ Fi[5] Fc[2]}



static void Test_S13531C1()
{
  {
    init_simple_test("S13531C1");
    S13531C1 lv;
    check2(sizeof(lv), 24, "sizeof(S13531C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13531C1)");
    check_field_offset(lv, s13531c1f0, 0, "S13531C1.s13531c1f0");
    check_field_offset(lv, s13531c1f1, 20, "S13531C1.s13531c1f1");
  }
}
static Arrange_To_Call_Me vS13531C1(Test_S13531C1, "S13531C1", 24);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14710C1  {
  void *s14710c1f0[6];
  char s14710c1f1;
  void *s14710c1f2;
};
//SIG(1 S14710C1) C1{ Fp[6] Fc Fp}



static void Test_S14710C1()
{
  {
    init_simple_test("S14710C1");
    S14710C1 lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S14710C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14710C1)");
    check_field_offset(lv, s14710c1f0, 0, "S14710C1.s14710c1f0");
    check_field_offset(lv, s14710c1f1, ABISELECT(48,24), "S14710C1.s14710c1f1");
    check_field_offset(lv, s14710c1f2, ABISELECT(56,28), "S14710C1.s14710c1f2");
  }
}
static Arrange_To_Call_Me vS14710C1(Test_S14710C1, "S14710C1", ABISELECT(64,32));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14249C1  {
  void *s14249c1f0;
  int s14249c1f1;
  void *s14249c1f2[3];
};
//SIG(1 S14249C1) C1{ Fp Fi Fp[3]}



static void Test_S14249C1()
{
  {
    init_simple_test("S14249C1");
    S14249C1 lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S14249C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14249C1)");
    check_field_offset(lv, s14249c1f0, 0, "S14249C1.s14249c1f0");
    check_field_offset(lv, s14249c1f1, ABISELECT(8,4), "S14249C1.s14249c1f1");
    check_field_offset(lv, s14249c1f2, ABISELECT(16,8), "S14249C1.s14249c1f2");
  }
}
static Arrange_To_Call_Me vS14249C1(Test_S14249C1, "S14249C1", ABISELECT(40,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18381C1  {
  void *s18381c1f0[6];
  char s18381c1f1;
  void  mf18381c1(); // _ZN8S18381C19mf18381c1Ev
};
//SIG(1 S18381C1) C1{ m Fp[6] Fc}


void  S18381C1 ::mf18381c1(){}

static void Test_S18381C1()
{
  {
    init_simple_test("S18381C1");
    S18381C1 lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S18381C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18381C1)");
    check_field_offset(lv, s18381c1f0, 0, "S18381C1.s18381c1f0");
    check_field_offset(lv, s18381c1f1, ABISELECT(48,24), "S18381C1.s18381c1f1");
  }
}
static Arrange_To_Call_Me vS18381C1(Test_S18381C1, "S18381C1", ABISELECT(56,28));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12247C1  {
  int s12247c1f0;
  char s12247c1f1[21];
};
//SIG(1 S12247C1) C1{ Fi Fc[21]}



static void Test_S12247C1()
{
  {
    init_simple_test("S12247C1");
    S12247C1 lv;
    check2(sizeof(lv), 28, "sizeof(S12247C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12247C1)");
    check_field_offset(lv, s12247c1f0, 0, "S12247C1.s12247c1f0");
    check_field_offset(lv, s12247c1f1, 4, "S12247C1.s12247c1f1");
  }
}
static Arrange_To_Call_Me vS12247C1(Test_S12247C1, "S12247C1", 28);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13363C1  {
  int s13363c1f0[3];
  __tsi64 s13363c1f1;
};
//SIG(1 S13363C1) C1{ Fi[3] FL}



static void Test_S13363C1()
{
  {
    init_simple_test("S13363C1");
    S13363C1 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S13363C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13363C1)");
    check_field_offset(lv, s13363c1f0, 0, "S13363C1.s13363c1f0");
    check_field_offset(lv, s13363c1f1, ABISELECT(16,12), "S13363C1.s13363c1f1");
  }
}
static Arrange_To_Call_Me vS13363C1(Test_S13363C1, "S13363C1", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10382C1  : S7166C16_nt {
  void *s10382c1f0;
};
//SIG(1 S10382C1) C1{ BC2{} Fp}



static void Test_S10382C1()
{
  extern Class_Descriptor cd_S10382C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S10382C1, buf);
    S10382C1 &lv = *(new (buf) S10382C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S10382C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10382C1)");
    check_base_class_offset(lv, (S7166C16_nt*), 0, "S10382C1");
    check_field_offset(lv, s10382c1f0, 0, "S10382C1.s10382c1f0");
    test_class_info(&lv, &cd_S10382C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10382C1(Test_S10382C1, "S10382C1", ABISELECT(8,4));

#else // __cplusplus

extern Class_Descriptor cd_S7166C16_nt;
extern VTBL_ENTRY _ZTI11S7166C16_nt[];
static Base_Class bases_S10382C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7166C16_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S10382C1 = {  "S10382C1", // class name
  bases_S10382C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14044C1  {
  __tsi64 s14044c1f0[9];
};
//SIG(1 S14044C1) C1{ FL[9]}



static void Test_S14044C1()
{
  {
    init_simple_test("S14044C1");
    S14044C1 lv;
    check2(sizeof(lv), 72, "sizeof(S14044C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14044C1)");
    check_field_offset(lv, s14044c1f0, 0, "S14044C1.s14044c1f0");
  }
}
static Arrange_To_Call_Me vS14044C1(Test_S14044C1, "S14044C1", 72);

#else // __cplusplus

#endif // __cplusplus

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

